From bf9faa8e77645f9b7be13fd9e8be12b9ca72eb86 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 21 Aug 2025 15:55:49 -0700 Subject: [PATCH 01/55] Port core ID type node lookup logic as the psuedochecker --- internal/ast/functionflags.go | 37 ++ internal/ast/utilities.go | 73 +++ internal/checker/checker.go | 152 ++--- internal/checker/grammarchecks.go | 4 +- internal/checker/nodebuilderimpl.go | 9 +- internal/checker/relater.go | 2 +- internal/checker/utilities.go | 36 -- internal/psuedochecker/checker.go | 18 + internal/psuedochecker/lookup.go | 520 ++++++++++++++++++ internal/psuedochecker/type.go | 273 +++++++++ .../transformers/declarations/transform.go | 2 +- internal/transformers/declarations/util.go | 25 - 12 files changed, 986 insertions(+), 165 deletions(-) create mode 100644 internal/ast/functionflags.go create mode 100644 internal/psuedochecker/checker.go create mode 100644 internal/psuedochecker/lookup.go create mode 100644 internal/psuedochecker/type.go diff --git a/internal/ast/functionflags.go b/internal/ast/functionflags.go new file mode 100644 index 00000000000..431d40b585c --- /dev/null +++ b/internal/ast/functionflags.go @@ -0,0 +1,37 @@ +package ast + +type FunctionFlags uint32 + +const ( + FunctionFlagsNormal FunctionFlags = 0 + FunctionFlagsGenerator FunctionFlags = 1 << 0 + FunctionFlagsAsync FunctionFlags = 1 << 1 + FunctionFlagsInvalid FunctionFlags = 1 << 2 + FunctionFlagsAsyncGenerator FunctionFlags = FunctionFlagsAsync | FunctionFlagsGenerator +) + +func GetFunctionFlags(node *Node) FunctionFlags { + if node == nil { + return FunctionFlagsInvalid + } + data := node.BodyData() + if data == nil { + return FunctionFlagsInvalid + } + flags := FunctionFlagsNormal + switch node.Kind { + case KindFunctionDeclaration, KindFunctionExpression, KindMethodDeclaration: + if data.AsteriskToken != nil { + flags |= FunctionFlagsGenerator + } + fallthrough + case KindArrowFunction: + if HasSyntacticModifier(node, ModifierFlagsAsync) { + flags |= FunctionFlagsAsync + } + } + if data.Body == nil { + flags |= FunctionFlagsInvalid + } + return flags +} diff --git a/internal/ast/utilities.go b/internal/ast/utilities.go index 1c65dee66ce..555f373aeae 100644 --- a/internal/ast/utilities.go +++ b/internal/ast/utilities.go @@ -3860,3 +3860,76 @@ func IsJSDocNameReferenceContext(node *Node) bool { func IsImportOrImportEqualsDeclaration(node *Node) bool { return IsImportDeclaration(node) || IsImportEqualsDeclaration(node) } + +type AllAccessorDeclarations struct { + FirstAccessor *AccessorDeclaration + SecondAccessor *AccessorDeclaration + SetAccessor *SetAccessorDeclaration + GetAccessor *GetAccessorDeclaration +} + +func GetAllAccessorDeclarationsForDeclaration(accessor *AccessorDeclaration, symbol *Symbol) AllAccessorDeclarations { + var otherKind Kind + if accessor.Kind == KindSetAccessor { + otherKind = KindGetAccessor + } else if accessor.Kind == KindGetAccessor { + otherKind = KindSetAccessor + } else { + panic(fmt.Sprintf("Unexpected node kind %q", accessor.Kind)) + } + otherAccessor := GetDeclarationOfKind(symbol, otherKind) + + var firstAccessor *AccessorDeclaration + var secondAccessor *AccessorDeclaration + if otherAccessor != nil && (otherAccessor.Pos() < accessor.Pos()) { + firstAccessor = otherAccessor + secondAccessor = accessor + } else { + firstAccessor = accessor + secondAccessor = otherAccessor + } + + var setAccessor *SetAccessorDeclaration + var getAccessor *GetAccessorDeclaration + if accessor.Kind == KindSetAccessor { + setAccessor = accessor.AsSetAccessorDeclaration() + if otherAccessor != nil { + getAccessor = otherAccessor.AsGetAccessorDeclaration() + } + } else { + getAccessor = accessor.AsGetAccessorDeclaration() + if otherAccessor != nil { + setAccessor = otherAccessor.AsSetAccessorDeclaration() + } + } + + return AllAccessorDeclarations{ + FirstAccessor: firstAccessor, + SecondAccessor: secondAccessor, + SetAccessor: setAccessor, + GetAccessor: getAccessor, + } +} + +func IsPrimitiveLiteralValue(node *Node, includeBigInt bool) bool { + switch node.Kind { + case KindTrueKeyword, + KindFalseKeyword, + KindNumericLiteral, + KindStringLiteral, + KindNoSubstitutionTemplateLiteral: + return true + case KindBigIntLiteral: + return includeBigInt + case KindPrefixUnaryExpression: + if node.AsPrefixUnaryExpression().Operator == KindMinusToken { + return IsNumericLiteral(node.AsPrefixUnaryExpression().Operand) || (includeBigInt && IsBigIntLiteral(node.AsPrefixUnaryExpression().Operand)) + } + if node.AsPrefixUnaryExpression().Operator == KindPlusToken { + return IsNumericLiteral(node.AsPrefixUnaryExpression().Operand) + } + return false + default: + return false + } +} diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 1fa8c4360c5..3b1c06807d9 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -1963,7 +1963,7 @@ func isSameScopeDescendentOf(initial *ast.Node, parent *ast.Node, stopAt *ast.No if n == parent { return true } - if n == stopAt || ast.IsFunctionLike(n) && (ast.GetImmediatelyInvokedFunctionExpression(n) == nil || (getFunctionFlags(n)&FunctionFlagsAsyncGenerator != 0)) { + if n == stopAt || ast.IsFunctionLike(n) && (ast.GetImmediatelyInvokedFunctionExpression(n) == nil || (ast.GetFunctionFlags(n)&ast.FunctionFlagsAsyncGenerator != 0)) { return false } } @@ -2540,15 +2540,15 @@ func (c *Checker) checkSignatureDeclaration(node *ast.Node) { } } if returnTypeNode != nil { - functionFlags := getFunctionFlags(node) - if (functionFlags & (FunctionFlagsInvalid | FunctionFlagsGenerator)) == FunctionFlagsGenerator { + functionFlags := ast.GetFunctionFlags(node) + if (functionFlags & (ast.FunctionFlagsInvalid | ast.FunctionFlagsGenerator)) == ast.FunctionFlagsGenerator { returnType := c.getTypeFromTypeNode(returnTypeNode) if returnType == c.voidType { c.error(returnTypeNode, diagnostics.A_generator_cannot_have_a_void_type_annotation) } else { c.checkGeneratorInstantiationAssignabilityToReturnType(returnType, functionFlags, returnTypeNode) } - } else if (functionFlags & FunctionFlagsAsyncGenerator) == FunctionFlagsAsync { + } else if (functionFlags & ast.FunctionFlagsAsyncGenerator) == ast.FunctionFlagsAsync { c.checkAsyncFunctionReturnType(node, returnTypeNode) } } @@ -3193,7 +3193,7 @@ func (c *Checker) checkFunctionDeclaration(node *ast.Node) { func (c *Checker) checkFunctionOrMethodDeclaration(node *ast.Node) { c.checkDecorators(node) c.checkSignatureDeclaration(node) - functionFlags := getFunctionFlags(node) + functionFlags := ast.GetFunctionFlags(node) // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. @@ -3240,7 +3240,7 @@ func (c *Checker) checkFunctionOrMethodDeclaration(node *ast.Node) { if ast.NodeIsMissing(body) && !isPrivateWithinAmbient(node) { c.reportImplicitAny(node, c.anyType, WideningKindNormal) } - if functionFlags&FunctionFlagsGenerator != 0 && ast.NodeIsPresent(body) { + if functionFlags&ast.FunctionFlagsGenerator != 0 && ast.NodeIsPresent(body) { // A generator with a body and no type annotation can still cause errors. It can error if the // yielded values have no common supertype, or it can give an implicit any error if it has no // yielded values. The only way to trigger these errors is to try checking its return type. @@ -3509,7 +3509,7 @@ func (c *Checker) isImplementationCompatibleWithOverload(implementation *Signatu } func (c *Checker) checkAllCodePathsInNonVoidFunctionReturnOrThrow(fn *ast.Node, returnType *Type) { - functionFlags := getFunctionFlags(fn) + functionFlags := ast.GetFunctionFlags(fn) var t *Type if returnType != nil { t = c.unwrapReturnType(returnType, functionFlags) @@ -3561,7 +3561,7 @@ func (c *Checker) checkAllCodePathsInNonVoidFunctionReturnOrThrow(fn *ast.Node, } func (c *Checker) isUnwrappedReturnTypeUndefinedVoidOrAny(fn *ast.Node, returnType *Type) bool { - t := c.unwrapReturnType(returnType, getFunctionFlags(fn)) + t := c.unwrapReturnType(returnType, ast.GetFunctionFlags(fn)) return t != nil && (c.maybeTypeOfKind(t, TypeFlagsVoid) || t.flags&(TypeFlagsAny|TypeFlagsUndefined) != 0) } @@ -3875,7 +3875,7 @@ func (c *Checker) checkReturnStatement(node *ast.Node) { } signature := c.getSignatureFromDeclaration(container) returnType := c.getReturnTypeOfSignature(signature) - functionFlags := getFunctionFlags(container) + functionFlags := ast.GetFunctionFlags(container) exprNode := node.Expression() if c.strictNullChecks || exprNode != nil || returnType.flags&TypeFlagsNever != 0 { exprType := c.undefinedType @@ -3904,7 +3904,7 @@ func (c *Checker) checkReturnStatement(node *ast.Node) { // Otherwise, `node` is a return statement. func (c *Checker) checkReturnExpression(container *ast.Node, unwrappedReturnType *Type, node *ast.Node, expr *ast.Node, exprType *Type, inConditionalExpression bool) { unwrappedExprType := exprType - functionFlags := getFunctionFlags(container) + functionFlags := ast.GetFunctionFlags(container) if expr != nil { unwrappedExpr := ast.SkipParentheses(expr) if ast.IsConditionalExpression(unwrappedExpr) { @@ -3916,7 +3916,7 @@ func (c *Checker) checkReturnExpression(container *ast.Node, unwrappedReturnType } } inReturnStatement := node.Kind == ast.KindReturnStatement - if functionFlags&FunctionFlagsAsync != 0 { + if functionFlags&ast.FunctionFlagsAsync != 0 { unwrappedExprType = c.checkAwaitedType(exprType, false /*withAlias*/, node, diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member) } effectiveExpr := expr // The effective expression for diagnostics purposes. @@ -9852,7 +9852,7 @@ func (c *Checker) contextuallyCheckFunctionExpressionOrObjectLiteralMethod(node } func (c *Checker) checkFunctionExpressionOrObjectLiteralMethodDeferred(node *ast.Node) { - functionFlags := getFunctionFlags(node) + functionFlags := ast.GetFunctionFlags(node) returnType := c.getReturnTypeFromAnnotation(node) c.checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnType) body := node.Body() @@ -10481,12 +10481,12 @@ func (c *Checker) checkYieldExpression(node *ast.Node) *Type { if fn == nil { return c.anyType } - functionFlags := getFunctionFlags(fn) - if functionFlags&FunctionFlagsGenerator == 0 { + functionFlags := ast.GetFunctionFlags(fn) + if functionFlags&ast.FunctionFlagsGenerator == 0 { // If the user's code is syntactically correct, the func should always have a star. After all, we are in a yield context. return c.anyType } - isAsync := (functionFlags & FunctionFlagsAsync) != 0 + isAsync := (functionFlags & ast.FunctionFlagsAsync) != 0 // There is no point in doing an assignability check if the function // has no explicit return type because the return type is directly computed // from the yield expressions. @@ -19274,9 +19274,9 @@ func (c *Checker) getReturnTypeFromBody(fn *ast.Node, checkMode CheckMode) *Type if body == nil { return c.errorType } - functionFlags := getFunctionFlags(fn) - isAsync := (functionFlags & FunctionFlagsAsync) != 0 - isGenerator := (functionFlags & FunctionFlagsGenerator) != 0 + functionFlags := ast.GetFunctionFlags(fn) + isAsync := (functionFlags & ast.FunctionFlagsAsync) != 0 + isGenerator := (functionFlags & ast.FunctionFlagsGenerator) != 0 var returnType *Type var yieldType *Type var nextType *Type @@ -19309,7 +19309,7 @@ func (c *Checker) getReturnTypeFromBody(fn *ast.Node, checkMode CheckMode) *Type types, isNeverReturning := c.checkAndAggregateReturnExpressionTypes(fn, checkMode) if isNeverReturning { // For an async function, the return type will not be never, but rather a Promise for never. - if functionFlags&FunctionFlagsAsync != 0 { + if functionFlags&ast.FunctionFlagsAsync != 0 { return c.createPromiseReturnType(fn, c.neverType) } // Normal function @@ -19324,7 +19324,7 @@ func (c *Checker) getReturnTypeFromBody(fn *ast.Node, checkMode CheckMode) *Type } else { returnType = c.voidType } - if functionFlags&FunctionFlagsAsync != 0 { + if functionFlags&ast.FunctionFlagsAsync != 0 { return c.createPromiseReturnType(fn, returnType) } // Normal function @@ -19400,7 +19400,7 @@ func (c *Checker) getReturnTypeFromBody(fn *ast.Node, checkMode CheckMode) *Type // Returns the aggregated list of return types, plus a bool indicating a never-returning function. func (c *Checker) checkAndAggregateReturnExpressionTypes(fn *ast.Node, checkMode CheckMode) ([]*Type, bool) { - functionFlags := getFunctionFlags(fn) + functionFlags := ast.GetFunctionFlags(fn) var aggregatedTypes []*Type hasReturnWithNoExpression := c.functionHasImplicitReturn(fn) hasReturnOfTypeNever := false @@ -19413,7 +19413,7 @@ func (c *Checker) checkAndAggregateReturnExpressionTypes(fn *ast.Node, checkMode expr = ast.SkipParentheses(expr) // Bare calls to this same function don't contribute to inference // and `return await` is also safe to unwrap here - if functionFlags&FunctionFlagsAsync != 0 && ast.IsAwaitExpression(expr) { + if functionFlags&ast.FunctionFlagsAsync != 0 && ast.IsAwaitExpression(expr) { expr = ast.SkipParentheses(expr.Expression()) } if ast.IsCallExpression(expr) && ast.IsIdentifier(expr.Expression()) && c.checkExpressionCached(expr.Expression()).symbol == c.getMergedSymbol(fn.Symbol()) && @@ -19422,7 +19422,7 @@ func (c *Checker) checkAndAggregateReturnExpressionTypes(fn *ast.Node, checkMode return false } t := c.checkExpressionCachedEx(expr, checkMode & ^CheckModeSkipGenericFunctions) - if functionFlags&FunctionFlagsAsync != 0 { + if functionFlags&ast.FunctionFlagsAsync != 0 { // From within an async function you can return either a non-promise value or a promise. Any // Promise/A+ compatible implementation will always assimilate any foreign promise, so the // return type of the body should be unwrapped to its awaited type, which should be wrapped in @@ -19460,7 +19460,7 @@ func mayReturnNever(fn *ast.Node) bool { } func (c *Checker) checkAndAggregateYieldOperandTypes(fn *ast.Node, checkMode CheckMode) (yieldTypes []*Type, nextTypes []*Type) { - isAsync := (getFunctionFlags(fn) & FunctionFlagsAsync) != 0 + isAsync := (ast.GetFunctionFlags(fn) & ast.FunctionFlagsAsync) != 0 forEachYieldExpression(fn.Body(), func(yieldExpr *ast.Node) { yieldExprType := c.undefinedWideningType if yieldExpr.Expression() != nil { @@ -19521,9 +19521,9 @@ func (c *Checker) createPromiseReturnType(fn *ast.Node, promisedType *Type) *Typ return promiseType } -func (c *Checker) unwrapReturnType(returnType *Type, functionFlags FunctionFlags) *Type { - isGenerator := functionFlags&FunctionFlagsGenerator != 0 - isAsync := functionFlags&FunctionFlagsAsync != 0 +func (c *Checker) unwrapReturnType(returnType *Type, functionFlags ast.FunctionFlags) *Type { + isGenerator := functionFlags&ast.FunctionFlagsGenerator != 0 + isAsync := functionFlags&ast.FunctionFlagsAsync != 0 if isGenerator { returnIterationType := c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindReturn, returnType, isAsync) if returnIterationType == nil { @@ -19602,20 +19602,20 @@ func (c *Checker) shouldReportErrorsFromWideningWithContextualSignature(declarat return true } returnType := c.getReturnTypeOfSignature(signature) - flags := getFunctionFlags(declaration) + flags := ast.GetFunctionFlags(declaration) switch wideningKind { case WideningKindFunctionReturn: - if flags&FunctionFlagsGenerator != 0 { - returnType = core.OrElse(c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindReturn, returnType, flags&FunctionFlagsAsync != 0), returnType) - } else if flags&FunctionFlagsAsync != 0 { + if flags&ast.FunctionFlagsGenerator != 0 { + returnType = core.OrElse(c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindReturn, returnType, flags&ast.FunctionFlagsAsync != 0), returnType) + } else if flags&ast.FunctionFlagsAsync != 0 { returnType = core.OrElse(c.getAwaitedTypeNoAlias(returnType), returnType) } return c.isGenericType(returnType) case WideningKindGeneratorYield: - yieldType := c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindYield, returnType, flags&FunctionFlagsAsync != 0) + yieldType := c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindYield, returnType, flags&ast.FunctionFlagsAsync != 0) return yieldType != nil && c.isGenericType(yieldType) case WideningKindGeneratorNext: - nextType := c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindNext, returnType, flags&FunctionFlagsAsync != 0) + nextType := c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindNext, returnType, flags&ast.FunctionFlagsAsync != 0) return nextType != nil && c.isGenericType(nextType) } return false @@ -19673,8 +19673,8 @@ func (c *Checker) getTypePredicateFromBody(fn *ast.Node) *TypePredicate { case ast.KindConstructor, ast.KindGetAccessor, ast.KindSetAccessor: return nil } - functionFlags := getFunctionFlags(fn) - if functionFlags != FunctionFlagsNormal { + functionFlags := ast.GetFunctionFlags(fn) + if functionFlags != ast.FunctionFlagsNormal { return nil } // Only attempt to infer a type predicate if there's exactly one return. @@ -21016,54 +21016,8 @@ func isConflictingPrivateProperty(prop *ast.Symbol) bool { return prop.ValueDeclaration == nil && prop.CheckFlags&ast.CheckFlagsContainsPrivate != 0 } -type allAccessorDeclarations struct { - firstAccessor *ast.AccessorDeclaration - secondAccessor *ast.AccessorDeclaration - setAccessor *ast.SetAccessorDeclaration - getAccessor *ast.GetAccessorDeclaration -} - -func (c *Checker) getAllAccessorDeclarationsForDeclaration(accessor *ast.AccessorDeclaration) allAccessorDeclarations { - var otherKind ast.Kind - if accessor.Kind == ast.KindSetAccessor { - otherKind = ast.KindGetAccessor - } else if accessor.Kind == ast.KindGetAccessor { - otherKind = ast.KindSetAccessor - } else { - panic(fmt.Sprintf("Unexpected node kind %q", accessor.Kind)) - } - otherAccessor := ast.GetDeclarationOfKind(c.getSymbolOfDeclaration(accessor), otherKind) - - var firstAccessor *ast.AccessorDeclaration - var secondAccessor *ast.AccessorDeclaration - if otherAccessor != nil && (otherAccessor.Pos() < accessor.Pos()) { - firstAccessor = otherAccessor - secondAccessor = accessor - } else { - firstAccessor = accessor - secondAccessor = otherAccessor - } - - var setAccessor *ast.SetAccessorDeclaration - var getAccessor *ast.GetAccessorDeclaration - if accessor.Kind == ast.KindSetAccessor { - setAccessor = accessor.AsSetAccessorDeclaration() - if otherAccessor != nil { - getAccessor = otherAccessor.AsGetAccessorDeclaration() - } - } else { - getAccessor = accessor.AsGetAccessorDeclaration() - if otherAccessor != nil { - setAccessor = otherAccessor.AsSetAccessorDeclaration() - } - } - - return allAccessorDeclarations{ - firstAccessor: firstAccessor, - secondAccessor: secondAccessor, - setAccessor: setAccessor, - getAccessor: getAccessor, - } +func (c *Checker) getAllAccessorDeclarationsForDeclaration(accessor *ast.AccessorDeclaration) ast.AllAccessorDeclarations { + return ast.GetAllAccessorDeclarationsForDeclaration(accessor, c.getSymbolOfDeclaration(accessor)) } func (c *Checker) getTypeArguments(t *Type) []*Type { @@ -28260,22 +28214,22 @@ func (c *Checker) getContextualTypeForReturnExpression(node *ast.Node, contextFl if fn != nil { contextualReturnType := c.getContextualReturnType(fn, contextFlags) if contextualReturnType != nil { - functionFlags := getFunctionFlags(fn) - if functionFlags&FunctionFlagsGenerator != 0 { - isAsyncGenerator := (functionFlags & FunctionFlagsAsync) != 0 + functionFlags := ast.GetFunctionFlags(fn) + if functionFlags&ast.FunctionFlagsGenerator != 0 { + isAsyncGenerator := (functionFlags & ast.FunctionFlagsAsync) != 0 if contextualReturnType.flags&TypeFlagsUnion != 0 { contextualReturnType = c.filterType(contextualReturnType, func(t *Type) bool { return c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindReturn, t, isAsyncGenerator) != nil }) } - iterationReturnType := c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindReturn, contextualReturnType, (functionFlags&FunctionFlagsAsync) != 0) + iterationReturnType := c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindReturn, contextualReturnType, (functionFlags&ast.FunctionFlagsAsync) != 0) if iterationReturnType == nil { return nil } contextualReturnType = iterationReturnType // falls through to unwrap Promise for AsyncGenerators } - if functionFlags&FunctionFlagsAsync != 0 { + if functionFlags&ast.FunctionFlagsAsync != 0 { // Get the awaited type without the `Awaited` alias contextualAwaitedType := c.mapType(contextualReturnType, c.getAwaitedTypeNoAlias) return c.getUnionType([]*Type{contextualAwaitedType, c.createPromiseLikeType(contextualAwaitedType)}) @@ -28288,7 +28242,7 @@ func (c *Checker) getContextualTypeForReturnExpression(node *ast.Node, contextFl } func (c *Checker) getContextualIterationType(kind IterationTypeKind, functionDecl *ast.Node) *Type { - isAsync := getFunctionFlags(functionDecl)&FunctionFlagsAsync != 0 + isAsync := ast.GetFunctionFlags(functionDecl)&ast.FunctionFlagsAsync != 0 contextualReturnType := c.getContextualReturnType(functionDecl, ContextFlagsNone) if contextualReturnType != nil { return c.getIterationTypeOfGeneratorFunctionReturnType(kind, contextualReturnType, isAsync) @@ -28308,13 +28262,13 @@ func (c *Checker) getContextualReturnType(functionDecl *ast.Node, contextFlags C signature := c.getContextualSignatureForFunctionLikeDeclaration(functionDecl) if signature != nil && !c.isResolvingReturnTypeOfSignature(signature) { returnType := c.getReturnTypeOfSignature(signature) - functionFlags := getFunctionFlags(functionDecl) - if functionFlags&FunctionFlagsGenerator != 0 { + functionFlags := ast.GetFunctionFlags(functionDecl) + if functionFlags&ast.FunctionFlagsGenerator != 0 { return c.filterType(returnType, func(t *Type) bool { return t.flags&(TypeFlagsAnyOrUnknown|TypeFlagsVoid|TypeFlagsInstantiableNonPrimitive) != 0 || c.checkGeneratorInstantiationAssignabilityToReturnType(t, functionFlags, nil /*errorNode*/) }) } - if functionFlags&FunctionFlagsAsync != 0 { + if functionFlags&ast.FunctionFlagsAsync != 0 { return c.filterType(returnType, func(t *Type) bool { return t.flags&(TypeFlagsAnyOrUnknown|TypeFlagsVoid|TypeFlagsInstantiableNonPrimitive) != 0 || c.getAwaitedTypeOfPromise(t) != nil }) @@ -28328,17 +28282,17 @@ func (c *Checker) getContextualReturnType(functionDecl *ast.Node, contextFlags C return nil } -func (c *Checker) checkGeneratorInstantiationAssignabilityToReturnType(returnType *Type, functionFlags FunctionFlags, errorNode *ast.Node) bool { +func (c *Checker) checkGeneratorInstantiationAssignabilityToReturnType(returnType *Type, functionFlags ast.FunctionFlags, errorNode *ast.Node) bool { // Naively, one could check that Generator is assignable to the return type annotation. // However, that would not catch the error in the following case. // // interface BadGenerator extends Iterable, Iterator { } // function* g(): BadGenerator { } // Iterable and Iterator have different types! // - generatorYieldType := core.OrElse(c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindYield, returnType, (functionFlags&FunctionFlagsAsync) != 0), c.anyType) - generatorReturnType := core.OrElse(c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindReturn, returnType, (functionFlags&FunctionFlagsAsync) != 0), generatorYieldType) - generatorNextType := core.OrElse(c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindNext, returnType, (functionFlags&FunctionFlagsAsync) != 0), c.unknownType) - generatorInstantiation := c.createGeneratorType(generatorYieldType, generatorReturnType, generatorNextType, functionFlags&FunctionFlagsAsync != 0) + generatorYieldType := core.OrElse(c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindYield, returnType, (functionFlags&ast.FunctionFlagsAsync) != 0), c.anyType) + generatorReturnType := core.OrElse(c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindReturn, returnType, (functionFlags&ast.FunctionFlagsAsync) != 0), generatorYieldType) + generatorNextType := core.OrElse(c.getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKindNext, returnType, (functionFlags&ast.FunctionFlagsAsync) != 0), c.unknownType) + generatorInstantiation := c.createGeneratorType(generatorYieldType, generatorReturnType, generatorNextType, functionFlags&ast.FunctionFlagsAsync != 0) return c.checkTypeAssignableTo(generatorInstantiation, returnType, errorNode, nil) } @@ -28353,10 +28307,10 @@ func (c *Checker) getContextualSignatureForFunctionLikeDeclaration(node *ast.Nod func (c *Checker) getContextualTypeForYieldOperand(node *ast.Node, contextFlags ContextFlags) *Type { fn := getContainingFunction(node) if fn != nil { - functionFlags := getFunctionFlags(fn) + functionFlags := ast.GetFunctionFlags(fn) contextualReturnType := c.getContextualReturnType(fn, contextFlags) if contextualReturnType != nil { - isAsyncGenerator := functionFlags&FunctionFlagsAsync != 0 + isAsyncGenerator := functionFlags&ast.FunctionFlagsAsync != 0 isYieldStar := node.AsYieldExpression().AsteriskToken != nil if !isYieldStar && contextualReturnType.flags&TypeFlagsUnion != 0 { contextualReturnType = c.filterType(contextualReturnType, func(t *Type) bool { diff --git a/internal/checker/grammarchecks.go b/internal/checker/grammarchecks.go index dc98b208812..c0129f66908 100644 --- a/internal/checker/grammarchecks.go +++ b/internal/checker/grammarchecks.go @@ -246,7 +246,7 @@ func (c *Checker) checkGrammarModifiers(node *ast.Node /*Union[HasModifiers, Has } } else if c.legacyDecorators && (node.Kind == ast.KindGetAccessor || node.Kind == ast.KindSetAccessor) { accessors := c.getAllAccessorDeclarationsForDeclaration(node) - if ast.HasDecorators(accessors.firstAccessor) && node == accessors.secondAccessor { + if ast.HasDecorators(accessors.FirstAccessor) && node == accessors.SecondAccessor { return c.grammarErrorOnFirstToken(node, diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name) } } @@ -1265,7 +1265,7 @@ func (c *Checker) checkGrammarForInOrForOfStatement(forInOrOfStatement *ast.ForI diagnostic := createDiagnosticForNode(forInOrOfStatement.AwaitModifier, diagnostics.X_for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules) containingFunc := getContainingFunction(forInOrOfStatement.AsNode()) if containingFunc != nil && containingFunc.Kind != ast.KindConstructor { - debug.Assert((getFunctionFlags(containingFunc)&FunctionFlagsAsync) == 0, "Enclosing function should never be an async function.") + debug.Assert((ast.GetFunctionFlags(containingFunc)&ast.FunctionFlagsAsync) == 0, "Enclosing function should never be an async function.") if hasAsyncModifier(containingFunc) { panic("Enclosing function should never be an async function.") } diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index 9f07545c055..832de4e14da 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -2435,7 +2435,14 @@ func (b *nodeBuilderImpl) createAnonymousTypeNode(t *Type) *ast.TypeNode { if isInstantiationExpressionType { instantiationExpressionType := t.AsInstantiationExpressionType() existing := instantiationExpressionType.node - if ast.IsTypeQueryNode(existing) { + // instantiationExpressionType.node is unreliable for constituents of unions and intersections. + // declare const Err: typeof ErrImpl & (() => T); + // type ErrAlias = typeof Err; + // declare const e: ErrAlias; + // ErrAlias = typeof Err = typeof ErrImpl & (() => number) + // The problem is each constituent of the intersection will be associated with typeof Err + // And when extracting a type for typeof ErrImpl from typeof Err does not make sense. + if ast.IsTypeQueryNode(existing) && b.getTypeFromTypeNode(existing, false) == t { typeNode := b.tryReuseExistingNonParameterTypeNode(existing, t, nil, nil) if typeNode != nil { return typeNode diff --git a/internal/checker/relater.go b/internal/checker/relater.go index 2219197356a..949d1a47618 100644 --- a/internal/checker/relater.go +++ b/internal/checker/relater.go @@ -657,7 +657,7 @@ func (c *Checker) elaborateArrowFunction(node *ast.Node, source *Type, target *T if target.symbol != nil && len(target.symbol.Declarations) != 0 { diagnostic.AddRelatedInfo(createDiagnosticForNode(target.symbol.Declarations[0], diagnostics.The_expected_type_comes_from_the_return_type_of_this_signature)) } - if getFunctionFlags(node)&FunctionFlagsAsync == 0 && c.getTypeOfPropertyOfType(sourceReturn, "then") == nil && c.checkTypeRelatedTo(c.createPromiseType(sourceReturn), targetReturn, relation, nil /*errorNode*/) { + if ast.GetFunctionFlags(node)&ast.FunctionFlagsAsync == 0 && c.getTypeOfPropertyOfType(sourceReturn, "then") == nil && c.checkTypeRelatedTo(c.createPromiseType(sourceReturn), targetReturn, relation, nil /*errorNode*/) { diagnostic.AddRelatedInfo(createDiagnosticForNode(node, diagnostics.Did_you_mean_to_mark_this_function_as_async)) } c.reportDiagnostic(diagnostic, diagnosticOutput) diff --git a/internal/checker/utilities.go b/internal/checker/utilities.go index 10f1c6c0c72..08695166742 100644 --- a/internal/checker/utilities.go +++ b/internal/checker/utilities.go @@ -1280,42 +1280,6 @@ func getMembersOfDeclaration(node *ast.Node) []*ast.Node { return nil } -type FunctionFlags uint32 - -const ( - FunctionFlagsNormal FunctionFlags = 0 - FunctionFlagsGenerator FunctionFlags = 1 << 0 - FunctionFlagsAsync FunctionFlags = 1 << 1 - FunctionFlagsInvalid FunctionFlags = 1 << 2 - FunctionFlagsAsyncGenerator FunctionFlags = FunctionFlagsAsync | FunctionFlagsGenerator -) - -func getFunctionFlags(node *ast.Node) FunctionFlags { - if node == nil { - return FunctionFlagsInvalid - } - data := node.BodyData() - if data == nil { - return FunctionFlagsInvalid - } - flags := FunctionFlagsNormal - switch node.Kind { - case ast.KindFunctionDeclaration, ast.KindFunctionExpression, ast.KindMethodDeclaration: - if data.AsteriskToken != nil { - flags |= FunctionFlagsGenerator - } - fallthrough - case ast.KindArrowFunction: - if ast.HasSyntacticModifier(node, ast.ModifierFlagsAsync) { - flags |= FunctionFlagsAsync - } - } - if data.Body == nil { - flags |= FunctionFlagsInvalid - } - return flags -} - func isInRightSideOfImportOrExportAssignment(node *ast.EntityName) bool { for node.Parent.Kind == ast.KindQualifiedName { node = node.Parent diff --git a/internal/psuedochecker/checker.go b/internal/psuedochecker/checker.go new file mode 100644 index 00000000000..46719c4f3fa --- /dev/null +++ b/internal/psuedochecker/checker.go @@ -0,0 +1,18 @@ +// psuedochecker is a limited "checker" that returns psuedo-"types" of expressions - mostly those which trivially have type nodes +package psuedochecker + +// TODO: Late binding/symbol merging? +// In strada, `expressionToTypeNode` used many `resolver` methods whose net effect was just +// calling `Checker.GetMergedSymbol` on a symbol when dealing with accessors. Right now those +// just use Node.Symbol, which will fail to pair up late-bound symbols. In theory, this is actually +// fine, since ID can't possibly know if `set [q1()](a){}` and `get [q2()](): T {}` are connected +// without performing real type checking, regardless, so it shouldn't matter. If anything, it might be +// OK to add a "dumb" late binder that can merge multiple `[a.b.c]: T` together, but not anything else. +// This is an area of active ~~feature-creep~~ development in ID output, prerequisite refactoring would include +// extracting the `mergeSymbol` core checker logic into a reusable component. + +type PsuedoChecker struct{} + +func NewPsuedoChecker() *PsuedoChecker { + return &PsuedoChecker{} +} diff --git a/internal/psuedochecker/lookup.go b/internal/psuedochecker/lookup.go new file mode 100644 index 00000000000..b9d757d9672 --- /dev/null +++ b/internal/psuedochecker/lookup.go @@ -0,0 +1,520 @@ +package psuedochecker + +import ( + "github.com/microsoft/typescript-go/internal/ast" + "github.com/microsoft/typescript-go/internal/core" + "github.com/microsoft/typescript-go/internal/debug" +) + +func (ch *PsuedoChecker) GetReturnTypeOfSignature(signatureNode *ast.Node) *PsuedoType { + switch signatureNode.Kind { + case ast.KindGetAccessor: + return ch.GetTypeOfAccessor(signatureNode.AsGetAccessorDeclaration()) + case ast.KindMethodDeclaration, ast.KindFunctionDeclaration, ast.KindConstructor, + ast.KindMethodSignature, ast.KindCallSignature, ast.KindConstructSignature, + ast.KindSetAccessor, ast.KindIndexSignature, ast.KindFunctionType, ast.KindConstructorType, + ast.KindFunctionExpression, ast.KindArrowFunction, ast.KindJSDocSignature: + return ch.createReturnFromSignature(signatureNode) + default: + debug.FailBadSyntaxKind(signatureNode, "Node needs to be an inferrable node") + return nil + } +} + +func (ch *PsuedoChecker) GetTypeOfAccessor(accessor *ast.GetAccessorDeclaration) *PsuedoType { + annotated := ch.typeFromAccessor(accessor) + if annotated.Kind == PsuedoTypeKindNoResult { + return ch.inferAccessorType(accessor.AsNode()) + } + return annotated +} + +func (ch *PsuedoChecker) GetTypeOfExpression(node *ast.Node) *PsuedoType { + return ch.typeFromExpression(node) +} + +func (ch *PsuedoChecker) GetTypeOfDeclaration(node *ast.Node) *PsuedoType { + switch node.Kind { + case ast.KindParameter: + return ch.typeFromParameter(node.AsParameterDeclaration()) + case ast.KindVariableDeclaration: + return ch.typeFromVariable(node.AsVariableDeclaration()) + case ast.KindPropertySignature, ast.KindPropertyDeclaration, ast.KindJSDocPropertyTag: + return ch.typeFromProperty(node) + case ast.KindBindingElement: + return NewPsuedoTypeNoResult(node) + case ast.KindExportAssignment: + return ch.typeFromExpression(node.AsExportAssignment().Expression) + case ast.KindPropertyAccessExpression, ast.KindElementAccessExpression, ast.KindBinaryExpression: + return ch.typeFromExpandoProperty(node) + case ast.KindPropertyAssignment, ast.KindShorthandPropertyAssignment: + return ch.typeFromPropertyAssignment(node) + default: + debug.FailBadSyntaxKind(node, "node needs to be an inferrable node") + return nil + } +} + +func (ch *PsuedoChecker) typeFromPropertyAssignment(node *ast.Node) *PsuedoType { + annotation := node.Type() + if annotation != nil { + return NewPsuedoTypeDirect(annotation) + } + if node.Kind == ast.KindPropertyAssignment { + init := node.Initializer() + if init != nil { + return ch.typeFromExpression(init) + } + } + return NewPsuedoTypeNoResult(node) +} + +// TODO: Is this redundant with the reparser in place? +func (ch *PsuedoChecker) typeFromExpandoProperty(node *ast.Node) *PsuedoType { + declaredType := node.Type() + if declaredType != nil { + return NewPsuedoTypeDirect(declaredType) + } + return NewPsuedoTypeInferred(node) +} + +func (ch *PsuedoChecker) typeFromProperty(node *ast.Node) *PsuedoType { + t := node.Type() + if t != nil { + return NewPsuedoTypeDirect(t) + } + if ast.IsPropertyDeclaration(node) { + init := node.Initializer() + if init != nil && !isContextuallyTyped(node) { + return ch.typeFromExpression(init) + } + } + return NewPsuedoTypeNoResult(node) +} + +func (ch *PsuedoChecker) typeFromVariable(declaration *ast.VariableDeclaration) *PsuedoType { + t := declaration.Type + if t != nil { + return NewPsuedoTypeDirect(t) + } + init := declaration.Initializer + if init != nil && (len(declaration.Symbol.Declarations) == 1 || core.CountWhere(declaration.Symbol.Declarations, ast.IsVariableDeclaration) == 1) { + if !isContextuallyTyped(declaration.AsNode()) { // TODO: also should bail on expando declarations; reuse syntactic expando check used in declaration emit + return ch.typeFromExpression(init) + } + } + return NewPsuedoTypeNoResult(declaration.AsNode()) +} + +func (ch *PsuedoChecker) typeFromAccessor(accessor *ast.GetAccessorDeclaration) *PsuedoType { + accessorDeclarations := ast.GetAllAccessorDeclarationsForDeclaration(accessor.AsNode(), accessor.Symbol) + accessorType := ch.getTypeAnnotationFromAllAccessorDeclarations(accessor.AsNode(), accessorDeclarations) + if accessorType != nil && !ast.IsTypePredicateNode(accessorType) { + return NewPsuedoTypeDirect(accessorType) + } + if accessorDeclarations.GetAccessor != nil { + return ch.createReturnFromSignature(accessorDeclarations.GetAccessor.AsNode()) + } + return NewPsuedoTypeNoResult(accessor.AsNode()) +} + +func (ch *PsuedoChecker) inferAccessorType(node *ast.Node) *PsuedoType { + if node.Kind == ast.KindGetAccessor { + return ch.createReturnFromSignature(node) + } + return NewPsuedoTypeNoResult(node) +} + +func (ch *PsuedoChecker) getTypeAnnotationFromAllAccessorDeclarations(node *ast.Node, accessors ast.AllAccessorDeclarations) *ast.Node { + accessorType := ch.getTypeAnnotationFromAccessor(node) + if accessorType == nil && node != accessors.FirstAccessor { + accessorType = ch.getTypeAnnotationFromAccessor(accessors.FirstAccessor) + } + if accessorType == nil && accessors.SecondAccessor != nil && node != accessors.SecondAccessor { + accessorType = ch.getTypeAnnotationFromAccessor(accessors.SecondAccessor) + } + return accessorType +} + +func (ch *PsuedoChecker) getTypeAnnotationFromAccessor(node *ast.Node) *ast.Node { + if node == nil { + return nil + } + // !!! TODO: support ripping return type off of .FullSignature + if node.Kind == ast.KindGetAccessor { + return node.AsGetAccessorDeclaration().Type + } + set := node.AsSetAccessorDeclaration() + if set.Parameters == nil || len(set.Parameters.Nodes) < 1 { + return nil + } + p := set.Parameters.Nodes[0] + if !ast.IsParameter(p) { + return nil + } + return p.AsParameterDeclaration().Type +} + +func isValueSignatureDeclaration(node *ast.Node) bool { + return ast.IsFunctionExpression(node) || ast.IsArrowFunction(node) || ast.IsMethodDeclaration(node) || ast.IsAccessor(node) || ast.IsFunctionDeclaration(node) || ast.IsConstructorDeclaration(node) +} + +// does not return `nil`, returns a `NoResult` psuedotype instead +func (ch *PsuedoChecker) createReturnFromSignature(fn *ast.Node) *PsuedoType { + if ast.IsFunctionLike(fn) { + d := fn.FunctionLikeData() + // !!! TODO: support ripping return type off of .FullSignature + r := d.Type + if r != nil { + return NewPsuedoTypeDirect(r) + } + } + if isValueSignatureDeclaration(fn) { + return ch.typeFromSingleReturnExpression(fn) + } + return NewPsuedoTypeNoResult(fn) +} + +func (ch *PsuedoChecker) typeFromSingleReturnExpression(fn *ast.Node) *PsuedoType { + var candidateExpr *ast.Node + if fn != nil && !ast.NodeIsMissing(fn.Body()) { + flags := ast.GetFunctionFlags(fn) + if flags&ast.FunctionFlagsAsyncGenerator != 0 { + return NewPsuedoTypeNoResult(fn) + } + + body := fn.Body() + if ast.IsBlock(body) { + ast.ForEachReturnStatement(body, func(stmt *ast.Node) bool { + if stmt.Parent != body { // Why bail on nested return statements? + candidateExpr = nil + return true + } + if candidateExpr == nil { + candidateExpr = stmt.AsReturnStatement().Expression + } else { + candidateExpr = nil + return true + } + return false + }) + } else { + candidateExpr = body + } + } + if candidateExpr != nil { + if isContextuallyTyped(candidateExpr) { + var t *ast.Node + if candidateExpr.Kind == ast.KindTypeAssertionExpression { + t = candidateExpr.AsTypeAssertion().Type + } else if candidateExpr.Kind == ast.KindAsExpression { + t = candidateExpr.AsAsExpression().Type + } + if t != nil && !ast.IsConstTypeReference(t) { + return NewPsuedoTypeDirect(t) + } + } else { + return ch.typeFromExpression(candidateExpr) + } + } + return NewPsuedoTypeNoResult(fn) +} + +// This is basically `checkExpression` for psuedotypes +func (ch *PsuedoChecker) typeFromExpression(node *ast.Node) *PsuedoType { + switch node.Kind { + case ast.KindOmittedExpression: + return PsuedoTypeUndefined + case ast.KindParenthesizedExpression: + // assertions transformed on reparse, just unwrap + return ch.typeFromExpression(node.AsParenthesizedExpression().Expression) + case ast.KindIdentifier: + // !!! TODO: in strada, this uses symbol information to ensure `node` refers to the global `undefined` symbol instead + // we should probably import `resolveName` and use it here to check for the same; but we have to setup some barebones psuedoglobals for that to work! + if node.AsIdentifier().Text == "undefined" { + return PsuedoTypeUndefined + } + case ast.KindNullKeyword: + return PsuedoTypeNull + case ast.KindArrowFunction, ast.KindFunctionExpression: + return ch.typeFromFunctionLikeExpression(node) + case ast.KindTypeAssertionExpression: + return ch.typeFromTypeAssertion(node.AsTypeAssertion().Expression, node.AsTypeAssertion().Type) + case ast.KindAsExpression: + return ch.typeFromTypeAssertion(node.AsAsExpression().Expression, node.AsAsExpression().Type) + case ast.KindPrefixUnaryExpression: + if ast.IsPrimitiveLiteralValue(node, true) { + return ch.typeFromPrimitiveLiteralPrefix(node.AsPrefixUnaryExpression()) + } + case ast.KindArrayLiteralExpression: + return ch.typeFromArrayLiteral(node.AsArrayLiteralExpression()) + case ast.KindObjectLiteralExpression: + return ch.typeFromObjectLiteral(node.AsObjectLiteralExpression()) + case ast.KindClassExpression: + return NewPsuedoTypeInferred(node) // No possible annotation/directly mappable syntax + case ast.KindTemplateExpression: + if ch.isInConstContext(node) { + return NewPsuedoTypeInferred(node) // templateLitWithHoles as const, not supported + } + return PsuedoTypeString + case ast.KindNumericLiteral: + if ch.isInConstContext(node) { + return NewPsuedoTypeNumericLiteral(node) + } + return PsuedoTypeNumber + case ast.KindNoSubstitutionTemplateLiteral: + if ch.isInConstContext(node) { + return NewPsuedoTypeStringLiteral(node) + } + return PsuedoTypeString + case ast.KindStringLiteral: + if ch.isInConstContext(node) { + return NewPsuedoTypeStringLiteral(node) + } + return PsuedoTypeString + case ast.KindBigIntLiteral: + if ch.isInConstContext(node) { + return NewPsuedoTypeBigIntLiteral(node) + } + return PsuedoTypeBigInt + case ast.KindTrueKeyword: + if ch.isInConstContext(node) { + return PsuedoTypeTrue + } + return PsuedoTypeBoolean + case ast.KindFalseKeyword: + if ch.isInConstContext(node) { + return PsuedoTypeFalse + } + return PsuedoTypeBoolean + } + return NewPsuedoTypeInferred(node) +} + +func (ch *PsuedoChecker) typeFromObjectLiteral(node *ast.ObjectLiteralExpression) *PsuedoType { + if !ch.canGetTypeFromObjectLiteral(node) { + return NewPsuedoTypeInferred(node.AsNode()) + } + // we are in a const context producing an object literal type, there are no shorthand or spread assignments + if node.Properties == nil || len(node.Properties.Nodes) == 0 { + return NewPsuedoTypeObjectLiteral(nil) + } + results := make([]*PsuedoObjectElement, 0, len(node.Properties.Nodes)) + for _, e := range node.Properties.Nodes { + switch e.Kind { + case ast.KindMethodDeclaration: + optional := e.AsMethodDeclaration().PostfixToken != nil && e.AsMethodDeclaration().PostfixToken.Kind == ast.KindQuestionToken + if e.FunctionLikeData().FullSignature != nil { + results = append(results, NewPsuedoPropertyAssignment( + e.Name(), + optional, + NewPsuedoTypeDirect(e.FunctionLikeData().FullSignature), + )) + } else { + results = append(results, NewPsuedoObjectMethod( + e.Name(), + optional, + ch.cloneParameters(e.ParameterList()), + ch.createReturnFromSignature(e), + )) + } + case ast.KindPropertyAssignment: + results = append(results, NewPsuedoPropertyAssignment( + e.Name(), + e.AsPropertyAssignment().PostfixToken != nil && e.AsPropertyAssignment().PostfixToken.Kind == ast.KindQuestionToken, + ch.typeFromExpression(e.Initializer()), + )) + case ast.KindSetAccessor: + results = append(results, NewPsuedoSetAccessor( + e.Name(), + false, + ch.cloneParameters(e.AsSetAccessorDeclaration().Parameters)[0], + )) + case ast.KindGetAccessor: + results = append(results, NewPsuedoGetAccessor( + e.Name(), + false, + ch.typeFromAccessor(e.AsGetAccessorDeclaration()), + )) + } + } + return NewPsuedoTypeObjectLiteral(results) +} + +func (ch *PsuedoChecker) canGetTypeFromObjectLiteral(node *ast.ObjectLiteralExpression) bool { + if node.Properties == nil || len(node.Properties.Nodes) == 0 { + return true // empty object + } + // !!! TODO: strada reports errors on multiple non-inferrable props + // via calling reportInferenceFallback multiple times here before returning. + // Does that logic need to be included in this checker? Or can it + // be kept to the `PsuedoType` -> `Node` mapping logic, so this + // checker can avoid needing any error reporting logic? + for _, e := range node.Properties.Nodes { + if e.Flags&ast.NodeFlagsThisNodeHasError != 0 { + return false + } + if e.Kind == ast.KindShorthandPropertyAssignment || e.Kind == ast.KindSpreadAssignment { + return false + } + if e.Name().Flags&ast.NodeFlagsThisNodeHasError != 0 { + return false + } + if e.Name().Kind == ast.KindPrivateIdentifier { + return false + } + if e.Name().Kind == ast.KindComputedPropertyName { + expression := e.Name().Expression() + if !ast.IsPrimitiveLiteralValue(expression, false) { + return false + } + } + } + return true +} + +func (ch *PsuedoChecker) typeFromArrayLiteral(node *ast.ArrayLiteralExpression) *PsuedoType { + if !ch.canGetTypeFromArrayLiteral(node) { + return NewPsuedoTypeInferred(node.AsNode()) + } + // we are in a const context producing a tuple type, there are no spread elements + results := make([]*PsuedoType, 0, len(node.Elements.Nodes)) + for _, e := range node.Elements.Nodes { + results = append(results, ch.typeFromExpression(e)) + } + return NewPsuedoTypeTuple(results) +} + +func (ch *PsuedoChecker) canGetTypeFromArrayLiteral(node *ast.ArrayLiteralExpression) bool { + if !ch.isInConstContext(node.AsNode()) { + return false + } + for _, e := range node.Elements.Nodes { + if e.Kind == ast.KindSpreadElement { + return false + } + } + return true +} + +// Traverses up the parent chain to determine if the node is within a const context without needing any +// persistent traversal scope tracking (which could be unreliable in the presence of `typeof` queries anyway!) +func (ch *PsuedoChecker) isInConstContext(node *ast.Node) bool { + // An expression is in a const context if an ancestor is a const type maybeAssertion expression + maybeAssertion := ast.FindAncestor( + node, + func(n *ast.Node) bool { + // stop traversing up at assertions, new scopes, and anything not an expression - they're contextual barriers + return ast.IsAssertionExpression(n) || ast.IsFunctionLike(n) || !ast.IsExpressionNode(n) + }, + ) + return ast.IsConstAssertion(maybeAssertion) +} + +func (ch *PsuedoChecker) typeFromPrimitiveLiteralPrefix(node *ast.PrefixUnaryExpression) *PsuedoType { + inner := node.Expression() + if inner.Kind == ast.KindBigIntLiteral { + if ch.isInConstContext(node.AsNode()) { + return NewPsuedoTypeBigIntLiteral(node.AsNode()) + } + return PsuedoTypeBigInt + } + if inner.Kind == ast.KindNumericLiteral { + if ch.isInConstContext(node.AsNode()) { + return NewPsuedoTypeNumericLiteral(node.AsNode()) + } + return PsuedoTypeNumber + } + debug.FailBadSyntaxKind(inner) + return nil +} + +func (ch *PsuedoChecker) typeFromTypeAssertion(expression *ast.Node, typeNode *ast.Node) *PsuedoType { + if ast.IsConstTypeReference(typeNode) { + return ch.typeFromExpression(expression) + } + return NewPsuedoTypeDirect(typeNode) +} + +func (ch *PsuedoChecker) typeFromFunctionLikeExpression(node *ast.Node) *PsuedoType { + if node.FunctionLikeData().FullSignature != nil { + return NewPsuedoTypeDirect(node.FunctionLikeData().FullSignature) + } + returnType := ch.createReturnFromSignature(node) + if returnType.Kind == PsuedoTypeKindNoResult { + // no result for the return type can just be an inferred result for the whole expression + return NewPsuedoTypeInferred(node.AsNode()) + } + typeParameters := ch.cloneTypeParameters(node.FunctionLikeData().TypeParameters) + parameters := ch.cloneParameters(node.FunctionLikeData().Parameters) + return NewPsuedoTypeSingleCallSignature( + parameters, + typeParameters, + returnType, + ) +} + +func (ch *PsuedoChecker) cloneTypeParameters(nodes *ast.NodeList) []*ast.TypeParameterDeclaration { + if nodes == nil { + return nil + } + if len(nodes.Nodes) == 0 { + return nil + } + result := make([]*ast.TypeParameterDeclaration, 0, len(nodes.Nodes)) + for _, e := range nodes.Nodes { + result = append(result, e.AsTypeParameter()) + } + return result +} + +func (ch *PsuedoChecker) typeFromParameter(node *ast.ParameterDeclaration) *PsuedoType { + parent := node.Parent + if parent.Kind == ast.KindSetAccessor { + return ch.GetTypeOfAccessor(parent.AsGetAccessorDeclaration()) + } + declaredType := node.Type + if declaredType != nil { + return NewPsuedoTypeDirect(declaredType) + } + if node.Initializer != nil && ast.IsIdentifier(node.Name()) && !isContextuallyTyped(node.AsNode()) { + return ch.typeFromExpression(node.Initializer) + } + // TODO: In strada, the ID checker doesn't infer a parameter type from binding pattern names, but the real checker _does_! + // This means ID won't let you write, say, `({elem}) => false` without an annotation, even though it's trivially of type + // `(p0: {elem: any}) => boolean` and error-free under `noImplicitAny: false`! + // That limitation is retained here. + return NewPsuedoTypeInferred(node.AsNode()) +} + +func (ch *PsuedoChecker) cloneParameters(nodes *ast.NodeList) []*PsuedoParameter { + if nodes == nil { + return nil + } + if len(nodes.Nodes) == 0 { + return nil + } + result := make([]*PsuedoParameter, 0, len(nodes.Nodes)) + for _, e := range nodes.Nodes { + result = append(result, NewPsuedoParameter( + e.AsParameterDeclaration().DotDotDotToken != nil, + e.Name(), + e.AsParameterDeclaration().QuestionToken != nil, + ch.typeFromParameter(e.AsParameterDeclaration()), + )) + } + return result +} + +func isContextuallyTyped(node *ast.Node) bool { + return ast.FindAncestor(node.Parent, func(n *ast.Node) bool { + // Functions calls or parent type annotations (but not the return type of a function expression) may impact the inferred type and local inference is unreliable + if ast.IsCallExpression(n) { + return true + } + if ast.IsFunctionLikeDeclaration(n) { + return n.FunctionLikeData().Type != nil || n.FunctionLikeData().FullSignature != nil + } + return ast.IsJsxElement(n) || ast.IsJsxExpression(n) + }) != nil +} diff --git a/internal/psuedochecker/type.go b/internal/psuedochecker/type.go new file mode 100644 index 00000000000..b64a4eb5187 --- /dev/null +++ b/internal/psuedochecker/type.go @@ -0,0 +1,273 @@ +package psuedochecker + +import ( + "github.com/microsoft/typescript-go/internal/ast" +) + +// `PsuedoType`s are skeletons of types - partially interpreted expressions and type nodes +// composed to represent how you *should* construct a type out of them. They can be trivially +// mapped into actual types by a real `Checker`, or into a tree of `Node`s directly, without +// needing to make any intermediate types, by a `NodeBuilder`. Unlike checker `Type`s, these are +// never normalized, and multiple psuedo-types may refer to the same underlying `Type`. + +// In strada, these were implicit in the AST nodes constructed in `expressionToTypeNode.ts`, which +// repurposed AST nodes for this purpose, but in so doing, often confused weather or not it had validated +// nested nodes for use at a given use-site. By keeping the mapping deferred like this, we can know we haven't +// done any use-site checks until we're ready to map the `PsuedoType` into a `Node`, and can cache +// `PsuedoType`s across multiple target positions. + +type PsuedoTypeKind int16 + +const ( + PsuedoTypeKindDirect PsuedoTypeKind = iota + PsuedoTypeKindInferred + PsuedoTypeKindNoResult + PsuedoTypeKindUnion + PsuedoTypeKindUndefined + PsuedoTypeKindNull + PsuedoTypeKindAny + PsuedoTypeKindString + PsuedoTypeKindNumber + PsuedoTypeKindBigInt + PsuedoTypeKindBoolean + PsuedoTypeKindFalse + PsuedoTypeKindTrue + PsuedoTypeKindSingleCallSignature + PsuedoTypeKindTuple + PsuedoTypeKindObjectLiteral + PsuedoTypeKindStringLiteral + PsuedoTypeKindNumericLiteral + PsuedoTypeKindBigIntLiteral +) + +type PsuedoType struct { + Kind PsuedoTypeKind + Data psuedoTypeData +} + +func NewPsuedoType(kind PsuedoTypeKind, data psuedoTypeData) *PsuedoType { + n := data.AsPsuedoType() + n.Kind = kind + return n +} + +type psuedoTypeData interface { + AsPsuedoType() *PsuedoType +} + +type PsuedoTypeDefault struct { + PsuedoType +} + +func (b *PsuedoTypeDefault) AsPsuedoType() *PsuedoType { return &b.PsuedoType } + +type PsuedoTypeBase struct { + PsuedoTypeDefault +} + +var ( + PsuedoTypeUndefined = NewPsuedoType(PsuedoTypeKindUndefined, &PsuedoTypeBase{}) + PsuedoTypeNull = NewPsuedoType(PsuedoTypeKindNull, &PsuedoTypeBase{}) + PsuedoTypeAny = NewPsuedoType(PsuedoTypeKindAny, &PsuedoTypeBase{}) + PsuedoTypeString = NewPsuedoType(PsuedoTypeKindString, &PsuedoTypeBase{}) + PsuedoTypeNumber = NewPsuedoType(PsuedoTypeKindNumber, &PsuedoTypeBase{}) + PsuedoTypeBigInt = NewPsuedoType(PsuedoTypeKindBigInt, &PsuedoTypeBase{}) + PsuedoTypeBoolean = NewPsuedoType(PsuedoTypeKindBoolean, &PsuedoTypeBase{}) + PsuedoTypeFalse = NewPsuedoType(PsuedoTypeKindFalse, &PsuedoTypeBase{}) + PsuedoTypeTrue = NewPsuedoType(PsuedoTypeKindTrue, &PsuedoTypeBase{}) +) + +// PsuedoTypeDirect directly encodes the type referred to by a given TypeNode +type PsuedoTypeDirect struct { + PsuedoTypeBase + TypeNode *ast.Node +} + +func NewPsuedoTypeDirect(typeNode *ast.Node) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindDirect, &PsuedoTypeDirect{TypeNode: typeNode}) +} + +// PsuedoTypeInferred directly encodes the type referred to by a given Expression +// These represent cases where the expression was too complex for the psuedochecker. +// Most of the time, these locations will produce an error under ID. +type PsuedoTypeInferred struct { + PsuedoTypeBase + Expression *ast.Node +} + +func NewPsuedoTypeInferred(expr *ast.Node) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindInferred, &PsuedoTypeInferred{Expression: expr}) +} + +// PsuedoTypeNoResult is anlogous to PsuedoTypeInferred in that it references a case +// where the type was too complex for the psuedochecker. Rather than an expression, however, +// it is referring to the return type of a signature or declaration. +type PsuedoTypeNoResult struct { + PsuedoTypeBase + Declaration *ast.Node +} + +func NewPsuedoTypeNoResult(decl *ast.Node) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindNoResult, &PsuedoTypeNoResult{Declaration: decl}) +} + +// PsuedoTypeUnion is a collection of psudotypes joined into a union +type PsuedoTypeUnion struct { + PsuedoTypeBase + Types []*PsuedoType +} + +func NewPsuedoTypeUnion(types []*PsuedoType) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindUnion, &PsuedoTypeUnion{Types: types}) +} + +type PsuedoParameter struct { + Rest bool + Name *ast.Node + Optional bool + Type *PsuedoType +} + +func NewPsuedoParameter(isRest bool, name *ast.Node, isOptional bool, t *PsuedoType) *PsuedoParameter { + return &PsuedoParameter{Rest: isRest, Name: name, Optional: isOptional, Type: t} +} + +// PsuedoTypeSingleCallSignature represents an object type with a single call signature, like an arrow or function expression +type PsuedoTypeSingleCallSignature struct { + PsuedoTypeBase + Parameters []*PsuedoParameter + TypeParameters []*ast.TypeParameterDeclaration + ReturnType *PsuedoType +} + +func NewPsuedoTypeSingleCallSignature(parameters []*PsuedoParameter, typeParameters []*ast.TypeParameterDeclaration, returnType *PsuedoType) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindSingleCallSignature, &PsuedoTypeSingleCallSignature{ + Parameters: parameters, + TypeParameters: typeParameters, + ReturnType: returnType, + }) +} + +// PsuedoTypeTuple represents a tuple originaing from an `as const` array literal +type PsuedoTypeTuple struct { + PsuedoTypeBase + Elements []*PsuedoType +} + +func NewPsuedoTypeTuple(elements []*PsuedoType) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindTuple, &PsuedoTypeTuple{ + Elements: elements, + }) +} + +type PsuedoObjectElement struct { + Name *ast.Node + Optional bool + Kind PsuedoObjectElementKind + Data psuedoObjectElementData +} + +func (e *PsuedoObjectElement) AsPsuedoObjectElement() *PsuedoObjectElement { return e } + +type PsuedoObjectElementKind int8 + +const ( + PsuedoObjectElementKindMethod PsuedoObjectElementKind = iota + PsuedoObjectElementKindPropertyAssignment + PsuedoObjectElementKindSetAccessor + PsuedoObjectElementKindGetAccessor +) + +type psuedoObjectElementData interface { + AsPsuedoObjectElement() *PsuedoObjectElement +} + +func NewPsuedoObjectElement(kind PsuedoObjectElementKind, name *ast.Node, optional bool, data psuedoObjectElementData) *PsuedoObjectElement { + e := data.AsPsuedoObjectElement() + e.Kind = kind + e.Name = name + e.Optional = optional + return e +} + +type PsuedoObjectMethod struct { + PsuedoObjectElement + Parameters []*PsuedoParameter + ReturnType *PsuedoType +} + +func NewPsuedoObjectMethod(name *ast.Node, optional bool, parameters []*PsuedoParameter, returnType *PsuedoType) *PsuedoObjectElement { + return NewPsuedoObjectElement(PsuedoObjectElementKindMethod, name, optional, &PsuedoObjectMethod{ + Parameters: parameters, + ReturnType: returnType, + }) +} + +type PsuedoPropertyAssignment struct { + PsuedoObjectElement + Type *PsuedoType +} + +func NewPsuedoPropertyAssignment(name *ast.Node, optional bool, t *PsuedoType) *PsuedoObjectElement { + return NewPsuedoObjectElement(PsuedoObjectElementKindPropertyAssignment, name, optional, &PsuedoPropertyAssignment{ + Type: t, + }) +} + +type PsuedoSetAccessor struct { + PsuedoObjectElement + Parameter *PsuedoParameter +} + +func NewPsuedoSetAccessor(name *ast.Node, optional bool, p *PsuedoParameter) *PsuedoObjectElement { + return NewPsuedoObjectElement(PsuedoObjectElementKindSetAccessor, name, optional, &PsuedoSetAccessor{ + Parameter: p, + }) +} + +type PsuedoGetAccessor struct { + PsuedoObjectElement + Type *PsuedoType +} + +func NewPsuedoGetAccessor(name *ast.Node, optional bool, t *PsuedoType) *PsuedoObjectElement { + return NewPsuedoObjectElement(PsuedoObjectElementKindGetAccessor, name, optional, &PsuedoGetAccessor{ + Type: t, + }) +} + +// PsuedoTypeObjectLiteral represents an object type originaing from an object literal +type PsuedoTypeObjectLiteral struct { + PsuedoTypeBase + Elements []*PsuedoObjectElement +} + +func NewPsuedoTypeObjectLiteral(elements []*PsuedoObjectElement) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindObjectLiteral, &PsuedoTypeObjectLiteral{ + Elements: elements, + }) +} + +// PsuedoTypeLiteral represents a literal type +type PsuedoTypeLiteral struct { + PsuedoTypeBase + Node *ast.Node +} + +func NewPsuedoTypeStringLiteral(node *ast.Node) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindStringLiteral, &PsuedoTypeLiteral{ + Node: node, + }) +} + +func NewPsuedoTypeNumericLiteral(node *ast.Node) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindNumericLiteral, &PsuedoTypeLiteral{ + Node: node, + }) +} + +func NewPsuedoTypeBigIntLiteral(node *ast.Node) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindBigIntLiteral, &PsuedoTypeLiteral{ + Node: node, + }) +} diff --git a/internal/transformers/declarations/transform.go b/internal/transformers/declarations/transform.go index 07ff9215211..b1c46bbac32 100644 --- a/internal/transformers/declarations/transform.go +++ b/internal/transformers/declarations/transform.go @@ -1587,7 +1587,7 @@ func (tx *DeclarationTransformer) ensureParameter(p *ast.ParameterDeclaration) * func (tx *DeclarationTransformer) ensureNoInitializer(node *ast.Node) *ast.Node { if tx.shouldPrintWithInitializer(node) { unwrappedInitializer := unwrapParenthesizedExpression(node.Initializer()) - if !isPrimitiveLiteralValue(unwrappedInitializer, true) { + if !ast.IsPrimitiveLiteralValue(unwrappedInitializer, true) { tx.tracker.ReportInferenceFallback(node) } return tx.resolver.CreateLiteralConstValue(tx.EmitContext(), tx.EmitContext().ParseNode(node), tx.tracker) diff --git a/internal/transformers/declarations/util.go b/internal/transformers/declarations/util.go index e6d71f5697a..a5abedb169b 100644 --- a/internal/transformers/declarations/util.go +++ b/internal/transformers/declarations/util.go @@ -160,31 +160,6 @@ func unwrapParenthesizedExpression(o *ast.Node) *ast.Node { return o } -func isPrimitiveLiteralValue(node *ast.Node, includeBigInt bool) bool { - // !!! Debug.type(node); - switch node.Kind { - case ast.KindTrueKeyword, - ast.KindFalseKeyword, - ast.KindNumericLiteral, - ast.KindStringLiteral, - ast.KindNoSubstitutionTemplateLiteral: - return true - case ast.KindBigIntLiteral: - return includeBigInt - case ast.KindPrefixUnaryExpression: - if node.AsPrefixUnaryExpression().Operator == ast.KindMinusToken { - return ast.IsNumericLiteral(node.AsPrefixUnaryExpression().Operand) || (includeBigInt && ast.IsBigIntLiteral(node.AsPrefixUnaryExpression().Operand)) - } - if node.AsPrefixUnaryExpression().Operator == ast.KindPlusToken { - return ast.IsNumericLiteral(node.AsPrefixUnaryExpression().Operand) - } - return false - default: - // !!! assertType(node); - return false - } -} - func isPrivateMethodTypeParameter(host DeclarationEmitHost, node *ast.TypeParameterDeclaration) bool { return node.AsNode().Parent.Kind == ast.KindMethodDeclaration && host.GetEffectiveDeclarationFlags(node.AsNode().Parent, ast.ModifierFlagsPrivate) != 0 } From 6ed2e407e720a9f9feddf8ecaa99617b053ef6b5 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 8 Sep 2025 14:45:20 -0700 Subject: [PATCH 02/55] Stitch together psuedochecker and nodebuilder --- internal/ast/utilities.go | 24 +++ internal/checker/nodebuilder.go | 2 +- internal/checker/nodebuilderimpl.go | 44 +++- internal/checker/nodebuilderscopes.go | 13 ++ internal/checker/nodecopy.go | 190 +++++++++++++++++ internal/checker/psuedotypenodebuilder.go | 191 ++++++++++++++++++ internal/psuedochecker/lookup.go | 18 +- internal/psuedochecker/type.go | 1 + .../transformers/declarations/transform.go | 2 +- internal/transformers/declarations/util.go | 24 --- 10 files changed, 464 insertions(+), 45 deletions(-) create mode 100644 internal/checker/nodecopy.go create mode 100644 internal/checker/psuedotypenodebuilder.go diff --git a/internal/ast/utilities.go b/internal/ast/utilities.go index 555f373aeae..d291cd76edd 100644 --- a/internal/ast/utilities.go +++ b/internal/ast/utilities.go @@ -3933,3 +3933,27 @@ func IsPrimitiveLiteralValue(node *Node, includeBigInt bool) bool { return false } } + +func HasInferredType(node *Node) bool { + // Debug.type(node); // !!! + switch node.Kind { + case KindParameter, + KindPropertySignature, + KindPropertyDeclaration, + KindBindingElement, + KindPropertyAccessExpression, + KindElementAccessExpression, + KindBinaryExpression, + KindVariableDeclaration, + KindExportAssignment, + KindJSExportAssignment, + KindPropertyAssignment, + KindShorthandPropertyAssignment, + KindJSDocParameterTag, + KindJSDocPropertyTag: + return true + default: + // assertType(node); // !!! + return false + } +} diff --git a/internal/checker/nodebuilder.go b/internal/checker/nodebuilder.go index bd629596c7d..5b801adc4a8 100644 --- a/internal/checker/nodebuilder.go +++ b/internal/checker/nodebuilder.go @@ -105,7 +105,7 @@ func (b *NodeBuilder) SerializeTypeParametersForSignature(signatureDeclaration * // SerializeTypeForDeclaration implements NodeBuilderInterface. func (b *NodeBuilder) SerializeTypeForDeclaration(declaration *ast.Node, symbol *ast.Symbol, enclosingDeclaration *ast.Node, flags nodebuilder.Flags, internalFlags nodebuilder.InternalFlags, tracker nodebuilder.SymbolTracker) *ast.Node { b.enterContext(enclosingDeclaration, flags, internalFlags, tracker) - return b.exitContext(b.impl.serializeTypeForDeclaration(declaration, nil, symbol)) + return b.exitContext(b.impl.serializeTypeForDeclaration(declaration, nil, symbol, true)) } // SerializeTypeForExpression implements NodeBuilderInterface. diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index 832de4e14da..a88dbc5fe44 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -15,6 +15,7 @@ import ( "github.com/microsoft/typescript-go/internal/modulespecifiers" "github.com/microsoft/typescript-go/internal/nodebuilder" "github.com/microsoft/typescript-go/internal/printer" + "github.com/microsoft/typescript-go/internal/psuedochecker" "github.com/microsoft/typescript-go/internal/scanner" "github.com/microsoft/typescript-go/internal/stringutil" "github.com/microsoft/typescript-go/internal/tspath" @@ -88,6 +89,7 @@ type nodeBuilderImpl struct { f *ast.NodeFactory ch *Checker e *printer.EmitContext + pc *psuedochecker.PsuedoChecker // cache links core.LinkStore[*ast.Node, NodeBuilderLinks] @@ -108,7 +110,7 @@ const ( // Node builder utility functions func newNodeBuilderImpl(ch *Checker, e *printer.EmitContext) *nodeBuilderImpl { - b := &nodeBuilderImpl{f: e.Factory.AsNodeFactory(), ch: ch, e: e} + b := &nodeBuilderImpl{f: e.Factory.AsNodeFactory(), ch: ch, e: e, pc: psuedochecker.NewPsuedoChecker()} b.cloneBindingNameVisitor = ast.NewNodeVisitor(b.cloneBindingName, b.f, ast.NodeVisitorHooks{}) return b } @@ -334,10 +336,6 @@ func (b *nodeBuilderImpl) setCommentRange(node *ast.Node, range_ *ast.Node) { } } -func (b *nodeBuilderImpl) tryReuseExistingTypeNodeHelper(existing *ast.TypeNode) *ast.TypeNode { - return nil // !!! -} - func (b *nodeBuilderImpl) tryReuseExistingTypeNode(typeNode *ast.TypeNode, t *Type, host *ast.Node, addUndefined bool) *ast.TypeNode { originalType := t if addUndefined { @@ -1549,7 +1547,7 @@ func (b *nodeBuilderImpl) symbolToParameterDeclaration(parameterSymbol *ast.Symb parameterDeclaration := getEffectiveParameterDeclaration(parameterSymbol) parameterType := b.ch.getTypeOfSymbol(parameterSymbol) - parameterTypeNode := b.serializeTypeForDeclaration(parameterDeclaration, parameterType, parameterSymbol) + parameterTypeNode := b.serializeTypeForDeclaration(parameterDeclaration, parameterType, parameterSymbol, true) var modifiers *ast.ModifierList if b.ctx.flags&nodebuilder.FlagsOmitParameterModifiers == 0 && preserveModifierFlags && parameterDeclaration != nil && ast.CanHaveModifiers(parameterDeclaration) { originals := core.Filter(parameterDeclaration.Modifiers().Nodes, ast.IsModifier) @@ -1978,8 +1976,16 @@ func (b *nodeBuilderImpl) indexInfoToIndexSignatureDeclarationHelper(indexInfo * * @param type - The type to write; an existing annotation must match this type if it's used, otherwise this is the type serialized as a new type node * @param symbol - The symbol is used both to find an existing annotation if declaration is not provided, and to determine if `unique symbol` should be printed */ -func (b *nodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declaration, t *Type, symbol *ast.Symbol) *ast.Node { - // !!! node reuse logic +func (b *nodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declaration, t *Type, symbol *ast.Symbol, tryReuse bool) *ast.Node { + if declaration == nil { + if symbol != nil { + declaration = symbol.ValueDeclaration + if declaration == nil { + // TODO: prefer annotated declarations like in strada (but does this ever even matter in practice? All callers should supply a declaration!) + declaration = core.FirstOrNil(symbol.Declarations) + } + } + } if symbol == nil { symbol = b.ch.getSymbolOfDeclaration(declaration) } @@ -2008,8 +2014,26 @@ func (b *nodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati })) { b.ctx.flags |= nodebuilder.FlagsAllowUniqueESSymbolType } - result := b.typeToTypeNode(t) // !!! expressionOrTypeToTypeNode + var result *ast.Node + // !!! expandable hover support + if tryReuse && declaration != nil && (ast.IsAccessor(declaration) || (ast.HasInferredType(declaration) && !ast.NodeIsSynthesized(declaration) && (t.ObjectFlags()&ObjectFlagsRequiresWidening) == 0)) { + remove := b.addSymbolTypeToContext(symbol, t) + if ast.IsAccessor(declaration) { + pt := b.pc.GetTypeOfAccessor(declaration) + result = b.psuedoTypeToNode(pt) + } else { + pt := b.pc.GetTypeOfDeclaration(declaration) + result = b.psuedoTypeToNode(pt) + } + remove() + } + if result == nil { + result = b.typeToTypeNode(t) + } restoreFlags() + if result == nil { + return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) + } return result } @@ -2253,7 +2277,7 @@ func (b *nodeBuilderImpl) addPropertyToElementList(propertySymbol *ast.Symbol, t b.ctx.reverseMappedStack = append(b.ctx.reverseMappedStack, propertySymbol) } if propertyType != nil { - propertyTypeNode = b.serializeTypeForDeclaration(nil /*declaration*/, propertyType, propertySymbol) + propertyTypeNode = b.serializeTypeForDeclaration(nil /*declaration*/, propertyType, propertySymbol, true) } else { propertyTypeNode = b.f.NewKeywordTypeNode(ast.KindAnyKeyword) } diff --git a/internal/checker/nodebuilderscopes.go b/internal/checker/nodebuilderscopes.go index e6394df456f..3646fd2fceb 100644 --- a/internal/checker/nodebuilderscopes.go +++ b/internal/checker/nodebuilderscopes.go @@ -49,6 +49,19 @@ type localsRecord struct { oldSymbol *ast.Symbol } +func (b *nodeBuilderImpl) addSymbolTypeToContext(symbol *ast.Symbol, t *Type) func() { + id := ast.GetSymbolId(symbol) + oldType, oldTypeExists := b.ctx.enclosingSymbolTypes[id] + b.ctx.enclosingSymbolTypes[id] = t + return func() { + if oldTypeExists { + b.ctx.enclosingSymbolTypes[id] = oldType + } else { + delete(b.ctx.enclosingSymbolTypes, id) + } + } +} + func (b *nodeBuilderImpl) enterNewScope(declaration *ast.Node, expandedParams []*ast.Symbol, typeParameters []*Type, originalParameters []*ast.Symbol, mapper *TypeMapper) func() { cleanupContext := cloneNodeBuilderContext(b.ctx) // For regular function/method declarations, the enclosing declaration will already be signature.declaration, diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go new file mode 100644 index 00000000000..249d6ceba3b --- /dev/null +++ b/internal/checker/nodecopy.go @@ -0,0 +1,190 @@ +package checker + +import ( + "github.com/microsoft/typescript-go/internal/ast" + "github.com/microsoft/typescript-go/internal/modulespecifiers" + "github.com/microsoft/typescript-go/internal/nodebuilder" +) + +func (b *nodeBuilderImpl) reuseNode(node *ast.Node) *ast.Node { + // !!! + return node +} + +type recoveryBoundary struct { + ctx *NodeBuilderContext + hadError bool + deferredReports []func() + oldTracker nodebuilder.SymbolTracker + oldTrackedSymbols []*TrackedSymbolArgs + oldEncounteredError bool +} + +func (b *recoveryBoundary) markError(f func()) { + b.hadError = true + if f != nil { + b.deferredReports = append(b.deferredReports, f) + } +} + +type originalRecoveryScopeState struct { + trackedSymbolsTop int + unreportedErrorsTop int + hadError bool +} + +func (b *recoveryBoundary) startRecoveryScope() originalRecoveryScopeState { + trackedSymbolsTop := len(b.ctx.trackedSymbols) + unreportedErrorsTop := len(b.deferredReports) + return originalRecoveryScopeState{trackedSymbolsTop: trackedSymbolsTop, unreportedErrorsTop: unreportedErrorsTop, hadError: b.hadError} +} + +func (b *recoveryBoundary) endRecoveryScope(state originalRecoveryScopeState) { + b.hadError = state.hadError + b.ctx.trackedSymbols = b.ctx.trackedSymbols[0:state.trackedSymbolsTop] + b.deferredReports = b.deferredReports[0:state.unreportedErrorsTop] +} + +type wrappingTracker struct { + wrapped nodebuilder.SymbolTracker + bound *recoveryBoundary +} + +func (w *wrappingTracker) GetModuleSpecifierGenerationHost() modulespecifiers.ModuleSpecifierGenerationHost { + return w.wrapped.GetModuleSpecifierGenerationHost() +} + +func (w *wrappingTracker) PopErrorFallbackNode() { + w.wrapped.PopErrorFallbackNode() +} + +func (w *wrappingTracker) PushErrorFallbackNode(node *ast.Node) { + w.wrapped.PushErrorFallbackNode(node) +} + +func (w *wrappingTracker) ReportCyclicStructureError() { + w.bound.markError(w.wrapped.ReportCyclicStructureError) +} + +func (w *wrappingTracker) ReportInaccessibleThisError() { + w.bound.markError(w.wrapped.ReportInaccessibleThisError) +} + +func (w *wrappingTracker) ReportInaccessibleUniqueSymbolError() { + w.bound.markError(w.wrapped.ReportInaccessibleUniqueSymbolError) +} + +func (w *wrappingTracker) ReportInferenceFallback(node *ast.Node) { + w.wrapped.ReportInferenceFallback(node) // Should this also be deferred? +} + +func (w *wrappingTracker) ReportLikelyUnsafeImportRequiredError(specifier string) { + w.bound.markError(func() { w.wrapped.ReportLikelyUnsafeImportRequiredError(specifier) }) +} + +func (w *wrappingTracker) ReportNonSerializableProperty(propertyName string) { + w.bound.markError(func() { w.wrapped.ReportNonSerializableProperty(propertyName) }) +} + +func (w *wrappingTracker) ReportNonlocalAugmentation(containingFile *ast.SourceFile, parentSymbol *ast.Symbol, augmentingSymbol *ast.Symbol) { + w.wrapped.ReportNonlocalAugmentation(containingFile, parentSymbol, augmentingSymbol) // Should this also be deferred? +} + +func (w *wrappingTracker) ReportPrivateInBaseOfClassExpression(propertyName string) { + w.bound.markError(func() { w.wrapped.ReportPrivateInBaseOfClassExpression(propertyName) }) +} + +func (w *wrappingTracker) ReportTruncationError() { + w.wrapped.ReportTruncationError() // Should this also be deferred? +} + +func (w *wrappingTracker) TrackSymbol(symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags) bool { + w.bound.ctx.trackedSymbols = append(w.bound.ctx.trackedSymbols, &TrackedSymbolArgs{symbol, enclosingDeclaration, meaning}) + return false +} + +func newWrappingTracker(inner nodebuilder.SymbolTracker, bound *recoveryBoundary) *wrappingTracker { + return &wrappingTracker{ + wrapped: inner, + bound: bound, + } +} + +func (b *nodeBuilderImpl) createRecoveryBoundary() *recoveryBoundary { + b.ch.checkNotCanceled() + bound := &recoveryBoundary{oldTracker: b.ctx.tracker, oldTrackedSymbols: b.ctx.trackedSymbols, oldEncounteredError: b.ctx.encounteredError} + newTracker := NewSymbolTrackerImpl(b.ctx, newWrappingTracker(b.ctx.tracker, bound), b.ctx.tracker.GetModuleSpecifierGenerationHost()) + b.ctx.tracker = newTracker + b.ctx.trackedSymbols = nil + return bound +} + +func (b *nodeBuilderImpl) finalizeBoundary(bound *recoveryBoundary) bool { + b.ctx.tracker = bound.oldTracker + b.ctx.trackedSymbols = bound.oldTrackedSymbols + b.ctx.encounteredError = bound.oldEncounteredError + + for _, f := range bound.deferredReports { + f() + } + if bound.hadError { + return false + } + for _, a := range b.ctx.trackedSymbols { + b.ctx.tracker.TrackSymbol(a.symbol, a.enclosingDeclaration, a.meaning) + } + return true +} + +func (b *nodeBuilderImpl) tryReuseExistingTypeNodeHelper(existing *ast.TypeNode) *ast.TypeNode { + bound := b.createRecoveryBoundary() + var transformed *ast.Node + // !!! + if !b.finalizeBoundary(bound) { + return nil + } + b.ctx.approximateLength += existing.Loc.End() - existing.Loc.Pos() + return transformed +} + +func getExistingNodeTreeVisitor(b *nodeBuilderImpl, bound *recoveryBoundary, factory *ast.NodeFactory) *ast.NodeVisitor { + visitExistingNodeTreeSymbolsWorker := func(node *ast.Node) *ast.Node { + return node // !!! + } + return ast.NewNodeVisitor(func(node *ast.Node) *ast.Node { + if bound.hadError { + return node + } + recover := bound.startRecoveryScope() + introducesNewScope := ast.IsFunctionLike(node) || ast.IsMappedTypeNode(node) + var exit func() + if introducesNewScope { + var params []*ast.Symbol + var typeParams []*Type + if ast.IsFunctionLike(node) { + sig := b.ch.getSignatureFromDeclaration(node) + params = sig.parameters + typeParams = sig.typeParameters + } else if ast.IsConditionalTypeNode(node) { // !!! TODO: impossible in combination with the scope start check??? + typeParams = b.ch.getInferTypeParameters(node) + } else if ast.IsMappedTypeNode(node) { + typeParams = []*Type{b.ch.getDeclaredTypeOfTypeParameter(b.ch.getSymbolOfDeclaration(node.AsMappedTypeNode().TypeParameter))} + } + exit = b.enterNewScope(node, params, typeParams, nil, nil) + } + result := visitExistingNodeTreeSymbolsWorker(node) + if exit != nil { + exit() + } + + if bound.hadError { + if ast.IsTypeNode(node) && !ast.IsTypePredicateNode(node) { + bound.endRecoveryScope(recover) + return nil // !!! + } + return node + } + + return result + }, factory, ast.NodeVisitorHooks{}) +} diff --git a/internal/checker/psuedotypenodebuilder.go b/internal/checker/psuedotypenodebuilder.go new file mode 100644 index 00000000000..3e229152ebe --- /dev/null +++ b/internal/checker/psuedotypenodebuilder.go @@ -0,0 +1,191 @@ +package checker + +import ( + "github.com/microsoft/typescript-go/internal/ast" + "github.com/microsoft/typescript-go/internal/debug" + "github.com/microsoft/typescript-go/internal/nodebuilder" + "github.com/microsoft/typescript-go/internal/printer" + "github.com/microsoft/typescript-go/internal/psuedochecker" +) + +// Maps a psuedochecker's psuedotypes into ast nodes and reports any inference fallback errors the psuedotype structure implies +func (b *nodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Node { + debug.Assert(t != nil, "Attempted to serialize nil psuedotype") + switch t.Kind { + case psuedochecker.PsuedoTypeKindDirect: + return b.reuseNode(t.Data.(*psuedochecker.PsuedoTypeDirect).TypeNode) + case psuedochecker.PsuedoTypeKindInferred: + node := t.Data.(*psuedochecker.PsuedoTypeInferred).Expression + b.ctx.tracker.ReportInferenceFallback(node) + ty := b.ch.getTypeOfExpression(node) + return b.typeToTypeNode(ty) + case psuedochecker.PsuedoTypeKindNoResult: + node := t.Data.(*psuedochecker.PsuedoTypeNoResult).Declaration + b.ctx.tracker.ReportInferenceFallback(node) + return b.serializeTypeForDeclaration(node, nil, nil, false) + case psuedochecker.PsuedoTypeKindUnion: + var res []*ast.Node + members := t.Data.(*psuedochecker.PsuedoTypeUnion).Types + for _, m := range members { + // TODO: improvement - in non-strict-null-checks mode, elide `undefined` and `null` in unions, instead of mapping them to `any` + res = append(res, b.psuedoTypeToNode(m)) + } + return b.f.NewUnionTypeNode(b.f.NewNodeList(res)) + case psuedochecker.PsuedoTypeKindUndefined: + if !b.ch.strictNullChecks { + return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) + } + return b.f.NewKeywordTypeNode(ast.KindUndefinedKeyword) + case psuedochecker.PsuedoTypeKindNull: + if !b.ch.strictNullChecks { + return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) + } + return b.f.NewKeywordTypeNode(ast.KindNullKeyword) + case psuedochecker.PsuedoTypeKindAny: + return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) + case psuedochecker.PsuedoTypeKindString: + return b.f.NewKeywordTypeNode(ast.KindStringKeyword) + case psuedochecker.PsuedoTypeKindNumber: + return b.f.NewKeywordTypeNode(ast.KindNumberKeyword) + case psuedochecker.PsuedoTypeKindBigInt: + return b.f.NewKeywordTypeNode(ast.KindBigIntKeyword) + case psuedochecker.PsuedoTypeKindBoolean: + return b.f.NewKeywordTypeNode(ast.KindBooleanKeyword) + case psuedochecker.PsuedoTypeKindFalse: + return b.f.NewKeywordTypeNode(ast.KindFalseKeyword) + case psuedochecker.PsuedoTypeKindTrue: + return b.f.NewKeywordTypeNode(ast.KindTrueKeyword) + case psuedochecker.PsuedoTypeKindSingleCallSignature: + d := t.Data.(*psuedochecker.PsuedoTypeSingleCallSignature) + var typeParams *ast.NodeList + if len(d.TypeParameters) > 0 { + res := make([]*ast.Node, 0, len(d.TypeParameters)) + for _, tp := range d.TypeParameters { + res = append(res, b.reuseNode(tp.AsNode())) + } + typeParams = b.f.NewNodeList(res) + } + params := b.psuedoParametersToNodeList(d.Parameters) + returnType := b.psuedoTypeToNode(d.ReturnType) + return b.f.NewFunctionTypeNode(typeParams, params, returnType) + case psuedochecker.PsuedoTypeKindTuple: + var res []*ast.Node + elements := t.Data.(*psuedochecker.PsuedoTypeTuple).Elements + for _, e := range elements { + res = append(res, b.psuedoTypeToNode(e)) + } + // !!! TODO: psuedo-tuples are implicitly `readonly` since they originate from `as const` contexts + // but strada fails to add the `readonly` modifier to the generated node. We replicate that bug here. + // return b.f.NewTypeOperatorNode(ast.KindReadonlyKeyword, b.f.NewTupleTypeNode(b.f.NewNodeList(res))) + result := b.f.NewTupleTypeNode(b.f.NewNodeList(res)) + b.e.AddEmitFlags(result, printer.EFSingleLine) + return result + case psuedochecker.PsuedoTypeKindObjectLiteral: + elements := t.Data.(*psuedochecker.PsuedoTypeObjectLiteral).Elements + if len(elements) == 0 { + result := b.f.NewTypeLiteralNode(b.f.NewNodeList(nil)) + b.e.AddEmitFlags(result, printer.EFSingleLine) + return result + } + // NOTE: using the checker's `isConstContext` instead of the psuedochecker's `isInConstContext` + // results in different results here. The checker one is more "correct" but means we'll mark + // objects in parameter positions contextually typed by const type parameters as readonly - + // something a true syntactic ID emitter couldn't possibly know (since the signature could + // be from across files). This can't *really* happen in any cases ID doesn't already error on, though. + // Just something to keep in mind if the ID checker keeps growing. + isConst := b.ch.isConstContext(elements[0].Name) + newElements := make([]*ast.Node, 0, len(elements)) + // TODO: strada's ID logic is piecemeal in `name` reuse validation - only methods remap `new` to `"new"` + // we should have a unified `reuseName` codepath that remaps keyword ID names to string literal names + for _, e := range elements { + var modifiers *ast.ModifierList + if isConst { + modifiers = b.f.NewModifierList([]*ast.Node{b.f.NewModifier(ast.KindReadonlyKeyword)}) + } + var newProp *ast.Node + switch e.Kind { + case psuedochecker.PsuedoObjectElementKindMethod: + d := e.Data.(*psuedochecker.PsuedoObjectMethod) + newProp = b.f.NewMethodSignatureDeclaration( + modifiers, + b.reuseNode(e.Name), + nil, + nil, + b.psuedoParametersToNodeList(d.Parameters), + b.psuedoTypeToNode(d.ReturnType), + ) + case psuedochecker.PsuedoObjectElementKindPropertyAssignment: + d := e.Data.(*psuedochecker.PsuedoPropertyAssignment) + newProp = b.f.NewPropertySignatureDeclaration( + modifiers, + b.reuseNode(e.Name), + nil, + b.psuedoTypeToNode(d.Type), + nil, + ) + case psuedochecker.PsuedoObjectElementKindSetAccessor: + d := e.Data.(*psuedochecker.PsuedoSetAccessor) + newProp = b.f.NewSetAccessorDeclaration( + nil, + b.reuseNode(e.Name), + nil, + b.f.NewNodeList([]*ast.Node{b.psuedoParameterToNode(d.Parameter)}), + nil, + nil, + nil, + ) + case psuedochecker.PsuedoObjectElementKindGetAccessor: + d := e.Data.(*psuedochecker.PsuedoGetAccessor) + newProp = b.f.NewSetAccessorDeclaration( + nil, + b.reuseNode(e.Name), + nil, + nil, + b.psuedoTypeToNode(d.Type), + nil, + nil, + ) + } + b.e.SetCommentRange(newProp, e.Name.Parent.Loc) + newElements = append(newElements, newProp) + } + result := b.f.NewTypeLiteralNode(b.f.NewNodeList(newElements)) + if b.ctx.flags&nodebuilder.FlagsMultilineObjectLiterals == 0 { + b.e.AddEmitFlags(result, printer.EFSingleLine) + } + return result + case psuedochecker.PsuedoTypeKindStringLiteral, psuedochecker.PsuedoTypeKindNumericLiteral, psuedochecker.PsuedoTypeKindBigIntLiteral: + source := t.Data.(*psuedochecker.PsuedoTypeLiteral).Node + return b.f.NewLiteralTypeNode(b.reuseNode(source)) + default: + debug.AssertNever(t.Kind, "Unhandled psuedotype kind in psuedotype node construction") + return nil + } +} + +func (b *nodeBuilderImpl) psuedoParametersToNodeList(params []*psuedochecker.PsuedoParameter) *ast.NodeList { + res := make([]*ast.Node, 0, len(params)) + for _, p := range params { + res = append(res, b.psuedoParameterToNode(p)) + } + return b.f.NewNodeList(res) +} + +func (b *nodeBuilderImpl) psuedoParameterToNode(p *psuedochecker.PsuedoParameter) *ast.Node { + var dotDotDot *ast.Node + var questionMark *ast.Node + if p.Rest { + dotDotDot = b.f.NewToken(ast.KindDotDotDotToken) + } + if p.Optional { + questionMark = b.f.NewToken(ast.KindQuestionToken) + } + return b.f.NewParameterDeclaration( + nil, + dotDotDot, + b.reuseNode(p.Name), + questionMark, + b.psuedoTypeToNode(p.Type), + nil, + ) +} diff --git a/internal/psuedochecker/lookup.go b/internal/psuedochecker/lookup.go index b9d757d9672..fe5a65026d3 100644 --- a/internal/psuedochecker/lookup.go +++ b/internal/psuedochecker/lookup.go @@ -9,7 +9,7 @@ import ( func (ch *PsuedoChecker) GetReturnTypeOfSignature(signatureNode *ast.Node) *PsuedoType { switch signatureNode.Kind { case ast.KindGetAccessor: - return ch.GetTypeOfAccessor(signatureNode.AsGetAccessorDeclaration()) + return ch.GetTypeOfAccessor(signatureNode) case ast.KindMethodDeclaration, ast.KindFunctionDeclaration, ast.KindConstructor, ast.KindMethodSignature, ast.KindCallSignature, ast.KindConstructSignature, ast.KindSetAccessor, ast.KindIndexSignature, ast.KindFunctionType, ast.KindConstructorType, @@ -21,10 +21,10 @@ func (ch *PsuedoChecker) GetReturnTypeOfSignature(signatureNode *ast.Node) *Psue } } -func (ch *PsuedoChecker) GetTypeOfAccessor(accessor *ast.GetAccessorDeclaration) *PsuedoType { +func (ch *PsuedoChecker) GetTypeOfAccessor(accessor *ast.Node) *PsuedoType { annotated := ch.typeFromAccessor(accessor) if annotated.Kind == PsuedoTypeKindNoResult { - return ch.inferAccessorType(accessor.AsNode()) + return ch.inferAccessorType(accessor) } return annotated } @@ -106,16 +106,16 @@ func (ch *PsuedoChecker) typeFromVariable(declaration *ast.VariableDeclaration) return NewPsuedoTypeNoResult(declaration.AsNode()) } -func (ch *PsuedoChecker) typeFromAccessor(accessor *ast.GetAccessorDeclaration) *PsuedoType { - accessorDeclarations := ast.GetAllAccessorDeclarationsForDeclaration(accessor.AsNode(), accessor.Symbol) - accessorType := ch.getTypeAnnotationFromAllAccessorDeclarations(accessor.AsNode(), accessorDeclarations) +func (ch *PsuedoChecker) typeFromAccessor(accessor *ast.Node) *PsuedoType { + accessorDeclarations := ast.GetAllAccessorDeclarationsForDeclaration(accessor, accessor.DeclarationData().Symbol) + accessorType := ch.getTypeAnnotationFromAllAccessorDeclarations(accessor, accessorDeclarations) if accessorType != nil && !ast.IsTypePredicateNode(accessorType) { return NewPsuedoTypeDirect(accessorType) } if accessorDeclarations.GetAccessor != nil { return ch.createReturnFromSignature(accessorDeclarations.GetAccessor.AsNode()) } - return NewPsuedoTypeNoResult(accessor.AsNode()) + return NewPsuedoTypeNoResult(accessor) } func (ch *PsuedoChecker) inferAccessorType(node *ast.Node) *PsuedoType { @@ -334,7 +334,7 @@ func (ch *PsuedoChecker) typeFromObjectLiteral(node *ast.ObjectLiteralExpression results = append(results, NewPsuedoGetAccessor( e.Name(), false, - ch.typeFromAccessor(e.AsGetAccessorDeclaration()), + ch.typeFromAccessor(e), )) } } @@ -471,7 +471,7 @@ func (ch *PsuedoChecker) cloneTypeParameters(nodes *ast.NodeList) []*ast.TypePar func (ch *PsuedoChecker) typeFromParameter(node *ast.ParameterDeclaration) *PsuedoType { parent := node.Parent if parent.Kind == ast.KindSetAccessor { - return ch.GetTypeOfAccessor(parent.AsGetAccessorDeclaration()) + return ch.GetTypeOfAccessor(parent) } declaredType := node.Type if declaredType != nil { diff --git a/internal/psuedochecker/type.go b/internal/psuedochecker/type.go index b64a4eb5187..87ca142c2e0 100644 --- a/internal/psuedochecker/type.go +++ b/internal/psuedochecker/type.go @@ -48,6 +48,7 @@ type PsuedoType struct { func NewPsuedoType(kind PsuedoTypeKind, data psuedoTypeData) *PsuedoType { n := data.AsPsuedoType() n.Kind = kind + n.Data = data return n } diff --git a/internal/transformers/declarations/transform.go b/internal/transformers/declarations/transform.go index b1c46bbac32..d77c9260ca7 100644 --- a/internal/transformers/declarations/transform.go +++ b/internal/transformers/declarations/transform.go @@ -1026,7 +1026,7 @@ func (tx *DeclarationTransformer) ensureType(node *ast.Node, ignorePrivate bool) } var typeNode *ast.Node - if hasInferredType(node) { + if ast.HasInferredType(node) { typeNode = tx.resolver.CreateTypeOfDeclaration(tx.EmitContext(), node, tx.enclosingDeclaration, declarationEmitNodeBuilderFlags, declarationEmitInternalNodeBuilderFlags, tx.tracker) } else if ast.IsFunctionLike(node) { typeNode = tx.resolver.CreateReturnTypeOfSignatureDeclaration(tx.EmitContext(), node, tx.enclosingDeclaration, declarationEmitNodeBuilderFlags, declarationEmitInternalNodeBuilderFlags, tx.tracker) diff --git a/internal/transformers/declarations/util.go b/internal/transformers/declarations/util.go index a5abedb169b..7c722164119 100644 --- a/internal/transformers/declarations/util.go +++ b/internal/transformers/declarations/util.go @@ -48,30 +48,6 @@ func canProduceDiagnostics(node *ast.Node) bool { /* ast.IsJSDocTypeAlias(node); */ } -func hasInferredType(node *ast.Node) bool { - // Debug.type(node); // !!! - switch node.Kind { - case ast.KindParameter, - ast.KindPropertySignature, - ast.KindPropertyDeclaration, - ast.KindBindingElement, - ast.KindPropertyAccessExpression, - ast.KindElementAccessExpression, - ast.KindBinaryExpression, - ast.KindVariableDeclaration, - ast.KindExportAssignment, - ast.KindJSExportAssignment, - ast.KindPropertyAssignment, - ast.KindShorthandPropertyAssignment, - ast.KindJSDocParameterTag, - ast.KindJSDocPropertyTag: - return true - default: - // assertType(node); // !!! - return false - } -} - func isDeclarationAndNotVisible(emitContext *printer.EmitContext, resolver printer.EmitResolver, node *ast.Node) bool { node = emitContext.ParseNode(node) switch node.Kind { From 982747dc1f9bfee099d26bac07ac41e44932c6ea Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 8 Sep 2025 15:43:47 -0700 Subject: [PATCH 03/55] panic fixes --- internal/checker/nodecopy.go | 3 +-- internal/checker/psuedotypenodebuilder.go | 10 ++++++---- internal/psuedochecker/lookup.go | 4 ++-- internal/psuedochecker/type.go | 1 + 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index 249d6ceba3b..5d0ed1cecf1 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -7,8 +7,7 @@ import ( ) func (b *nodeBuilderImpl) reuseNode(node *ast.Node) *ast.Node { - // !!! - return node + return b.f.DeepCloneNode(node) // !!! TODO: validate refs, apply some .Locs from original nodes where safe } type recoveryBoundary struct { diff --git a/internal/checker/psuedotypenodebuilder.go b/internal/checker/psuedotypenodebuilder.go index 3e229152ebe..fbb3f958ae0 100644 --- a/internal/checker/psuedotypenodebuilder.go +++ b/internal/checker/psuedotypenodebuilder.go @@ -40,7 +40,7 @@ func (b *nodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod if !b.ch.strictNullChecks { return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) } - return b.f.NewKeywordTypeNode(ast.KindNullKeyword) + return b.f.NewLiteralTypeNode(b.f.NewKeywordExpression(ast.KindNullKeyword)) case psuedochecker.PsuedoTypeKindAny: return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) case psuedochecker.PsuedoTypeKindString: @@ -52,9 +52,9 @@ func (b *nodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod case psuedochecker.PsuedoTypeKindBoolean: return b.f.NewKeywordTypeNode(ast.KindBooleanKeyword) case psuedochecker.PsuedoTypeKindFalse: - return b.f.NewKeywordTypeNode(ast.KindFalseKeyword) + return b.f.NewLiteralTypeNode(b.f.NewKeywordExpression(ast.KindFalseKeyword)) case psuedochecker.PsuedoTypeKindTrue: - return b.f.NewKeywordTypeNode(ast.KindTrueKeyword) + return b.f.NewLiteralTypeNode(b.f.NewKeywordExpression(ast.KindTrueKeyword)) case psuedochecker.PsuedoTypeKindSingleCallSignature: d := t.Data.(*psuedochecker.PsuedoTypeSingleCallSignature) var typeParams *ast.NodeList @@ -146,7 +146,9 @@ func (b *nodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod nil, ) } - b.e.SetCommentRange(newProp, e.Name.Parent.Loc) + if b.ctx.enclosingFile == ast.GetSourceFileOfNode(e.Name) { + b.e.SetCommentRange(newProp, e.Name.Parent.Loc) + } newElements = append(newElements, newProp) } result := b.f.NewTypeLiteralNode(b.f.NewNodeList(newElements)) diff --git a/internal/psuedochecker/lookup.go b/internal/psuedochecker/lookup.go index fe5a65026d3..c40d6aa01de 100644 --- a/internal/psuedochecker/lookup.go +++ b/internal/psuedochecker/lookup.go @@ -43,7 +43,7 @@ func (ch *PsuedoChecker) GetTypeOfDeclaration(node *ast.Node) *PsuedoType { return ch.typeFromProperty(node) case ast.KindBindingElement: return NewPsuedoTypeNoResult(node) - case ast.KindExportAssignment: + case ast.KindExportAssignment, ast.KindJSExportAssignment: return ch.typeFromExpression(node.AsExportAssignment().Expression) case ast.KindPropertyAccessExpression, ast.KindElementAccessExpression, ast.KindBinaryExpression: return ch.typeFromExpandoProperty(node) @@ -412,7 +412,7 @@ func (ch *PsuedoChecker) isInConstContext(node *ast.Node) bool { } func (ch *PsuedoChecker) typeFromPrimitiveLiteralPrefix(node *ast.PrefixUnaryExpression) *PsuedoType { - inner := node.Expression() + inner := node.Operand if inner.Kind == ast.KindBigIntLiteral { if ch.isInConstContext(node.AsNode()) { return NewPsuedoTypeBigIntLiteral(node.AsNode()) diff --git a/internal/psuedochecker/type.go b/internal/psuedochecker/type.go index 87ca142c2e0..8ed9f994332 100644 --- a/internal/psuedochecker/type.go +++ b/internal/psuedochecker/type.go @@ -188,6 +188,7 @@ func NewPsuedoObjectElement(kind PsuedoObjectElementKind, name *ast.Node, option e.Kind = kind e.Name = name e.Optional = optional + e.Data = data return e } From 33eaa8ffbf18a9e72d440d48023a71f56fa4305b Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 8 Sep 2025 16:12:22 -0700 Subject: [PATCH 04/55] purge one last test panic --- internal/checker/checker.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 3b1c06807d9..4810815589d 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -11026,6 +11026,11 @@ func (c *Checker) checkPrivateIdentifierPropertyAccess(leftType *Type, right *as } func (c *Checker) reportNonexistentProperty(propNode *ast.Node, containingType *Type) { + links := c.nodeLinks.Get(propNode) + if links.flags&NodeCheckFlagsTypeChecked != 0 { + return // error already made/in progress + } + links.flags |= NodeCheckFlagsTypeChecked var diagnostic *ast.Diagnostic if !ast.IsPrivateIdentifier(propNode) && containingType.flags&TypeFlagsUnion != 0 && containingType.flags&TypeFlagsPrimitive == 0 { for _, subtype := range containingType.Types() { From d24f95b933d844e33e7e41a155706c3911303888 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 22 Oct 2025 13:55:33 -0700 Subject: [PATCH 05/55] mostly complete impl, panic-free, just logical bugfixes needed --- internal/checker/checker.go | 20 + internal/checker/emitresolver.go | 18 +- internal/checker/nodebuilderimpl.go | 6 +- internal/checker/nodecopy.go | 598 +++++++++++++++++++++- internal/checker/psuedotypenodebuilder.go | 19 +- internal/checker/symbolaccessibility.go | 192 +++---- internal/printer/printer.go | 3 + 7 files changed, 726 insertions(+), 130 deletions(-) diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 4810815589d..65b2d9e8edc 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -14470,6 +14470,26 @@ func (c *Checker) resolveExternalModuleNameWorker(location *ast.Node, moduleRefe return nil } +func (c *Checker) getExternalModuleFileFromDeclaration(declaration *ast.Node) *ast.SourceFile { + var specifier *ast.Node + if declaration.Kind == ast.KindModuleDeclaration { + if ast.IsStringLiteral(declaration.Name()) { + specifier = declaration.Name() + } + } else { + specifier = ast.GetExternalModuleName(declaration) + } + moduleSymbol := c.resolveExternalModuleNameWorker(specifier, specifier /*moduleNotFoundError*/, nil, false, false) // TODO: GH#18217 + if moduleSymbol == nil { + return nil + } + decl := ast.GetDeclarationOfKind(moduleSymbol, ast.KindSourceFile) + if decl == nil { + return nil + } + return decl.AsSourceFile() +} + func (c *Checker) resolveExternalModule(location *ast.Node, moduleReference string, moduleNotFoundError *diagnostics.Message, errorNode *ast.Node, isForAugmentation bool) *ast.Symbol { if errorNode != nil && strings.HasPrefix(moduleReference, "@types/") { withoutAtTypePrefix := moduleReference[len("@types/"):] diff --git a/internal/checker/emitresolver.go b/internal/checker/emitresolver.go index 40bd253bc26..11db5449f6f 100644 --- a/internal/checker/emitresolver.go +++ b/internal/checker/emitresolver.go @@ -787,25 +787,9 @@ func (r *emitResolver) GetExternalModuleFileFromDeclaration(declaration *ast.Nod return nil } - var specifier *ast.Node - if declaration.Kind == ast.KindModuleDeclaration { - if ast.IsStringLiteral(declaration.Name()) { - specifier = declaration.Name() - } - } else { - specifier = ast.GetExternalModuleName(declaration) - } r.checkerMu.Lock() defer r.checkerMu.Unlock() - moduleSymbol := r.checker.resolveExternalModuleNameWorker(specifier, specifier /*moduleNotFoundError*/, nil, false, false) // TODO: GH#18217 - if moduleSymbol == nil { - return nil - } - decl := ast.GetDeclarationOfKind(moduleSymbol, ast.KindSourceFile) - if decl == nil { - return nil - } - return decl.AsSourceFile() + return r.checker.getExternalModuleFileFromDeclaration(declaration) } func (r *emitResolver) getReferenceResolver() binder.ReferenceResolver { diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index a88dbc5fe44..3282650be9a 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -410,7 +410,7 @@ func (b *nodeBuilderImpl) tryReuseExistingNonParameterTypeNode(existing *ast.Typ annotationType = b.getTypeFromTypeNode(existing, true) } if annotationType != nil && b.typeNodeIsEquivalentToType(host, t, annotationType) && b.existingTypeNodeIsNotReferenceOrIsReferenceWithCompatibleTypeArgumentCount(existing, t) { - result := b.tryReuseExistingTypeNodeHelper(existing) + result := b.tryReuseExistingNodeHelper(existing) if result != nil { return result } @@ -1255,7 +1255,7 @@ func (b *nodeBuilderImpl) setTextRange(range_ *ast.Node, location *ast.Node) *as return range_ } if !ast.NodeIsSynthesized(range_) || (range_.Flags&ast.NodeFlagsSynthesized == 0) || b.ctx.enclosingFile == nil || b.ctx.enclosingFile != ast.GetSourceFileOfNode(b.e.MostOriginal(range_)) { - range_ = range_.Clone(b.f) // if `range` is synthesized or originates in another file, copy it so it definitely has synthetic positions + range_ = b.f.DeepCloneNode(range_) // if `range` is synthesized or originates in another file, copy it so it definitely has synthetic positions, deep clone so inner nodes have positions stripped } if range_ == location || location == nil { return range_ @@ -1492,7 +1492,7 @@ func (b *nodeBuilderImpl) typeToTypeNodeHelperWithPossibleReusableTypeNode(t *Ty return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) } if typeNode != nil && b.getTypeFromTypeNode(typeNode, false) == t { - reused := b.tryReuseExistingTypeNodeHelper(typeNode) + reused := b.tryReuseExistingNodeHelper(typeNode) if reused != nil { return reused } diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index 5d0ed1cecf1..ac70d1f873c 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -1,13 +1,34 @@ package checker import ( + "strings" + "github.com/microsoft/typescript-go/internal/ast" + "github.com/microsoft/typescript-go/internal/core" "github.com/microsoft/typescript-go/internal/modulespecifiers" "github.com/microsoft/typescript-go/internal/nodebuilder" + "github.com/microsoft/typescript-go/internal/printer" ) func (b *nodeBuilderImpl) reuseNode(node *ast.Node) *ast.Node { - return b.f.DeepCloneNode(node) // !!! TODO: validate refs, apply some .Locs from original nodes where safe + if node == nil { + return node + } + + return b.tryReuseExistingNodeHelper(node) +} + +func (b *nodeBuilderImpl) reuseTypeNode(node *ast.Node) *ast.Node { + if node == nil { + return node + } + r := b.reuseNode(node) + if r != nil { + return r + } + b.ctx.tracker.ReportInferenceFallback(node) + t := b.getTypeFromTypeNode(node, false) + return b.typeToTypeNode(t) } type recoveryBoundary struct { @@ -16,6 +37,7 @@ type recoveryBoundary struct { deferredReports []func() oldTracker nodebuilder.SymbolTracker oldTrackedSymbols []*TrackedSymbolArgs + trackedSymbols []*TrackedSymbolArgs oldEncounteredError bool } @@ -98,7 +120,7 @@ func (w *wrappingTracker) ReportTruncationError() { } func (w *wrappingTracker) TrackSymbol(symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags) bool { - w.bound.ctx.trackedSymbols = append(w.bound.ctx.trackedSymbols, &TrackedSymbolArgs{symbol, enclosingDeclaration, meaning}) + w.bound.trackedSymbols = append(w.bound.trackedSymbols, &TrackedSymbolArgs{symbol, enclosingDeclaration, meaning}) return false } @@ -111,7 +133,7 @@ func newWrappingTracker(inner nodebuilder.SymbolTracker, bound *recoveryBoundary func (b *nodeBuilderImpl) createRecoveryBoundary() *recoveryBoundary { b.ch.checkNotCanceled() - bound := &recoveryBoundary{oldTracker: b.ctx.tracker, oldTrackedSymbols: b.ctx.trackedSymbols, oldEncounteredError: b.ctx.encounteredError} + bound := &recoveryBoundary{ctx: b.ctx, oldTracker: b.ctx.tracker, oldTrackedSymbols: b.ctx.trackedSymbols, oldEncounteredError: b.ctx.encounteredError} newTracker := NewSymbolTrackerImpl(b.ctx, newWrappingTracker(b.ctx.tracker, bound), b.ctx.tracker.GetModuleSpecifierGenerationHost()) b.ctx.tracker = newTracker b.ctx.trackedSymbols = nil @@ -129,16 +151,17 @@ func (b *nodeBuilderImpl) finalizeBoundary(bound *recoveryBoundary) bool { if bound.hadError { return false } - for _, a := range b.ctx.trackedSymbols { + for _, a := range bound.trackedSymbols { b.ctx.tracker.TrackSymbol(a.symbol, a.enclosingDeclaration, a.meaning) } return true } -func (b *nodeBuilderImpl) tryReuseExistingTypeNodeHelper(existing *ast.TypeNode) *ast.TypeNode { +func (b *nodeBuilderImpl) tryReuseExistingNodeHelper(existing *ast.TypeNode) *ast.TypeNode { bound := b.createRecoveryBoundary() var transformed *ast.Node - // !!! + v := getExistingNodeTreeVisitor(b, bound) // !!! TODO: Cache visitor and just reset bound+host builder? We try this for a *lot* of nodes. + transformed = v.VisitNode(existing) if !b.finalizeBoundary(bound) { return nil } @@ -146,11 +169,552 @@ func (b *nodeBuilderImpl) tryReuseExistingTypeNodeHelper(existing *ast.TypeNode) return transformed } -func getExistingNodeTreeVisitor(b *nodeBuilderImpl, bound *recoveryBoundary, factory *ast.NodeFactory) *ast.NodeVisitor { +func (b *nodeBuilderImpl) getModuleSpecifierOverride(parent *ast.Node, lit *ast.Node) string { + if b.ctx.enclosingFile != ast.GetSourceFileOfNode(lit) { + mode := core.ResolutionModeNone + if parent.AsImportTypeNode().Attributes != nil { + mode = b.ch.getResolutionModeOverride(parent.AsImportTypeNode().Attributes.AsImportAttributes(), false) + } + name := lit.Text() + originalName := name + nodeSymbol := b.ch.symbolNodeLinks.Get(parent).resolvedSymbol + meaning := ast.SymbolFlagsType + if parent.AsImportTypeNode().IsTypeOf { + meaning = ast.SymbolFlagsValue + } + var parentSymbol *ast.Symbol + if nodeSymbol != nil && b.ch.IsSymbolAccessible(nodeSymbol, b.ctx.enclosingDeclaration, meaning, false).Accessibility == printer.SymbolAccessibilityAccessible { + parentSymbol = b.lookupSymbolChain(nodeSymbol, meaning, true)[0] + } + if parentSymbol != nil && IsExternalModuleSymbol(parentSymbol) { + name = b.getSpecifierForModuleSymbol(parentSymbol, mode) + } else { + targetFile := b.ch.getExternalModuleFileFromDeclaration(parent) + if targetFile != nil { + name = b.getSpecifierForModuleSymbol(targetFile.Symbol, mode) + } + } + if len(name) > 0 && strings.Contains(name, "/node_modules/") { + b.ctx.encounteredError = true + b.ctx.tracker.ReportLikelyUnsafeImportRequiredError(name) + } + if name != originalName { + return name + } + } + return "" +} + +func (b *nodeBuilderImpl) rewriteModuleSpecifier(parent *ast.Node, lit *ast.Node) *ast.Node { + newName := b.getModuleSpecifierOverride(parent, lit) + if len(newName) == 0 { + return lit + } + res := b.f.NewStringLiteral(newName) + b.e.SetOriginal(res, lit) + return res +} + +func (b *nodeBuilderImpl) getEnclosingDeclarationIgnoringFakeScope() *ast.Node { + enc := b.ctx.enclosingDeclaration + for enc != nil && b.links.Get(enc).fakeScopeForSignatureDeclaration != nil { + enc = enc.Parent + } + return enc +} + +func getExistingNodeTreeVisitor(b *nodeBuilderImpl, bound *recoveryBoundary) *ast.NodeVisitor { + // TODO: wrap all these closures into methods on an object so we can guarantee we reuse the same memory on each invocation by reusing/resetting the object + // instead of re-closing-over all of these each time we need a visitor. In theory the compiler could handle this, but in practice closure inlining hasn't been reliable + var visitor *ast.NodeVisitor + trackExistingEntityName := func(node *ast.Node, overrideEnclosing *ast.Node) (bool, *ast.Node, *ast.Symbol) { + enclosingDeclaration := b.ctx.enclosingDeclaration + if overrideEnclosing != nil { + enclosingDeclaration = overrideEnclosing + } + introducesError := false + leftmost := ast.GetFirstIdentifier(node) + if ast.IsInJSFile(node) && (ast.IsExportsIdentifier(leftmost) || ast.IsModuleExportsAccessExpression(leftmost.Parent) || (ast.IsQualifiedName(leftmost.Parent) && ast.IsModuleIdentifier(leftmost.Parent.AsQualifiedName().Left) && ast.IsExportsIdentifier(leftmost.Parent.AsQualifiedName().Right))) { + introducesError = true + return introducesError, node, nil + } + meaning := getMeaningOfEntityNameReference(node) + var sym *ast.Symbol + if ast.IsThisIdentifier(leftmost) { + // `this` isn't a bindable identifier - skip resolution, find a relevant `this` symbol directly and avoid exhaustive scope traversal + sym = b.ch.getSymbolOfDeclaration(b.ch.getThisContainer(leftmost, false, false)) + if b.ch.IsSymbolAccessible(sym, leftmost, meaning, false).Accessibility != printer.SymbolAccessibilityAccessible { + introducesError = true + b.ctx.tracker.ReportInaccessibleThisError() + } + return introducesError, node, nil // TODO: attachSymbolToLeftmostIdentifier on `node` to smuggle symbols for quick info? + } + sym = b.ch.resolveEntityName(leftmost, meaning, true, true, nil) + if b.ctx.enclosingDeclaration != nil && !(sym != nil && sym.Flags&ast.SymbolFlagsTypeParameter != 0) { + sym = b.ch.getExportSymbolOfValueSymbolIfExported(sym) + // Some declarations may be transplanted to a new location. + // When this happens we need to make sure that the name has the same meaning at both locations + // We also check for the unknownSymbol because when we create a fake scope some parameters may actually not be usable + // either because they are the expanded rest parameter, + // or because they are the newly added parameters from the tuple, which might have different meanings in the original context + symAtLocation := b.ch.resolveEntityName(leftmost, meaning, true, true, b.ctx.enclosingDeclaration) + if + // Check for unusable parameters symbols + symAtLocation == b.ch.unknownSymbol || + // If the symbol is not found, but was not found in the original scope either we probably have an error, don't reuse the node + (symAtLocation == nil && sym != nil) || + // If the symbol is found both in declaration scope and in current scope then it should point to the same reference + (symAtLocation != nil && sym != nil && b.ch.getSymbolIfSameReference(b.ch.getExportSymbolOfValueSymbolIfExported(symAtLocation), sym) == nil) { + // In isolated declaration we will not do rest parameter expansion so there is no need to report on these. + if symAtLocation != b.ch.unknownSymbol { + b.ctx.tracker.ReportInferenceFallback(node) + } + introducesError = true + return introducesError, node, sym + } else { + sym = symAtLocation + } + } + + if sym != nil { + // If a parameter is resolvable in the current context it is also visible, so no need to go to symbol accesibility + if sym.Flags&ast.SymbolFlagsFunctionScopedVariable != 0 && sym.ValueDeclaration != nil { + if ast.IsPartOfParameterDeclaration(sym.ValueDeclaration) || ast.IsJSDocParameterTag(sym.ValueDeclaration) { + return introducesError, node, nil // TODO: attachSymbolToLeftmostIdentifier on `node` to smuggle symbols for quick info? + } + if sym.Flags&ast.SymbolFlagsTypeParameter == 0 /* Type parameters are visible in the current context if they are are resolvable */ && !ast.IsDeclarationName(node) && + b.ch.IsSymbolAccessible(sym, enclosingDeclaration, meaning, false).Accessibility != printer.SymbolAccessibilityAccessible { + b.ctx.tracker.ReportInferenceFallback(node) + introducesError = true + } else { + b.ctx.tracker.TrackSymbol(sym, enclosingDeclaration, meaning) + } + return introducesError, node, nil // TODO: attachSymbolToLeftmostIdentifier on `node` to smuggle symbols for quick info? + } + } + return introducesError, node, nil + } + var tryVisitSimpleTypeNode func(node *ast.Node) *ast.Node + tryVisitIndexedAccess := func(node *ast.Node) *ast.Node { + resultObjectType := tryVisitSimpleTypeNode(node.AsIndexedAccessTypeNode().ObjectType) + if resultObjectType == nil { + return nil + } + return b.f.UpdateIndexedAccessTypeNode(node.AsIndexedAccessTypeNode(), resultObjectType, visitor.VisitNode(node.AsIndexedAccessTypeNode().IndexType)) + } + tryVisitKeyOf := func(node *ast.Node) *ast.Node { + t := tryVisitSimpleTypeNode(node.AsTypeOperatorNode().Type) + if t == nil { + return nil + } + return b.f.UpdateTypeOperatorNode(node.AsTypeOperatorNode(), t) + } + tryVisitTypeQuery := func(node *ast.Node) *ast.Node { + introducesError, exprName, _ := trackExistingEntityName(node.AsTypeQueryNode().ExprName, nil) + if !introducesError { + return b.f.UpdateTypeQueryNode( + node.AsTypeQueryNode(), + exprName, + visitor.VisitNodes(node.AsTypeQueryNode().TypeArguments), + ) + } + + // !!! serializeTypeName + return nil + } + tryVisitTypeReference := func(node *ast.Node) *ast.Node { + if ast.IsConstTypeReference(node) { + return nil + } + s := b.ch.symbolNodeLinks.Get(node).resolvedSymbol + if s == nil { + return nil // ??? + } + if s.Flags&ast.SymbolFlagsTypeParameter != 0 { + declaredType := b.ch.getDeclaredTypeOfSymbol(s) + if b.ctx.mapper != nil && b.ctx.mapper.Map(declaredType) != declaredType { + return nil // refers to type parameter remapped by context (TODO improvement: just return the remapped param name?) + } + } + // TODO: further bails in JSdoc - not required anymore due to dropped behavior/reparser? + introducesError, newName, _ := trackExistingEntityName(node.AsTypeReferenceNode().TypeName, nil) + if !introducesError { + typeArguments := visitor.VisitNodes(node.AsTypeReferenceNode().TypeArguments) + return b.f.UpdateTypeReferenceNode( + node.AsTypeReferenceNode(), + newName, + typeArguments, + ) + } else { + // !!! serializeTypeName + return nil + } + } + tryVisitSimpleTypeNode = func(node *ast.Node) *ast.Node { + innerNode := ast.SkipParentheses(node) + switch innerNode.Kind { + case ast.KindTypeReference: + return tryVisitTypeReference(innerNode) + case ast.KindTypeQuery: + return tryVisitTypeQuery(innerNode) + case ast.KindIndexedAccessType: + return tryVisitIndexedAccess(innerNode) + case ast.KindTypeOperator: + if innerNode.AsTypeOperatorNode().Operator == ast.KindKeyOfKeyword { + return tryVisitKeyOf(innerNode) + } + } + return visitor.VisitEachChild(node) + } visitExistingNodeTreeSymbolsWorker := func(node *ast.Node) *ast.Node { - return node // !!! + factory := b.f + // !!! TODO: the reparser *should* make all the jsdoc remapping logic here redundant, + // assuming we only ever try to preserve reparsed nodes and never walk back to the jsdoc "originals" + // accidentally. + // Still, what can be ported of the logic is here, just in case. + // Begin JSDoc handling + if node.Kind == ast.KindJSDocTypeExpression { + // Unwrap JSDocTypeExpressions + return visitor.VisitNode(node.AsJSDocTypeExpression().Type) + } + // !!! TODO: We don't _actually_ support jsdoc namepath types, emit `any` instead; verify we handle as gracefully as strada + if node.Kind == ast.KindJSDocAllType /* || node.Kind == ast.JSDocNamepathType */ { + return factory.NewKeywordTypeNode(ast.KindAnyKeyword) + } + // !!! TODO: verify JSDocUnknwonType is hopefully just parsed into `unknown` upfront; the kind no longer exists + // if node.Kind == ast.KindJSDocUnknownType { + // return factory.NewKeywordTypeNode(ast.KindUnknownKeyword) + // } + if node.Kind == ast.KindJSDocNullableType { + unionMembers := []*ast.Node{ + visitor.VisitNode(node.AsJSDocNullableType().Type), + factory.NewLiteralTypeNode(factory.NewKeywordExpression(ast.KindNullKeyword)), + } + return factory.NewUnionTypeNode(factory.NewNodeList(unionMembers)) + } + if node.Kind == ast.KindJSDocOptionalType { + unionMembers := []*ast.Node{ + visitor.VisitNode(node.AsJSDocOptionalType().Type), + factory.NewKeywordTypeNode(ast.KindUndefinedKeyword), + } + return factory.NewUnionTypeNode(factory.NewNodeList(unionMembers)) + } + if node.Kind == ast.KindJSDocNonNullableType { + // Unwrap + return visitor.VisitNode(node.AsJSDocNonNullableType().Type) + } + if node.Kind == ast.KindJSDocVariadicType { // !!! TODO: verify this matches how jsdoc variadics are actually handled now? + return factory.NewArrayTypeNode(visitor.VisitNode(node.AsJSDocVariadicType().Type)) + } + if node.Kind == ast.KindJSDocTypeLiteral { + var members []*ast.Node + for _, t := range node.AsJSDocTypeLiteral().JSDocPropertyTags { + n := t.Name() + var targetName *ast.Node + if ast.IsIdentifier(n) { + targetName = n + } else { + targetName = n.AsQualifiedName().Right // !!! TODO: without typesystem backup, doing this cast unguarded seems really suspect, even though it is what strada does + } + name := visitor.VisitNode(targetName) + shouldBeOptional := t.AsJSDocParameterOrPropertyTag().IsBracketed || (t.TypeExpression() != nil && t.TypeExpression().Kind == ast.KindJSDocOptionalType) + var question *ast.Node + if shouldBeOptional { + question = factory.NewToken(ast.KindQuestionToken) + } + ty := visitor.VisitNode(t.TypeExpression()) // !!! TODO: alternate lookup locations for the type? serialize on demand if it doesn't serialze? strada does something funky here. + + members = append(members, factory.NewPropertySignatureDeclaration(nil, name, question, ty, nil)) + } + return factory.NewTypeLiteralNode(factory.NewNodeList(members)) + } + // if (ast.IsExpressionWithTypeArguments(node) || ast.IsTypeReferenceNode(node)) && ast.IsJSDocIndexSignature(node) { /// !!! TODO: JSDocIndexSignature handling hasn't been ported - readd if it's readded + // args := node.TypeArguments() + // if len(args) != 2 { + // return factory.NewKeywordTypeNode(ast.KindAnyKeyword) // shouldn't be flagged as a jsdoc index signature in the first place + // } + // return factory.NewTypeLiteralNode(factory.NewNodeList([]*ast.Node{ + // factory.NewIndexSignatureDeclaration(nil, factory.NewNodeList([]*ast.Node{ + // factory.NewParameterDeclaration(nil, nil, factory.NewIdentifier("x"), nil, visitor.VisitNode(args[0]), nil), + // }), visitor.VisitNode(args[1])), + // })) + // } + // if node.Kind == ast.KindJSDocFunctionType {} // !!! no longer exists + // End JSDoc handling + + if ast.IsTypeReferenceNode(node) && ast.IsIdentifier(node.AsTypeReferenceNode().TypeName) && node.AsTypeReferenceNode().TypeName.AsIdentifier().Text == "" { + replacement := factory.NewKeywordTypeNode(ast.KindAnyKeyword) + b.e.SetOriginal(replacement, node) + return replacement + } + if ast.IsThisTypeNode(node) { + // TODO: strada never marks `this` type nodes as an error - it calls `canReuseTypeNode` on it, but that function always returns `true` for `this` + // type nodes, which in turn fails to verify that the `this` context is the same between the source and target locations. The conservative thing is to + // _never_ copy a `this`. We could improve this, but strada is *definitely* wrong and overbroad here. (note that we're inling uses of `canReuseTypeNode` + // in corsa because of the unfurled host structure meaning we don't need to defer to a host object for functionality it needs) + // bound.markError(nil) // conservative approach + return node + } + if ast.IsTypeParameterDeclaration(node) { + _, newName, _ := trackExistingEntityName(node.Name(), nil) + return factory.UpdateTypeParameterDeclaration( + node.AsTypeParameter(), + visitor.VisitModifiers(node.Modifiers()), + newName, + visitor.VisitNode(node.AsTypeParameter().Constraint), + visitor.VisitNode(node.AsTypeParameter().DefaultType), + ) + } + if ast.IsIndexedAccessTypeNode(node) { + result := tryVisitIndexedAccess(node) + if result != nil { + return result + } + bound.markError(nil) + return node + } + if ast.IsTypeReferenceNode(node) { + result := tryVisitTypeReference(node) + if result != nil { + return result + } + bound.markError(nil) + return node + } + if ast.IsTypeQueryNode(node) { + result := tryVisitTypeQuery(node) + if result != nil { + return result + } + bound.markError(nil) + return node + } + if ast.IsTypeOperatorNode(node) { + if node.AsTypeOperatorNode().Operator == ast.KindUniqueKeyword && node.AsTypeOperatorNode().Type.Kind == ast.KindSymbolKeyword { + nonFakeEnclosing := b.getEnclosingDeclarationIgnoringFakeScope() + sameScope := ast.FindAncestor(node, func(a *ast.Node) bool { + return a == nonFakeEnclosing + }) + if sameScope == nil { + bound.markError(nil) + return node + } + } else if node.AsTypeOperatorNode().Operator == ast.KindKeyOfKeyword { + result := tryVisitKeyOf(node) + if result != nil { + return result + } + bound.markError(nil) + return node + } + } + if ast.IsLiteralImportTypeNode(node) { + // assert keyword in imported attributes is deprecated, so we don't reuse types that contain it + // Ex: import("pkg", { assert: {} } + if node.AsImportTypeNode().Attributes != nil && node.AsImportTypeNode().Attributes.AsImportAttributes().Token == ast.KindAssertKeyword { + bound.markError(nil) + return node + } + t := b.getTypeFromTypeNode(node, true) + if t == nil { + bound.markError(nil) + return node + } + if ast.IsInJSFile(node) { + // !!! TODO: invalidate node reuse if js fallback logic used in type param list/typeof lookup (but isn't this logic gone?) + // s := b.ch.symbolNodeLinks.Get(node).resolvedSymbol + } + originalSpec := node.AsImportTypeNode().Argument.AsLiteralTypeNode().Literal + specifier := b.rewriteModuleSpecifier(node, originalSpec) + if originalSpec == specifier { + specifier = visitor.VisitNode(specifier) // visit node if not replaced + } + arg := node.AsImportTypeNode().Argument + if specifier != originalSpec { + arg = factory.NewLiteralTypeNode(specifier) + } + return factory.UpdateImportTypeNode( + node.AsImportTypeNode(), + node.AsImportTypeNode().IsTypeOf, + arg, + visitor.VisitNode(node.AsImportTypeNode().Attributes), + visitor.VisitNode(node.AsImportTypeNode().Qualifier), + visitor.VisitNodes(node.AsImportTypeNode().TypeArguments), + ) + } + if node.Name() != nil && node.Name().Kind == ast.KindComputedPropertyName && !b.ch.hasLateBindableName(node) { + if !ast.HasDynamicName(node) { + // !!! TODO: This matches strada, but rather than recursing, this should probably fall down to later cases. + // Take a `["field"]` property declaration - it still needs a `: any` appended to it + return visitor.VisitEachChild(node) + } + // !!! TODO: this condition matches strada, but it just seems wrong? Or at the very least extraordinarily approximate, and doesn't flag a builder error... + shouldRemoveDeclaration := !((b.ctx.internalFlags&nodebuilder.InternalFlagsAllowUnresolvedNames != 0) && ast.IsEntityNameExpression(node.Name().AsComputedPropertyName().Expression) && (b.ch.checkComputedPropertyName(node.Name()).flags&TypeFlagsAny != 0)) + if shouldRemoveDeclaration { + return nil + } + } + if (ast.IsFunctionLike(node) && node.Type() == nil) || (ast.IsPropertyDeclaration(node) && node.Type() == nil && node.Initializer() == nil) || (ast.IsPropertySignatureDeclaration(node) && node.Type() == nil && node.Initializer() == nil) || (ast.IsParameter(node) && node.Type() == nil && node.Initializer() == nil) { + visited := visitor.VisitEachChild(node) + if visited == node { + visited = b.setTextRange(node.Clone(factory), node) + } + newType := factory.NewKeywordTypeNode(ast.KindAnyKeyword) + switch node.Kind { + case ast.KindPropertyDeclaration: + return factory.UpdatePropertyDeclaration( + node.AsPropertyDeclaration(), + node.Modifiers(), + node.Name(), + node.PostfixToken(), + newType, + nil, + ) + case ast.KindPropertySignature: + return factory.UpdatePropertySignatureDeclaration( + node.AsPropertySignatureDeclaration(), + node.Modifiers(), + node.Name(), + node.PostfixToken(), + newType, + nil, + ) + case ast.KindParameter: + return factory.UpdateParameterDeclaration( + node.AsParameterDeclaration(), + nil, + node.AsParameterDeclaration().DotDotDotToken, + node.Name(), + node.AsParameterDeclaration().QuestionToken, + newType, + nil, + ) + case ast.KindMethodSignature: + return factory.UpdateMethodSignatureDeclaration( + node.AsMethodSignatureDeclaration(), + node.Modifiers(), + node.Name(), + node.AsMethodSignatureDeclaration().PostfixToken, + node.AsMethodSignatureDeclaration().TypeParameters, + node.AsMethodSignatureDeclaration().Parameters, + newType, + ) + case ast.KindCallSignature: + return factory.UpdateCallSignatureDeclaration( + node.AsCallSignatureDeclaration(), + node.AsCallSignatureDeclaration().TypeParameters, + node.AsCallSignatureDeclaration().Parameters, + newType, + ) + case ast.KindJSDocSignature: + return factory.UpdateJSDocSignature( + node.AsJSDocSignature(), + node.AsJSDocSignature().TypeParameters, + node.AsJSDocSignature().Parameters, + newType, + ) + case ast.KindConstructSignature: + return factory.UpdateConstructSignatureDeclaration( + node.AsConstructSignatureDeclaration(), + node.AsConstructSignatureDeclaration().TypeParameters, + node.AsConstructSignatureDeclaration().Parameters, + newType, + ) + case ast.KindIndexSignature: + return factory.UpdateIndexSignatureDeclaration( + node.AsIndexSignatureDeclaration(), + node.Modifiers(), + node.AsIndexSignatureDeclaration().Parameters, + newType, + ) + case ast.KindFunctionType: + return factory.UpdateFunctionTypeNode( + node.AsFunctionTypeNode(), + node.AsFunctionTypeNode().TypeParameters, + node.AsFunctionTypeNode().Parameters, + newType, + ) + case ast.KindConstructorType: + return factory.UpdateConstructorTypeNode( + node.AsConstructorTypeNode(), + node.Modifiers(), + node.AsConstructorTypeNode().TypeParameters, + node.AsConstructorTypeNode().Parameters, + newType, + ) + } + } + if ast.IsComputedPropertyName(node) && ast.IsEntityNameExpression(node.AsComputedPropertyName().Expression) { + introducesError, result, _ := trackExistingEntityName(node.AsComputedPropertyName().Expression, nil) + if !introducesError { + return factory.UpdateComputedPropertyName(node.AsComputedPropertyName(), result) + } else { + // !!! TODO: rewriting computed names based on evaluator/typecheck results? + // strada's behavior seems hard to justify vs marking an error and moving on + bound.markError(nil) + return visitor.VisitEachChild(node) + } + } + if ast.IsTypePredicateNode(node) { + var parameterName *ast.Node + if ast.IsIdentifier(node.AsTypePredicateNode().ParameterName) { + introducesError, result, _ := trackExistingEntityName(node.AsTypePredicateNode().ParameterName, nil) + // Should not usually happen the only case is when a type predicate comes from a JSDoc type annotation with it's own parameter symbol definition. + // /** @type {(v: unknown) => v is undefined} */ + // const isUndef = v => v === undefined; + if introducesError { + bound.markError(nil) + } + parameterName = result + } else { + parameterName = node.AsTypePredicateNode().ParameterName.Clone(factory) + } + return factory.UpdateTypePredicateNode( + node.AsTypePredicateNode(), + node.AsTypePredicateNode().AssertsModifier, + parameterName, + visitor.VisitNode(node.AsTypePredicateNode().Type), + ) + } + if ast.IsConditionalTypeNode(node) { + checkType := visitor.VisitNode(node.AsConditionalTypeNode().CheckType) + dispose := b.enterNewScope(node, nil, b.ch.getInferTypeParameters(node), nil, nil) + extendsType := visitor.VisitNode(node.AsConditionalTypeNode().ExtendsType) + trueType := visitor.VisitNode(node.AsConditionalTypeNode().TrueType) + dispose() + falseType := visitor.VisitNode(node.AsConditionalTypeNode().FalseType) + return factory.UpdateConditionalTypeNode( + node.AsConditionalTypeNode(), + checkType, + extendsType, + trueType, + falseType, + ) + } + + // style applications + if ast.IsTupleTypeNode(node) || (b.ctx.flags&nodebuilder.FlagsMultilineObjectLiterals == 0 && ast.IsTypeLiteralNode(node)) || ast.IsMappedTypeNode(node) { + // make tuples/types/mappedtypes single line + res := visitor.VisitEachChild(node) + if res == node { + res = res.Clone(factory) + b.setTextRange(res, node) + } + b.e.AddEmitFlags(res, printer.EFSingleLine) + return res + } + // !!! TODO: support single-quoted strings + // if ast.IsStringLiteral(node) && b.ctx.flags&nodebuilder.FlagsUseSingleQuotesForStringLiteralType != 0 && node.AsStringLiteral().SingleQuote { + // // set single quote on string literals + // c := node.Clone(b.f) + // c.AsStringLiteral().SingleQuote = true + // return c + // } + + return visitor.VisitEachChild(node) } - return ast.NewNodeVisitor(func(node *ast.Node) *ast.Node { + visitor = ast.NewNodeVisitor(func(node *ast.Node) *ast.Node { + // If there was an error in a sibling node bail early, the result will be discarded anyway if bound.hadError { return node } @@ -179,11 +743,21 @@ func getExistingNodeTreeVisitor(b *nodeBuilderImpl, bound *recoveryBoundary, fac if bound.hadError { if ast.IsTypeNode(node) && !ast.IsTypePredicateNode(node) { bound.endRecoveryScope(recover) - return nil // !!! + // TODO: this fallback matches strada behavior, but it lacks any verification that the type from `node` actually matches + // the type we'd expect at this traversal position within the parent type. + t := b.getTypeFromTypeNode(node, false) + return b.typeToTypeNode(t) } return node } - return result - }, factory, ast.NodeVisitorHooks{}) + // We want to clone the subtree, so when we mark it up with __pos and __end in quickfixes, + // we don't get odd behavior because of reused nodes. We also need to clone to _remove_ + // the position information if the node comes from a different file than the one the node builder + // is set to build for (even though we are reusing the node structure, the position information + // would make the printer print invalid spans for literals and identifiers, and the formatter would + // choke on the mismatched positonal spans between a parent and an injected child from another file). + return b.setTextRange(result, node) + }, b.f, ast.NodeVisitorHooks{}) + return visitor } diff --git a/internal/checker/psuedotypenodebuilder.go b/internal/checker/psuedotypenodebuilder.go index fbb3f958ae0..cd8f7b7247a 100644 --- a/internal/checker/psuedotypenodebuilder.go +++ b/internal/checker/psuedotypenodebuilder.go @@ -13,7 +13,7 @@ func (b *nodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod debug.Assert(t != nil, "Attempted to serialize nil psuedotype") switch t.Kind { case psuedochecker.PsuedoTypeKindDirect: - return b.reuseNode(t.Data.(*psuedochecker.PsuedoTypeDirect).TypeNode) + return b.reuseTypeNode(t.Data.(*psuedochecker.PsuedoTypeDirect).TypeNode) case psuedochecker.PsuedoTypeKindInferred: node := t.Data.(*psuedochecker.PsuedoTypeInferred).Expression b.ctx.tracker.ReportInferenceFallback(node) @@ -25,11 +25,26 @@ func (b *nodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod return b.serializeTypeForDeclaration(node, nil, nil, false) case psuedochecker.PsuedoTypeKindUnion: var res []*ast.Node + var hasElidedType bool members := t.Data.(*psuedochecker.PsuedoTypeUnion).Types for _, m := range members { - // TODO: improvement - in non-strict-null-checks mode, elide `undefined` and `null` in unions, instead of mapping them to `any` + if !b.ch.strictNullChecks { + if m.Kind == psuedochecker.PsuedoTypeKindUndefined || m.Kind == psuedochecker.PsuedoTypeKindNull { + hasElidedType = true + continue + } + } res = append(res, b.psuedoTypeToNode(m)) } + if len(res) == 1 { + return res[0] + } + if len(res) == 0 { + if hasElidedType { + return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) + } + return b.f.NewKeywordTypeNode(ast.KindNeverKeyword) + } return b.f.NewUnionTypeNode(b.f.NewNodeList(res)) case psuedochecker.PsuedoTypeKindUndefined: if !b.ch.strictNullChecks { diff --git a/internal/checker/symbolaccessibility.go b/internal/checker/symbolaccessibility.go index d9741f18a5e..9c9a40113f9 100644 --- a/internal/checker/symbolaccessibility.go +++ b/internal/checker/symbolaccessibility.go @@ -10,22 +10,22 @@ import ( "github.com/microsoft/typescript-go/internal/printer" ) -func (ch *Checker) IsTypeSymbolAccessible(typeSymbol *ast.Symbol, enclosingDeclaration *ast.Node) bool { - access := ch.isSymbolAccessibleWorker(typeSymbol, enclosingDeclaration, ast.SymbolFlagsType /*shouldComputeAliasesToMakeVisible*/, false /*allowModules*/, true) +func (c *Checker) IsTypeSymbolAccessible(typeSymbol *ast.Symbol, enclosingDeclaration *ast.Node) bool { + access := c.isSymbolAccessibleWorker(typeSymbol, enclosingDeclaration, ast.SymbolFlagsType /*shouldComputeAliasesToMakeVisible*/, false /*allowModules*/, true) return access.Accessibility == printer.SymbolAccessibilityAccessible } -func (ch *Checker) IsValueSymbolAccessible(symbol *ast.Symbol, enclosingDeclaration *ast.Node) bool { - access := ch.isSymbolAccessibleWorker(symbol, enclosingDeclaration, ast.SymbolFlagsValue /*shouldComputeAliasesToMakeVisible*/, false /*allowModules*/, true) +func (c *Checker) IsValueSymbolAccessible(symbol *ast.Symbol, enclosingDeclaration *ast.Node) bool { + access := c.isSymbolAccessibleWorker(symbol, enclosingDeclaration, ast.SymbolFlagsValue /*shouldComputeAliasesToMakeVisible*/, false /*allowModules*/, true) return access.Accessibility == printer.SymbolAccessibilityAccessible } -func (ch *Checker) IsSymbolAccessibleByFlags(symbol *ast.Symbol, enclosingDeclaration *ast.Node, flags ast.SymbolFlags) bool { - access := ch.isSymbolAccessibleWorker(symbol, enclosingDeclaration, flags /*shouldComputeAliasesToMakeVisible*/, false /*allowModules*/, false) // TODO: Strada bug? Why is this allowModules: false? +func (c *Checker) IsSymbolAccessibleByFlags(symbol *ast.Symbol, enclosingDeclaration *ast.Node, flags ast.SymbolFlags) bool { + access := c.isSymbolAccessibleWorker(symbol, enclosingDeclaration, flags /*shouldComputeAliasesToMakeVisible*/, false /*allowModules*/, false) // TODO: Strada bug? Why is this allowModules: false? return access.Accessibility == printer.SymbolAccessibilityAccessible } -func (ch *Checker) IsAnySymbolAccessible(symbols []*ast.Symbol, enclosingDeclaration *ast.Node, initialSymbol *ast.Symbol, meaning ast.SymbolFlags, shouldComputeAliasesToMakeVisible bool, allowModules bool) *printer.SymbolAccessibilityResult { +func (c *Checker) IsAnySymbolAccessible(symbols []*ast.Symbol, enclosingDeclaration *ast.Node, initialSymbol *ast.Symbol, meaning ast.SymbolFlags, shouldComputeAliasesToMakeVisible bool, allowModules bool) *printer.SymbolAccessibilityResult { if len(symbols) == 0 { return nil } @@ -34,11 +34,11 @@ func (ch *Checker) IsAnySymbolAccessible(symbols []*ast.Symbol, enclosingDeclara earlyModuleBail := false for _, symbol := range symbols { // Symbol is accessible if it by itself is accessible - accessibleSymbolChain := ch.getAccessibleSymbolChain(symbol, enclosingDeclaration, meaning /*useOnlyExternalAliasing*/, false) + accessibleSymbolChain := c.getAccessibleSymbolChain(symbol, enclosingDeclaration, meaning /*useOnlyExternalAliasing*/, false) if len(accessibleSymbolChain) > 0 { hadAccessibleChain = symbol // TODO: going through emit resolver here is weird. Relayer these APIs. - hasAccessibleDeclarations := ch.GetEmitResolver().hasVisibleDeclarations(accessibleSymbolChain[0], shouldComputeAliasesToMakeVisible) + hasAccessibleDeclarations := c.GetEmitResolver().hasVisibleDeclarations(accessibleSymbolChain[0], shouldComputeAliasesToMakeVisible) if hasAccessibleDeclarations != nil { return hasAccessibleDeclarations } @@ -73,12 +73,12 @@ func (ch *Checker) IsAnySymbolAccessible(symbols []*ast.Symbol, enclosingDeclara // But it can't, hence the accessible is going to be undefined, but that doesn't mean m.c is inaccessible // It is accessible if the parent m is accessible because then m.c can be accessed through qualification - containers := ch.getContainersOfSymbol(symbol, enclosingDeclaration, meaning) + containers := c.getContainersOfSymbol(symbol, enclosingDeclaration, meaning) nextMeaning := meaning if initialSymbol == symbol { nextMeaning = getQualifiedLeftMeaning(meaning) } - parentResult := ch.IsAnySymbolAccessible(containers, enclosingDeclaration, initialSymbol, nextMeaning, shouldComputeAliasesToMakeVisible, allowModules) + parentResult := c.IsAnySymbolAccessible(containers, enclosingDeclaration, initialSymbol, nextMeaning, shouldComputeAliasesToMakeVisible, allowModules) if parentResult != nil { return parentResult } @@ -93,11 +93,11 @@ func (ch *Checker) IsAnySymbolAccessible(symbols []*ast.Symbol, enclosingDeclara if hadAccessibleChain != nil { var moduleName string if hadAccessibleChain != initialSymbol { - moduleName = ch.symbolToStringEx(hadAccessibleChain, enclosingDeclaration, ast.SymbolFlagsNamespace, SymbolFormatFlagsAllowAnyNodeKind) + moduleName = c.symbolToStringEx(hadAccessibleChain, enclosingDeclaration, ast.SymbolFlagsNamespace, SymbolFormatFlagsAllowAnyNodeKind) } return &printer.SymbolAccessibilityResult{ Accessibility: printer.SymbolAccessibilityNotAccessible, - ErrorSymbolName: ch.symbolToStringEx(initialSymbol, enclosingDeclaration, meaning, SymbolFormatFlagsAllowAnyNodeKind), + ErrorSymbolName: c.symbolToStringEx(initialSymbol, enclosingDeclaration, meaning, SymbolFormatFlagsAllowAnyNodeKind), ErrorModuleName: moduleName, } } @@ -116,19 +116,19 @@ func getQualifiedLeftMeaning(rightMeaning ast.SymbolFlags) ast.SymbolFlags { return ast.SymbolFlagsNamespace } -func (ch *Checker) getWithAlternativeContainers(container *ast.Symbol, symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags) []*ast.Symbol { +func (c *Checker) getWithAlternativeContainers(container *ast.Symbol, symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags) []*ast.Symbol { additionalContainers := core.MapNonNil(container.Declarations, func(d *ast.Node) *ast.Symbol { - return ch.getFileSymbolIfFileSymbolExportEqualsContainer(d, container) + return c.getFileSymbolIfFileSymbolExportEqualsContainer(d, container) }) var reexportContainers []*ast.Symbol if enclosingDeclaration != nil { - reexportContainers = ch.getAlternativeContainingModules(symbol, enclosingDeclaration) + reexportContainers = c.getAlternativeContainingModules(symbol, enclosingDeclaration) } - objectLiteralContainer := ch.getVariableDeclarationOfObjectLiteral(container, meaning) + objectLiteralContainer := c.getVariableDeclarationOfObjectLiteral(container, meaning) leftMeaning := getQualifiedLeftMeaning(meaning) if enclosingDeclaration != nil && container.Flags&leftMeaning != 0 && - len(ch.getAccessibleSymbolChain(container, enclosingDeclaration, ast.SymbolFlagsNamespace /*useOnlyExternalAliasing*/, false)) > 0 { + len(c.getAccessibleSymbolChain(container, enclosingDeclaration, ast.SymbolFlagsNamespace /*useOnlyExternalAliasing*/, false)) > 0 { // This order expresses a preference for the real container if it is in scope res := append(append([]*ast.Symbol{container}, additionalContainers...), reexportContainers...) if objectLiteralContainer != nil { @@ -142,10 +142,10 @@ func (ch *Checker) getWithAlternativeContainers(container *ast.Symbol, symbol *a if (meaning == ast.SymbolFlagsValue && container.Flags&leftMeaning == 0) && container.Flags&ast.SymbolFlagsType != 0 && - ch.getDeclaredTypeOfSymbol(container).flags&TypeFlagsObject != 0 { - ch.someSymbolTableInScope(enclosingDeclaration, func(t ast.SymbolTable, _ bool, _ bool, _ *ast.Node) bool { + c.getDeclaredTypeOfSymbol(container).flags&TypeFlagsObject != 0 { + c.someSymbolTableInScope(enclosingDeclaration, func(t ast.SymbolTable, _ bool, _ bool, _ *ast.Node) bool { for _, s := range t { - if s.Flags&leftMeaning != 0 && ch.getTypeOfSymbol(s) == ch.getDeclaredTypeOfSymbol(container) { + if s.Flags&leftMeaning != 0 && c.getTypeOfSymbol(s) == c.getDeclaredTypeOfSymbol(container) { firstVariableMatch = s return true } @@ -167,13 +167,13 @@ func (ch *Checker) getWithAlternativeContainers(container *ast.Symbol, symbol *a return res } -func (ch *Checker) getAlternativeContainingModules(symbol *ast.Symbol, enclosingDeclaration *ast.Node) []*ast.Symbol { +func (c *Checker) getAlternativeContainingModules(symbol *ast.Symbol, enclosingDeclaration *ast.Node) []*ast.Symbol { if enclosingDeclaration == nil { return nil } containingFile := ast.GetSourceFileOfNode(enclosingDeclaration) id := ast.GetNodeId(containingFile.AsNode()) - links := ch.symbolContainerLinks.Get(symbol) + links := c.symbolContainerLinks.Get(symbol) if links.extendedContainersByFile == nil { links.extendedContainersByFile = make(map[ast.NodeId][]*ast.Symbol) } @@ -189,11 +189,11 @@ func (ch *Checker) getAlternativeContainingModules(symbol *ast.Symbol, enclosing // Synthetic names can't be resolved by `resolveExternalModuleName` - they'll cause a debug assert if they error continue } - resolvedModule := ch.resolveExternalModuleName(enclosingDeclaration, importRef /*ignoreErrors*/, true) + resolvedModule := c.resolveExternalModuleName(enclosingDeclaration, importRef /*ignoreErrors*/, true) if resolvedModule == nil { continue } - ref := ch.getAliasForSymbolInContainer(resolvedModule, symbol) + ref := c.getAliasForSymbolInContainer(resolvedModule, symbol) if ref == nil { continue } @@ -209,13 +209,13 @@ func (ch *Checker) getAlternativeContainingModules(symbol *ast.Symbol, enclosing return *links.extendedContainers } // No results from files already being imported by this file - expand search (expensive, but not location-specific, so cached) - otherFiles := ch.program.SourceFiles() + otherFiles := c.program.SourceFiles() for _, file := range otherFiles { if !ast.IsExternalModule(file) { continue } - sym := ch.getSymbolOfDeclaration(file.AsNode()) - ref := ch.getAliasForSymbolInContainer(sym, symbol) + sym := c.getSymbolOfDeclaration(file.AsNode()) + ref := c.getAliasForSymbolInContainer(sym, symbol) if ref == nil { continue } @@ -225,7 +225,7 @@ func (ch *Checker) getAlternativeContainingModules(symbol *ast.Symbol, enclosing return results } -func (ch *Checker) getVariableDeclarationOfObjectLiteral(symbol *ast.Symbol, meaning ast.SymbolFlags) *ast.Symbol { +func (c *Checker) getVariableDeclarationOfObjectLiteral(symbol *ast.Symbol, meaning ast.SymbolFlags) *ast.Symbol { // If we're trying to reference some object literal in, eg `var a = { x: 1 }`, the symbol for the literal, `__object`, is distinct // from the symbol of the declaration it is being assigned to. Since we can use the declaration to refer to the literal, however, // we'd like to make that connection here - potentially causing us to paint the declaration's visibility, and therefore the literal. @@ -243,7 +243,7 @@ func (ch *Checker) getVariableDeclarationOfObjectLiteral(symbol *ast.Symbol, mea return nil } if ast.IsObjectLiteralExpression(firstDecl) && firstDecl == firstDecl.Parent.Initializer() || ast.IsTypeLiteralNode(firstDecl) && firstDecl == firstDecl.Parent.Type() { - return ch.getSymbolOfDeclaration(firstDecl.Parent) + return c.getSymbolOfDeclaration(firstDecl.Parent) } return nil } @@ -252,16 +252,16 @@ func hasExternalModuleSymbol(declaration *ast.Node) bool { return ast.IsAmbientModule(declaration) || (declaration.Kind == ast.KindSourceFile && ast.IsExternalOrCommonJSModule(declaration.AsSourceFile())) } -func (ch *Checker) getExternalModuleContainer(declaration *ast.Node) *ast.Symbol { +func (c *Checker) getExternalModuleContainer(declaration *ast.Node) *ast.Symbol { node := ast.FindAncestor(declaration, hasExternalModuleSymbol) if node == nil { return nil } - return ch.getSymbolOfDeclaration(node) + return c.getSymbolOfDeclaration(node) } -func (ch *Checker) getFileSymbolIfFileSymbolExportEqualsContainer(d *ast.Node, container *ast.Symbol) *ast.Symbol { - fileSymbol := ch.getExternalModuleContainer(d) +func (c *Checker) getFileSymbolIfFileSymbolExportEqualsContainer(d *ast.Node, container *ast.Symbol) *ast.Symbol { + fileSymbol := c.getExternalModuleContainer(d) if fileSymbol == nil || fileSymbol.Exports == nil { return nil } @@ -269,7 +269,7 @@ func (ch *Checker) getFileSymbolIfFileSymbolExportEqualsContainer(d *ast.Node, c if !ok || exported == nil { return nil } - if ch.getSymbolIfSameReference(exported, container) != nil { + if c.getSymbolIfSameReference(exported, container) != nil { return fileSymbol } return nil @@ -279,26 +279,26 @@ func (ch *Checker) getFileSymbolIfFileSymbolExportEqualsContainer(d *ast.Node, c * Attempts to find the symbol corresponding to the container a symbol is in - usually this * is just its' `.parent`, but for locals, this value is `undefined` */ -func (ch *Checker) getContainersOfSymbol(symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags) []*ast.Symbol { - container := ch.getParentOfSymbol(symbol) +func (c *Checker) getContainersOfSymbol(symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags) []*ast.Symbol { + container := c.getParentOfSymbol(symbol) // Type parameters end up in the `members` lists but are not externally visible if container != nil && (symbol.Flags&ast.SymbolFlagsTypeParameter == 0) { - return ch.getWithAlternativeContainers(container, symbol, enclosingDeclaration, meaning) + return c.getWithAlternativeContainers(container, symbol, enclosingDeclaration, meaning) } var candidates []*ast.Symbol for _, d := range symbol.Declarations { if !ast.IsAmbientModule(d) && d.Parent != nil { // direct children of a module if hasNonGlobalAugmentationExternalModuleSymbol(d.Parent) { - sym := ch.getSymbolOfDeclaration(d.Parent) + sym := c.getSymbolOfDeclaration(d.Parent) if sym != nil && !slices.Contains(candidates, sym) { candidates = append(candidates, sym) } continue } // export ='d member of an ambient module - if ast.IsModuleBlock(d.Parent) && d.Parent.Parent != nil && ch.resolveExternalModuleSymbol(ch.getSymbolOfDeclaration(d.Parent.Parent), false) == symbol { - sym := ch.getSymbolOfDeclaration(d.Parent.Parent) + if ast.IsModuleBlock(d.Parent) && d.Parent.Parent != nil && c.resolveExternalModuleSymbol(c.getSymbolOfDeclaration(d.Parent.Parent), false) == symbol { + sym := c.getSymbolOfDeclaration(d.Parent.Parent) if sym != nil && !slices.Contains(candidates, sym) { candidates = append(candidates, sym) } @@ -307,14 +307,14 @@ func (ch *Checker) getContainersOfSymbol(symbol *ast.Symbol, enclosingDeclaratio } if ast.IsClassExpression(d) && ast.IsBinaryExpression(d.Parent) && d.Parent.AsBinaryExpression().OperatorToken.Kind == ast.KindEqualsToken && ast.IsAccessExpression(d.Parent.AsBinaryExpression().Left) && ast.IsEntityNameExpression(d.Parent.AsBinaryExpression().Left.Expression()) { if ast.IsModuleExportsAccessExpression(d.Parent.AsBinaryExpression().Left) || ast.IsExportsIdentifier(d.Parent.AsBinaryExpression().Left.Expression()) { - sym := ch.getSymbolOfDeclaration(ast.GetSourceFileOfNode(d).AsNode()) + sym := c.getSymbolOfDeclaration(ast.GetSourceFileOfNode(d).AsNode()) if sym != nil && !slices.Contains(candidates, sym) { candidates = append(candidates, sym) } continue } - ch.checkExpressionCached(d.Parent.AsBinaryExpression().Left.Expression()) - sym := ch.symbolNodeLinks.Get(d.Parent.AsBinaryExpression().Left.Expression()).resolvedSymbol + c.checkExpressionCached(d.Parent.AsBinaryExpression().Left.Expression()) + sym := c.symbolNodeLinks.Get(d.Parent.AsBinaryExpression().Left.Expression()).resolvedSymbol if sym != nil && !slices.Contains(candidates, sym) { candidates = append(candidates, sym) } @@ -328,10 +328,10 @@ func (ch *Checker) getContainersOfSymbol(symbol *ast.Symbol, enclosingDeclaratio var bestContainers []*ast.Symbol var alternativeContainers []*ast.Symbol for _, container := range candidates { - if ch.getAliasForSymbolInContainer(container, symbol) == nil { + if c.getAliasForSymbolInContainer(container, symbol) == nil { continue } - allAlts := ch.getWithAlternativeContainers(container, symbol, enclosingDeclaration, meaning) + allAlts := c.getWithAlternativeContainers(container, symbol, enclosingDeclaration, meaning) if len(allAlts) == 0 { continue } @@ -341,8 +341,8 @@ func (ch *Checker) getContainersOfSymbol(symbol *ast.Symbol, enclosingDeclaratio return append(bestContainers, alternativeContainers...) } -func (ch *Checker) getAliasForSymbolInContainer(container *ast.Symbol, symbol *ast.Symbol) *ast.Symbol { - if container == ch.getParentOfSymbol(symbol) { +func (c *Checker) getAliasForSymbolInContainer(container *ast.Symbol, symbol *ast.Symbol) *ast.Symbol { + if container == c.getParentOfSymbol(symbol) { // fast path, `symbol` is either already the alias or isn't aliased return symbol } @@ -350,44 +350,44 @@ func (ch *Checker) getAliasForSymbolInContainer(container *ast.Symbol, symbol *a // the container itself as the alias for the symbol if container.Exports != nil { exportEquals, ok := container.Exports[ast.InternalSymbolNameExportEquals] - if ok && exportEquals != nil && ch.getSymbolIfSameReference(exportEquals, symbol) != nil { + if ok && exportEquals != nil && c.getSymbolIfSameReference(exportEquals, symbol) != nil { return container } } - exports := ch.getExportsOfSymbol(container) + exports := c.getExportsOfSymbol(container) quick, ok := exports[symbol.Name] - if ok && quick != nil && ch.getSymbolIfSameReference(quick, symbol) != nil { + if ok && quick != nil && c.getSymbolIfSameReference(quick, symbol) != nil { return quick } var candidates []*ast.Symbol for _, exported := range exports { - if ch.getSymbolIfSameReference(exported, symbol) != nil { + if c.getSymbolIfSameReference(exported, symbol) != nil { candidates = append(candidates, exported) } } if len(candidates) > 0 { - ch.sortSymbols(candidates) // _must_ sort exports for stable results - symbol table is randomly iterated + c.sortSymbols(candidates) // _must_ sort exports for stable results - symbol table is randomly iterated return candidates[0] } return nil } -func (ch *Checker) getAccessibleSymbolChain( +func (c *Checker) getAccessibleSymbolChain( symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags, useOnlyExternalAliasing bool, ) []*ast.Symbol { - return ch.getAccessibleSymbolChainEx(accessibleSymbolChainContext{symbol, enclosingDeclaration, meaning, useOnlyExternalAliasing, make(map[ast.SymbolId]map[unsafe.Pointer]struct{})}) + return c.getAccessibleSymbolChainEx(accessibleSymbolChainContext{symbol, enclosingDeclaration, meaning, useOnlyExternalAliasing, make(map[ast.SymbolId]map[unsafe.Pointer]struct{})}) } -func (ch *Checker) GetAccessibleSymbolChain( +func (c *Checker) GetAccessibleSymbolChain( symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags, useOnlyExternalAliasing bool, ) []*ast.Symbol { - return ch.getAccessibleSymbolChain(symbol, enclosingDeclaration, meaning, useOnlyExternalAliasing) + return c.getAccessibleSymbolChain(symbol, enclosingDeclaration, meaning, useOnlyExternalAliasing) } type accessibleSymbolChainContext struct { @@ -398,7 +398,7 @@ type accessibleSymbolChainContext struct { visitedSymbolTablesMap map[ast.SymbolId]map[unsafe.Pointer]struct{} } -func (ch *Checker) getAccessibleSymbolChainEx(ctx accessibleSymbolChainContext) []*ast.Symbol { +func (c *Checker) getAccessibleSymbolChainEx(ctx accessibleSymbolChainContext) []*ast.Symbol { if ctx.symbol == nil { return nil } @@ -407,11 +407,11 @@ func (ch *Checker) getAccessibleSymbolChainEx(ctx accessibleSymbolChainContext) } // Go from enclosingDeclaration to the first scope we check, so the cache is keyed off the scope and thus shared more var firstRelevantLocation *ast.Node - ch.someSymbolTableInScope(ctx.enclosingDeclaration, func(_ ast.SymbolTable, _ bool, _ bool, node *ast.Node) bool { + c.someSymbolTableInScope(ctx.enclosingDeclaration, func(_ ast.SymbolTable, _ bool, _ bool, node *ast.Node) bool { firstRelevantLocation = node return true }) - links := ch.symbolContainerLinks.Get(ctx.symbol) + links := c.symbolContainerLinks.Get(ctx.symbol) linkKey := accessibleChainCacheKey{ctx.useOnlyExternalAliasing, firstRelevantLocation, ctx.meaning} if links.accessibleChainCache == nil { links.accessibleChainCache = make(map[accessibleChainCacheKey][]*ast.Symbol) @@ -423,8 +423,8 @@ func (ch *Checker) getAccessibleSymbolChainEx(ctx accessibleSymbolChainContext) var result []*ast.Symbol - ch.someSymbolTableInScope(ctx.enclosingDeclaration, func(t ast.SymbolTable, ignoreQualification bool, isLocalNameLookup bool, _ *ast.Node) bool { - res := ch.getAccessibleSymbolChainFromSymbolTable(ctx, t, ignoreQualification, isLocalNameLookup) + c.someSymbolTableInScope(ctx.enclosingDeclaration, func(t ast.SymbolTable, ignoreQualification bool, isLocalNameLookup bool, _ *ast.Node) bool { + res := c.getAccessibleSymbolChainFromSymbolTable(ctx, t, ignoreQualification, isLocalNameLookup) if len(res) > 0 { result = res return true @@ -438,7 +438,7 @@ func (ch *Checker) getAccessibleSymbolChainEx(ctx accessibleSymbolChainContext) /** * @param {ignoreQualification} boolean Set when a symbol is being looked for through the exports of another symbol (meaning we have a route to qualify it already) */ -func (ch *Checker) getAccessibleSymbolChainFromSymbolTable(ctx accessibleSymbolChainContext, t ast.SymbolTable, ignoreQualification bool, isLocalNameLookup bool) []*ast.Symbol { +func (c *Checker) getAccessibleSymbolChainFromSymbolTable(ctx accessibleSymbolChainContext, t ast.SymbolTable, ignoreQualification bool, isLocalNameLookup bool) []*ast.Symbol { symId := ast.GetSymbolId(ctx.symbol) visitedSymbolTables, ok := ctx.visitedSymbolTablesMap[symId] if !ok { @@ -453,13 +453,13 @@ func (ch *Checker) getAccessibleSymbolChainFromSymbolTable(ctx accessibleSymbolC } visitedSymbolTables[id] = struct{}{} - res := ch.trySymbolTable(ctx, t, ignoreQualification, isLocalNameLookup) + res := c.trySymbolTable(ctx, t, ignoreQualification, isLocalNameLookup) delete(visitedSymbolTables, id) return res } -func (ch *Checker) trySymbolTable( +func (c *Checker) trySymbolTable( ctx accessibleSymbolChainContext, symbols ast.SymbolTable, ignoreQualification bool, @@ -467,7 +467,7 @@ func (ch *Checker) trySymbolTable( ) []*ast.Symbol { // If symbol is directly available by its name in the symbol table res, ok := symbols[ctx.symbol.Name] - if ok && res != nil && ch.isAccessible(ctx, res /*resolvedAliasSymbol*/, nil, ignoreQualification) { + if ok && res != nil && c.isAccessible(ctx, res /*resolvedAliasSymbol*/, nil, ignoreQualification) { return []*ast.Symbol{ctx.symbol} } @@ -486,14 +486,14 @@ func (ch *Checker) trySymbolTable( // While exports are generally considered to be in scope, export-specifier declared symbols are _not_ // See similar comment in `resolveName` for details (ignoreQualification || len(getDeclarationsOfKind(symbolFromSymbolTable, ast.KindExportSpecifier)) == 0) { - resolvedImportedSymbol := ch.resolveAlias(symbolFromSymbolTable) - candidate := ch.getCandidateListForSymbol(ctx, symbolFromSymbolTable, resolvedImportedSymbol, ignoreQualification) + resolvedImportedSymbol := c.resolveAlias(symbolFromSymbolTable) + candidate := c.getCandidateListForSymbol(ctx, symbolFromSymbolTable, resolvedImportedSymbol, ignoreQualification) if len(candidate) > 0 { candidateChains = append(candidateChains, candidate) } } if symbolFromSymbolTable.Name == ctx.symbol.Name && symbolFromSymbolTable.ExportSymbol != nil { - if ch.isAccessible(ctx, ch.getMergedSymbol(symbolFromSymbolTable.ExportSymbol) /*resolvedAliasSymbol*/, nil, ignoreQualification) { + if c.isAccessible(ctx, c.getMergedSymbol(symbolFromSymbolTable.ExportSymbol) /*resolvedAliasSymbol*/, nil, ignoreQualification) { candidateChains = append(candidateChains, []*ast.Symbol{ctx.symbol}) } } @@ -501,18 +501,18 @@ func (ch *Checker) trySymbolTable( if len(candidateChains) > 0 { // pick first, shortest - slices.SortStableFunc(candidateChains, ch.compareSymbolChains) + slices.SortStableFunc(candidateChains, c.compareSymbolChains) return candidateChains[0] } // If there's no result and we're looking at the global symbol table, treat `globalThis` like an alias and try to lookup thru that - if reflect.ValueOf(ch.globals).UnsafePointer() == reflect.ValueOf(symbols).UnsafePointer() { - return ch.getCandidateListForSymbol(ctx, ch.globalThisSymbol, ch.globalThisSymbol, ignoreQualification) + if reflect.ValueOf(c.globals).UnsafePointer() == reflect.ValueOf(symbols).UnsafePointer() { + return c.getCandidateListForSymbol(ctx, c.globalThisSymbol, c.globalThisSymbol, ignoreQualification) } return nil } -func (ch *Checker) compareSymbolChainsWorker(a []*ast.Symbol, b []*ast.Symbol) int { +func (c *Checker) compareSymbolChainsWorker(a []*ast.Symbol, b []*ast.Symbol) int { chainLen := len(a) - len(b) if chainLen != 0 { return chainLen @@ -520,7 +520,7 @@ func (ch *Checker) compareSymbolChainsWorker(a []*ast.Symbol, b []*ast.Symbol) i idx := 0 for idx < len(a) { - comparison := ch.compareSymbols(a[idx], b[idx]) + comparison := c.compareSymbols(a[idx], b[idx]) if comparison != 0 { return comparison } @@ -537,33 +537,33 @@ func isNamespaceReexportDeclaration(node *ast.Node) bool { return ast.IsNamespaceExport(node) && node.Parent.AsExportDeclaration().ModuleSpecifier != nil } -func (ch *Checker) getCandidateListForSymbol( +func (c *Checker) getCandidateListForSymbol( ctx accessibleSymbolChainContext, symbolFromSymbolTable *ast.Symbol, resolvedImportedSymbol *ast.Symbol, ignoreQualification bool, ) []*ast.Symbol { - if ch.isAccessible(ctx, symbolFromSymbolTable, resolvedImportedSymbol, ignoreQualification) { + if c.isAccessible(ctx, symbolFromSymbolTable, resolvedImportedSymbol, ignoreQualification) { return []*ast.Symbol{symbolFromSymbolTable} } // Look in the exported members, if we can find accessibleSymbolChain, symbol is accessible using this chain // but only if the symbolFromSymbolTable can be qualified - candidateTable := ch.getExportsOfSymbol(resolvedImportedSymbol) + candidateTable := c.getExportsOfSymbol(resolvedImportedSymbol) if candidateTable == nil { return nil } - accessibleSymbolsFromExports := ch.getAccessibleSymbolChainFromSymbolTable(ctx, candidateTable /*ignoreQualification*/, true, false) + accessibleSymbolsFromExports := c.getAccessibleSymbolChainFromSymbolTable(ctx, candidateTable /*ignoreQualification*/, true, false) if len(accessibleSymbolsFromExports) == 0 { return nil } - if !ch.canQualifySymbol(ctx, symbolFromSymbolTable, getQualifiedLeftMeaning(ctx.meaning)) { + if !c.canQualifySymbol(ctx, symbolFromSymbolTable, getQualifiedLeftMeaning(ctx.meaning)) { return nil } return append([]*ast.Symbol{symbolFromSymbolTable}, accessibleSymbolsFromExports...) } -func (ch *Checker) isAccessible( +func (c *Checker) isAccessible( ctx accessibleSymbolChainContext, symbolFromSymbolTable *ast.Symbol, resolvedAliasSymbol *ast.Symbol, @@ -576,11 +576,11 @@ func (ch *Checker) isAccessible( if ctx.symbol == symbolFromSymbolTable { likeSymbols = true } - symbol := ch.getMergedSymbol(ctx.symbol) - if symbol == ch.getMergedSymbol(resolvedAliasSymbol) { + symbol := c.getMergedSymbol(ctx.symbol) + if symbol == c.getMergedSymbol(resolvedAliasSymbol) { likeSymbols = true } - if symbol == ch.getMergedSymbol(symbolFromSymbolTable) { + if symbol == c.getMergedSymbol(symbolFromSymbolTable) { likeSymbols = true } if !likeSymbols { @@ -590,29 +590,29 @@ func (ch *Checker) isAccessible( // and if symbolFromSymbolTable or alias resolution matches the symbol, // check the symbol can be qualified, it is only then this symbol is accessible return !core.Some(symbolFromSymbolTable.Declarations, hasNonGlobalAugmentationExternalModuleSymbol) && - (ignoreQualification || ch.canQualifySymbol(ctx, ch.getMergedSymbol(symbolFromSymbolTable), ctx.meaning)) + (ignoreQualification || c.canQualifySymbol(ctx, c.getMergedSymbol(symbolFromSymbolTable), ctx.meaning)) } -func (ch *Checker) canQualifySymbol( +func (c *Checker) canQualifySymbol( ctx accessibleSymbolChainContext, symbolFromSymbolTable *ast.Symbol, meaning ast.SymbolFlags, ) bool { // If the symbol is equivalent and doesn't need further qualification, this symbol is accessible - return !ch.needsQualification(symbolFromSymbolTable, ctx.enclosingDeclaration, meaning) || + return !c.needsQualification(symbolFromSymbolTable, ctx.enclosingDeclaration, meaning) || // If symbol needs qualification, make sure that parent is accessible, if it is then this symbol is accessible too - len(ch.getAccessibleSymbolChainEx(accessibleSymbolChainContext{symbolFromSymbolTable.Parent, ctx.enclosingDeclaration, getQualifiedLeftMeaning(meaning), ctx.useOnlyExternalAliasing, ctx.visitedSymbolTablesMap})) > 0 + len(c.getAccessibleSymbolChainEx(accessibleSymbolChainContext{symbolFromSymbolTable.Parent, ctx.enclosingDeclaration, getQualifiedLeftMeaning(meaning), ctx.useOnlyExternalAliasing, ctx.visitedSymbolTablesMap})) > 0 } -func (ch *Checker) needsQualification(symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags) bool { +func (c *Checker) needsQualification(symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags) bool { qualify := false - ch.someSymbolTableInScope(enclosingDeclaration, func(symbolTable ast.SymbolTable, _ bool, _ bool, _ *ast.Node) bool { + c.someSymbolTableInScope(enclosingDeclaration, func(symbolTable ast.SymbolTable, _ bool, _ bool, _ *ast.Node) bool { // If symbol of this name is not available in the symbol table we are ok res, ok := symbolTable[symbol.Name] if !ok || res == nil { return false } - symbolFromSymbolTable := ch.getMergedSymbol(res) + symbolFromSymbolTable := c.getMergedSymbol(res) if symbolFromSymbolTable == nil { // Continue to the next symbol table return false @@ -626,11 +626,11 @@ func (ch *Checker) needsQualification(symbol *ast.Symbol, enclosingDeclaration * // Qualify if the symbol from symbol table has same meaning as expected shouldResolveAlias := symbolFromSymbolTable.Flags&ast.SymbolFlagsAlias != 0 && ast.GetDeclarationOfKind(symbolFromSymbolTable, ast.KindExportSpecifier) == nil if shouldResolveAlias { - symbolFromSymbolTable = ch.resolveAlias(symbolFromSymbolTable) + symbolFromSymbolTable = c.resolveAlias(symbolFromSymbolTable) } flags := symbolFromSymbolTable.Flags if shouldResolveAlias { - flags = ch.getSymbolFlags(symbolFromSymbolTable) + flags = c.getSymbolFlags(symbolFromSymbolTable) } if flags&meaning != 0 { qualify = true @@ -662,7 +662,7 @@ func isPropertyOrMethodDeclarationSymbol(symbol *ast.Symbol) bool { return false } -func (ch *Checker) someSymbolTableInScope( +func (c *Checker) someSymbolTableInScope( enclosingDeclaration *ast.Node, callback func(symbolTable ast.SymbolTable, ignoreQualification bool, isLocalNameLookup bool, scopeNode *ast.Node) bool, ) bool { @@ -678,7 +678,7 @@ func (ch *Checker) someSymbolTableInScope( if ast.IsSourceFile(location) && !ast.IsExternalOrCommonJSModule(location.AsSourceFile()) { break } - sym := ch.getSymbolOfDeclaration(location) + sym := c.getSymbolOfDeclaration(location) if callback(sym.Exports, false, true, location) { return true } @@ -691,7 +691,7 @@ func (ch *Checker) someSymbolTableInScope( // These can never be latebound, so the symbol's raw members are sufficient. `getMembersOfNode` cannot be used, as it would // trigger resolving late-bound names, which we may already be in the process of doing while we're here! var table ast.SymbolTable - sym := ch.getSymbolOfDeclaration(location) + sym := c.getSymbolOfDeclaration(location) // TODO: Should this filtered table be cached in some way? for key, memberSymbol := range sym.Members { if memberSymbol.Flags&(ast.SymbolFlagsType & ^ast.SymbolFlagsAssignment) != 0 { @@ -707,7 +707,7 @@ func (ch *Checker) someSymbolTableInScope( } } - return callback(ch.globals, false, true, nil) + return callback(c.globals, false, true, nil) } /** diff --git a/internal/printer/printer.go b/internal/printer/printer.go index c98583b6cc6..2331db50ea5 100644 --- a/internal/printer/printer.go +++ b/internal/printer/printer.go @@ -24,6 +24,7 @@ import ( "github.com/microsoft/typescript-go/internal/ast" "github.com/microsoft/typescript-go/internal/core" + "github.com/microsoft/typescript-go/internal/debug" "github.com/microsoft/typescript-go/internal/scanner" "github.com/microsoft/typescript-go/internal/sourcemap" "github.com/microsoft/typescript-go/internal/stringutil" @@ -1071,6 +1072,8 @@ func (p *Printer) emitTemplateMiddleTail(node *ast.TemplateMiddleOrTail) { // func (p *Printer) emitIdentifierText(node *ast.Identifier) { + f := ast.GetSourceFileOfNode(node.AsNode()) + debug.Assert(f == nil || f.FileName() == p.currentSourceFile.FileName()) text := p.getTextOfNode(node.AsNode(), false /*includeTrivia*/) // !!! In the old emitter, an Identifier could have a Symbol associated with it. That From e2ee460a5e94dadffbb6a1a6d1debb8a5f7780db Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 22 Oct 2025 14:24:47 -0700 Subject: [PATCH 06/55] Fix nested param name preservation --- internal/psuedochecker/lookup.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/psuedochecker/lookup.go b/internal/psuedochecker/lookup.go index c40d6aa01de..671cf95a45a 100644 --- a/internal/psuedochecker/lookup.go +++ b/internal/psuedochecker/lookup.go @@ -484,7 +484,7 @@ func (ch *PsuedoChecker) typeFromParameter(node *ast.ParameterDeclaration) *Psue // This means ID won't let you write, say, `({elem}) => false` without an annotation, even though it's trivially of type // `(p0: {elem: any}) => boolean` and error-free under `noImplicitAny: false`! // That limitation is retained here. - return NewPsuedoTypeInferred(node.AsNode()) + return NewPsuedoTypeNoResult(node.AsNode()) } func (ch *PsuedoChecker) cloneParameters(nodes *ast.NodeList) []*PsuedoParameter { From cb3528408cbcbc483d56c45c1fbf199c0ef0ea1c Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 23 Oct 2025 10:50:45 -0700 Subject: [PATCH 07/55] More complete psuedo-accessor-type ID inference to better match strada behavior --- internal/checker/psuedotypenodebuilder.go | 2 +- internal/psuedochecker/lookup.go | 56 ++++++++++++++++++----- internal/psuedochecker/type.go | 8 ++-- 3 files changed, 51 insertions(+), 15 deletions(-) diff --git a/internal/checker/psuedotypenodebuilder.go b/internal/checker/psuedotypenodebuilder.go index cd8f7b7247a..30cc5ef5139 100644 --- a/internal/checker/psuedotypenodebuilder.go +++ b/internal/checker/psuedotypenodebuilder.go @@ -114,7 +114,7 @@ func (b *nodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod // we should have a unified `reuseName` codepath that remaps keyword ID names to string literal names for _, e := range elements { var modifiers *ast.ModifierList - if isConst { + if isConst || (e.Kind == psuedochecker.PsuedoObjectElementKindPropertyAssignment && e.Data.(*psuedochecker.PsuedoPropertyAssignment).Readonly) { modifiers = b.f.NewModifierList([]*ast.Node{b.f.NewModifier(ast.KindReadonlyKeyword)}) } var newProp *ast.Node diff --git a/internal/psuedochecker/lookup.go b/internal/psuedochecker/lookup.go index 671cf95a45a..c39c7fef2ad 100644 --- a/internal/psuedochecker/lookup.go +++ b/internal/psuedochecker/lookup.go @@ -306,6 +306,7 @@ func (ch *PsuedoChecker) typeFromObjectLiteral(node *ast.ObjectLiteralExpression optional := e.AsMethodDeclaration().PostfixToken != nil && e.AsMethodDeclaration().PostfixToken.Kind == ast.KindQuestionToken if e.FunctionLikeData().FullSignature != nil { results = append(results, NewPsuedoPropertyAssignment( + false, e.Name(), optional, NewPsuedoTypeDirect(e.FunctionLikeData().FullSignature), @@ -320,25 +321,58 @@ func (ch *PsuedoChecker) typeFromObjectLiteral(node *ast.ObjectLiteralExpression } case ast.KindPropertyAssignment: results = append(results, NewPsuedoPropertyAssignment( + false, e.Name(), e.AsPropertyAssignment().PostfixToken != nil && e.AsPropertyAssignment().PostfixToken.Kind == ast.KindQuestionToken, ch.typeFromExpression(e.Initializer()), )) - case ast.KindSetAccessor: - results = append(results, NewPsuedoSetAccessor( - e.Name(), + case ast.KindSetAccessor, ast.KindGetAccessor: + member := ch.getAccessorMember(e, e.Name()) + if member != nil { + results = append(results, member) + } + } + } + return NewPsuedoTypeObjectLiteral(results) +} + +// rougly analogous to typeFromObjectLiteralAccessor in strada +func (ch *PsuedoChecker) getAccessorMember(accessor *ast.Node, name *ast.Node) *PsuedoObjectElement { + allAccessors := ast.GetAllAccessorDeclarationsForDeclaration(accessor, accessor.Symbol()) // TODO: node preservation for late-bound accessor pairs? + + // TODO: handle psuedo-annotations from get accessor return positions? + if allAccessors.GetAccessor != nil && allAccessors.GetAccessor.Type != nil && + allAccessors.SetAccessor != nil && len(allAccessors.SetAccessor.Parameters.Nodes) > 0 && allAccessors.SetAccessor.Parameters.Nodes[0].AsParameterDeclaration().Type != nil { + // We have possible types for both accessors, we can't know if they are the same type so we keep both accessors + + if ast.IsGetAccessorDeclaration(accessor) { + return NewPsuedoGetAccessor( + name, false, - ch.cloneParameters(e.AsSetAccessorDeclaration().Parameters)[0], - )) - case ast.KindGetAccessor: - results = append(results, NewPsuedoGetAccessor( - e.Name(), + ch.typeFromAccessor(accessor), + ) + } else { + return NewPsuedoSetAccessor( + name, false, - ch.typeFromAccessor(e), - )) + ch.cloneParameters(accessor.AsSetAccessorDeclaration().Parameters)[0], + ) } } - return NewPsuedoTypeObjectLiteral(results) + + if accessor == allAccessors.FirstAccessor { + // only one annotated accessor; output a property - `readonly` for a single `get` accessor + + accessorType := ch.typeFromAccessor(accessor) + readonly := ast.IsGetAccessorDeclaration(accessor) && allAccessors.SecondAccessor == nil + return NewPsuedoPropertyAssignment( + readonly, + name, + false, + accessorType, + ) + } + return nil } func (ch *PsuedoChecker) canGetTypeFromObjectLiteral(node *ast.ObjectLiteralExpression) bool { diff --git a/internal/psuedochecker/type.go b/internal/psuedochecker/type.go index 8ed9f994332..14c5ef65392 100644 --- a/internal/psuedochecker/type.go +++ b/internal/psuedochecker/type.go @@ -207,12 +207,14 @@ func NewPsuedoObjectMethod(name *ast.Node, optional bool, parameters []*PsuedoPa type PsuedoPropertyAssignment struct { PsuedoObjectElement - Type *PsuedoType + Readonly bool + Type *PsuedoType } -func NewPsuedoPropertyAssignment(name *ast.Node, optional bool, t *PsuedoType) *PsuedoObjectElement { +func NewPsuedoPropertyAssignment(readonly bool, name *ast.Node, optional bool, t *PsuedoType) *PsuedoObjectElement { return NewPsuedoObjectElement(PsuedoObjectElementKindPropertyAssignment, name, optional, &PsuedoPropertyAssignment{ - Type: t, + Readonly: readonly, + Type: t, }) } From 1e769c572a42a418e442ec44a4d29ad305618614 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 23 Oct 2025 11:13:50 -0700 Subject: [PATCH 08/55] Non-expression positions need to fallback to declaration types rather than expression ones so widening is handled correctly --- internal/psuedochecker/lookup.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/internal/psuedochecker/lookup.go b/internal/psuedochecker/lookup.go index c39c7fef2ad..1b8275814a5 100644 --- a/internal/psuedochecker/lookup.go +++ b/internal/psuedochecker/lookup.go @@ -86,7 +86,11 @@ func (ch *PsuedoChecker) typeFromProperty(node *ast.Node) *PsuedoType { if ast.IsPropertyDeclaration(node) { init := node.Initializer() if init != nil && !isContextuallyTyped(node) { - return ch.typeFromExpression(init) + expr := ch.typeFromExpression(init) + if expr != nil && expr.Kind != PsuedoTypeKindInferred { + return expr + } + // fallback to NoResult if PsuedoTypeKindInferred } } return NewPsuedoTypeNoResult(node) @@ -100,7 +104,11 @@ func (ch *PsuedoChecker) typeFromVariable(declaration *ast.VariableDeclaration) init := declaration.Initializer if init != nil && (len(declaration.Symbol.Declarations) == 1 || core.CountWhere(declaration.Symbol.Declarations, ast.IsVariableDeclaration) == 1) { if !isContextuallyTyped(declaration.AsNode()) { // TODO: also should bail on expando declarations; reuse syntactic expando check used in declaration emit - return ch.typeFromExpression(init) + expr := ch.typeFromExpression(init) + if expr != nil && expr.Kind != PsuedoTypeKindInferred { + return expr + } + // fallback to NoResult if PsuedoTypeKindInferred } } return NewPsuedoTypeNoResult(declaration.AsNode()) From c510a1cf1dd109cd1df67b2d4cc78d75dd933d30 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 23 Oct 2025 11:25:05 -0700 Subject: [PATCH 09/55] More correct fallback behaviors for declaration types --- internal/psuedochecker/lookup.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/psuedochecker/lookup.go b/internal/psuedochecker/lookup.go index 1b8275814a5..804553ed988 100644 --- a/internal/psuedochecker/lookup.go +++ b/internal/psuedochecker/lookup.go @@ -63,19 +63,25 @@ func (ch *PsuedoChecker) typeFromPropertyAssignment(node *ast.Node) *PsuedoType if node.Kind == ast.KindPropertyAssignment { init := node.Initializer() if init != nil { - return ch.typeFromExpression(init) + expr := ch.typeFromExpression(init) + if expr != nil && expr.Kind != PsuedoTypeKindInferred { + return expr + } + // fallback to NoResult if PsuedoTypeKindInferred } } return NewPsuedoTypeNoResult(node) } -// TODO: Is this redundant with the reparser in place? +// This is _not_ redundant with the reparser; see how expandoFunctionSymbolProperty.ts and similar behaves func (ch *PsuedoChecker) typeFromExpandoProperty(node *ast.Node) *PsuedoType { declaredType := node.Type() if declaredType != nil { return NewPsuedoTypeDirect(declaredType) } - return NewPsuedoTypeInferred(node) + // While `node` is an expression, as an expando, it should also always be a + // declaration with a `.Symbol()` which requires declaration fallback handling + return NewPsuedoTypeNoResult(node) } func (ch *PsuedoChecker) typeFromProperty(node *ast.Node) *PsuedoType { From 21a3832aebb5a86c171c798985bb1c09af1ad13f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 23 Oct 2025 12:50:04 -0700 Subject: [PATCH 10/55] Rework const context handling to defer psuedotype selection until checker data is ready, reducing literal expression diffs --- internal/checker/nodebuilderimpl.go | 8 +-- internal/checker/psuedotypenodebuilder.go | 86 +++++++++++++++++++++++ internal/psuedochecker/lookup.go | 46 +++--------- internal/psuedochecker/type.go | 22 ++++++ 4 files changed, 122 insertions(+), 40 deletions(-) diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index 3282650be9a..5210c0ce98b 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -2018,13 +2018,13 @@ func (b *nodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati // !!! expandable hover support if tryReuse && declaration != nil && (ast.IsAccessor(declaration) || (ast.HasInferredType(declaration) && !ast.NodeIsSynthesized(declaration) && (t.ObjectFlags()&ObjectFlagsRequiresWidening) == 0)) { remove := b.addSymbolTypeToContext(symbol, t) + var pt *psuedochecker.PsuedoType if ast.IsAccessor(declaration) { - pt := b.pc.GetTypeOfAccessor(declaration) - result = b.psuedoTypeToNode(pt) + pt = b.pc.GetTypeOfAccessor(declaration) } else { - pt := b.pc.GetTypeOfDeclaration(declaration) - result = b.psuedoTypeToNode(pt) + pt = b.pc.GetTypeOfDeclaration(declaration) } + result = b.psuedoTypeToNode(pt) remove() } if result == nil { diff --git a/internal/checker/psuedotypenodebuilder.go b/internal/checker/psuedotypenodebuilder.go index 30cc5ef5139..c3722d11040 100644 --- a/internal/checker/psuedotypenodebuilder.go +++ b/internal/checker/psuedotypenodebuilder.go @@ -23,6 +23,23 @@ func (b *nodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod node := t.Data.(*psuedochecker.PsuedoTypeNoResult).Declaration b.ctx.tracker.ReportInferenceFallback(node) return b.serializeTypeForDeclaration(node, nil, nil, false) + case psuedochecker.PsuedoTypeKindMaybeConstLocation: + d := t.Data.(*psuedochecker.PsuedoTypeMaybeConstLocation) + // see checkExpressionWithContextualType for general literal widening rules which need to be emulated here, plus + // checkTemplateLiteralExpression for template literal widening rules if the psuedochecker ever supports literalized templates + isInConstContext := b.ch.isConstContext(d.Node) + if !isInConstContext { + contextualType := b.ch.getContextualType(d.Node, ContextFlagsNone) + t := b.psuedoTypeToType(d.ConstType) + if t != nil && b.ch.isLiteralOfContextualType(t, b.ch.instantiateContextualType(contextualType, d.Node, ContextFlagsNone)) { + isInConstContext = true + } + } + if isInConstContext { + return b.psuedoTypeToNode(d.ConstType) + } else { + return b.psuedoTypeToNode(d.RegularType) + } case psuedochecker.PsuedoTypeKindUnion: var res []*ast.Node var hasElidedType bool @@ -206,3 +223,72 @@ func (b *nodeBuilderImpl) psuedoParameterToNode(p *psuedochecker.PsuedoParameter nil, ) } + +func (b *nodeBuilderImpl) psuedoTypeToType(t *psuedochecker.PsuedoType) *Type { + // !!! TODO: only literal types currently mapped because this is only used to determine if literal contextual typing need apply to the psuedotype + // If this is used more broadly, the implementation needs to be filled out more to handle the structural psuedotypes - signatures, objects, tuples, etc + debug.Assert(t != nil, "Attempted to realize nil psuedotype") + switch t.Kind { + case psuedochecker.PsuedoTypeKindDirect: + return b.ch.getTypeFromTypeNode(t.Data.(*psuedochecker.PsuedoTypeDirect).TypeNode) + case psuedochecker.PsuedoTypeKindInferred: + node := t.Data.(*psuedochecker.PsuedoTypeInferred).Expression + ty := b.ch.getTypeOfExpression(node) + return ty + case psuedochecker.PsuedoTypeKindNoResult: + return nil // TODO: extract type selection logic from `serializeTypeForDeclaration`, not needed for current usecases but needed if completeness becomes required + case psuedochecker.PsuedoTypeKindMaybeConstLocation: + d := t.Data.(*psuedochecker.PsuedoTypeMaybeConstLocation) + return b.psuedoTypeToType(d.ConstType) // !!! TODO: not needed for const-checking usecases, but proper context switching behavior required if completeness is required + case psuedochecker.PsuedoTypeKindUnion: + var res []*Type + var hasElidedType bool + members := t.Data.(*psuedochecker.PsuedoTypeUnion).Types + for _, m := range members { + if !b.ch.strictNullChecks { + if m.Kind == psuedochecker.PsuedoTypeKindUndefined || m.Kind == psuedochecker.PsuedoTypeKindNull { + hasElidedType = true + continue + } + } + t := b.psuedoTypeToType(m) + if t == nil { + return nil // propagate failure + } + res = append(res, t) + } + if len(res) == 1 { + return res[0] + } + if len(res) == 0 { + if hasElidedType { + return b.ch.anyType + } + return b.ch.neverType + } + return b.ch.newUnionType(ObjectFlagsNone, res) + case psuedochecker.PsuedoTypeKindUndefined: + return b.ch.undefinedWideningType + case psuedochecker.PsuedoTypeKindNull: + return b.ch.nullWideningType + case psuedochecker.PsuedoTypeKindAny: + return b.ch.anyType + case psuedochecker.PsuedoTypeKindString: + return b.ch.stringType + case psuedochecker.PsuedoTypeKindNumber: + return b.ch.numberType + case psuedochecker.PsuedoTypeKindBigInt: + return b.ch.bigintType + case psuedochecker.PsuedoTypeKindBoolean: + return b.ch.booleanType + case psuedochecker.PsuedoTypeKindFalse: + return b.ch.falseType + case psuedochecker.PsuedoTypeKindTrue: + return b.ch.trueType + case psuedochecker.PsuedoTypeKindStringLiteral, psuedochecker.PsuedoTypeKindNumericLiteral, psuedochecker.PsuedoTypeKindBigIntLiteral: + source := t.Data.(*psuedochecker.PsuedoTypeLiteral).Node + return b.ch.getTypeOfExpression(source) // big shortcut, uses cached expression types where possible + default: + return nil + } +} diff --git a/internal/psuedochecker/lookup.go b/internal/psuedochecker/lookup.go index 804553ed988..ec592f877f8 100644 --- a/internal/psuedochecker/lookup.go +++ b/internal/psuedochecker/lookup.go @@ -267,40 +267,20 @@ func (ch *PsuedoChecker) typeFromExpression(node *ast.Node) *PsuedoType { case ast.KindClassExpression: return NewPsuedoTypeInferred(node) // No possible annotation/directly mappable syntax case ast.KindTemplateExpression: - if ch.isInConstContext(node) { - return NewPsuedoTypeInferred(node) // templateLitWithHoles as const, not supported - } - return PsuedoTypeString + // templateLitWithHoles as const, not supported + return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeInferred(node), PsuedoTypeString) case ast.KindNumericLiteral: - if ch.isInConstContext(node) { - return NewPsuedoTypeNumericLiteral(node) - } - return PsuedoTypeNumber + return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeNumericLiteral(node), PsuedoTypeNumber) case ast.KindNoSubstitutionTemplateLiteral: - if ch.isInConstContext(node) { - return NewPsuedoTypeStringLiteral(node) - } - return PsuedoTypeString + return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeStringLiteral(node), PsuedoTypeString) case ast.KindStringLiteral: - if ch.isInConstContext(node) { - return NewPsuedoTypeStringLiteral(node) - } - return PsuedoTypeString + return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeStringLiteral(node), PsuedoTypeString) case ast.KindBigIntLiteral: - if ch.isInConstContext(node) { - return NewPsuedoTypeBigIntLiteral(node) - } - return PsuedoTypeBigInt + return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeBigIntLiteral(node), PsuedoTypeBigInt) case ast.KindTrueKeyword: - if ch.isInConstContext(node) { - return PsuedoTypeTrue - } - return PsuedoTypeBoolean + return NewPsuedoTypeMaybeConstLocation(node, PsuedoTypeTrue, PsuedoTypeBoolean) case ast.KindFalseKeyword: - if ch.isInConstContext(node) { - return PsuedoTypeFalse - } - return PsuedoTypeBoolean + return NewPsuedoTypeMaybeConstLocation(node, PsuedoTypeFalse, PsuedoTypeBoolean) } return NewPsuedoTypeInferred(node) } @@ -462,16 +442,10 @@ func (ch *PsuedoChecker) isInConstContext(node *ast.Node) bool { func (ch *PsuedoChecker) typeFromPrimitiveLiteralPrefix(node *ast.PrefixUnaryExpression) *PsuedoType { inner := node.Operand if inner.Kind == ast.KindBigIntLiteral { - if ch.isInConstContext(node.AsNode()) { - return NewPsuedoTypeBigIntLiteral(node.AsNode()) - } - return PsuedoTypeBigInt + return NewPsuedoTypeMaybeConstLocation(node.AsNode(), NewPsuedoTypeBigIntLiteral(node.AsNode()), PsuedoTypeBigInt) } if inner.Kind == ast.KindNumericLiteral { - if ch.isInConstContext(node.AsNode()) { - return NewPsuedoTypeNumericLiteral(node.AsNode()) - } - return PsuedoTypeNumber + return NewPsuedoTypeMaybeConstLocation(node.AsNode(), NewPsuedoTypeNumericLiteral(node.AsNode()), PsuedoTypeNumber) } debug.FailBadSyntaxKind(inner) return nil diff --git a/internal/psuedochecker/type.go b/internal/psuedochecker/type.go index 14c5ef65392..a46ea3c3177 100644 --- a/internal/psuedochecker/type.go +++ b/internal/psuedochecker/type.go @@ -22,6 +22,7 @@ const ( PsuedoTypeKindDirect PsuedoTypeKind = iota PsuedoTypeKindInferred PsuedoTypeKindNoResult + PsuedoTypeKindMaybeConstLocation PsuedoTypeKindUnion PsuedoTypeKindUndefined PsuedoTypeKindNull @@ -112,6 +113,27 @@ func NewPsuedoTypeNoResult(decl *ast.Node) *PsuedoType { return NewPsuedoType(PsuedoTypeKindNoResult, &PsuedoTypeNoResult{Declaration: decl}) } +// PsuedoTypeMaybeConstLocation encodes the const/regular types of a location so the builder +// can later select the appropriate psuedotype based on the location's context. This is used +// to ensure accuracy in nested expressions without exposing type-based functionality to the psuedochecker. +// A nodebuilder that doesn't do contextual typing would need to, as policy, reject these types if they +// are in a contextually typed position! (Otherwise they could pick one, but either type could be wrong, depending on context!) +// At the top-level, which is generally what ID is concerned with, nothing is contextually typed, so these cases don't generally +// cause problems. Once you get into reused nodes in nested expressions, however, this becomes important. +// In strada, checker `isConstContext` functionality exposed to the psuedochecker + type comparison sanity checking +// on nested results masks the need for this abstraction, but with it present it clearly highlights a shortcoming +// of the ID infernce model and how "standalone" it can(n't) truly be without substantial restrictions on expression inference. +type PsuedoTypeMaybeConstLocation struct { + PsuedoTypeBase + Node *ast.Node + ConstType *PsuedoType + RegularType *PsuedoType +} + +func NewPsuedoTypeMaybeConstLocation(loc *ast.Node, ct *PsuedoType, reg *PsuedoType) *PsuedoType { + return NewPsuedoType(PsuedoTypeKindMaybeConstLocation, &PsuedoTypeMaybeConstLocation{Node: loc, ConstType: ct, RegularType: reg}) +} + // PsuedoTypeUnion is a collection of psudotypes joined into a union type PsuedoTypeUnion struct { PsuedoTypeBase From fd1f7a7967e3d93339128c5b965fe4f8ec7350fb Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 23 Oct 2025 13:04:19 -0700 Subject: [PATCH 11/55] Fix printback for parsed mapped type nodes to not have doubled-up whitespace --- internal/printer/printer.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/internal/printer/printer.go b/internal/printer/printer.go index 36318299960..7eafb567395 100644 --- a/internal/printer/printer.go +++ b/internal/printer/printer.go @@ -2108,12 +2108,14 @@ func (p *Printer) emitMappedType(node *ast.MappedTypeNode) { p.emitTypeNodeOutsideExtends(node.Type) p.writeTrailingSemicolon() if node.Members != nil { - if singleLine { - p.writeSpace() - } else { - p.writeLine() + if len(node.Members.Nodes) > 0 { + if singleLine { + p.writeSpace() + } else { + p.writeLine() + } + p.emitList((*Printer).emitTypeElement, node.AsNode(), node.Members, LFPreserveLines) } - p.emitList((*Printer).emitTypeElement, node.AsNode(), node.Members, LFPreserveLines) } if singleLine { p.writeSpace() From ca7ce2de7e42d8dd70596e07bee20d1c2fdb7df6 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 23 Oct 2025 13:21:55 -0700 Subject: [PATCH 12/55] Fix local symbol tracking in reused nodes --- internal/checker/nodecopy.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index ac70d1f873c..ddb23b5a4ed 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -282,15 +282,15 @@ func getExistingNodeTreeVisitor(b *nodeBuilderImpl, bound *recoveryBoundary) *as if ast.IsPartOfParameterDeclaration(sym.ValueDeclaration) || ast.IsJSDocParameterTag(sym.ValueDeclaration) { return introducesError, node, nil // TODO: attachSymbolToLeftmostIdentifier on `node` to smuggle symbols for quick info? } - if sym.Flags&ast.SymbolFlagsTypeParameter == 0 /* Type parameters are visible in the current context if they are are resolvable */ && !ast.IsDeclarationName(node) && - b.ch.IsSymbolAccessible(sym, enclosingDeclaration, meaning, false).Accessibility != printer.SymbolAccessibilityAccessible { - b.ctx.tracker.ReportInferenceFallback(node) - introducesError = true - } else { - b.ctx.tracker.TrackSymbol(sym, enclosingDeclaration, meaning) - } - return introducesError, node, nil // TODO: attachSymbolToLeftmostIdentifier on `node` to smuggle symbols for quick info? } + if sym.Flags&ast.SymbolFlagsTypeParameter == 0 /* Type parameters are visible in the current context if they are are resolvable */ && !ast.IsDeclarationName(node) && + b.ch.IsSymbolAccessible(sym, enclosingDeclaration, meaning, false).Accessibility != printer.SymbolAccessibilityAccessible { + b.ctx.tracker.ReportInferenceFallback(node) + introducesError = true + } else { + b.ctx.tracker.TrackSymbol(sym, enclosingDeclaration, meaning) + } + return introducesError, node, nil // TODO: attachSymbolToLeftmostIdentifier on `node` to smuggle symbols for quick info? } return introducesError, node, nil } From 9c7376bfd78b0b0e6ab804d821ef460a6864f920 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 8 Jan 2026 14:05:01 -0800 Subject: [PATCH 13/55] Fix pervasive misspelling and other lints --- internal/checker/nodebuilderimpl.go | 10 +- internal/checker/nodecopy.go | 5 +- ...odebuilder.go => pseudotypenodebuilder.go} | 176 +++++------ .../checker.go | 10 +- .../lookup.go | 190 +++++------ internal/pseudochecker/type.go | 299 ++++++++++++++++++ internal/psuedochecker/type.go | 299 ------------------ internal/transformers/jsxtransforms/jsx.go | 6 +- 8 files changed, 498 insertions(+), 497 deletions(-) rename internal/checker/{psuedotypenodebuilder.go => pseudotypenodebuilder.go} (58%) rename internal/{psuedochecker => pseudochecker}/checker.go (83%) rename internal/{psuedochecker => pseudochecker}/lookup.go (71%) create mode 100644 internal/pseudochecker/type.go delete mode 100644 internal/psuedochecker/type.go diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index e03351258c5..de0887dd247 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -15,7 +15,7 @@ import ( "github.com/microsoft/typescript-go/internal/modulespecifiers" "github.com/microsoft/typescript-go/internal/nodebuilder" "github.com/microsoft/typescript-go/internal/printer" - "github.com/microsoft/typescript-go/internal/psuedochecker" + "github.com/microsoft/typescript-go/internal/pseudochecker" "github.com/microsoft/typescript-go/internal/scanner" "github.com/microsoft/typescript-go/internal/stringutil" "github.com/microsoft/typescript-go/internal/tspath" @@ -89,7 +89,7 @@ type NodeBuilderImpl struct { f *ast.NodeFactory ch *Checker e *printer.EmitContext - pc *psuedochecker.PsuedoChecker + pc *pseudochecker.PseudoChecker // cache links core.LinkStore[*ast.Node, NodeBuilderLinks] @@ -116,7 +116,7 @@ func newNodeBuilderImpl(ch *Checker, e *printer.EmitContext, idToSymbol map[*ast if idToSymbol == nil { idToSymbol = make(map[*ast.IdentifierNode]*ast.Symbol) } - b := &NodeBuilderImpl{f: e.Factory.AsNodeFactory(), ch: ch, e: e, idToSymbol: idToSymbol, pc: psuedochecker.NewPsuedoChecker()} + b := &NodeBuilderImpl{f: e.Factory.AsNodeFactory(), ch: ch, e: e, idToSymbol: idToSymbol, pc: pseudochecker.NewPseudoChecker()} b.cloneBindingNameVisitor = ast.NewNodeVisitor(b.cloneBindingName, b.f, ast.NodeVisitorHooks{}) return b } @@ -2029,13 +2029,13 @@ func (b *NodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati // !!! expandable hover support if tryReuse && declaration != nil && (ast.IsAccessor(declaration) || (ast.HasInferredType(declaration) && !ast.NodeIsSynthesized(declaration) && (t.ObjectFlags()&ObjectFlagsRequiresWidening) == 0)) { remove := b.addSymbolTypeToContext(symbol, t) - var pt *psuedochecker.PsuedoType + var pt *pseudochecker.PseudoType if ast.IsAccessor(declaration) { pt = b.pc.GetTypeOfAccessor(declaration) } else { pt = b.pc.GetTypeOfDeclaration(declaration) } - result = b.psuedoTypeToNode(pt) + result = b.pseudoTypeToNode(pt) remove() } if result == nil { diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index d3805584f7d..47da883d9fb 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -559,6 +559,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as if visited == node { visited = b.setTextRange(node.Clone(factory), node) } + node = visited newType := factory.NewKeywordTypeNode(ast.KindAnyKeyword) switch node.Kind { case ast.KindPropertyDeclaration: @@ -718,7 +719,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as if bound.hadError { return node } - recover := bound.startRecoveryScope() + recover_ := bound.startRecoveryScope() introducesNewScope := ast.IsFunctionLike(node) || ast.IsMappedTypeNode(node) var exit func() if introducesNewScope { @@ -742,7 +743,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as if bound.hadError { if ast.IsTypeNode(node) && !ast.IsTypePredicateNode(node) { - bound.endRecoveryScope(recover) + bound.endRecoveryScope(recover_) // TODO: this fallback matches strada behavior, but it lacks any verification that the type from `node` actually matches // the type we'd expect at this traversal position within the parent type. t := b.getTypeFromTypeNode(node, false) diff --git a/internal/checker/psuedotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go similarity index 58% rename from internal/checker/psuedotypenodebuilder.go rename to internal/checker/pseudotypenodebuilder.go index 1cd5756739a..a11d7360260 100644 --- a/internal/checker/psuedotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -5,53 +5,53 @@ import ( "github.com/microsoft/typescript-go/internal/debug" "github.com/microsoft/typescript-go/internal/nodebuilder" "github.com/microsoft/typescript-go/internal/printer" - "github.com/microsoft/typescript-go/internal/psuedochecker" + "github.com/microsoft/typescript-go/internal/pseudochecker" ) -// Maps a psuedochecker's psuedotypes into ast nodes and reports any inference fallback errors the psuedotype structure implies -func (b *NodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Node { - debug.Assert(t != nil, "Attempted to serialize nil psuedotype") +// Maps a pseudochecker's pseudotypes into ast nodes and reports any inference fallback errors the pseudotype structure implies +func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Node { + debug.Assert(t != nil, "Attempted to serialize nil pseudotype") switch t.Kind { - case psuedochecker.PsuedoTypeKindDirect: - return b.reuseTypeNode(t.Data.(*psuedochecker.PsuedoTypeDirect).TypeNode) - case psuedochecker.PsuedoTypeKindInferred: - node := t.Data.(*psuedochecker.PsuedoTypeInferred).Expression + case pseudochecker.PseudoTypeKindDirect: + return b.reuseTypeNode(t.Data.(*pseudochecker.PseudoTypeDirect).TypeNode) + case pseudochecker.PseudoTypeKindInferred: + node := t.Data.(*pseudochecker.PseudoTypeInferred).Expression b.ctx.tracker.ReportInferenceFallback(node) ty := b.ch.getTypeOfExpression(node) return b.typeToTypeNode(ty) - case psuedochecker.PsuedoTypeKindNoResult: - node := t.Data.(*psuedochecker.PsuedoTypeNoResult).Declaration + case pseudochecker.PseudoTypeKindNoResult: + node := t.Data.(*pseudochecker.PseudoTypeNoResult).Declaration b.ctx.tracker.ReportInferenceFallback(node) return b.serializeTypeForDeclaration(node, nil, nil, false) - case psuedochecker.PsuedoTypeKindMaybeConstLocation: - d := t.Data.(*psuedochecker.PsuedoTypeMaybeConstLocation) + case pseudochecker.PseudoTypeKindMaybeConstLocation: + d := t.Data.(*pseudochecker.PseudoTypeMaybeConstLocation) // see checkExpressionWithContextualType for general literal widening rules which need to be emulated here, plus - // checkTemplateLiteralExpression for template literal widening rules if the psuedochecker ever supports literalized templates + // checkTemplateLiteralExpression for template literal widening rules if the pseudochecker ever supports literalized templates isInConstContext := b.ch.isConstContext(d.Node) if !isInConstContext { contextualType := b.ch.getContextualType(d.Node, ContextFlagsNone) - t := b.psuedoTypeToType(d.ConstType) + t := b.pseudoTypeToType(d.ConstType) if t != nil && b.ch.isLiteralOfContextualType(t, b.ch.instantiateContextualType(contextualType, d.Node, ContextFlagsNone)) { isInConstContext = true } } if isInConstContext { - return b.psuedoTypeToNode(d.ConstType) + return b.pseudoTypeToNode(d.ConstType) } else { - return b.psuedoTypeToNode(d.RegularType) + return b.pseudoTypeToNode(d.RegularType) } - case psuedochecker.PsuedoTypeKindUnion: + case pseudochecker.PseudoTypeKindUnion: var res []*ast.Node var hasElidedType bool - members := t.Data.(*psuedochecker.PsuedoTypeUnion).Types + members := t.Data.(*pseudochecker.PseudoTypeUnion).Types for _, m := range members { if !b.ch.strictNullChecks { - if m.Kind == psuedochecker.PsuedoTypeKindUndefined || m.Kind == psuedochecker.PsuedoTypeKindNull { + if m.Kind == pseudochecker.PseudoTypeKindUndefined || m.Kind == pseudochecker.PseudoTypeKindNull { hasElidedType = true continue } } - res = append(res, b.psuedoTypeToNode(m)) + res = append(res, b.pseudoTypeToNode(m)) } if len(res) == 1 { return res[0] @@ -63,32 +63,32 @@ func (b *NodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod return b.f.NewKeywordTypeNode(ast.KindNeverKeyword) } return b.f.NewUnionTypeNode(b.f.NewNodeList(res)) - case psuedochecker.PsuedoTypeKindUndefined: + case pseudochecker.PseudoTypeKindUndefined: if !b.ch.strictNullChecks { return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) } return b.f.NewKeywordTypeNode(ast.KindUndefinedKeyword) - case psuedochecker.PsuedoTypeKindNull: + case pseudochecker.PseudoTypeKindNull: if !b.ch.strictNullChecks { return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) } return b.f.NewLiteralTypeNode(b.f.NewKeywordExpression(ast.KindNullKeyword)) - case psuedochecker.PsuedoTypeKindAny: + case pseudochecker.PseudoTypeKindAny: return b.f.NewKeywordTypeNode(ast.KindAnyKeyword) - case psuedochecker.PsuedoTypeKindString: + case pseudochecker.PseudoTypeKindString: return b.f.NewKeywordTypeNode(ast.KindStringKeyword) - case psuedochecker.PsuedoTypeKindNumber: + case pseudochecker.PseudoTypeKindNumber: return b.f.NewKeywordTypeNode(ast.KindNumberKeyword) - case psuedochecker.PsuedoTypeKindBigInt: + case pseudochecker.PseudoTypeKindBigInt: return b.f.NewKeywordTypeNode(ast.KindBigIntKeyword) - case psuedochecker.PsuedoTypeKindBoolean: + case pseudochecker.PseudoTypeKindBoolean: return b.f.NewKeywordTypeNode(ast.KindBooleanKeyword) - case psuedochecker.PsuedoTypeKindFalse: + case pseudochecker.PseudoTypeKindFalse: return b.f.NewLiteralTypeNode(b.f.NewKeywordExpression(ast.KindFalseKeyword)) - case psuedochecker.PsuedoTypeKindTrue: + case pseudochecker.PseudoTypeKindTrue: return b.f.NewLiteralTypeNode(b.f.NewKeywordExpression(ast.KindTrueKeyword)) - case psuedochecker.PsuedoTypeKindSingleCallSignature: - d := t.Data.(*psuedochecker.PsuedoTypeSingleCallSignature) + case pseudochecker.PseudoTypeKindSingleCallSignature: + d := t.Data.(*pseudochecker.PseudoTypeSingleCallSignature) var typeParams *ast.NodeList if len(d.TypeParameters) > 0 { res := make([]*ast.Node, 0, len(d.TypeParameters)) @@ -97,29 +97,29 @@ func (b *NodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod } typeParams = b.f.NewNodeList(res) } - params := b.psuedoParametersToNodeList(d.Parameters) - returnType := b.psuedoTypeToNode(d.ReturnType) + params := b.pseudoParametersToNodeList(d.Parameters) + returnType := b.pseudoTypeToNode(d.ReturnType) return b.f.NewFunctionTypeNode(typeParams, params, returnType) - case psuedochecker.PsuedoTypeKindTuple: + case pseudochecker.PseudoTypeKindTuple: var res []*ast.Node - elements := t.Data.(*psuedochecker.PsuedoTypeTuple).Elements + elements := t.Data.(*pseudochecker.PseudoTypeTuple).Elements for _, e := range elements { - res = append(res, b.psuedoTypeToNode(e)) + res = append(res, b.pseudoTypeToNode(e)) } - // !!! TODO: psuedo-tuples are implicitly `readonly` since they originate from `as const` contexts + // !!! TODO: pseudo-tuples are implicitly `readonly` since they originate from `as const` contexts // but strada fails to add the `readonly` modifier to the generated node. We replicate that bug here. // return b.f.NewTypeOperatorNode(ast.KindReadonlyKeyword, b.f.NewTupleTypeNode(b.f.NewNodeList(res))) result := b.f.NewTupleTypeNode(b.f.NewNodeList(res)) b.e.AddEmitFlags(result, printer.EFSingleLine) return result - case psuedochecker.PsuedoTypeKindObjectLiteral: - elements := t.Data.(*psuedochecker.PsuedoTypeObjectLiteral).Elements + case pseudochecker.PseudoTypeKindObjectLiteral: + elements := t.Data.(*pseudochecker.PseudoTypeObjectLiteral).Elements if len(elements) == 0 { result := b.f.NewTypeLiteralNode(b.f.NewNodeList(nil)) b.e.AddEmitFlags(result, printer.EFSingleLine) return result } - // NOTE: using the checker's `isConstContext` instead of the psuedochecker's `isInConstContext` + // NOTE: using the checker's `isConstContext` instead of the pseudochecker's `isInConstContext` // results in different results here. The checker one is more "correct" but means we'll mark // objects in parameter positions contextually typed by const type parameters as readonly - // something a true syntactic ID emitter couldn't possibly know (since the signature could @@ -131,49 +131,49 @@ func (b *NodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod // we should have a unified `reuseName` codepath that remaps keyword ID names to string literal names for _, e := range elements { var modifiers *ast.ModifierList - if isConst || (e.Kind == psuedochecker.PsuedoObjectElementKindPropertyAssignment && e.Data.(*psuedochecker.PsuedoPropertyAssignment).Readonly) { + if isConst || (e.Kind == pseudochecker.PseudoObjectElementKindPropertyAssignment && e.Data.(*pseudochecker.PseudoPropertyAssignment).Readonly) { modifiers = b.f.NewModifierList([]*ast.Node{b.f.NewModifier(ast.KindReadonlyKeyword)}) } var newProp *ast.Node switch e.Kind { - case psuedochecker.PsuedoObjectElementKindMethod: - d := e.Data.(*psuedochecker.PsuedoObjectMethod) + case pseudochecker.PseudoObjectElementKindMethod: + d := e.Data.(*pseudochecker.PseudoObjectMethod) newProp = b.f.NewMethodSignatureDeclaration( modifiers, b.reuseNode(e.Name), nil, nil, - b.psuedoParametersToNodeList(d.Parameters), - b.psuedoTypeToNode(d.ReturnType), + b.pseudoParametersToNodeList(d.Parameters), + b.pseudoTypeToNode(d.ReturnType), ) - case psuedochecker.PsuedoObjectElementKindPropertyAssignment: - d := e.Data.(*psuedochecker.PsuedoPropertyAssignment) + case pseudochecker.PseudoObjectElementKindPropertyAssignment: + d := e.Data.(*pseudochecker.PseudoPropertyAssignment) newProp = b.f.NewPropertySignatureDeclaration( modifiers, b.reuseNode(e.Name), nil, - b.psuedoTypeToNode(d.Type), + b.pseudoTypeToNode(d.Type), nil, ) - case psuedochecker.PsuedoObjectElementKindSetAccessor: - d := e.Data.(*psuedochecker.PsuedoSetAccessor) + case pseudochecker.PseudoObjectElementKindSetAccessor: + d := e.Data.(*pseudochecker.PseudoSetAccessor) newProp = b.f.NewSetAccessorDeclaration( nil, b.reuseNode(e.Name), nil, - b.f.NewNodeList([]*ast.Node{b.psuedoParameterToNode(d.Parameter)}), + b.f.NewNodeList([]*ast.Node{b.pseudoParameterToNode(d.Parameter)}), nil, nil, nil, ) - case psuedochecker.PsuedoObjectElementKindGetAccessor: - d := e.Data.(*psuedochecker.PsuedoGetAccessor) + case pseudochecker.PseudoObjectElementKindGetAccessor: + d := e.Data.(*pseudochecker.PseudoGetAccessor) newProp = b.f.NewSetAccessorDeclaration( nil, b.reuseNode(e.Name), nil, nil, - b.psuedoTypeToNode(d.Type), + b.pseudoTypeToNode(d.Type), nil, nil, ) @@ -188,24 +188,24 @@ func (b *NodeBuilderImpl) psuedoTypeToNode(t *psuedochecker.PsuedoType) *ast.Nod b.e.AddEmitFlags(result, printer.EFSingleLine) } return result - case psuedochecker.PsuedoTypeKindStringLiteral, psuedochecker.PsuedoTypeKindNumericLiteral, psuedochecker.PsuedoTypeKindBigIntLiteral: - source := t.Data.(*psuedochecker.PsuedoTypeLiteral).Node + case pseudochecker.PseudoTypeKindStringLiteral, pseudochecker.PseudoTypeKindNumericLiteral, pseudochecker.PseudoTypeKindBigIntLiteral: + source := t.Data.(*pseudochecker.PseudoTypeLiteral).Node return b.f.NewLiteralTypeNode(b.reuseNode(source)) default: - debug.AssertNever(t.Kind, "Unhandled psuedotype kind in psuedotype node construction") + debug.AssertNever(t.Kind, "Unhandled pseudotype kind in pseudotype node construction") return nil } } -func (b *NodeBuilderImpl) psuedoParametersToNodeList(params []*psuedochecker.PsuedoParameter) *ast.NodeList { +func (b *NodeBuilderImpl) pseudoParametersToNodeList(params []*pseudochecker.PseudoParameter) *ast.NodeList { res := make([]*ast.Node, 0, len(params)) for _, p := range params { - res = append(res, b.psuedoParameterToNode(p)) + res = append(res, b.pseudoParameterToNode(p)) } return b.f.NewNodeList(res) } -func (b *NodeBuilderImpl) psuedoParameterToNode(p *psuedochecker.PsuedoParameter) *ast.Node { +func (b *NodeBuilderImpl) pseudoParameterToNode(p *pseudochecker.PseudoParameter) *ast.Node { var dotDotDot *ast.Node var questionMark *ast.Node if p.Rest { @@ -219,39 +219,39 @@ func (b *NodeBuilderImpl) psuedoParameterToNode(p *psuedochecker.PsuedoParameter dotDotDot, b.reuseNode(p.Name), questionMark, - b.psuedoTypeToNode(p.Type), + b.pseudoTypeToNode(p.Type), nil, ) } -func (b *NodeBuilderImpl) psuedoTypeToType(t *psuedochecker.PsuedoType) *Type { - // !!! TODO: only literal types currently mapped because this is only used to determine if literal contextual typing need apply to the psuedotype - // If this is used more broadly, the implementation needs to be filled out more to handle the structural psuedotypes - signatures, objects, tuples, etc - debug.Assert(t != nil, "Attempted to realize nil psuedotype") +func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { + // !!! TODO: only literal types currently mapped because this is only used to determine if literal contextual typing need apply to the pseudotype + // If this is used more broadly, the implementation needs to be filled out more to handle the structural pseudotypes - signatures, objects, tuples, etc + debug.Assert(t != nil, "Attempted to realize nil pseudotype") switch t.Kind { - case psuedochecker.PsuedoTypeKindDirect: - return b.ch.getTypeFromTypeNode(t.Data.(*psuedochecker.PsuedoTypeDirect).TypeNode) - case psuedochecker.PsuedoTypeKindInferred: - node := t.Data.(*psuedochecker.PsuedoTypeInferred).Expression + case pseudochecker.PseudoTypeKindDirect: + return b.ch.getTypeFromTypeNode(t.Data.(*pseudochecker.PseudoTypeDirect).TypeNode) + case pseudochecker.PseudoTypeKindInferred: + node := t.Data.(*pseudochecker.PseudoTypeInferred).Expression ty := b.ch.getTypeOfExpression(node) return ty - case psuedochecker.PsuedoTypeKindNoResult: + case pseudochecker.PseudoTypeKindNoResult: return nil // TODO: extract type selection logic from `serializeTypeForDeclaration`, not needed for current usecases but needed if completeness becomes required - case psuedochecker.PsuedoTypeKindMaybeConstLocation: - d := t.Data.(*psuedochecker.PsuedoTypeMaybeConstLocation) - return b.psuedoTypeToType(d.ConstType) // !!! TODO: not needed for const-checking usecases, but proper context switching behavior required if completeness is required - case psuedochecker.PsuedoTypeKindUnion: + case pseudochecker.PseudoTypeKindMaybeConstLocation: + d := t.Data.(*pseudochecker.PseudoTypeMaybeConstLocation) + return b.pseudoTypeToType(d.ConstType) // !!! TODO: not needed for const-checking usecases, but proper context switching behavior required if completeness is required + case pseudochecker.PseudoTypeKindUnion: var res []*Type var hasElidedType bool - members := t.Data.(*psuedochecker.PsuedoTypeUnion).Types + members := t.Data.(*pseudochecker.PseudoTypeUnion).Types for _, m := range members { if !b.ch.strictNullChecks { - if m.Kind == psuedochecker.PsuedoTypeKindUndefined || m.Kind == psuedochecker.PsuedoTypeKindNull { + if m.Kind == pseudochecker.PseudoTypeKindUndefined || m.Kind == pseudochecker.PseudoTypeKindNull { hasElidedType = true continue } } - t := b.psuedoTypeToType(m) + t := b.pseudoTypeToType(m) if t == nil { return nil // propagate failure } @@ -267,26 +267,26 @@ func (b *NodeBuilderImpl) psuedoTypeToType(t *psuedochecker.PsuedoType) *Type { return b.ch.neverType } return b.ch.newUnionType(ObjectFlagsNone, res) - case psuedochecker.PsuedoTypeKindUndefined: + case pseudochecker.PseudoTypeKindUndefined: return b.ch.undefinedWideningType - case psuedochecker.PsuedoTypeKindNull: + case pseudochecker.PseudoTypeKindNull: return b.ch.nullWideningType - case psuedochecker.PsuedoTypeKindAny: + case pseudochecker.PseudoTypeKindAny: return b.ch.anyType - case psuedochecker.PsuedoTypeKindString: + case pseudochecker.PseudoTypeKindString: return b.ch.stringType - case psuedochecker.PsuedoTypeKindNumber: + case pseudochecker.PseudoTypeKindNumber: return b.ch.numberType - case psuedochecker.PsuedoTypeKindBigInt: + case pseudochecker.PseudoTypeKindBigInt: return b.ch.bigintType - case psuedochecker.PsuedoTypeKindBoolean: + case pseudochecker.PseudoTypeKindBoolean: return b.ch.booleanType - case psuedochecker.PsuedoTypeKindFalse: + case pseudochecker.PseudoTypeKindFalse: return b.ch.falseType - case psuedochecker.PsuedoTypeKindTrue: + case pseudochecker.PseudoTypeKindTrue: return b.ch.trueType - case psuedochecker.PsuedoTypeKindStringLiteral, psuedochecker.PsuedoTypeKindNumericLiteral, psuedochecker.PsuedoTypeKindBigIntLiteral: - source := t.Data.(*psuedochecker.PsuedoTypeLiteral).Node + case pseudochecker.PseudoTypeKindStringLiteral, pseudochecker.PseudoTypeKindNumericLiteral, pseudochecker.PseudoTypeKindBigIntLiteral: + source := t.Data.(*pseudochecker.PseudoTypeLiteral).Node return b.ch.getTypeOfExpression(source) // big shortcut, uses cached expression types where possible default: return nil diff --git a/internal/psuedochecker/checker.go b/internal/pseudochecker/checker.go similarity index 83% rename from internal/psuedochecker/checker.go rename to internal/pseudochecker/checker.go index 46719c4f3fa..16904c8c582 100644 --- a/internal/psuedochecker/checker.go +++ b/internal/pseudochecker/checker.go @@ -1,5 +1,5 @@ -// psuedochecker is a limited "checker" that returns psuedo-"types" of expressions - mostly those which trivially have type nodes -package psuedochecker +// pseudochecker is a limited "checker" that returns pseudo-"types" of expressions - mostly those which trivially have type nodes +package pseudochecker // TODO: Late binding/symbol merging? // In strada, `expressionToTypeNode` used many `resolver` methods whose net effect was just @@ -11,8 +11,8 @@ package psuedochecker // This is an area of active ~~feature-creep~~ development in ID output, prerequisite refactoring would include // extracting the `mergeSymbol` core checker logic into a reusable component. -type PsuedoChecker struct{} +type PseudoChecker struct{} -func NewPsuedoChecker() *PsuedoChecker { - return &PsuedoChecker{} +func NewPseudoChecker() *PseudoChecker { + return &PseudoChecker{} } diff --git a/internal/psuedochecker/lookup.go b/internal/pseudochecker/lookup.go similarity index 71% rename from internal/psuedochecker/lookup.go rename to internal/pseudochecker/lookup.go index be7ab96e0b5..9d5d14fe18c 100644 --- a/internal/psuedochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -1,4 +1,4 @@ -package psuedochecker +package pseudochecker import ( "github.com/microsoft/typescript-go/internal/ast" @@ -6,7 +6,7 @@ import ( "github.com/microsoft/typescript-go/internal/debug" ) -func (ch *PsuedoChecker) GetReturnTypeOfSignature(signatureNode *ast.Node) *PsuedoType { +func (ch *PseudoChecker) GetReturnTypeOfSignature(signatureNode *ast.Node) *PseudoType { switch signatureNode.Kind { case ast.KindGetAccessor: return ch.GetTypeOfAccessor(signatureNode) @@ -21,19 +21,19 @@ func (ch *PsuedoChecker) GetReturnTypeOfSignature(signatureNode *ast.Node) *Psue } } -func (ch *PsuedoChecker) GetTypeOfAccessor(accessor *ast.Node) *PsuedoType { +func (ch *PseudoChecker) GetTypeOfAccessor(accessor *ast.Node) *PseudoType { annotated := ch.typeFromAccessor(accessor) - if annotated.Kind == PsuedoTypeKindNoResult { + if annotated.Kind == PseudoTypeKindNoResult { return ch.inferAccessorType(accessor) } return annotated } -func (ch *PsuedoChecker) GetTypeOfExpression(node *ast.Node) *PsuedoType { +func (ch *PseudoChecker) GetTypeOfExpression(node *ast.Node) *PseudoType { return ch.typeFromExpression(node) } -func (ch *PsuedoChecker) GetTypeOfDeclaration(node *ast.Node) *PsuedoType { +func (ch *PseudoChecker) GetTypeOfDeclaration(node *ast.Node) *PseudoType { switch node.Kind { case ast.KindParameter: return ch.typeFromParameter(node.AsParameterDeclaration()) @@ -42,7 +42,7 @@ func (ch *PsuedoChecker) GetTypeOfDeclaration(node *ast.Node) *PsuedoType { case ast.KindPropertySignature, ast.KindPropertyDeclaration, ast.KindJSDocPropertyTag: return ch.typeFromProperty(node) case ast.KindBindingElement: - return NewPsuedoTypeNoResult(node) + return NewPseudoTypeNoResult(node) case ast.KindExportAssignment, ast.KindJSExportAssignment: return ch.typeFromExpression(node.AsExportAssignment().Expression) case ast.KindPropertyAccessExpression, ast.KindElementAccessExpression, ast.KindBinaryExpression: @@ -55,91 +55,91 @@ func (ch *PsuedoChecker) GetTypeOfDeclaration(node *ast.Node) *PsuedoType { } } -func (ch *PsuedoChecker) typeFromPropertyAssignment(node *ast.Node) *PsuedoType { +func (ch *PseudoChecker) typeFromPropertyAssignment(node *ast.Node) *PseudoType { annotation := node.Type() if annotation != nil { - return NewPsuedoTypeDirect(annotation) + return NewPseudoTypeDirect(annotation) } if node.Kind == ast.KindPropertyAssignment { init := node.Initializer() if init != nil { expr := ch.typeFromExpression(init) - if expr != nil && expr.Kind != PsuedoTypeKindInferred { + if expr != nil && expr.Kind != PseudoTypeKindInferred { return expr } - // fallback to NoResult if PsuedoTypeKindInferred + // fallback to NoResult if PseudoTypeKindInferred } } - return NewPsuedoTypeNoResult(node) + return NewPseudoTypeNoResult(node) } // This is _not_ redundant with the reparser; see how expandoFunctionSymbolProperty.ts and similar behaves -func (ch *PsuedoChecker) typeFromExpandoProperty(node *ast.Node) *PsuedoType { +func (ch *PseudoChecker) typeFromExpandoProperty(node *ast.Node) *PseudoType { declaredType := node.Type() if declaredType != nil { - return NewPsuedoTypeDirect(declaredType) + return NewPseudoTypeDirect(declaredType) } // While `node` is an expression, as an expando, it should also always be a // declaration with a `.Symbol()` which requires declaration fallback handling - return NewPsuedoTypeNoResult(node) + return NewPseudoTypeNoResult(node) } -func (ch *PsuedoChecker) typeFromProperty(node *ast.Node) *PsuedoType { +func (ch *PseudoChecker) typeFromProperty(node *ast.Node) *PseudoType { t := node.Type() if t != nil { - return NewPsuedoTypeDirect(t) + return NewPseudoTypeDirect(t) } if ast.IsPropertyDeclaration(node) { init := node.Initializer() if init != nil && !isContextuallyTyped(node) { expr := ch.typeFromExpression(init) - if expr != nil && expr.Kind != PsuedoTypeKindInferred { + if expr != nil && expr.Kind != PseudoTypeKindInferred { return expr } - // fallback to NoResult if PsuedoTypeKindInferred + // fallback to NoResult if PseudoTypeKindInferred } } - return NewPsuedoTypeNoResult(node) + return NewPseudoTypeNoResult(node) } -func (ch *PsuedoChecker) typeFromVariable(declaration *ast.VariableDeclaration) *PsuedoType { +func (ch *PseudoChecker) typeFromVariable(declaration *ast.VariableDeclaration) *PseudoType { t := declaration.Type if t != nil { - return NewPsuedoTypeDirect(t) + return NewPseudoTypeDirect(t) } init := declaration.Initializer if init != nil && (len(declaration.Symbol.Declarations) == 1 || core.CountWhere(declaration.Symbol.Declarations, ast.IsVariableDeclaration) == 1) { if !isContextuallyTyped(declaration.AsNode()) { // TODO: also should bail on expando declarations; reuse syntactic expando check used in declaration emit expr := ch.typeFromExpression(init) - if expr != nil && expr.Kind != PsuedoTypeKindInferred { + if expr != nil && expr.Kind != PseudoTypeKindInferred { return expr } - // fallback to NoResult if PsuedoTypeKindInferred + // fallback to NoResult if PseudoTypeKindInferred } } - return NewPsuedoTypeNoResult(declaration.AsNode()) + return NewPseudoTypeNoResult(declaration.AsNode()) } -func (ch *PsuedoChecker) typeFromAccessor(accessor *ast.Node) *PsuedoType { +func (ch *PseudoChecker) typeFromAccessor(accessor *ast.Node) *PseudoType { accessorDeclarations := ast.GetAllAccessorDeclarationsForDeclaration(accessor, accessor.DeclarationData().Symbol.Declarations) accessorType := ch.getTypeAnnotationFromAllAccessorDeclarations(accessor, accessorDeclarations) if accessorType != nil && !ast.IsTypePredicateNode(accessorType) { - return NewPsuedoTypeDirect(accessorType) + return NewPseudoTypeDirect(accessorType) } if accessorDeclarations.GetAccessor != nil { return ch.createReturnFromSignature(accessorDeclarations.GetAccessor.AsNode()) } - return NewPsuedoTypeNoResult(accessor) + return NewPseudoTypeNoResult(accessor) } -func (ch *PsuedoChecker) inferAccessorType(node *ast.Node) *PsuedoType { +func (ch *PseudoChecker) inferAccessorType(node *ast.Node) *PseudoType { if node.Kind == ast.KindGetAccessor { return ch.createReturnFromSignature(node) } - return NewPsuedoTypeNoResult(node) + return NewPseudoTypeNoResult(node) } -func (ch *PsuedoChecker) getTypeAnnotationFromAllAccessorDeclarations(node *ast.Node, accessors ast.AllAccessorDeclarations) *ast.Node { +func (ch *PseudoChecker) getTypeAnnotationFromAllAccessorDeclarations(node *ast.Node, accessors ast.AllAccessorDeclarations) *ast.Node { accessorType := ch.getTypeAnnotationFromAccessor(node) if accessorType == nil && node != accessors.FirstAccessor { accessorType = ch.getTypeAnnotationFromAccessor(accessors.FirstAccessor) @@ -150,7 +150,7 @@ func (ch *PsuedoChecker) getTypeAnnotationFromAllAccessorDeclarations(node *ast. return accessorType } -func (ch *PsuedoChecker) getTypeAnnotationFromAccessor(node *ast.Node) *ast.Node { +func (ch *PseudoChecker) getTypeAnnotationFromAccessor(node *ast.Node) *ast.Node { if node == nil { return nil } @@ -173,28 +173,28 @@ func isValueSignatureDeclaration(node *ast.Node) bool { return ast.IsFunctionExpression(node) || ast.IsArrowFunction(node) || ast.IsMethodDeclaration(node) || ast.IsAccessor(node) || ast.IsFunctionDeclaration(node) || ast.IsConstructorDeclaration(node) } -// does not return `nil`, returns a `NoResult` psuedotype instead -func (ch *PsuedoChecker) createReturnFromSignature(fn *ast.Node) *PsuedoType { +// does not return `nil`, returns a `NoResult` pseudotype instead +func (ch *PseudoChecker) createReturnFromSignature(fn *ast.Node) *PseudoType { if ast.IsFunctionLike(fn) { d := fn.FunctionLikeData() // !!! TODO: support ripping return type off of .FullSignature r := d.Type if r != nil { - return NewPsuedoTypeDirect(r) + return NewPseudoTypeDirect(r) } } if isValueSignatureDeclaration(fn) { return ch.typeFromSingleReturnExpression(fn) } - return NewPsuedoTypeNoResult(fn) + return NewPseudoTypeNoResult(fn) } -func (ch *PsuedoChecker) typeFromSingleReturnExpression(fn *ast.Node) *PsuedoType { +func (ch *PseudoChecker) typeFromSingleReturnExpression(fn *ast.Node) *PseudoType { var candidateExpr *ast.Node if fn != nil && !ast.NodeIsMissing(fn.Body()) { flags := ast.GetFunctionFlags(fn) if flags&ast.FunctionFlagsAsyncGenerator != 0 { - return NewPsuedoTypeNoResult(fn) + return NewPseudoTypeNoResult(fn) } body := fn.Body() @@ -225,31 +225,31 @@ func (ch *PsuedoChecker) typeFromSingleReturnExpression(fn *ast.Node) *PsuedoTyp t = candidateExpr.AsAsExpression().Type } if t != nil && !ast.IsConstTypeReference(t) { - return NewPsuedoTypeDirect(t) + return NewPseudoTypeDirect(t) } } else { return ch.typeFromExpression(candidateExpr) } } - return NewPsuedoTypeNoResult(fn) + return NewPseudoTypeNoResult(fn) } -// This is basically `checkExpression` for psuedotypes -func (ch *PsuedoChecker) typeFromExpression(node *ast.Node) *PsuedoType { +// This is basically `checkExpression` for pseudotypes +func (ch *PseudoChecker) typeFromExpression(node *ast.Node) *PseudoType { switch node.Kind { case ast.KindOmittedExpression: - return PsuedoTypeUndefined + return PseudoTypeUndefined case ast.KindParenthesizedExpression: // assertions transformed on reparse, just unwrap return ch.typeFromExpression(node.AsParenthesizedExpression().Expression) case ast.KindIdentifier: // !!! TODO: in strada, this uses symbol information to ensure `node` refers to the global `undefined` symbol instead - // we should probably import `resolveName` and use it here to check for the same; but we have to setup some barebones psuedoglobals for that to work! + // we should probably import `resolveName` and use it here to check for the same; but we have to setup some barebones pseudoglobals for that to work! if node.AsIdentifier().Text == "undefined" { - return PsuedoTypeUndefined + return PseudoTypeUndefined } case ast.KindNullKeyword: - return PsuedoTypeNull + return PseudoTypeNull case ast.KindArrowFunction, ast.KindFunctionExpression: return ch.typeFromFunctionLikeExpression(node) case ast.KindTypeAssertionExpression: @@ -265,48 +265,48 @@ func (ch *PsuedoChecker) typeFromExpression(node *ast.Node) *PsuedoType { case ast.KindObjectLiteralExpression: return ch.typeFromObjectLiteral(node.AsObjectLiteralExpression()) case ast.KindClassExpression: - return NewPsuedoTypeInferred(node) // No possible annotation/directly mappable syntax + return NewPseudoTypeInferred(node) // No possible annotation/directly mappable syntax case ast.KindTemplateExpression: // templateLitWithHoles as const, not supported - return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeInferred(node), PsuedoTypeString) + return NewPseudoTypeMaybeConstLocation(node, NewPseudoTypeInferred(node), PseudoTypeString) case ast.KindNumericLiteral: - return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeNumericLiteral(node), PsuedoTypeNumber) + return NewPseudoTypeMaybeConstLocation(node, NewPseudoTypeNumericLiteral(node), PseudoTypeNumber) case ast.KindNoSubstitutionTemplateLiteral: - return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeStringLiteral(node), PsuedoTypeString) + return NewPseudoTypeMaybeConstLocation(node, NewPseudoTypeStringLiteral(node), PseudoTypeString) case ast.KindStringLiteral: - return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeStringLiteral(node), PsuedoTypeString) + return NewPseudoTypeMaybeConstLocation(node, NewPseudoTypeStringLiteral(node), PseudoTypeString) case ast.KindBigIntLiteral: - return NewPsuedoTypeMaybeConstLocation(node, NewPsuedoTypeBigIntLiteral(node), PsuedoTypeBigInt) + return NewPseudoTypeMaybeConstLocation(node, NewPseudoTypeBigIntLiteral(node), PseudoTypeBigInt) case ast.KindTrueKeyword: - return NewPsuedoTypeMaybeConstLocation(node, PsuedoTypeTrue, PsuedoTypeBoolean) + return NewPseudoTypeMaybeConstLocation(node, PseudoTypeTrue, PseudoTypeBoolean) case ast.KindFalseKeyword: - return NewPsuedoTypeMaybeConstLocation(node, PsuedoTypeFalse, PsuedoTypeBoolean) + return NewPseudoTypeMaybeConstLocation(node, PseudoTypeFalse, PseudoTypeBoolean) } - return NewPsuedoTypeInferred(node) + return NewPseudoTypeInferred(node) } -func (ch *PsuedoChecker) typeFromObjectLiteral(node *ast.ObjectLiteralExpression) *PsuedoType { +func (ch *PseudoChecker) typeFromObjectLiteral(node *ast.ObjectLiteralExpression) *PseudoType { if !ch.canGetTypeFromObjectLiteral(node) { - return NewPsuedoTypeInferred(node.AsNode()) + return NewPseudoTypeInferred(node.AsNode()) } // we are in a const context producing an object literal type, there are no shorthand or spread assignments if node.Properties == nil || len(node.Properties.Nodes) == 0 { - return NewPsuedoTypeObjectLiteral(nil) + return NewPseudoTypeObjectLiteral(nil) } - results := make([]*PsuedoObjectElement, 0, len(node.Properties.Nodes)) + results := make([]*PseudoObjectElement, 0, len(node.Properties.Nodes)) for _, e := range node.Properties.Nodes { switch e.Kind { case ast.KindMethodDeclaration: optional := e.AsMethodDeclaration().PostfixToken != nil && e.AsMethodDeclaration().PostfixToken.Kind == ast.KindQuestionToken if e.FunctionLikeData().FullSignature != nil { - results = append(results, NewPsuedoPropertyAssignment( + results = append(results, NewPseudoPropertyAssignment( false, e.Name(), optional, - NewPsuedoTypeDirect(e.FunctionLikeData().FullSignature), + NewPseudoTypeDirect(e.FunctionLikeData().FullSignature), )) } else { - results = append(results, NewPsuedoObjectMethod( + results = append(results, NewPseudoObjectMethod( e.Name(), optional, ch.cloneParameters(e.ParameterList()), @@ -314,7 +314,7 @@ func (ch *PsuedoChecker) typeFromObjectLiteral(node *ast.ObjectLiteralExpression )) } case ast.KindPropertyAssignment: - results = append(results, NewPsuedoPropertyAssignment( + results = append(results, NewPseudoPropertyAssignment( false, e.Name(), e.AsPropertyAssignment().PostfixToken != nil && e.AsPropertyAssignment().PostfixToken.Kind == ast.KindQuestionToken, @@ -327,26 +327,26 @@ func (ch *PsuedoChecker) typeFromObjectLiteral(node *ast.ObjectLiteralExpression } } } - return NewPsuedoTypeObjectLiteral(results) + return NewPseudoTypeObjectLiteral(results) } -// rougly analogous to typeFromObjectLiteralAccessor in strada -func (ch *PsuedoChecker) getAccessorMember(accessor *ast.Node, name *ast.Node) *PsuedoObjectElement { +// roughly analogous to typeFromObjectLiteralAccessor in strada +func (ch *PseudoChecker) getAccessorMember(accessor *ast.Node, name *ast.Node) *PseudoObjectElement { allAccessors := ast.GetAllAccessorDeclarationsForDeclaration(accessor, accessor.Symbol().Declarations) // TODO: node preservation for late-bound accessor pairs? - // TODO: handle psuedo-annotations from get accessor return positions? + // TODO: handle pseudo-annotations from get accessor return positions? if allAccessors.GetAccessor != nil && allAccessors.GetAccessor.Type != nil && allAccessors.SetAccessor != nil && len(allAccessors.SetAccessor.Parameters.Nodes) > 0 && allAccessors.SetAccessor.Parameters.Nodes[0].AsParameterDeclaration().Type != nil { // We have possible types for both accessors, we can't know if they are the same type so we keep both accessors if ast.IsGetAccessorDeclaration(accessor) { - return NewPsuedoGetAccessor( + return NewPseudoGetAccessor( name, false, ch.typeFromAccessor(accessor), ) } else { - return NewPsuedoSetAccessor( + return NewPseudoSetAccessor( name, false, ch.cloneParameters(accessor.AsSetAccessorDeclaration().Parameters)[0], @@ -359,7 +359,7 @@ func (ch *PsuedoChecker) getAccessorMember(accessor *ast.Node, name *ast.Node) * accessorType := ch.typeFromAccessor(accessor) readonly := ast.IsGetAccessorDeclaration(accessor) && allAccessors.SecondAccessor == nil - return NewPsuedoPropertyAssignment( + return NewPseudoPropertyAssignment( readonly, name, false, @@ -369,14 +369,14 @@ func (ch *PsuedoChecker) getAccessorMember(accessor *ast.Node, name *ast.Node) * return nil } -func (ch *PsuedoChecker) canGetTypeFromObjectLiteral(node *ast.ObjectLiteralExpression) bool { +func (ch *PseudoChecker) canGetTypeFromObjectLiteral(node *ast.ObjectLiteralExpression) bool { if node.Properties == nil || len(node.Properties.Nodes) == 0 { return true // empty object } // !!! TODO: strada reports errors on multiple non-inferrable props // via calling reportInferenceFallback multiple times here before returning. // Does that logic need to be included in this checker? Or can it - // be kept to the `PsuedoType` -> `Node` mapping logic, so this + // be kept to the `PseudoType` -> `Node` mapping logic, so this // checker can avoid needing any error reporting logic? for _, e := range node.Properties.Nodes { if e.Flags&ast.NodeFlagsThisNodeHasError != 0 { @@ -401,19 +401,19 @@ func (ch *PsuedoChecker) canGetTypeFromObjectLiteral(node *ast.ObjectLiteralExpr return true } -func (ch *PsuedoChecker) typeFromArrayLiteral(node *ast.ArrayLiteralExpression) *PsuedoType { +func (ch *PseudoChecker) typeFromArrayLiteral(node *ast.ArrayLiteralExpression) *PseudoType { if !ch.canGetTypeFromArrayLiteral(node) { - return NewPsuedoTypeInferred(node.AsNode()) + return NewPseudoTypeInferred(node.AsNode()) } // we are in a const context producing a tuple type, there are no spread elements - results := make([]*PsuedoType, 0, len(node.Elements.Nodes)) + results := make([]*PseudoType, 0, len(node.Elements.Nodes)) for _, e := range node.Elements.Nodes { results = append(results, ch.typeFromExpression(e)) } - return NewPsuedoTypeTuple(results) + return NewPseudoTypeTuple(results) } -func (ch *PsuedoChecker) canGetTypeFromArrayLiteral(node *ast.ArrayLiteralExpression) bool { +func (ch *PseudoChecker) canGetTypeFromArrayLiteral(node *ast.ArrayLiteralExpression) bool { if !ch.isInConstContext(node.AsNode()) { return false } @@ -427,7 +427,7 @@ func (ch *PsuedoChecker) canGetTypeFromArrayLiteral(node *ast.ArrayLiteralExpres // Traverses up the parent chain to determine if the node is within a const context without needing any // persistent traversal scope tracking (which could be unreliable in the presence of `typeof` queries anyway!) -func (ch *PsuedoChecker) isInConstContext(node *ast.Node) bool { +func (ch *PseudoChecker) isInConstContext(node *ast.Node) bool { // An expression is in a const context if an ancestor is a const type maybeAssertion expression maybeAssertion := ast.FindAncestor( node, @@ -439,44 +439,44 @@ func (ch *PsuedoChecker) isInConstContext(node *ast.Node) bool { return ast.IsConstAssertion(maybeAssertion) } -func (ch *PsuedoChecker) typeFromPrimitiveLiteralPrefix(node *ast.PrefixUnaryExpression) *PsuedoType { +func (ch *PseudoChecker) typeFromPrimitiveLiteralPrefix(node *ast.PrefixUnaryExpression) *PseudoType { inner := node.Operand if inner.Kind == ast.KindBigIntLiteral { - return NewPsuedoTypeMaybeConstLocation(node.AsNode(), NewPsuedoTypeBigIntLiteral(node.AsNode()), PsuedoTypeBigInt) + return NewPseudoTypeMaybeConstLocation(node.AsNode(), NewPseudoTypeBigIntLiteral(node.AsNode()), PseudoTypeBigInt) } if inner.Kind == ast.KindNumericLiteral { - return NewPsuedoTypeMaybeConstLocation(node.AsNode(), NewPsuedoTypeNumericLiteral(node.AsNode()), PsuedoTypeNumber) + return NewPseudoTypeMaybeConstLocation(node.AsNode(), NewPseudoTypeNumericLiteral(node.AsNode()), PseudoTypeNumber) } debug.FailBadSyntaxKind(inner) return nil } -func (ch *PsuedoChecker) typeFromTypeAssertion(expression *ast.Node, typeNode *ast.Node) *PsuedoType { +func (ch *PseudoChecker) typeFromTypeAssertion(expression *ast.Node, typeNode *ast.Node) *PseudoType { if ast.IsConstTypeReference(typeNode) { return ch.typeFromExpression(expression) } - return NewPsuedoTypeDirect(typeNode) + return NewPseudoTypeDirect(typeNode) } -func (ch *PsuedoChecker) typeFromFunctionLikeExpression(node *ast.Node) *PsuedoType { +func (ch *PseudoChecker) typeFromFunctionLikeExpression(node *ast.Node) *PseudoType { if node.FunctionLikeData().FullSignature != nil { - return NewPsuedoTypeDirect(node.FunctionLikeData().FullSignature) + return NewPseudoTypeDirect(node.FunctionLikeData().FullSignature) } returnType := ch.createReturnFromSignature(node) - if returnType.Kind == PsuedoTypeKindNoResult { + if returnType.Kind == PseudoTypeKindNoResult { // no result for the return type can just be an inferred result for the whole expression - return NewPsuedoTypeInferred(node.AsNode()) + return NewPseudoTypeInferred(node.AsNode()) } typeParameters := ch.cloneTypeParameters(node.FunctionLikeData().TypeParameters) parameters := ch.cloneParameters(node.FunctionLikeData().Parameters) - return NewPsuedoTypeSingleCallSignature( + return NewPseudoTypeSingleCallSignature( parameters, typeParameters, returnType, ) } -func (ch *PsuedoChecker) cloneTypeParameters(nodes *ast.NodeList) []*ast.TypeParameterDeclaration { +func (ch *PseudoChecker) cloneTypeParameters(nodes *ast.NodeList) []*ast.TypeParameterDeclaration { if nodes == nil { return nil } @@ -490,14 +490,14 @@ func (ch *PsuedoChecker) cloneTypeParameters(nodes *ast.NodeList) []*ast.TypePar return result } -func (ch *PsuedoChecker) typeFromParameter(node *ast.ParameterDeclaration) *PsuedoType { +func (ch *PseudoChecker) typeFromParameter(node *ast.ParameterDeclaration) *PseudoType { parent := node.Parent if parent.Kind == ast.KindSetAccessor { return ch.GetTypeOfAccessor(parent) } declaredType := node.Type if declaredType != nil { - return NewPsuedoTypeDirect(declaredType) + return NewPseudoTypeDirect(declaredType) } if node.Initializer != nil && ast.IsIdentifier(node.Name()) && !isContextuallyTyped(node.AsNode()) { return ch.typeFromExpression(node.Initializer) @@ -506,19 +506,19 @@ func (ch *PsuedoChecker) typeFromParameter(node *ast.ParameterDeclaration) *Psue // This means ID won't let you write, say, `({elem}) => false` without an annotation, even though it's trivially of type // `(p0: {elem: any}) => boolean` and error-free under `noImplicitAny: false`! // That limitation is retained here. - return NewPsuedoTypeNoResult(node.AsNode()) + return NewPseudoTypeNoResult(node.AsNode()) } -func (ch *PsuedoChecker) cloneParameters(nodes *ast.NodeList) []*PsuedoParameter { +func (ch *PseudoChecker) cloneParameters(nodes *ast.NodeList) []*PseudoParameter { if nodes == nil { return nil } if len(nodes.Nodes) == 0 { return nil } - result := make([]*PsuedoParameter, 0, len(nodes.Nodes)) + result := make([]*PseudoParameter, 0, len(nodes.Nodes)) for _, e := range nodes.Nodes { - result = append(result, NewPsuedoParameter( + result = append(result, NewPseudoParameter( e.AsParameterDeclaration().DotDotDotToken != nil, e.Name(), e.AsParameterDeclaration().QuestionToken != nil, diff --git a/internal/pseudochecker/type.go b/internal/pseudochecker/type.go new file mode 100644 index 00000000000..58c49eb38b0 --- /dev/null +++ b/internal/pseudochecker/type.go @@ -0,0 +1,299 @@ +package pseudochecker + +import ( + "github.com/microsoft/typescript-go/internal/ast" +) + +// `PseudoType`s are skeletons of types - partially interpreted expressions and type nodes +// composed to represent how you *should* construct a type out of them. They can be trivially +// mapped into actual types by a real `Checker`, or into a tree of `Node`s directly, without +// needing to make any intermediate types, by a `NodeBuilder`. Unlike checker `Type`s, these are +// never normalized, and multiple pseudo-types may refer to the same underlying `Type`. + +// In strada, these were implicit in the AST nodes constructed in `expressionToTypeNode.ts`, which +// repurposed AST nodes for this purpose, but in so doing, often confused weather or not it had validated +// nested nodes for use at a given use-site. By keeping the mapping deferred like this, we can know we haven't +// done any use-site checks until we're ready to map the `PseudoType` into a `Node`, and can cache +// `PseudoType`s across multiple target positions. + +type PseudoTypeKind int16 + +const ( + PseudoTypeKindDirect PseudoTypeKind = iota + PseudoTypeKindInferred + PseudoTypeKindNoResult + PseudoTypeKindMaybeConstLocation + PseudoTypeKindUnion + PseudoTypeKindUndefined + PseudoTypeKindNull + PseudoTypeKindAny + PseudoTypeKindString + PseudoTypeKindNumber + PseudoTypeKindBigInt + PseudoTypeKindBoolean + PseudoTypeKindFalse + PseudoTypeKindTrue + PseudoTypeKindSingleCallSignature + PseudoTypeKindTuple + PseudoTypeKindObjectLiteral + PseudoTypeKindStringLiteral + PseudoTypeKindNumericLiteral + PseudoTypeKindBigIntLiteral +) + +type PseudoType struct { + Kind PseudoTypeKind + Data PseudoTypeData +} + +func NewPseudoType(kind PseudoTypeKind, data PseudoTypeData) *PseudoType { + n := data.AsPseudoType() + n.Kind = kind + n.Data = data + return n +} + +type PseudoTypeData interface { + AsPseudoType() *PseudoType +} + +type PseudoTypeDefault struct { + PseudoType +} + +func (b *PseudoTypeDefault) AsPseudoType() *PseudoType { return &b.PseudoType } + +type PseudoTypeBase struct { + PseudoTypeDefault +} + +var ( + PseudoTypeUndefined = NewPseudoType(PseudoTypeKindUndefined, &PseudoTypeBase{}) + PseudoTypeNull = NewPseudoType(PseudoTypeKindNull, &PseudoTypeBase{}) + PseudoTypeAny = NewPseudoType(PseudoTypeKindAny, &PseudoTypeBase{}) + PseudoTypeString = NewPseudoType(PseudoTypeKindString, &PseudoTypeBase{}) + PseudoTypeNumber = NewPseudoType(PseudoTypeKindNumber, &PseudoTypeBase{}) + PseudoTypeBigInt = NewPseudoType(PseudoTypeKindBigInt, &PseudoTypeBase{}) + PseudoTypeBoolean = NewPseudoType(PseudoTypeKindBoolean, &PseudoTypeBase{}) + PseudoTypeFalse = NewPseudoType(PseudoTypeKindFalse, &PseudoTypeBase{}) + PseudoTypeTrue = NewPseudoType(PseudoTypeKindTrue, &PseudoTypeBase{}) +) + +// PseudoTypeDirect directly encodes the type referred to by a given TypeNode +type PseudoTypeDirect struct { + PseudoTypeBase + TypeNode *ast.Node +} + +func NewPseudoTypeDirect(typeNode *ast.Node) *PseudoType { + return NewPseudoType(PseudoTypeKindDirect, &PseudoTypeDirect{TypeNode: typeNode}) +} + +// PseudoTypeInferred directly encodes the type referred to by a given Expression +// These represent cases where the expression was too complex for the pseudochecker. +// Most of the time, these locations will produce an error under ID. +type PseudoTypeInferred struct { + PseudoTypeBase + Expression *ast.Node +} + +func NewPseudoTypeInferred(expr *ast.Node) *PseudoType { + return NewPseudoType(PseudoTypeKindInferred, &PseudoTypeInferred{Expression: expr}) +} + +// PseudoTypeNoResult is anlogous to PseudoTypeInferred in that it references a case +// where the type was too complex for the pseudochecker. Rather than an expression, however, +// it is referring to the return type of a signature or declaration. +type PseudoTypeNoResult struct { + PseudoTypeBase + Declaration *ast.Node +} + +func NewPseudoTypeNoResult(decl *ast.Node) *PseudoType { + return NewPseudoType(PseudoTypeKindNoResult, &PseudoTypeNoResult{Declaration: decl}) +} + +// PseudoTypeMaybeConstLocation encodes the const/regular types of a location so the builder +// can later select the appropriate pseudotype based on the location's context. This is used +// to ensure accuracy in nested expressions without exposing type-based functionality to the pseudochecker. +// A nodebuilder that doesn't do contextual typing would need to, as policy, reject these types if they +// are in a contextually typed position! (Otherwise they could pick one, but either type could be wrong, depending on context!) +// At the top-level, which is generally what ID is concerned with, nothing is contextually typed, so these cases don't generally +// cause problems. Once you get into reused nodes in nested expressions, however, this becomes important. +// In strada, checker `isConstContext` functionality exposed to the pseudochecker + type comparison sanity checking +// on nested results masks the need for this abstraction, but with it present it clearly highlights a shortcoming +// of the ID infernce model and how "standalone" it can(n't) truly be without substantial restrictions on expression inference. +type PseudoTypeMaybeConstLocation struct { + PseudoTypeBase + Node *ast.Node + ConstType *PseudoType + RegularType *PseudoType +} + +func NewPseudoTypeMaybeConstLocation(loc *ast.Node, ct *PseudoType, reg *PseudoType) *PseudoType { + return NewPseudoType(PseudoTypeKindMaybeConstLocation, &PseudoTypeMaybeConstLocation{Node: loc, ConstType: ct, RegularType: reg}) +} + +// PseudoTypeUnion is a collection of psudotypes joined into a union +type PseudoTypeUnion struct { + PseudoTypeBase + Types []*PseudoType +} + +func NewPseudoTypeUnion(types []*PseudoType) *PseudoType { + return NewPseudoType(PseudoTypeKindUnion, &PseudoTypeUnion{Types: types}) +} + +type PseudoParameter struct { + Rest bool + Name *ast.Node + Optional bool + Type *PseudoType +} + +func NewPseudoParameter(isRest bool, name *ast.Node, isOptional bool, t *PseudoType) *PseudoParameter { + return &PseudoParameter{Rest: isRest, Name: name, Optional: isOptional, Type: t} +} + +// PseudoTypeSingleCallSignature represents an object type with a single call signature, like an arrow or function expression +type PseudoTypeSingleCallSignature struct { + PseudoTypeBase + Parameters []*PseudoParameter + TypeParameters []*ast.TypeParameterDeclaration + ReturnType *PseudoType +} + +func NewPseudoTypeSingleCallSignature(parameters []*PseudoParameter, typeParameters []*ast.TypeParameterDeclaration, returnType *PseudoType) *PseudoType { + return NewPseudoType(PseudoTypeKindSingleCallSignature, &PseudoTypeSingleCallSignature{ + Parameters: parameters, + TypeParameters: typeParameters, + ReturnType: returnType, + }) +} + +// PseudoTypeTuple represents a tuple originaing from an `as const` array literal +type PseudoTypeTuple struct { + PseudoTypeBase + Elements []*PseudoType +} + +func NewPseudoTypeTuple(elements []*PseudoType) *PseudoType { + return NewPseudoType(PseudoTypeKindTuple, &PseudoTypeTuple{ + Elements: elements, + }) +} + +type PseudoObjectElement struct { + Name *ast.Node + Optional bool + Kind PseudoObjectElementKind + Data PseudoObjectElementData +} + +func (e *PseudoObjectElement) AsPseudoObjectElement() *PseudoObjectElement { return e } + +type PseudoObjectElementKind int8 + +const ( + PseudoObjectElementKindMethod PseudoObjectElementKind = iota + PseudoObjectElementKindPropertyAssignment + PseudoObjectElementKindSetAccessor + PseudoObjectElementKindGetAccessor +) + +type PseudoObjectElementData interface { + AsPseudoObjectElement() *PseudoObjectElement +} + +func NewPseudoObjectElement(kind PseudoObjectElementKind, name *ast.Node, optional bool, data PseudoObjectElementData) *PseudoObjectElement { + e := data.AsPseudoObjectElement() + e.Kind = kind + e.Name = name + e.Optional = optional + e.Data = data + return e +} + +type PseudoObjectMethod struct { + PseudoObjectElement + Parameters []*PseudoParameter + ReturnType *PseudoType +} + +func NewPseudoObjectMethod(name *ast.Node, optional bool, parameters []*PseudoParameter, returnType *PseudoType) *PseudoObjectElement { + return NewPseudoObjectElement(PseudoObjectElementKindMethod, name, optional, &PseudoObjectMethod{ + Parameters: parameters, + ReturnType: returnType, + }) +} + +type PseudoPropertyAssignment struct { + PseudoObjectElement + Readonly bool + Type *PseudoType +} + +func NewPseudoPropertyAssignment(readonly bool, name *ast.Node, optional bool, t *PseudoType) *PseudoObjectElement { + return NewPseudoObjectElement(PseudoObjectElementKindPropertyAssignment, name, optional, &PseudoPropertyAssignment{ + Readonly: readonly, + Type: t, + }) +} + +type PseudoSetAccessor struct { + PseudoObjectElement + Parameter *PseudoParameter +} + +func NewPseudoSetAccessor(name *ast.Node, optional bool, p *PseudoParameter) *PseudoObjectElement { + return NewPseudoObjectElement(PseudoObjectElementKindSetAccessor, name, optional, &PseudoSetAccessor{ + Parameter: p, + }) +} + +type PseudoGetAccessor struct { + PseudoObjectElement + Type *PseudoType +} + +func NewPseudoGetAccessor(name *ast.Node, optional bool, t *PseudoType) *PseudoObjectElement { + return NewPseudoObjectElement(PseudoObjectElementKindGetAccessor, name, optional, &PseudoGetAccessor{ + Type: t, + }) +} + +// PseudoTypeObjectLiteral represents an object type originaing from an object literal +type PseudoTypeObjectLiteral struct { + PseudoTypeBase + Elements []*PseudoObjectElement +} + +func NewPseudoTypeObjectLiteral(elements []*PseudoObjectElement) *PseudoType { + return NewPseudoType(PseudoTypeKindObjectLiteral, &PseudoTypeObjectLiteral{ + Elements: elements, + }) +} + +// PseudoTypeLiteral represents a literal type +type PseudoTypeLiteral struct { + PseudoTypeBase + Node *ast.Node +} + +func NewPseudoTypeStringLiteral(node *ast.Node) *PseudoType { + return NewPseudoType(PseudoTypeKindStringLiteral, &PseudoTypeLiteral{ + Node: node, + }) +} + +func NewPseudoTypeNumericLiteral(node *ast.Node) *PseudoType { + return NewPseudoType(PseudoTypeKindNumericLiteral, &PseudoTypeLiteral{ + Node: node, + }) +} + +func NewPseudoTypeBigIntLiteral(node *ast.Node) *PseudoType { + return NewPseudoType(PseudoTypeKindBigIntLiteral, &PseudoTypeLiteral{ + Node: node, + }) +} diff --git a/internal/psuedochecker/type.go b/internal/psuedochecker/type.go deleted file mode 100644 index a46ea3c3177..00000000000 --- a/internal/psuedochecker/type.go +++ /dev/null @@ -1,299 +0,0 @@ -package psuedochecker - -import ( - "github.com/microsoft/typescript-go/internal/ast" -) - -// `PsuedoType`s are skeletons of types - partially interpreted expressions and type nodes -// composed to represent how you *should* construct a type out of them. They can be trivially -// mapped into actual types by a real `Checker`, or into a tree of `Node`s directly, without -// needing to make any intermediate types, by a `NodeBuilder`. Unlike checker `Type`s, these are -// never normalized, and multiple psuedo-types may refer to the same underlying `Type`. - -// In strada, these were implicit in the AST nodes constructed in `expressionToTypeNode.ts`, which -// repurposed AST nodes for this purpose, but in so doing, often confused weather or not it had validated -// nested nodes for use at a given use-site. By keeping the mapping deferred like this, we can know we haven't -// done any use-site checks until we're ready to map the `PsuedoType` into a `Node`, and can cache -// `PsuedoType`s across multiple target positions. - -type PsuedoTypeKind int16 - -const ( - PsuedoTypeKindDirect PsuedoTypeKind = iota - PsuedoTypeKindInferred - PsuedoTypeKindNoResult - PsuedoTypeKindMaybeConstLocation - PsuedoTypeKindUnion - PsuedoTypeKindUndefined - PsuedoTypeKindNull - PsuedoTypeKindAny - PsuedoTypeKindString - PsuedoTypeKindNumber - PsuedoTypeKindBigInt - PsuedoTypeKindBoolean - PsuedoTypeKindFalse - PsuedoTypeKindTrue - PsuedoTypeKindSingleCallSignature - PsuedoTypeKindTuple - PsuedoTypeKindObjectLiteral - PsuedoTypeKindStringLiteral - PsuedoTypeKindNumericLiteral - PsuedoTypeKindBigIntLiteral -) - -type PsuedoType struct { - Kind PsuedoTypeKind - Data psuedoTypeData -} - -func NewPsuedoType(kind PsuedoTypeKind, data psuedoTypeData) *PsuedoType { - n := data.AsPsuedoType() - n.Kind = kind - n.Data = data - return n -} - -type psuedoTypeData interface { - AsPsuedoType() *PsuedoType -} - -type PsuedoTypeDefault struct { - PsuedoType -} - -func (b *PsuedoTypeDefault) AsPsuedoType() *PsuedoType { return &b.PsuedoType } - -type PsuedoTypeBase struct { - PsuedoTypeDefault -} - -var ( - PsuedoTypeUndefined = NewPsuedoType(PsuedoTypeKindUndefined, &PsuedoTypeBase{}) - PsuedoTypeNull = NewPsuedoType(PsuedoTypeKindNull, &PsuedoTypeBase{}) - PsuedoTypeAny = NewPsuedoType(PsuedoTypeKindAny, &PsuedoTypeBase{}) - PsuedoTypeString = NewPsuedoType(PsuedoTypeKindString, &PsuedoTypeBase{}) - PsuedoTypeNumber = NewPsuedoType(PsuedoTypeKindNumber, &PsuedoTypeBase{}) - PsuedoTypeBigInt = NewPsuedoType(PsuedoTypeKindBigInt, &PsuedoTypeBase{}) - PsuedoTypeBoolean = NewPsuedoType(PsuedoTypeKindBoolean, &PsuedoTypeBase{}) - PsuedoTypeFalse = NewPsuedoType(PsuedoTypeKindFalse, &PsuedoTypeBase{}) - PsuedoTypeTrue = NewPsuedoType(PsuedoTypeKindTrue, &PsuedoTypeBase{}) -) - -// PsuedoTypeDirect directly encodes the type referred to by a given TypeNode -type PsuedoTypeDirect struct { - PsuedoTypeBase - TypeNode *ast.Node -} - -func NewPsuedoTypeDirect(typeNode *ast.Node) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindDirect, &PsuedoTypeDirect{TypeNode: typeNode}) -} - -// PsuedoTypeInferred directly encodes the type referred to by a given Expression -// These represent cases where the expression was too complex for the psuedochecker. -// Most of the time, these locations will produce an error under ID. -type PsuedoTypeInferred struct { - PsuedoTypeBase - Expression *ast.Node -} - -func NewPsuedoTypeInferred(expr *ast.Node) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindInferred, &PsuedoTypeInferred{Expression: expr}) -} - -// PsuedoTypeNoResult is anlogous to PsuedoTypeInferred in that it references a case -// where the type was too complex for the psuedochecker. Rather than an expression, however, -// it is referring to the return type of a signature or declaration. -type PsuedoTypeNoResult struct { - PsuedoTypeBase - Declaration *ast.Node -} - -func NewPsuedoTypeNoResult(decl *ast.Node) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindNoResult, &PsuedoTypeNoResult{Declaration: decl}) -} - -// PsuedoTypeMaybeConstLocation encodes the const/regular types of a location so the builder -// can later select the appropriate psuedotype based on the location's context. This is used -// to ensure accuracy in nested expressions without exposing type-based functionality to the psuedochecker. -// A nodebuilder that doesn't do contextual typing would need to, as policy, reject these types if they -// are in a contextually typed position! (Otherwise they could pick one, but either type could be wrong, depending on context!) -// At the top-level, which is generally what ID is concerned with, nothing is contextually typed, so these cases don't generally -// cause problems. Once you get into reused nodes in nested expressions, however, this becomes important. -// In strada, checker `isConstContext` functionality exposed to the psuedochecker + type comparison sanity checking -// on nested results masks the need for this abstraction, but with it present it clearly highlights a shortcoming -// of the ID infernce model and how "standalone" it can(n't) truly be without substantial restrictions on expression inference. -type PsuedoTypeMaybeConstLocation struct { - PsuedoTypeBase - Node *ast.Node - ConstType *PsuedoType - RegularType *PsuedoType -} - -func NewPsuedoTypeMaybeConstLocation(loc *ast.Node, ct *PsuedoType, reg *PsuedoType) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindMaybeConstLocation, &PsuedoTypeMaybeConstLocation{Node: loc, ConstType: ct, RegularType: reg}) -} - -// PsuedoTypeUnion is a collection of psudotypes joined into a union -type PsuedoTypeUnion struct { - PsuedoTypeBase - Types []*PsuedoType -} - -func NewPsuedoTypeUnion(types []*PsuedoType) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindUnion, &PsuedoTypeUnion{Types: types}) -} - -type PsuedoParameter struct { - Rest bool - Name *ast.Node - Optional bool - Type *PsuedoType -} - -func NewPsuedoParameter(isRest bool, name *ast.Node, isOptional bool, t *PsuedoType) *PsuedoParameter { - return &PsuedoParameter{Rest: isRest, Name: name, Optional: isOptional, Type: t} -} - -// PsuedoTypeSingleCallSignature represents an object type with a single call signature, like an arrow or function expression -type PsuedoTypeSingleCallSignature struct { - PsuedoTypeBase - Parameters []*PsuedoParameter - TypeParameters []*ast.TypeParameterDeclaration - ReturnType *PsuedoType -} - -func NewPsuedoTypeSingleCallSignature(parameters []*PsuedoParameter, typeParameters []*ast.TypeParameterDeclaration, returnType *PsuedoType) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindSingleCallSignature, &PsuedoTypeSingleCallSignature{ - Parameters: parameters, - TypeParameters: typeParameters, - ReturnType: returnType, - }) -} - -// PsuedoTypeTuple represents a tuple originaing from an `as const` array literal -type PsuedoTypeTuple struct { - PsuedoTypeBase - Elements []*PsuedoType -} - -func NewPsuedoTypeTuple(elements []*PsuedoType) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindTuple, &PsuedoTypeTuple{ - Elements: elements, - }) -} - -type PsuedoObjectElement struct { - Name *ast.Node - Optional bool - Kind PsuedoObjectElementKind - Data psuedoObjectElementData -} - -func (e *PsuedoObjectElement) AsPsuedoObjectElement() *PsuedoObjectElement { return e } - -type PsuedoObjectElementKind int8 - -const ( - PsuedoObjectElementKindMethod PsuedoObjectElementKind = iota - PsuedoObjectElementKindPropertyAssignment - PsuedoObjectElementKindSetAccessor - PsuedoObjectElementKindGetAccessor -) - -type psuedoObjectElementData interface { - AsPsuedoObjectElement() *PsuedoObjectElement -} - -func NewPsuedoObjectElement(kind PsuedoObjectElementKind, name *ast.Node, optional bool, data psuedoObjectElementData) *PsuedoObjectElement { - e := data.AsPsuedoObjectElement() - e.Kind = kind - e.Name = name - e.Optional = optional - e.Data = data - return e -} - -type PsuedoObjectMethod struct { - PsuedoObjectElement - Parameters []*PsuedoParameter - ReturnType *PsuedoType -} - -func NewPsuedoObjectMethod(name *ast.Node, optional bool, parameters []*PsuedoParameter, returnType *PsuedoType) *PsuedoObjectElement { - return NewPsuedoObjectElement(PsuedoObjectElementKindMethod, name, optional, &PsuedoObjectMethod{ - Parameters: parameters, - ReturnType: returnType, - }) -} - -type PsuedoPropertyAssignment struct { - PsuedoObjectElement - Readonly bool - Type *PsuedoType -} - -func NewPsuedoPropertyAssignment(readonly bool, name *ast.Node, optional bool, t *PsuedoType) *PsuedoObjectElement { - return NewPsuedoObjectElement(PsuedoObjectElementKindPropertyAssignment, name, optional, &PsuedoPropertyAssignment{ - Readonly: readonly, - Type: t, - }) -} - -type PsuedoSetAccessor struct { - PsuedoObjectElement - Parameter *PsuedoParameter -} - -func NewPsuedoSetAccessor(name *ast.Node, optional bool, p *PsuedoParameter) *PsuedoObjectElement { - return NewPsuedoObjectElement(PsuedoObjectElementKindSetAccessor, name, optional, &PsuedoSetAccessor{ - Parameter: p, - }) -} - -type PsuedoGetAccessor struct { - PsuedoObjectElement - Type *PsuedoType -} - -func NewPsuedoGetAccessor(name *ast.Node, optional bool, t *PsuedoType) *PsuedoObjectElement { - return NewPsuedoObjectElement(PsuedoObjectElementKindGetAccessor, name, optional, &PsuedoGetAccessor{ - Type: t, - }) -} - -// PsuedoTypeObjectLiteral represents an object type originaing from an object literal -type PsuedoTypeObjectLiteral struct { - PsuedoTypeBase - Elements []*PsuedoObjectElement -} - -func NewPsuedoTypeObjectLiteral(elements []*PsuedoObjectElement) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindObjectLiteral, &PsuedoTypeObjectLiteral{ - Elements: elements, - }) -} - -// PsuedoTypeLiteral represents a literal type -type PsuedoTypeLiteral struct { - PsuedoTypeBase - Node *ast.Node -} - -func NewPsuedoTypeStringLiteral(node *ast.Node) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindStringLiteral, &PsuedoTypeLiteral{ - Node: node, - }) -} - -func NewPsuedoTypeNumericLiteral(node *ast.Node) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindNumericLiteral, &PsuedoTypeLiteral{ - Node: node, - }) -} - -func NewPsuedoTypeBigIntLiteral(node *ast.Node) *PsuedoType { - return NewPsuedoType(PsuedoTypeKindBigIntLiteral, &PsuedoTypeLiteral{ - Node: node, - }) -} diff --git a/internal/transformers/jsxtransforms/jsx.go b/internal/transformers/jsxtransforms/jsx.go index d71ae091fed..bcbf69b409b 100644 --- a/internal/transformers/jsxtransforms/jsx.go +++ b/internal/transformers/jsxtransforms/jsx.go @@ -655,7 +655,7 @@ func (tx *JSXTransformer) createJsxFactoryExpressionFromEntityName(e *ast.Node, return tx.createReactNamespace(e.Text(), parent) } -func (tx *JSXTransformer) createJsxPsuedoFactoryExpression(parent *ast.Node, e *ast.Node, target string) *ast.Node { +func (tx *JSXTransformer) createJsxPseudoFactoryExpression(parent *ast.Node, e *ast.Node, target string) *ast.Node { if e != nil { return tx.createJsxFactoryExpressionFromEntityName(e, parent) } @@ -669,12 +669,12 @@ func (tx *JSXTransformer) createJsxPsuedoFactoryExpression(parent *ast.Node, e * func (tx *JSXTransformer) createJsxFactoryExpression(parent *ast.Node) *ast.Node { e := tx.emitResolver.GetJsxFactoryEntity(tx.currentSourceFile.AsNode()) - return tx.createJsxPsuedoFactoryExpression(parent, e, "createElement") + return tx.createJsxPseudoFactoryExpression(parent, e, "createElement") } func (tx *JSXTransformer) createJsxFragmentFactoryExpression(parent *ast.Node) *ast.Node { e := tx.emitResolver.GetJsxFragmentFactoryEntity(tx.currentSourceFile.AsNode()) - return tx.createJsxPsuedoFactoryExpression(parent, e, "Fragment") + return tx.createJsxPseudoFactoryExpression(parent, e, "Fragment") } func (tx *JSXTransformer) visitJsxOpeningLikeElementCreateElement(element *ast.Node, children *ast.NodeList, location *ast.Node) *ast.Node { From e4bdf942727d4356be5a3df554c741dca3b832f5 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 8 Jan 2026 14:22:09 -0800 Subject: [PATCH 14/55] Make psuedo-data members private again --- internal/checker/pseudotypenodebuilder.go | 38 +++++++------- internal/pseudochecker/type.go | 62 ++++++++++++++++++++--- 2 files changed, 73 insertions(+), 27 deletions(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index a11d7360260..7456ab3ddb1 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -13,18 +13,18 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod debug.Assert(t != nil, "Attempted to serialize nil pseudotype") switch t.Kind { case pseudochecker.PseudoTypeKindDirect: - return b.reuseTypeNode(t.Data.(*pseudochecker.PseudoTypeDirect).TypeNode) + return b.reuseTypeNode(t.AsPseudoTypeDirect().TypeNode) case pseudochecker.PseudoTypeKindInferred: - node := t.Data.(*pseudochecker.PseudoTypeInferred).Expression + node := t.AsPseudoTypeInferred().Expression b.ctx.tracker.ReportInferenceFallback(node) ty := b.ch.getTypeOfExpression(node) return b.typeToTypeNode(ty) case pseudochecker.PseudoTypeKindNoResult: - node := t.Data.(*pseudochecker.PseudoTypeNoResult).Declaration + node := t.AsPseudoTypeNoResult().Declaration b.ctx.tracker.ReportInferenceFallback(node) return b.serializeTypeForDeclaration(node, nil, nil, false) case pseudochecker.PseudoTypeKindMaybeConstLocation: - d := t.Data.(*pseudochecker.PseudoTypeMaybeConstLocation) + d := t.AsPseudoTypeMaybeConstLocation() // see checkExpressionWithContextualType for general literal widening rules which need to be emulated here, plus // checkTemplateLiteralExpression for template literal widening rules if the pseudochecker ever supports literalized templates isInConstContext := b.ch.isConstContext(d.Node) @@ -43,7 +43,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod case pseudochecker.PseudoTypeKindUnion: var res []*ast.Node var hasElidedType bool - members := t.Data.(*pseudochecker.PseudoTypeUnion).Types + members := t.AsPseudoTypeUnion().Types for _, m := range members { if !b.ch.strictNullChecks { if m.Kind == pseudochecker.PseudoTypeKindUndefined || m.Kind == pseudochecker.PseudoTypeKindNull { @@ -88,7 +88,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod case pseudochecker.PseudoTypeKindTrue: return b.f.NewLiteralTypeNode(b.f.NewKeywordExpression(ast.KindTrueKeyword)) case pseudochecker.PseudoTypeKindSingleCallSignature: - d := t.Data.(*pseudochecker.PseudoTypeSingleCallSignature) + d := t.AsPseudoTypeSingleCallSignature() var typeParams *ast.NodeList if len(d.TypeParameters) > 0 { res := make([]*ast.Node, 0, len(d.TypeParameters)) @@ -102,7 +102,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod return b.f.NewFunctionTypeNode(typeParams, params, returnType) case pseudochecker.PseudoTypeKindTuple: var res []*ast.Node - elements := t.Data.(*pseudochecker.PseudoTypeTuple).Elements + elements := t.AsPseudoTypeTuple().Elements for _, e := range elements { res = append(res, b.pseudoTypeToNode(e)) } @@ -113,7 +113,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod b.e.AddEmitFlags(result, printer.EFSingleLine) return result case pseudochecker.PseudoTypeKindObjectLiteral: - elements := t.Data.(*pseudochecker.PseudoTypeObjectLiteral).Elements + elements := t.AsPseudoTypeObjectLiteral().Elements if len(elements) == 0 { result := b.f.NewTypeLiteralNode(b.f.NewNodeList(nil)) b.e.AddEmitFlags(result, printer.EFSingleLine) @@ -131,13 +131,13 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod // we should have a unified `reuseName` codepath that remaps keyword ID names to string literal names for _, e := range elements { var modifiers *ast.ModifierList - if isConst || (e.Kind == pseudochecker.PseudoObjectElementKindPropertyAssignment && e.Data.(*pseudochecker.PseudoPropertyAssignment).Readonly) { + if isConst || (e.Kind == pseudochecker.PseudoObjectElementKindPropertyAssignment && e.AsPseudoPropertyAssignment().Readonly) { modifiers = b.f.NewModifierList([]*ast.Node{b.f.NewModifier(ast.KindReadonlyKeyword)}) } var newProp *ast.Node switch e.Kind { case pseudochecker.PseudoObjectElementKindMethod: - d := e.Data.(*pseudochecker.PseudoObjectMethod) + d := e.AsPseudoObjectMethod() newProp = b.f.NewMethodSignatureDeclaration( modifiers, b.reuseNode(e.Name), @@ -147,7 +147,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod b.pseudoTypeToNode(d.ReturnType), ) case pseudochecker.PseudoObjectElementKindPropertyAssignment: - d := e.Data.(*pseudochecker.PseudoPropertyAssignment) + d := e.AsPseudoPropertyAssignment() newProp = b.f.NewPropertySignatureDeclaration( modifiers, b.reuseNode(e.Name), @@ -156,7 +156,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod nil, ) case pseudochecker.PseudoObjectElementKindSetAccessor: - d := e.Data.(*pseudochecker.PseudoSetAccessor) + d := e.AsPseudoSetAccessor() newProp = b.f.NewSetAccessorDeclaration( nil, b.reuseNode(e.Name), @@ -167,7 +167,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod nil, ) case pseudochecker.PseudoObjectElementKindGetAccessor: - d := e.Data.(*pseudochecker.PseudoGetAccessor) + d := e.AsPseudoGetAccessor() newProp = b.f.NewSetAccessorDeclaration( nil, b.reuseNode(e.Name), @@ -189,7 +189,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod } return result case pseudochecker.PseudoTypeKindStringLiteral, pseudochecker.PseudoTypeKindNumericLiteral, pseudochecker.PseudoTypeKindBigIntLiteral: - source := t.Data.(*pseudochecker.PseudoTypeLiteral).Node + source := t.AsPseudoTypeLiteral().Node return b.f.NewLiteralTypeNode(b.reuseNode(source)) default: debug.AssertNever(t.Kind, "Unhandled pseudotype kind in pseudotype node construction") @@ -230,20 +230,20 @@ func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { debug.Assert(t != nil, "Attempted to realize nil pseudotype") switch t.Kind { case pseudochecker.PseudoTypeKindDirect: - return b.ch.getTypeFromTypeNode(t.Data.(*pseudochecker.PseudoTypeDirect).TypeNode) + return b.ch.getTypeFromTypeNode(t.AsPseudoTypeDirect().TypeNode) case pseudochecker.PseudoTypeKindInferred: - node := t.Data.(*pseudochecker.PseudoTypeInferred).Expression + node := t.AsPseudoTypeInferred().Expression ty := b.ch.getTypeOfExpression(node) return ty case pseudochecker.PseudoTypeKindNoResult: return nil // TODO: extract type selection logic from `serializeTypeForDeclaration`, not needed for current usecases but needed if completeness becomes required case pseudochecker.PseudoTypeKindMaybeConstLocation: - d := t.Data.(*pseudochecker.PseudoTypeMaybeConstLocation) + d := t.AsPseudoTypeMaybeConstLocation() return b.pseudoTypeToType(d.ConstType) // !!! TODO: not needed for const-checking usecases, but proper context switching behavior required if completeness is required case pseudochecker.PseudoTypeKindUnion: var res []*Type var hasElidedType bool - members := t.Data.(*pseudochecker.PseudoTypeUnion).Types + members := t.AsPseudoTypeUnion().Types for _, m := range members { if !b.ch.strictNullChecks { if m.Kind == pseudochecker.PseudoTypeKindUndefined || m.Kind == pseudochecker.PseudoTypeKindNull { @@ -286,7 +286,7 @@ func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { case pseudochecker.PseudoTypeKindTrue: return b.ch.trueType case pseudochecker.PseudoTypeKindStringLiteral, pseudochecker.PseudoTypeKindNumericLiteral, pseudochecker.PseudoTypeKindBigIntLiteral: - source := t.Data.(*pseudochecker.PseudoTypeLiteral).Node + source := t.AsPseudoTypeLiteral().Node return b.ch.getTypeOfExpression(source) // big shortcut, uses cached expression types where possible default: return nil diff --git a/internal/pseudochecker/type.go b/internal/pseudochecker/type.go index 58c49eb38b0..2c28fe782df 100644 --- a/internal/pseudochecker/type.go +++ b/internal/pseudochecker/type.go @@ -43,17 +43,17 @@ const ( type PseudoType struct { Kind PseudoTypeKind - Data PseudoTypeData + data pseudoTypeData } -func NewPseudoType(kind PseudoTypeKind, data PseudoTypeData) *PseudoType { +func NewPseudoType(kind PseudoTypeKind, data pseudoTypeData) *PseudoType { n := data.AsPseudoType() n.Kind = kind - n.Data = data + n.data = data return n } -type PseudoTypeData interface { +type pseudoTypeData interface { AsPseudoType() *PseudoType } @@ -89,6 +89,8 @@ func NewPseudoTypeDirect(typeNode *ast.Node) *PseudoType { return NewPseudoType(PseudoTypeKindDirect, &PseudoTypeDirect{TypeNode: typeNode}) } +func (t *PseudoType) AsPseudoTypeDirect() *PseudoTypeDirect { return t.data.(*PseudoTypeDirect) } + // PseudoTypeInferred directly encodes the type referred to by a given Expression // These represent cases where the expression was too complex for the pseudochecker. // Most of the time, these locations will produce an error under ID. @@ -101,6 +103,8 @@ func NewPseudoTypeInferred(expr *ast.Node) *PseudoType { return NewPseudoType(PseudoTypeKindInferred, &PseudoTypeInferred{Expression: expr}) } +func (t *PseudoType) AsPseudoTypeInferred() *PseudoTypeInferred { return t.data.(*PseudoTypeInferred) } + // PseudoTypeNoResult is anlogous to PseudoTypeInferred in that it references a case // where the type was too complex for the pseudochecker. Rather than an expression, however, // it is referring to the return type of a signature or declaration. @@ -113,6 +117,8 @@ func NewPseudoTypeNoResult(decl *ast.Node) *PseudoType { return NewPseudoType(PseudoTypeKindNoResult, &PseudoTypeNoResult{Declaration: decl}) } +func (t *PseudoType) AsPseudoTypeNoResult() *PseudoTypeNoResult { return t.data.(*PseudoTypeNoResult) } + // PseudoTypeMaybeConstLocation encodes the const/regular types of a location so the builder // can later select the appropriate pseudotype based on the location's context. This is used // to ensure accuracy in nested expressions without exposing type-based functionality to the pseudochecker. @@ -134,6 +140,10 @@ func NewPseudoTypeMaybeConstLocation(loc *ast.Node, ct *PseudoType, reg *PseudoT return NewPseudoType(PseudoTypeKindMaybeConstLocation, &PseudoTypeMaybeConstLocation{Node: loc, ConstType: ct, RegularType: reg}) } +func (t *PseudoType) AsPseudoTypeMaybeConstLocation() *PseudoTypeMaybeConstLocation { + return t.data.(*PseudoTypeMaybeConstLocation) +} + // PseudoTypeUnion is a collection of psudotypes joined into a union type PseudoTypeUnion struct { PseudoTypeBase @@ -144,6 +154,10 @@ func NewPseudoTypeUnion(types []*PseudoType) *PseudoType { return NewPseudoType(PseudoTypeKindUnion, &PseudoTypeUnion{Types: types}) } +func (t *PseudoType) AsPseudoTypeUnion() *PseudoTypeUnion { + return t.data.(*PseudoTypeUnion) +} + type PseudoParameter struct { Rest bool Name *ast.Node @@ -171,6 +185,10 @@ func NewPseudoTypeSingleCallSignature(parameters []*PseudoParameter, typeParamet }) } +func (t *PseudoType) AsPseudoTypeSingleCallSignature() *PseudoTypeSingleCallSignature { + return t.data.(*PseudoTypeSingleCallSignature) +} + // PseudoTypeTuple represents a tuple originaing from an `as const` array literal type PseudoTypeTuple struct { PseudoTypeBase @@ -183,11 +201,15 @@ func NewPseudoTypeTuple(elements []*PseudoType) *PseudoType { }) } +func (t *PseudoType) AsPseudoTypeTuple() *PseudoTypeTuple { + return t.data.(*PseudoTypeTuple) +} + type PseudoObjectElement struct { Name *ast.Node Optional bool Kind PseudoObjectElementKind - Data PseudoObjectElementData + data pseudoObjectElementData } func (e *PseudoObjectElement) AsPseudoObjectElement() *PseudoObjectElement { return e } @@ -201,16 +223,16 @@ const ( PseudoObjectElementKindGetAccessor ) -type PseudoObjectElementData interface { +type pseudoObjectElementData interface { AsPseudoObjectElement() *PseudoObjectElement } -func NewPseudoObjectElement(kind PseudoObjectElementKind, name *ast.Node, optional bool, data PseudoObjectElementData) *PseudoObjectElement { +func NewPseudoObjectElement(kind PseudoObjectElementKind, name *ast.Node, optional bool, data pseudoObjectElementData) *PseudoObjectElement { e := data.AsPseudoObjectElement() e.Kind = kind e.Name = name e.Optional = optional - e.Data = data + e.data = data return e } @@ -227,6 +249,10 @@ func NewPseudoObjectMethod(name *ast.Node, optional bool, parameters []*PseudoPa }) } +func (e *PseudoObjectElement) AsPseudoObjectMethod() *PseudoObjectMethod { + return e.data.(*PseudoObjectMethod) +} + type PseudoPropertyAssignment struct { PseudoObjectElement Readonly bool @@ -240,6 +266,10 @@ func NewPseudoPropertyAssignment(readonly bool, name *ast.Node, optional bool, t }) } +func (e *PseudoObjectElement) AsPseudoPropertyAssignment() *PseudoPropertyAssignment { + return e.data.(*PseudoPropertyAssignment) +} + type PseudoSetAccessor struct { PseudoObjectElement Parameter *PseudoParameter @@ -251,6 +281,10 @@ func NewPseudoSetAccessor(name *ast.Node, optional bool, p *PseudoParameter) *Ps }) } +func (e *PseudoObjectElement) AsPseudoSetAccessor() *PseudoSetAccessor { + return e.data.(*PseudoSetAccessor) +} + type PseudoGetAccessor struct { PseudoObjectElement Type *PseudoType @@ -262,6 +296,10 @@ func NewPseudoGetAccessor(name *ast.Node, optional bool, t *PseudoType) *PseudoO }) } +func (e *PseudoObjectElement) AsPseudoGetAccessor() *PseudoGetAccessor { + return e.data.(*PseudoGetAccessor) +} + // PseudoTypeObjectLiteral represents an object type originaing from an object literal type PseudoTypeObjectLiteral struct { PseudoTypeBase @@ -274,6 +312,10 @@ func NewPseudoTypeObjectLiteral(elements []*PseudoObjectElement) *PseudoType { }) } +func (t *PseudoType) AsPseudoTypeObjectLiteral() *PseudoTypeObjectLiteral { + return t.data.(*PseudoTypeObjectLiteral) +} + // PseudoTypeLiteral represents a literal type type PseudoTypeLiteral struct { PseudoTypeBase @@ -297,3 +339,7 @@ func NewPseudoTypeBigIntLiteral(node *ast.Node) *PseudoType { Node: node, }) } + +func (t *PseudoType) AsPseudoTypeLiteral() *PseudoTypeLiteral { + return t.data.(*PseudoTypeLiteral) +} From 26ce2c9d9f6351844ad058bdaf8a0a9e6e5c205e Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 8 Jan 2026 14:38:39 -0800 Subject: [PATCH 15/55] Fix missing kind crash post-merge --- internal/pseudochecker/lookup.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 9d5d14fe18c..46f799aa5ff 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -49,6 +49,12 @@ func (ch *PseudoChecker) GetTypeOfDeclaration(node *ast.Node) *PseudoType { return ch.typeFromExpandoProperty(node) case ast.KindPropertyAssignment, ast.KindShorthandPropertyAssignment: return ch.typeFromPropertyAssignment(node) + case ast.KindCommonJSExport: + t := node.AsCommonJSExport().Type + if t != nil { + return NewPseudoTypeDirect(t) + } + return ch.typeFromExpression(node.AsCommonJSExport().Initializer) default: debug.FailBadSyntaxKind(node, "node needs to be an inferrable node") return nil From a3539c26f4bb62da99aee7998b917f6803b8191c Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 8 Jan 2026 15:37:08 -0800 Subject: [PATCH 16/55] Fix nonascii quickinfo text with revised node copy in place --- internal/checker/printer.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/checker/printer.go b/internal/checker/printer.go index b24dd378fcc..a8912ad3fca 100644 --- a/internal/checker/printer.go +++ b/internal/checker/printer.go @@ -16,9 +16,12 @@ func createPrinterWithRemoveComments(emitContext *printer.EmitContext) *printer. return printer.NewPrinter(printer.PrinterOptions{RemoveComments: true}, printer.PrintHandlers{}, emitContext) } -func createPrinterWithRemoveCommentsOmitTrailingSemicolon(emitContext *printer.EmitContext) *printer.Printer { +func createPrinterWithRemoveCommentsOmitTrailingSemicolonNeverAsciiEscape(emitContext *printer.EmitContext) *printer.Printer { // TODO: OmitTrailingSemicolon support - return printer.NewPrinter(printer.PrinterOptions{RemoveComments: true}, printer.PrintHandlers{}, emitContext) + return printer.NewPrinter(printer.PrinterOptions{ + RemoveComments: true, + NeverAsciiEscape: true, + }, printer.PrintHandlers{}, emitContext) } func createPrinterWithRemoveCommentsNeverAsciiEscape(emitContext *printer.EmitContext) *printer.Printer { @@ -306,7 +309,7 @@ func (c *Checker) signatureToStringEx(signature *Signature, enclosingDeclaration nodeBuilder := c.getNodeBuilder() combinedFlags := toNodeBuilderFlags(flags) | nodebuilder.FlagsIgnoreErrors | nodebuilder.FlagsWriteTypeParametersInQualifiedName sig := nodeBuilder.SignatureToSignatureDeclaration(signature, sigOutput, enclosingDeclaration, combinedFlags, nodebuilder.InternalFlagsNone, nil) - printer_ := createPrinterWithRemoveCommentsOmitTrailingSemicolon(nodeBuilder.EmitContext()) + printer_ := createPrinterWithRemoveCommentsOmitTrailingSemicolonNeverAsciiEscape(nodeBuilder.EmitContext()) var sourceFile *ast.SourceFile if enclosingDeclaration != nil { sourceFile = ast.GetSourceFileOfNode(enclosingDeclaration) From a121d4a9a4be0d117b2b1c0137c642ad8e01b2a5 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 8 Jan 2026 16:41:03 -0800 Subject: [PATCH 17/55] Add bail on mimatched type/pseudotype pairs - needs more implementation/better comparitor to fallback to standard serialization less aggressively --- internal/checker/nodebuilderimpl.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index de0887dd247..75999d86b18 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -2035,7 +2035,12 @@ func (b *NodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati } else { pt = b.pc.GetTypeOfDeclaration(declaration) } - result = b.pseudoTypeToNode(pt) + annotated := b.pseudoTypeToType(pt) + if annotated == t || annotated != nil && b.ch.isErrorType(annotated) { + // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization + // see: canReuseTypeNodeAnnotation in strada for context + result = b.pseudoTypeToNode(pt) + } remove() } if result == nil { From 546794ccc9b012a8391c6bea0ac348c1ae66740f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 8 Jan 2026 16:48:24 -0800 Subject: [PATCH 18/55] Fourslash changes from reused nodes --- .../tests/gen/overloadOnConstCallSignature_test.go | 2 +- .../tests/gen/signatureHelpOnOverloadOnConst_test.go | 4 ++-- .../tests/manual/quickInfoForOverloadOnConst1_test.go | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/fourslash/tests/gen/overloadOnConstCallSignature_test.go b/internal/fourslash/tests/gen/overloadOnConstCallSignature_test.go index b287ce30b0d..4ccc651e036 100644 --- a/internal/fourslash/tests/gen/overloadOnConstCallSignature_test.go +++ b/internal/fourslash/tests/gen/overloadOnConstCallSignature_test.go @@ -21,7 +21,7 @@ var /*2*/x = foo(/*1*/` f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content) defer done() f.GoToMarker(t, "1") - f.VerifySignatureHelp(t, fourslash.VerifySignatureHelpOptions{Text: "foo(name: \"order\"): string", OverloadsCount: 4}) + f.VerifySignatureHelp(t, fourslash.VerifySignatureHelpOptions{Text: "foo(name: 'order'): string", OverloadsCount: 4}) f.Insert(t, "\"hi\"") f.VerifyQuickInfoAt(t, "2", "var x: string", "") } diff --git a/internal/fourslash/tests/gen/signatureHelpOnOverloadOnConst_test.go b/internal/fourslash/tests/gen/signatureHelpOnOverloadOnConst_test.go index 9247353da0b..a2c98a2418d 100644 --- a/internal/fourslash/tests/gen/signatureHelpOnOverloadOnConst_test.go +++ b/internal/fourslash/tests/gen/signatureHelpOnOverloadOnConst_test.go @@ -25,7 +25,7 @@ x1('bye'/*3*/);` f.GoToMarker(t, "1") f.VerifySignatureHelp(t, fourslash.VerifySignatureHelpOptions{ParameterName: "z", ParameterSpan: "z: string", OverloadsCount: 3}) f.GoToMarker(t, "2") - f.VerifySignatureHelp(t, fourslash.VerifySignatureHelpOptions{ParameterName: "x", ParameterSpan: "x: \"hi\"", OverloadsCount: 3}) + f.VerifySignatureHelp(t, fourslash.VerifySignatureHelpOptions{ParameterName: "x", ParameterSpan: "x: 'hi'", OverloadsCount: 3}) f.GoToMarker(t, "3") - f.VerifySignatureHelp(t, fourslash.VerifySignatureHelpOptions{ParameterName: "y", ParameterSpan: "y: \"bye\"", OverloadsCount: 3}) + f.VerifySignatureHelp(t, fourslash.VerifySignatureHelpOptions{ParameterName: "y", ParameterSpan: "y: 'bye'", OverloadsCount: 3}) } diff --git a/internal/fourslash/tests/manual/quickInfoForOverloadOnConst1_test.go b/internal/fourslash/tests/manual/quickInfoForOverloadOnConst1_test.go index d684a87f1be..82fc51d1ee6 100644 --- a/internal/fourslash/tests/manual/quickInfoForOverloadOnConst1_test.go +++ b/internal/fourslash/tests/manual/quickInfoForOverloadOnConst1_test.go @@ -29,13 +29,13 @@ c.x1(1, (x/*9*/x: 'bye') => { return 1; } ); c.x1(1, (x/*10*/x) => { return 1; } );` f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content) defer done() - f.VerifyQuickInfoAt(t, "1", "(method) I.x1(a: number, callback: (x: \"hi\") => number): any", "") - f.VerifyQuickInfoAt(t, "2", "(method) C.x1(a: number, callback: (x: \"hi\") => number): any", "") - f.VerifyQuickInfoAt(t, "3", "(parameter) callback: (x: \"hi\") => number", "") + f.VerifyQuickInfoAt(t, "1", "(method) I.x1(a: number, callback: (x: 'hi') => number): any", "") + f.VerifyQuickInfoAt(t, "2", "(method) C.x1(a: number, callback: (x: 'hi') => number): any", "") + f.VerifyQuickInfoAt(t, "3", "(parameter) callback: (x: 'hi') => number", "") f.VerifyQuickInfoAt(t, "4", "(method) C.x1(a: number, callback: (x: string) => number): void", "") f.VerifyQuickInfoAt(t, "5", "(parameter) callback: (x: string) => number", "") f.VerifyQuickInfoAt(t, "6", "(parameter) callback: (x: string) => number", "") - f.VerifyQuickInfoAt(t, "7", "(method) C.x1(a: number, callback: (x: \"hi\") => number): any", "") + f.VerifyQuickInfoAt(t, "7", "(method) C.x1(a: number, callback: (x: 'hi') => number): any", "") f.VerifyQuickInfoAt(t, "8", "(parameter) xx: \"hi\"", "") f.VerifyQuickInfoAt(t, "9", "(parameter) xx: \"bye\"", "") f.VerifyQuickInfoAt(t, "10", "(parameter) xx: \"hi\"", "") From 397d6b3cc688ff71b06282c021b11aef6dbdffd8 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 8 Jan 2026 17:13:04 -0800 Subject: [PATCH 19/55] Fix vis lint --- internal/pseudochecker/type.go | 52 +++++++++++++++++----------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/internal/pseudochecker/type.go b/internal/pseudochecker/type.go index 2c28fe782df..75ff87efe11 100644 --- a/internal/pseudochecker/type.go +++ b/internal/pseudochecker/type.go @@ -46,7 +46,7 @@ type PseudoType struct { data pseudoTypeData } -func NewPseudoType(kind PseudoTypeKind, data pseudoTypeData) *PseudoType { +func newPseudoType(kind PseudoTypeKind, data pseudoTypeData) *PseudoType { n := data.AsPseudoType() n.Kind = kind n.data = data @@ -68,15 +68,15 @@ type PseudoTypeBase struct { } var ( - PseudoTypeUndefined = NewPseudoType(PseudoTypeKindUndefined, &PseudoTypeBase{}) - PseudoTypeNull = NewPseudoType(PseudoTypeKindNull, &PseudoTypeBase{}) - PseudoTypeAny = NewPseudoType(PseudoTypeKindAny, &PseudoTypeBase{}) - PseudoTypeString = NewPseudoType(PseudoTypeKindString, &PseudoTypeBase{}) - PseudoTypeNumber = NewPseudoType(PseudoTypeKindNumber, &PseudoTypeBase{}) - PseudoTypeBigInt = NewPseudoType(PseudoTypeKindBigInt, &PseudoTypeBase{}) - PseudoTypeBoolean = NewPseudoType(PseudoTypeKindBoolean, &PseudoTypeBase{}) - PseudoTypeFalse = NewPseudoType(PseudoTypeKindFalse, &PseudoTypeBase{}) - PseudoTypeTrue = NewPseudoType(PseudoTypeKindTrue, &PseudoTypeBase{}) + PseudoTypeUndefined = newPseudoType(PseudoTypeKindUndefined, &PseudoTypeBase{}) + PseudoTypeNull = newPseudoType(PseudoTypeKindNull, &PseudoTypeBase{}) + PseudoTypeAny = newPseudoType(PseudoTypeKindAny, &PseudoTypeBase{}) + PseudoTypeString = newPseudoType(PseudoTypeKindString, &PseudoTypeBase{}) + PseudoTypeNumber = newPseudoType(PseudoTypeKindNumber, &PseudoTypeBase{}) + PseudoTypeBigInt = newPseudoType(PseudoTypeKindBigInt, &PseudoTypeBase{}) + PseudoTypeBoolean = newPseudoType(PseudoTypeKindBoolean, &PseudoTypeBase{}) + PseudoTypeFalse = newPseudoType(PseudoTypeKindFalse, &PseudoTypeBase{}) + PseudoTypeTrue = newPseudoType(PseudoTypeKindTrue, &PseudoTypeBase{}) ) // PseudoTypeDirect directly encodes the type referred to by a given TypeNode @@ -86,7 +86,7 @@ type PseudoTypeDirect struct { } func NewPseudoTypeDirect(typeNode *ast.Node) *PseudoType { - return NewPseudoType(PseudoTypeKindDirect, &PseudoTypeDirect{TypeNode: typeNode}) + return newPseudoType(PseudoTypeKindDirect, &PseudoTypeDirect{TypeNode: typeNode}) } func (t *PseudoType) AsPseudoTypeDirect() *PseudoTypeDirect { return t.data.(*PseudoTypeDirect) } @@ -100,7 +100,7 @@ type PseudoTypeInferred struct { } func NewPseudoTypeInferred(expr *ast.Node) *PseudoType { - return NewPseudoType(PseudoTypeKindInferred, &PseudoTypeInferred{Expression: expr}) + return newPseudoType(PseudoTypeKindInferred, &PseudoTypeInferred{Expression: expr}) } func (t *PseudoType) AsPseudoTypeInferred() *PseudoTypeInferred { return t.data.(*PseudoTypeInferred) } @@ -114,7 +114,7 @@ type PseudoTypeNoResult struct { } func NewPseudoTypeNoResult(decl *ast.Node) *PseudoType { - return NewPseudoType(PseudoTypeKindNoResult, &PseudoTypeNoResult{Declaration: decl}) + return newPseudoType(PseudoTypeKindNoResult, &PseudoTypeNoResult{Declaration: decl}) } func (t *PseudoType) AsPseudoTypeNoResult() *PseudoTypeNoResult { return t.data.(*PseudoTypeNoResult) } @@ -137,7 +137,7 @@ type PseudoTypeMaybeConstLocation struct { } func NewPseudoTypeMaybeConstLocation(loc *ast.Node, ct *PseudoType, reg *PseudoType) *PseudoType { - return NewPseudoType(PseudoTypeKindMaybeConstLocation, &PseudoTypeMaybeConstLocation{Node: loc, ConstType: ct, RegularType: reg}) + return newPseudoType(PseudoTypeKindMaybeConstLocation, &PseudoTypeMaybeConstLocation{Node: loc, ConstType: ct, RegularType: reg}) } func (t *PseudoType) AsPseudoTypeMaybeConstLocation() *PseudoTypeMaybeConstLocation { @@ -151,7 +151,7 @@ type PseudoTypeUnion struct { } func NewPseudoTypeUnion(types []*PseudoType) *PseudoType { - return NewPseudoType(PseudoTypeKindUnion, &PseudoTypeUnion{Types: types}) + return newPseudoType(PseudoTypeKindUnion, &PseudoTypeUnion{Types: types}) } func (t *PseudoType) AsPseudoTypeUnion() *PseudoTypeUnion { @@ -178,7 +178,7 @@ type PseudoTypeSingleCallSignature struct { } func NewPseudoTypeSingleCallSignature(parameters []*PseudoParameter, typeParameters []*ast.TypeParameterDeclaration, returnType *PseudoType) *PseudoType { - return NewPseudoType(PseudoTypeKindSingleCallSignature, &PseudoTypeSingleCallSignature{ + return newPseudoType(PseudoTypeKindSingleCallSignature, &PseudoTypeSingleCallSignature{ Parameters: parameters, TypeParameters: typeParameters, ReturnType: returnType, @@ -196,7 +196,7 @@ type PseudoTypeTuple struct { } func NewPseudoTypeTuple(elements []*PseudoType) *PseudoType { - return NewPseudoType(PseudoTypeKindTuple, &PseudoTypeTuple{ + return newPseudoType(PseudoTypeKindTuple, &PseudoTypeTuple{ Elements: elements, }) } @@ -227,7 +227,7 @@ type pseudoObjectElementData interface { AsPseudoObjectElement() *PseudoObjectElement } -func NewPseudoObjectElement(kind PseudoObjectElementKind, name *ast.Node, optional bool, data pseudoObjectElementData) *PseudoObjectElement { +func newPseudoObjectElement(kind PseudoObjectElementKind, name *ast.Node, optional bool, data pseudoObjectElementData) *PseudoObjectElement { e := data.AsPseudoObjectElement() e.Kind = kind e.Name = name @@ -243,7 +243,7 @@ type PseudoObjectMethod struct { } func NewPseudoObjectMethod(name *ast.Node, optional bool, parameters []*PseudoParameter, returnType *PseudoType) *PseudoObjectElement { - return NewPseudoObjectElement(PseudoObjectElementKindMethod, name, optional, &PseudoObjectMethod{ + return newPseudoObjectElement(PseudoObjectElementKindMethod, name, optional, &PseudoObjectMethod{ Parameters: parameters, ReturnType: returnType, }) @@ -260,7 +260,7 @@ type PseudoPropertyAssignment struct { } func NewPseudoPropertyAssignment(readonly bool, name *ast.Node, optional bool, t *PseudoType) *PseudoObjectElement { - return NewPseudoObjectElement(PseudoObjectElementKindPropertyAssignment, name, optional, &PseudoPropertyAssignment{ + return newPseudoObjectElement(PseudoObjectElementKindPropertyAssignment, name, optional, &PseudoPropertyAssignment{ Readonly: readonly, Type: t, }) @@ -276,7 +276,7 @@ type PseudoSetAccessor struct { } func NewPseudoSetAccessor(name *ast.Node, optional bool, p *PseudoParameter) *PseudoObjectElement { - return NewPseudoObjectElement(PseudoObjectElementKindSetAccessor, name, optional, &PseudoSetAccessor{ + return newPseudoObjectElement(PseudoObjectElementKindSetAccessor, name, optional, &PseudoSetAccessor{ Parameter: p, }) } @@ -291,7 +291,7 @@ type PseudoGetAccessor struct { } func NewPseudoGetAccessor(name *ast.Node, optional bool, t *PseudoType) *PseudoObjectElement { - return NewPseudoObjectElement(PseudoObjectElementKindGetAccessor, name, optional, &PseudoGetAccessor{ + return newPseudoObjectElement(PseudoObjectElementKindGetAccessor, name, optional, &PseudoGetAccessor{ Type: t, }) } @@ -307,7 +307,7 @@ type PseudoTypeObjectLiteral struct { } func NewPseudoTypeObjectLiteral(elements []*PseudoObjectElement) *PseudoType { - return NewPseudoType(PseudoTypeKindObjectLiteral, &PseudoTypeObjectLiteral{ + return newPseudoType(PseudoTypeKindObjectLiteral, &PseudoTypeObjectLiteral{ Elements: elements, }) } @@ -323,19 +323,19 @@ type PseudoTypeLiteral struct { } func NewPseudoTypeStringLiteral(node *ast.Node) *PseudoType { - return NewPseudoType(PseudoTypeKindStringLiteral, &PseudoTypeLiteral{ + return newPseudoType(PseudoTypeKindStringLiteral, &PseudoTypeLiteral{ Node: node, }) } func NewPseudoTypeNumericLiteral(node *ast.Node) *PseudoType { - return NewPseudoType(PseudoTypeKindNumericLiteral, &PseudoTypeLiteral{ + return newPseudoType(PseudoTypeKindNumericLiteral, &PseudoTypeLiteral{ Node: node, }) } func NewPseudoTypeBigIntLiteral(node *ast.Node) *PseudoType { - return NewPseudoType(PseudoTypeKindBigIntLiteral, &PseudoTypeLiteral{ + return newPseudoType(PseudoTypeKindBigIntLiteral, &PseudoTypeLiteral{ Node: node, }) } From db5d37b6181002782b558505efa13385d6f03fae Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Feb 2026 14:03:22 -0800 Subject: [PATCH 20/55] ID Diagnostic generation, function return type node reuse enablement --- internal/ast/utilities.go | 7 + internal/checker/emitresolver.go | 26 +- internal/checker/nodebuilder.go | 7 +- internal/checker/nodebuilderimpl.go | 41 ++- internal/printer/emitresolver.go | 3 + .../transformers/declarations/diagnostics.go | 268 +++++++++++++++++- internal/transformers/declarations/tracker.go | 9 +- .../transformers/declarations/transform.go | 44 +-- 8 files changed, 368 insertions(+), 37 deletions(-) diff --git a/internal/ast/utilities.go b/internal/ast/utilities.go index a0ff51d6c5d..a52c1726b6f 100644 --- a/internal/ast/utilities.go +++ b/internal/ast/utilities.go @@ -4228,3 +4228,10 @@ func isArgumentOfElementAccessExpression(node *Node) bool { node.Parent.Kind == KindElementAccessExpression && node.Parent.AsElementAccessExpression().ArgumentExpression == node } + +func IsExpandoPropertyDeclaration(node *Node) bool { + if node == nil { + return false + } + return IsPropertyAccessExpression(node) || IsElementAccessExpression(node) || IsBinaryExpression(node) +} diff --git a/internal/checker/emitresolver.go b/internal/checker/emitresolver.go index 1ac6fc63c98..c8ae97d9985 100644 --- a/internal/checker/emitresolver.go +++ b/internal/checker/emitresolver.go @@ -647,7 +647,16 @@ func (r *EmitResolver) IsLiteralConstDeclaration(node *ast.Node) bool { func (r *EmitResolver) IsExpandoFunctionDeclaration(node *ast.Node) bool { // node = r.emitContext.ParseNode(node) - // !!! TODO: expando function support + if !ast.IsParseTreeNode(node) { + return false + } + // this is substantially different from strada, but so is expando property checking + props := r.GetPropertiesOfContainerFunction(node) + for _, p := range props { + if ast.IsExpandoPropertyDeclaration(p.ValueDeclaration) { + return true + } + } return false } @@ -1192,3 +1201,18 @@ func (r *EmitResolver) GetTypeReferenceSerializationKind(typeName *ast.Node, loc return printer.TypeReferenceSerializationKindObjectType } } + +func (r *EmitResolver) GetPropertiesOfContainerFunction(node *ast.Node) []*ast.Symbol { + // This is explicitly _not locked_ because it is only called via error reporters invoked via node builder calls + // to the symbol tracker already within locked contexts. + // r.checkerMu.Lock() + // defer r.checkerMu.Unlock() + if node == nil { + return []*ast.Symbol{} + } + s := r.checker.getSymbolOfDeclaration(node) + if s == nil { + return []*ast.Symbol{} + } + return r.checker.getPropertiesOfType(r.checker.getTypeOfSymbol(s)) +} diff --git a/internal/checker/nodebuilder.go b/internal/checker/nodebuilder.go index 89d0d649f00..487cfe5e7ea 100644 --- a/internal/checker/nodebuilder.go +++ b/internal/checker/nodebuilder.go @@ -87,12 +87,7 @@ func (b *NodeBuilder) IndexInfoToIndexSignatureDeclaration(info *IndexInfo, encl func (b *NodeBuilder) SerializeReturnTypeForSignature(signatureDeclaration *ast.Node, enclosingDeclaration *ast.Node, flags nodebuilder.Flags, internalFlags nodebuilder.InternalFlags, tracker nodebuilder.SymbolTracker) *ast.Node { b.enterContext(enclosingDeclaration, flags, internalFlags, tracker) signature := b.impl.ch.getSignatureFromDeclaration(signatureDeclaration) - symbol := b.impl.ch.getSymbolOfDeclaration(signatureDeclaration) - returnType, ok := b.impl.ctx.enclosingSymbolTypes[ast.GetSymbolId(symbol)] - if !ok || returnType == nil { - returnType = b.impl.ch.instantiateType(b.impl.ch.getReturnTypeOfSignature(signature), b.impl.ctx.mapper) - } - return b.exitContext(b.impl.serializeInferredReturnTypeForSignature(signature, returnType)) + return b.exitContext(b.impl.serializeReturnTypeForSignature(signature)) } func (b *NodeBuilder) SerializeTypeParametersForSignature(signatureDeclaration *ast.Node, enclosingDeclaration *ast.Node, flags nodebuilder.Flags, internalFlags nodebuilder.InternalFlags, tracker nodebuilder.SymbolTracker) []*ast.Node { diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index 75999d86b18..5c3819002f2 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -1935,15 +1935,35 @@ func (b *NodeBuilderImpl) serializeReturnTypeForSignature(signature *Signature) } var returnTypeNode *ast.Node - returnType := b.ch.getReturnTypeOfSignature(signature) + var returnType *Type + if signature.declaration != nil && !ast.NodeIsSynthesized(signature.declaration) { + symbol := b.ch.getSymbolOfDeclaration(signature.declaration) + var ok bool + returnType, ok = b.ctx.enclosingSymbolTypes[ast.GetSymbolId(symbol)] + if !ok || returnType == nil { + returnType = b.ch.instantiateType(b.ch.getReturnTypeOfSignature(signature), b.ctx.mapper) + } + } else { + returnType = b.ch.getReturnTypeOfSignature(signature) + } if !(suppressAny && IsTypeAny(returnType)) { - // !!! IsolatedDeclaration support - // if signature.declaration != nil && !ast.NodeIsSynthesized(signature.declaration) { - // declarationSymbol := b.ch.getSymbolOfDeclaration(signature.declaration) - // restore := addSymbolTypeToContext(declarationSymbol, returnType) - // returnTypeNode = syntacticNodeBuilder.serializeReturnTypeForSignature(signature.declaration, declarationSymbol) - // restore() - // } + if signature.declaration != nil && !ast.NodeIsSynthesized(signature.declaration) { + declarationSymbol := b.ch.getSymbolOfDeclaration(signature.declaration) + restore := b.addSymbolTypeToContext(declarationSymbol, returnType) + pt := b.pc.GetReturnTypeOfSignature(signature.declaration) + annotated := b.pseudoTypeToType(pt) + if annotated == returnType || annotated != nil && b.ch.isErrorType(annotated) { + // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization + // see: canReuseTypeNodeAnnotation in strada for context + returnTypeNode = b.pseudoTypeToNode(pt) + } + if returnTypeNode == nil && !b.ctx.suppressReportInferenceFallback { + // !!! TODO: see psuedochecker.canGetTypeFromObjectLiteral - this isn't quite the same as strada, which reports errors within + // object types with more specific inference failures rather than at the top level + b.ctx.tracker.ReportInferenceFallback(signature.declaration) + } + restore() + } if returnTypeNode == nil { returnTypeNode = b.serializeInferredReturnTypeForSignature(signature, returnType) } @@ -2041,6 +2061,11 @@ func (b *NodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati // see: canReuseTypeNodeAnnotation in strada for context result = b.pseudoTypeToNode(pt) } + if result == nil && !b.ctx.suppressReportInferenceFallback { + // !!! TODO: see psuedochecker.canGetTypeFromObjectLiteral - this isn't quite the same as strada, which reports errors within + // object types with more specific inference failures rather than at the top level + b.ctx.tracker.ReportInferenceFallback(declaration) + } remove() } if result == nil { diff --git a/internal/printer/emitresolver.go b/internal/printer/emitresolver.go index 7c7b3a0cc5f..6c3787b8dfd 100644 --- a/internal/printer/emitresolver.go +++ b/internal/printer/emitresolver.go @@ -110,6 +110,9 @@ type EmitResolver interface { IsLateBound(node *ast.Node) bool IsOptionalParameter(node *ast.Node) bool + // isolatedDeclarations-specific declaration emit + GetPropertiesOfContainerFunction(node *ast.Node) []*ast.Symbol + // Node construction for declaration emit CreateTypeOfDeclaration(emitContext *EmitContext, declaration *ast.Node, enclosingDeclaration *ast.Node, flags nodebuilder.Flags, internalFlags nodebuilder.InternalFlags, tracker nodebuilder.SymbolTracker) *ast.Node CreateReturnTypeOfSignatureDeclaration(emitContext *EmitContext, signatureDeclaration *ast.Node, enclosingDeclaration *ast.Node, flags nodebuilder.Flags, internalFlags nodebuilder.InternalFlags, tracker nodebuilder.SymbolTracker) *ast.Node diff --git a/internal/transformers/declarations/diagnostics.go b/internal/transformers/declarations/diagnostics.go index cbb7d483175..0ee54660a51 100644 --- a/internal/transformers/declarations/diagnostics.go +++ b/internal/transformers/declarations/diagnostics.go @@ -4,6 +4,7 @@ import ( "github.com/microsoft/typescript-go/internal/ast" "github.com/microsoft/typescript-go/internal/diagnostics" "github.com/microsoft/typescript-go/internal/printer" + "github.com/microsoft/typescript-go/internal/scanner" ) type GetSymbolAccessibilityDiagnostic = func(symbolAccessibilityResult printer.SymbolAccessibilityResult) *SymbolAccessibilityDiagnostic @@ -448,4 +449,269 @@ func getTypeParameterConstraintVisibilityDiagnosticMessage(node *ast.Node, symbo } } -// !!! TODO isolatedDeclarations createGetIsolatedDeclarationErrors +func getRelatedSuggestionByDeclarationKind(kind ast.Kind) *diagnostics.Message { + switch kind { + case ast.KindArrowFunction: + return diagnostics.Add_a_return_type_to_the_function_expression + case ast.KindFunctionExpression: + return diagnostics.Add_a_return_type_to_the_function_expression + case ast.KindMethodDeclaration: + return diagnostics.Add_a_return_type_to_the_method + case ast.KindGetAccessor: + return diagnostics.Add_a_return_type_to_the_get_accessor_declaration + case ast.KindSetAccessor: + return diagnostics.Add_a_type_to_parameter_of_the_set_accessor_declaration + case ast.KindFunctionDeclaration: + return diagnostics.Add_a_return_type_to_the_function_declaration + case ast.KindConstructSignature: + return diagnostics.Add_a_return_type_to_the_function_declaration + case ast.KindParameter: + return diagnostics.Add_a_type_annotation_to_the_parameter_0 + case ast.KindVariableDeclaration: + return diagnostics.Add_a_type_annotation_to_the_variable_0 + case ast.KindPropertyDeclaration: + return diagnostics.Add_a_type_annotation_to_the_property_0 + case ast.KindPropertySignature: + return diagnostics.Add_a_type_annotation_to_the_property_0 + case ast.KindExportAssignment: + return diagnostics.Move_the_expression_in_default_export_to_a_variable_and_add_a_type_annotation_to_it + default: + return nil + } +} + +func getErrorByDeclarationKind(kind ast.Kind) *diagnostics.Message { + switch kind { + case ast.KindFunctionExpression: + return diagnostics.Function_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations + case ast.KindFunctionDeclaration: + return diagnostics.Function_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations + case ast.KindArrowFunction: + return diagnostics.Function_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations + case ast.KindMethodDeclaration: + return diagnostics.Method_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations + case ast.KindConstructSignature: + return diagnostics.Method_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations + case ast.KindGetAccessor: + return diagnostics.At_least_one_accessor_must_have_an_explicit_type_annotation_with_isolatedDeclarations + case ast.KindSetAccessor: + return diagnostics.At_least_one_accessor_must_have_an_explicit_type_annotation_with_isolatedDeclarations + case ast.KindParameter: + return diagnostics.Parameter_must_have_an_explicit_type_annotation_with_isolatedDeclarations + case ast.KindVariableDeclaration: + return diagnostics.Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations + case ast.KindPropertyDeclaration: + return diagnostics.Property_must_have_an_explicit_type_annotation_with_isolatedDeclarations + case ast.KindPropertySignature: + return diagnostics.Property_must_have_an_explicit_type_annotation_with_isolatedDeclarations + case ast.KindComputedPropertyName: + return diagnostics.Computed_property_names_on_class_or_object_literals_cannot_be_inferred_with_isolatedDeclarations + case ast.KindSpreadAssignment: + return diagnostics.Objects_that_contain_spread_assignments_can_t_be_inferred_with_isolatedDeclarations + case ast.KindShorthandPropertyAssignment: + return diagnostics.Objects_that_contain_shorthand_properties_can_t_be_inferred_with_isolatedDeclarations + case ast.KindArrayLiteralExpression: + return diagnostics.Only_const_arrays_can_be_inferred_with_isolatedDeclarations + case ast.KindExportAssignment: + return diagnostics.Default_exports_can_t_be_inferred_with_isolatedDeclarations + case ast.KindSpreadElement: + return diagnostics.Arrays_with_spread_elements_can_t_inferred_with_isolatedDeclarations + default: + return nil + } +} + +func isDeclarationEnoughForErrors(node *ast.Node) bool { + return ast.IsExportAssignment(node) || ast.IsStatement(node) || ast.IsVariableDeclaration(node) || ast.IsPropertyDeclaration(node) || ast.IsParameter(node) +} + +func isFunctionLikeAndNotConstructor(node *ast.Node) bool { + return ast.IsFunctionLikeDeclaration(node) && !ast.IsConstructorDeclaration(node) +} + +func findNearestDeclaration(node *ast.Node) *ast.Node { + result := ast.FindAncestor(node, isDeclarationEnoughForErrors) + if result == nil { + return nil + } + if ast.IsExportAssignment(result) { + return result + } + if ast.IsReturnStatement(result) { + return ast.FindAncestor(result, isFunctionLikeAndNotConstructor) + } + if ast.IsStatement(result) { + return nil + } + return result +} + +func createEntityInTypeNodeError(node *ast.Node) *ast.Diagnostic { + diag := createDiagnosticForNode(node, diagnostics.Type_containing_private_name_0_can_t_be_used_with_isolatedDeclarations, scanner.GetTextOfNode(node)) + addParentDeclarationRelatedInfo(node, diag) + return diag +} + +func addParentDeclarationRelatedInfo(node *ast.Node, diag *ast.Diagnostic) { + parentDeclaration := findNearestDeclaration(node) + if parentDeclaration == nil { + return + } + targetStr := "" + if !ast.IsExportAssignment(parentDeclaration) && parentDeclaration.Name() != nil { + targetStr = scanner.GetTextOfNode(parentDeclaration.Name()) + } + diag.AddRelatedInfo(createDiagnosticForNode(parentDeclaration, getRelatedSuggestionByDeclarationKind(parentDeclaration.Kind), targetStr)) +} + +func createAccessorTypeError(node *ast.Node) *ast.Diagnostic { + allDeclarations := ast.GetAllAccessorDeclarationsForDeclaration(node, node.Symbol().Declarations) + getAccessor := allDeclarations.GetAccessor + setAccessor := allDeclarations.SetAccessor + targetNode := node + if ast.IsSetAccessorDeclaration(node) && len(node.Parameters()) > 0 { + targetNode = node.Parameters()[0] + } + diag := createDiagnosticForNode(targetNode, getErrorByDeclarationKind(node.Kind)) + if setAccessor != nil { + diag.AddRelatedInfo(createDiagnosticForNode(setAccessor.AsNode(), getRelatedSuggestionByDeclarationKind(setAccessor.Kind))) + } + if getAccessor != nil { + diag.AddRelatedInfo(createDiagnosticForNode(getAccessor.AsNode(), getRelatedSuggestionByDeclarationKind(getAccessor.Kind))) + } + return diag +} + +func createObjectLiteralError(node *ast.Node) *ast.Diagnostic { + diag := createDiagnosticForNode(node, getErrorByDeclarationKind(node.Kind)) + addParentDeclarationRelatedInfo(node, diag) + return diag +} + +func createArrayLiteralError(node *ast.Node) *ast.Diagnostic { + diag := createDiagnosticForNode(node, getErrorByDeclarationKind(node.Kind)) + addParentDeclarationRelatedInfo(node, diag) + return diag +} + +func createReturnTypeError(node *ast.Node) *ast.Diagnostic { + diag := createDiagnosticForNode(node, getErrorByDeclarationKind(node.Kind)) + addParentDeclarationRelatedInfo(node, diag) + diag.AddRelatedInfo(createDiagnosticForNode(node, getRelatedSuggestionByDeclarationKind(node.Kind))) + return diag +} + +func createBindingElementError(node *ast.Node) *ast.Diagnostic { + return createDiagnosticForNode(node, diagnostics.Binding_elements_can_t_be_exported_directly_with_isolatedDeclarations) +} + +func createVariableOrPropertyError(node *ast.Node) *ast.Diagnostic { + diag := createDiagnosticForNode(node, getErrorByDeclarationKind(node.Kind)) + diag.AddRelatedInfo(createDiagnosticForNode(node, getRelatedSuggestionByDeclarationKind(node.Kind), scanner.GetTextOfNode(node.Name()))) + return diag +} + +func createExpressionError(node *ast.Node) *ast.Diagnostic { + return createExpressionErrorEx(node, nil) +} + +func createClassExpressionError(node *ast.Node) *ast.Diagnostic { + return createExpressionErrorEx(node, diagnostics.Inference_from_class_expressions_is_not_supported_with_isolatedDeclarations) +} + +func isParentForIDDIagnostic(node *ast.Node) ast.FindAncestorResult { + if ast.IsExportAssignment(node) { + return ast.FindAncestorTrue + } + if ast.IsStatement(node) { + return ast.FindAncestorQuit + } + return ast.ToFindAncestorResult(!ast.IsParenthesizedExpression(node) && !ast.IsAssertionExpression(node)) +} + +func createExpressionErrorEx(node *ast.Node, diagnosticMessage *diagnostics.Message) *ast.Diagnostic { + parentDeclaration := findNearestDeclaration(node) + if parentDeclaration == nil { + if diagnosticMessage == nil { + diagnosticMessage = diagnostics.Expression_type_can_t_be_inferred_with_isolatedDeclarations + } + return createDiagnosticForNode(node, diagnosticMessage) + } + + targetStr := "" + if !ast.IsExportAssignment(parentDeclaration) && parentDeclaration.Name() != nil { + targetStr = scanner.GetTextOfNode(parentDeclaration.Name()) + } + parent := ast.FindAncestorOrQuit(node.Parent, isParentForIDDIagnostic) + + if parentDeclaration == parent { + if diagnosticMessage == nil { + diagnosticMessage = getErrorByDeclarationKind(parentDeclaration.Kind) + } + diag := createDiagnosticForNode(node, diagnosticMessage) + diag.AddRelatedInfo(createDiagnosticForNode(parentDeclaration, getRelatedSuggestionByDeclarationKind(parentDeclaration.Kind), targetStr)) + return diag + } + if diagnosticMessage == nil { + diagnosticMessage = diagnostics.Expression_type_can_t_be_inferred_with_isolatedDeclarations + } + diag := createDiagnosticForNode(node, diagnosticMessage) + diag.AddRelatedInfo(createDiagnosticForNode(parentDeclaration, getRelatedSuggestionByDeclarationKind(parentDeclaration.Kind), targetStr)) + diag.AddRelatedInfo(createDiagnosticForNode(node, diagnostics.Add_satisfies_and_a_type_assertion_to_this_expression_satisfies_T_as_T_to_make_the_type_explicit)) + return diag +} + +func createGetIsolatedDeclarationErrors(resolver printer.EmitResolver) func(node *ast.Node) *ast.Diagnostic { + createParameterError := func(node *ast.Node) *ast.Diagnostic { + if ast.IsSetAccessorDeclaration(node.Parent) { + return createAccessorTypeError(node.Parent) + } + addUndefined := resolver.RequiresAddingImplicitUndefined(node, nil, nil) + if !addUndefined && node.Initializer() != nil { + return createExpressionError(node) + } + message := getErrorByDeclarationKind(node.Kind) + if addUndefined { + message = diagnostics.Declaration_emit_for_this_parameter_requires_implicitly_adding_undefined_to_its_type_This_is_not_supported_with_isolatedDeclarations + } + diag := createDiagnosticForNode(node, message) + targetStr := scanner.GetTextOfNode(node.Name()) + diag.AddRelatedInfo(createDiagnosticForNode(node, getRelatedSuggestionByDeclarationKind(node.Kind), targetStr)) + return diag + } + + return func(node *ast.Node) *ast.Diagnostic { + heritageClause := ast.FindAncestor(node, ast.IsHeritageClause) + if heritageClause != nil { + return createDiagnosticForNode(node, diagnostics.Extends_clause_can_t_contain_an_expression_with_isolatedDeclarations) + } + if ast.IsPartOfTypeNode(node) || ast.IsTypeQueryNode(node) { + return createEntityInTypeNodeError(node) + } + if ast.IsEntityName(node) || ast.IsEntityNameExpression(node) { + return createEntityInTypeNodeError(node) + } + switch node.Kind { + case ast.KindGetAccessor, ast.KindSetAccessor: + return createAccessorTypeError(node) + case ast.KindComputedPropertyName, ast.KindShorthandPropertyAssignment, ast.KindSpreadAssignment: + return createObjectLiteralError(node) + case ast.KindArrayLiteralExpression, ast.KindSpreadElement: + return createArrayLiteralError(node) + case ast.KindMethodDeclaration, ast.KindConstructSignature, ast.KindFunctionExpression, ast.KindArrowFunction, ast.KindFunctionDeclaration: + return createReturnTypeError(node) + case ast.KindBindingElement: + return createBindingElementError(node) + case ast.KindPropertyDeclaration, ast.KindVariableDeclaration: + return createVariableOrPropertyError(node) + case ast.KindParameter: + return createParameterError(node) + case ast.KindPropertyAssignment: + return createExpressionError(node.Initializer()) + case ast.KindClassExpression: + return createClassExpressionError(node) + default: + return createExpressionError(node) + } + } +} diff --git a/internal/transformers/declarations/tracker.go b/internal/transformers/declarations/tracker.go index 96be861fed4..164c5643e10 100644 --- a/internal/transformers/declarations/tracker.go +++ b/internal/transformers/declarations/tracker.go @@ -15,6 +15,8 @@ type SymbolTrackerImpl struct { state *SymbolTrackerSharedState host DeclarationEmitHost fallbackStack []*ast.Node + + getIsolatedDeclarationError func(node *ast.Node) *ast.Diagnostic } // GetModuleSpecifierGenerationHost implements checker.SymbolTracker. @@ -58,7 +60,7 @@ func (s *SymbolTrackerImpl) ReportInaccessibleUniqueSymbolError() { // ReportInferenceFallback implements checker.SymbolTracker. func (s *SymbolTrackerImpl) ReportInferenceFallback(node *ast.Node) { - if s.state.isolatedDeclarations || ast.IsSourceFileJS(s.state.currentSourceFile) { + if !s.state.isolatedDeclarations || ast.IsSourceFileJS(s.state.currentSourceFile) { return } if ast.GetSourceFileOfNode(node) != s.state.currentSourceFile { @@ -67,8 +69,7 @@ func (s *SymbolTrackerImpl) ReportInferenceFallback(node *ast.Node) { if ast.IsVariableDeclaration(node) && s.state.resolver.IsExpandoFunctionDeclaration(node) { s.state.reportExpandoFunctionErrors(node) } else { - // !!! isolatedDeclaration support - // s.state.addDiagnostic(getIsolatedDeclarationError(node)) + s.state.addDiagnostic(s.getIsolatedDeclarationError(node)) } } @@ -215,6 +216,6 @@ func (s *SymbolTrackerSharedState) addDiagnostic(diag *ast.Diagnostic) { } func NewSymbolTracker(host DeclarationEmitHost, resolver printer.EmitResolver, state *SymbolTrackerSharedState) *SymbolTrackerImpl { - tracker := &SymbolTrackerImpl{host: host, resolver: resolver, state: state} + tracker := &SymbolTrackerImpl{host: host, resolver: resolver, state: state, getIsolatedDeclarationError: createGetIsolatedDeclarationErrors(resolver)} return tracker } diff --git a/internal/transformers/declarations/transform.go b/internal/transformers/declarations/transform.go index dac29dbe380..17aa6b3d69e 100644 --- a/internal/transformers/declarations/transform.go +++ b/internal/transformers/declarations/transform.go @@ -81,6 +81,18 @@ func NewDeclarationTransformer(host DeclarationEmitHost, context *printer.EmitCo declarationFilePath: declarationFilePath, declarationMapPath: declarationMapPath, } + tx.state.reportExpandoFunctionErrors = func(node *ast.Node) { + props := resolver.GetPropertiesOfContainerFunction(node) + for _, p := range props { + if ast.IsExpandoPropertyDeclaration(p.ValueDeclaration) { + errorTarget := p.ValueDeclaration + if ast.IsBinaryExpression(errorTarget) { + errorTarget = errorTarget.AsBinaryExpression().Left + } + tx.state.addDiagnostic(createDiagnosticForNode(errorTarget, diagnostics.Assigning_properties_to_functions_without_declaring_them_is_not_supported_with_isolatedDeclarations_Add_an_explicit_declaration_for_the_properties_assigned_to_this_function)) + } + } + } tx.NewTransformer(tx.visit, context) return tx } @@ -462,13 +474,11 @@ func (tx *DeclarationTransformer) visitDeclarationSubtree(input *ast.Node) *ast. // In isolated declarations TSC needs to error on these as we don't know the type in a DTE. if !tx.resolver.IsDefinitelyReferenceToGlobalSymbolObject(input.Name().Expression()) { if ast.IsClassDeclaration(input.Parent) || ast.IsObjectLiteralExpression(input.Parent) { - // !!! TODO: isolatedDeclarations diagnostics - // context.addDiagnostic(createDiagnosticForNode(input, diagnostics.Computed_property_names_on_class_or_object_literals_cannot_be_inferred_with_isolatedDeclarations)) + tx.state.addDiagnostic(createDiagnosticForNode(input, diagnostics.Computed_property_names_on_class_or_object_literals_cannot_be_inferred_with_isolatedDeclarations)) return nil } else if (ast.IsInterfaceDeclaration(input.Parent) || ast.IsTypeLiteralNode(input.Parent)) && !ast.IsEntityNameExpression(input.Name().Expression()) { // Type declarations just need to double-check that the input computed name is an entity name expression - // !!! TODO: isolatedDeclarations diagnostics - // context.addDiagnostic(createDiagnosticForNode(input, diagnostics.Computed_properties_must_be_number_or_string_literals_variables_or_dotted_expressions_with_isolatedDeclarations)) + tx.state.addDiagnostic(createDiagnosticForNode(input, diagnostics.Computed_properties_must_be_number_or_string_literals_variables_or_dotted_expressions_with_isolatedDeclarations)) return nil } } @@ -1293,6 +1303,9 @@ func (tx *DeclarationTransformer) transformInterfaceDeclaration(input *ast.Inter } func (tx *DeclarationTransformer) transformFunctionDeclaration(input *ast.FunctionDeclaration) *ast.Node { + if tx.resolver.IsExpandoFunctionDeclaration(input.AsNode()) && tx.state.isolatedDeclarations { + tx.state.reportExpandoFunctionErrors(input.AsNode()) + } return tx.Factory().UpdateFunctionDeclaration( input, tx.ensureModifiers(input.AsNode()), @@ -1579,17 +1592,15 @@ func (tx *DeclarationTransformer) transformEnumDeclaration(input *ast.EnumDeclar return nil } - // !!! TODO: isolatedDeclarations support - // if ( - // isolatedDeclarations && m.initializer && enumValue?.hasExternalReferences && - // // This will be its own compiler error instead, so don't report. - // !isComputedPropertyName(m.name) - // ) { - // context.addDiagnostic(createDiagnosticForNode(m, Diagnostics.Enum_member_initializers_must_be_computable_without_references_to_external_symbols_with_isolatedDeclarations)); - // } - // Rewrite enum values to their constants, if available enumValue := tx.resolver.GetEnumMemberValue(m) + + if tx.state.isolatedDeclarations && input.Initializer() != nil && enumValue.HasExternalReferences && + // This will be its own compiler error instead, so don't report. + !ast.IsComputedPropertyName(m.Name()) { + tx.state.addDiagnostic(createDiagnosticForNode(m, diagnostics.Enum_member_initializers_must_be_computable_without_references_to_external_symbols_with_isolatedDeclarations)) + } + var newInitializer *ast.Node switch value := enumValue.Value.(type) { case jsnum.Number: @@ -1876,10 +1887,9 @@ func (tx *DeclarationTransformer) transformImportDeclaration(decl *ast.ImportDec } // Augmentation of export depends on import if tx.resolver.IsImportRequiredByAugmentation(decl) { - // IsolatedDeclarations support - // if (isolatedDeclarations) { - // context.addDiagnostic(createDiagnosticForNode(decl, Diagnostics.Declaration_emit_for_this_file_requires_preserving_this_import_for_augmentations_This_is_not_supported_with_isolatedDeclarations)); - // } + if tx.state.isolatedDeclarations { + tx.state.addDiagnostic(createDiagnosticForNode(decl.AsNode(), diagnostics.Declaration_emit_for_this_file_requires_preserving_this_import_for_augmentations_This_is_not_supported_with_isolatedDeclarations)) + } return tx.Factory().UpdateImportDeclaration( decl, decl.Modifiers(), From b9b9a8482985f735ba96ac70d4a85b7291493c5a Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Feb 2026 14:48:05 -0800 Subject: [PATCH 21/55] Add name serialize fallback for ID node reuse that handles renames --- internal/checker/nodebuilderimpl.go | 21 +++++++++++++++++++++ internal/checker/nodecopy.go | 12 ++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index 5c3819002f2..d22e3e849cb 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -313,6 +313,27 @@ func (b *NodeBuilderImpl) mapToTypeNodes(list []*Type, isBareList bool) *ast.Nod return b.f.NewNodeList(result) } +func (b *NodeBuilderImpl) serializeTypeName(node *ast.Node, isTypeOf bool, typeArguments *ast.NodeList) *ast.Node { + meaning := ast.SymbolFlagsType + if isTypeOf { + meaning = ast.SymbolFlagsValue + } + symbol := b.ch.resolveEntityName(node, meaning, true, true, node) + if symbol == nil { + return nil + } + + resolvedSymbol := symbol + if symbol.Flags&ast.SymbolFlagsAlias != 0 { + resolvedSymbol = b.ch.resolveAlias(symbol) + } + + if b.ch.IsSymbolAccessible(symbol, b.ctx.enclosingDeclaration, meaning, false).Accessibility != printer.SymbolAccessibilityAccessible { + return nil + } + return b.symbolToTypeNode(resolvedSymbol, meaning, typeArguments) +} + func isIdentifierTypeReference(node *ast.Node) bool { return ast.IsTypeReferenceNode(node) && ast.IsIdentifier(node.AsTypeReferenceNode().TypeName) } diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index 47da883d9fb..c3645e84a59 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -319,7 +319,11 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as ) } - // !!! serializeTypeName + serializedName := b.serializeTypeName(node.AsTypeQueryNode().ExprName, true, visitor.VisitNodes(node.AsTypeQueryNode().TypeArguments)) + if serializedName != nil { + serializedName.Loc = node.AsTypeQueryNode().ExprName.Loc + return serializedName + } return nil } tryVisitTypeReference := func(node *ast.Node) *ast.Node { @@ -346,7 +350,11 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as typeArguments, ) } else { - // !!! serializeTypeName + serializedName := b.serializeTypeName(node.AsTypeReferenceNode().TypeName, false, visitor.VisitNodes(node.AsTypeReferenceNode().TypeArguments)) + if serializedName != nil { + serializedName.Loc = node.AsTypeReferenceNode().TypeName.Loc + return serializedName + } return nil } } From bbbe0c6d4af127d0ce84bc6407c3330ff3888b44 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Feb 2026 15:05:59 -0800 Subject: [PATCH 22/55] Fix deadlock --- internal/checker/emitresolver.go | 8 ++++++++ internal/printer/emitresolver.go | 1 + internal/transformers/declarations/diagnostics.go | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/checker/emitresolver.go b/internal/checker/emitresolver.go index c8ae97d9985..c531f3f85e7 100644 --- a/internal/checker/emitresolver.go +++ b/internal/checker/emitresolver.go @@ -547,6 +547,14 @@ func (r *EmitResolver) RequiresAddingImplicitUndefined(declaration *ast.Node, sy return r.requiresAddingImplicitUndefined(declaration, symbol, enclosingDeclaration) } +func (r *EmitResolver) RequiresAddingImplicitUndefinedUnsafe(declaration *ast.Node, symbol *ast.Symbol, enclosingDeclaration *ast.Node) bool { + if !ast.IsParseTreeNode(declaration) { + return false + } + // NO LOCKING - only should be called in contexts that already have a checker lock + return r.requiresAddingImplicitUndefined(declaration, symbol, enclosingDeclaration) +} + func (r *EmitResolver) requiresAddingImplicitUndefined(declaration *ast.Node, symbol *ast.Symbol, enclosingDeclaration *ast.Node) bool { // node = r.emitContext.ParseNode(node) if !ast.IsParseTreeNode(declaration) { diff --git a/internal/printer/emitresolver.go b/internal/printer/emitresolver.go index 6c3787b8dfd..6a774ff8409 100644 --- a/internal/printer/emitresolver.go +++ b/internal/printer/emitresolver.go @@ -112,6 +112,7 @@ type EmitResolver interface { // isolatedDeclarations-specific declaration emit GetPropertiesOfContainerFunction(node *ast.Node) []*ast.Symbol + RequiresAddingImplicitUndefinedUnsafe(node *ast.Node, symbol *ast.Symbol, enclosingDeclaration *ast.Node) bool // Node construction for declaration emit CreateTypeOfDeclaration(emitContext *EmitContext, declaration *ast.Node, enclosingDeclaration *ast.Node, flags nodebuilder.Flags, internalFlags nodebuilder.InternalFlags, tracker nodebuilder.SymbolTracker) *ast.Node diff --git a/internal/transformers/declarations/diagnostics.go b/internal/transformers/declarations/diagnostics.go index 0ee54660a51..debd53c4b11 100644 --- a/internal/transformers/declarations/diagnostics.go +++ b/internal/transformers/declarations/diagnostics.go @@ -666,7 +666,7 @@ func createGetIsolatedDeclarationErrors(resolver printer.EmitResolver) func(node if ast.IsSetAccessorDeclaration(node.Parent) { return createAccessorTypeError(node.Parent) } - addUndefined := resolver.RequiresAddingImplicitUndefined(node, nil, nil) + addUndefined := resolver.RequiresAddingImplicitUndefinedUnsafe(node, nil, nil) // skip checker lock - node builder will already have one if !addUndefined && node.Initializer() != nil { return createExpressionError(node) } From ab4dda8d2f313f42448f306744eebcb45d076fe1 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Feb 2026 15:17:43 -0800 Subject: [PATCH 23/55] Fix enum declaration emit crash --- internal/transformers/declarations/transform.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/transformers/declarations/transform.go b/internal/transformers/declarations/transform.go index 17aa6b3d69e..7a19531338f 100644 --- a/internal/transformers/declarations/transform.go +++ b/internal/transformers/declarations/transform.go @@ -1595,7 +1595,7 @@ func (tx *DeclarationTransformer) transformEnumDeclaration(input *ast.EnumDeclar // Rewrite enum values to their constants, if available enumValue := tx.resolver.GetEnumMemberValue(m) - if tx.state.isolatedDeclarations && input.Initializer() != nil && enumValue.HasExternalReferences && + if tx.state.isolatedDeclarations && m.Initializer() != nil && enumValue.HasExternalReferences && // This will be its own compiler error instead, so don't report. !ast.IsComputedPropertyName(m.Name()) { tx.state.addDiagnostic(createDiagnosticForNode(m, diagnostics.Enum_member_initializers_must_be_computable_without_references_to_external_symbols_with_isolatedDeclarations)) From 661426dece718bf8b910577f42f1fb8ea1e67b23 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Feb 2026 15:37:05 -0800 Subject: [PATCH 24/55] And fix the data race caused by a missing lock call --- internal/checker/emitresolver.go | 8 +++++++- internal/printer/emitresolver.go | 1 + internal/transformers/declarations/tracker.go | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/checker/emitresolver.go b/internal/checker/emitresolver.go index c531f3f85e7..491180dfcc5 100644 --- a/internal/checker/emitresolver.go +++ b/internal/checker/emitresolver.go @@ -653,7 +653,7 @@ func (r *EmitResolver) IsLiteralConstDeclaration(node *ast.Node) bool { return false } -func (r *EmitResolver) IsExpandoFunctionDeclaration(node *ast.Node) bool { +func (r *EmitResolver) IsExpandoFunctionDeclarationUnsafe(node *ast.Node) bool { // node = r.emitContext.ParseNode(node) if !ast.IsParseTreeNode(node) { return false @@ -668,6 +668,12 @@ func (r *EmitResolver) IsExpandoFunctionDeclaration(node *ast.Node) bool { return false } +func (r *EmitResolver) IsExpandoFunctionDeclaration(node *ast.Node) bool { + r.checkerMu.Lock() + defer r.checkerMu.Unlock() + return r.IsExpandoFunctionDeclarationUnsafe(node) +} + func (r *EmitResolver) isSymbolAccessible(symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags, shouldComputeAliasToMarkVisible bool) printer.SymbolAccessibilityResult { return r.checker.IsSymbolAccessible(symbol, enclosingDeclaration, meaning, shouldComputeAliasToMarkVisible) } diff --git a/internal/printer/emitresolver.go b/internal/printer/emitresolver.go index 6a774ff8409..ad928e21be3 100644 --- a/internal/printer/emitresolver.go +++ b/internal/printer/emitresolver.go @@ -100,6 +100,7 @@ type EmitResolver interface { IsSymbolAccessible(symbol *ast.Symbol, enclosingDeclaration *ast.Node, meaning ast.SymbolFlags, shouldComputeAliasToMarkVisible bool) SymbolAccessibilityResult IsEntityNameVisible(entityName *ast.Node, enclosingDeclaration *ast.Node) SymbolAccessibilityResult // previously SymbolVisibilityResult in strada - ErrorModuleName never set IsExpandoFunctionDeclaration(node *ast.Node) bool + IsExpandoFunctionDeclarationUnsafe(node *ast.Node) bool IsLiteralConstDeclaration(node *ast.Node) bool RequiresAddingImplicitUndefined(node *ast.Node, symbol *ast.Symbol, enclosingDeclaration *ast.Node) bool IsDeclarationVisible(node *ast.Node) bool diff --git a/internal/transformers/declarations/tracker.go b/internal/transformers/declarations/tracker.go index 164c5643e10..f314a1109f1 100644 --- a/internal/transformers/declarations/tracker.go +++ b/internal/transformers/declarations/tracker.go @@ -66,7 +66,7 @@ func (s *SymbolTrackerImpl) ReportInferenceFallback(node *ast.Node) { if ast.GetSourceFileOfNode(node) != s.state.currentSourceFile { return // Nested error on a declaration in another file - ignore, will be reemitted if file is in the output file set } - if ast.IsVariableDeclaration(node) && s.state.resolver.IsExpandoFunctionDeclaration(node) { + if ast.IsVariableDeclaration(node) && s.state.resolver.IsExpandoFunctionDeclarationUnsafe(node) { // within a node builder call that should already lock the checker, use the unsafe call s.state.reportExpandoFunctionErrors(node) } else { s.state.addDiagnostic(s.getIsolatedDeclarationError(node)) From bcdae4630a8821a5c5af13e9db6cac58be7797f9 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Feb 2026 15:48:51 -0800 Subject: [PATCH 25/55] Fix printback of type predicates --- internal/checker/nodebuilderimpl.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index d22e3e849cb..6d759d24f14 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -1968,7 +1968,8 @@ func (b *NodeBuilderImpl) serializeReturnTypeForSignature(signature *Signature) returnType = b.ch.getReturnTypeOfSignature(signature) } if !(suppressAny && IsTypeAny(returnType)) { - if signature.declaration != nil && !ast.NodeIsSynthesized(signature.declaration) { + typePredicate := b.ch.getTypePredicateOfSignature(signature) + if typePredicate == nil && signature.declaration != nil && !ast.NodeIsSynthesized(signature.declaration) { declarationSymbol := b.ch.getSymbolOfDeclaration(signature.declaration) restore := b.addSymbolTypeToContext(declarationSymbol, returnType) pt := b.pc.GetReturnTypeOfSignature(signature.declaration) From c3623fc1a2467aa0d107005d6275a9300cb670b8 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 17 Feb 2026 10:55:05 -0800 Subject: [PATCH 26/55] Reintroduce missing symbol assignment logic that also handled type parameter renames --- internal/checker/nodecopy.go | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index c3645e84a59..ebb9e070ecd 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -227,6 +227,35 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as // TODO: wrap all these closures into methods on an object so we can guarantee we reuse the same memory on each invocation by reusing/resetting the object // instead of re-closing-over all of these each time we need a visitor. In theory the compiler could handle this, but in practice closure inlining hasn't been reliable var visitor *ast.NodeVisitor + // note: also handles renaming type parameters renamed within the current context + attachSymbolToLeftmostIdentifier := func(leftmost *ast.Node, node *ast.Node, sym *ast.Symbol) *ast.Node { + var visitor func(node *ast.Node) *ast.Node + visitor = func(node *ast.Node) *ast.Node { + if node == leftmost { + var type_ *Type + var name *ast.Node + if sym != nil { + type_ = b.ch.getDeclaredTypeOfSymbol(sym) + if sym.Flags&ast.SymbolFlagsTypeParameter != 0 { + name = b.typeParameterToName(type_).AsNode() + } + } + if name == nil { + name = node.Clone(b.f) + } + if name.DeclarationData() != nil { + name.DeclarationData().Symbol = sym // TODO: does this work? does quickinfo need this anymore? + } + name.Loc = node.Loc + b.e.AddEmitFlags(name, printer.EFNoAsciiEscaping) + return name + } + res := node.VisitEachChild(ast.NewNodeVisitor(visitor, b.f, ast.NodeVisitorHooks{})) + res.Loc = node.Loc + return res + } + return visitor(node) + } trackExistingEntityName := func(node *ast.Node, overrideEnclosing *ast.Node) (bool, *ast.Node, *ast.Symbol) { enclosingDeclaration := b.ctx.enclosingDeclaration if overrideEnclosing != nil { @@ -247,7 +276,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as introducesError = true b.ctx.tracker.ReportInaccessibleThisError() } - return introducesError, node, nil // TODO: attachSymbolToLeftmostIdentifier on `node` to smuggle symbols for quick info? + return introducesError, attachSymbolToLeftmostIdentifier(leftmost, node, sym), nil } sym = b.ch.resolveEntityName(leftmost, meaning, true, true, nil) if b.ctx.enclosingDeclaration != nil && !(sym != nil && sym.Flags&ast.SymbolFlagsTypeParameter != 0) { @@ -280,7 +309,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as // If a parameter is resolvable in the current context it is also visible, so no need to go to symbol accesibility if sym.Flags&ast.SymbolFlagsFunctionScopedVariable != 0 && sym.ValueDeclaration != nil { if ast.IsPartOfParameterDeclaration(sym.ValueDeclaration) || ast.IsJSDocParameterTag(sym.ValueDeclaration) { - return introducesError, node, nil // TODO: attachSymbolToLeftmostIdentifier on `node` to smuggle symbols for quick info? + return introducesError, attachSymbolToLeftmostIdentifier(leftmost, node, sym), nil } } if sym.Flags&ast.SymbolFlagsTypeParameter == 0 /* Type parameters are visible in the current context if they are are resolvable */ && !ast.IsDeclarationName(node) && @@ -290,7 +319,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as } else { b.ctx.tracker.TrackSymbol(sym, enclosingDeclaration, meaning) } - return introducesError, node, nil // TODO: attachSymbolToLeftmostIdentifier on `node` to smuggle symbols for quick info? + return introducesError, attachSymbolToLeftmostIdentifier(leftmost, node, sym), nil } return introducesError, node, nil } From 04e15d7ca6225d358879d7519cae6ca6081b5738 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 17 Feb 2026 11:17:35 -0800 Subject: [PATCH 27/55] Fix data race --- internal/checker/nodecopy.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index ebb9e070ecd..877b1e57e39 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -251,7 +251,9 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as return name } res := node.VisitEachChild(ast.NewNodeVisitor(visitor, b.f, ast.NodeVisitorHooks{})) - res.Loc = node.Loc + if res != node { + res.Loc = node.Loc + } return res } return visitor(node) From c15dc0ee552f38f1096627672d87aecab01cf24d Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 17 Feb 2026 12:21:39 -0800 Subject: [PATCH 28/55] Fix lint --- internal/pseudochecker/lookup.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 7943cfc326d..1b2e5c5c889 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -60,11 +60,11 @@ func (ch *PseudoChecker) GetTypeOfDeclaration(node *ast.Node) *PseudoType { // TODO: How much of the checker's getTypeFromPropertyDescriptor is worth trying to emulate over ASTs? case ast.JSDeclarationKindObjectDefinePropertyValue: { - + // !!! } case ast.JSDeclarationKindObjectDefinePropertyExports: { - + // !!! } } return NewPseudoTypeNoResult(node) From 6112272be469fbf3877be2fc300db7d72cafcd8b Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 17 Feb 2026 13:35:41 -0800 Subject: [PATCH 29/55] Fail object and tuple psuedo-types open, in lieu of proper validation, for now --- internal/checker/nodebuilder.go | 2 +- internal/checker/nodebuilderimpl.go | 12 +++++------- internal/checker/pseudotypenodebuilder.go | 19 ++++++++++++++++++- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/internal/checker/nodebuilder.go b/internal/checker/nodebuilder.go index 37bbe9baf08..a47e8601976 100644 --- a/internal/checker/nodebuilder.go +++ b/internal/checker/nodebuilder.go @@ -81,7 +81,7 @@ func (b *NodeBuilder) IndexInfoToIndexSignatureDeclaration(info *IndexInfo, encl func (b *NodeBuilder) SerializeReturnTypeForSignature(signatureDeclaration *ast.Node, enclosingDeclaration *ast.Node, flags nodebuilder.Flags, internalFlags nodebuilder.InternalFlags, tracker nodebuilder.SymbolTracker) *ast.Node { b.enterContext(enclosingDeclaration, flags, internalFlags, tracker) signature := b.impl.ch.getSignatureFromDeclaration(signatureDeclaration) - return b.exitContext(b.impl.serializeReturnTypeForSignature(signature)) + return b.exitContext(b.impl.serializeReturnTypeForSignature(signature, true)) } func (b *NodeBuilder) SerializeTypeParametersForSignature(signatureDeclaration *ast.Node, enclosingDeclaration *ast.Node, flags nodebuilder.Flags, internalFlags nodebuilder.InternalFlags, tracker nodebuilder.SymbolTracker) []*ast.Node { diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index 2f60d36d098..e1ec2d27be0 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -1754,7 +1754,7 @@ func (b *NodeBuilderImpl) signatureToSignatureDeclarationHelper(signature *Signa } restoreFlags() - returnTypeNode := b.serializeReturnTypeForSignature(signature) + returnTypeNode := b.serializeReturnTypeForSignature(signature, true) var modifiers []*ast.Node if options != nil { @@ -1949,7 +1949,7 @@ func (b *NodeBuilderImpl) tryGetThisParameterDeclaration(signature *Signature) * /** * Serializes the return type of the signature by first trying to use the syntactic printer if possible and falling back to the checker type if not. */ -func (b *NodeBuilderImpl) serializeReturnTypeForSignature(signature *Signature) *ast.Node { +func (b *NodeBuilderImpl) serializeReturnTypeForSignature(signature *Signature, tryReuse bool) *ast.Node { suppressAny := b.ctx.flags&nodebuilder.FlagsSuppressAnyReturnType != 0 restoreFlags := b.saveRestoreFlags() if suppressAny { @@ -1970,12 +1970,11 @@ func (b *NodeBuilderImpl) serializeReturnTypeForSignature(signature *Signature) } if !(suppressAny && IsTypeAny(returnType)) { typePredicate := b.ch.getTypePredicateOfSignature(signature) - if typePredicate == nil && signature.declaration != nil && !ast.NodeIsSynthesized(signature.declaration) { + if tryReuse && typePredicate == nil && signature.declaration != nil && !ast.NodeIsSynthesized(signature.declaration) { declarationSymbol := b.ch.getSymbolOfDeclaration(signature.declaration) restore := b.addSymbolTypeToContext(declarationSymbol, returnType) pt := b.pc.GetReturnTypeOfSignature(signature.declaration) - annotated := b.pseudoTypeToType(pt) - if annotated == returnType || annotated != nil && b.ch.isErrorType(annotated) { + if b.pseudoTypeEquivalentToType(pt, returnType) { // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization // see: canReuseTypeNodeAnnotation in strada for context returnTypeNode = b.pseudoTypeToNode(pt) @@ -2078,8 +2077,7 @@ func (b *NodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati } else { pt = b.pc.GetTypeOfDeclaration(declaration) } - annotated := b.pseudoTypeToType(pt) - if annotated == t || annotated != nil && b.ch.isErrorType(annotated) { + if b.pseudoTypeEquivalentToType(pt, t) { // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization // see: canReuseTypeNodeAnnotation in strada for context result = b.pseudoTypeToNode(pt) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index 7456ab3ddb1..5ab1549e12b 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -22,6 +22,9 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod case pseudochecker.PseudoTypeKindNoResult: node := t.AsPseudoTypeNoResult().Declaration b.ctx.tracker.ReportInferenceFallback(node) + if ast.IsFunctionLike(node) && !ast.IsAccessor(node) { + return b.serializeReturnTypeForSignature(b.ch.getSignatureFromDeclaration(node), false) + } return b.serializeTypeForDeclaration(node, nil, nil, false) case pseudochecker.PseudoTypeKindMaybeConstLocation: d := t.AsPseudoTypeMaybeConstLocation() @@ -168,7 +171,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod ) case pseudochecker.PseudoObjectElementKindGetAccessor: d := e.AsPseudoGetAccessor() - newProp = b.f.NewSetAccessorDeclaration( + newProp = b.f.NewGetAccessorDeclaration( nil, b.reuseNode(e.Name), nil, @@ -224,6 +227,20 @@ func (b *NodeBuilderImpl) pseudoParameterToNode(p *pseudochecker.PseudoParameter ) } +func (b *NodeBuilderImpl) pseudoTypeEquivalentToType(t *pseudochecker.PseudoType, type_ *Type) bool { + if type_ != nil && b.ch.isErrorType(type_) { + return true + } + typeFromPseudo := b.pseudoTypeToType(t) // note: cannot convert complex types like objects, which must be validated seperately + if typeFromPseudo == type_ { + return true + } + if t.Kind == pseudochecker.PseudoTypeKindObjectLiteral || t.Kind == pseudochecker.PseudoTypeKindTuple { + return true // !!! TODO: validate. This relies on the psuedochecker tossing out all complex literals with insufficient/incorrect annotations/assertions + } + return false +} + func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { // !!! TODO: only literal types currently mapped because this is only used to determine if literal contextual typing need apply to the pseudotype // If this is used more broadly, the implementation needs to be filled out more to handle the structural pseudotypes - signatures, objects, tuples, etc From 84fd0b4206b38c4a7bc076b9e767b41102c0ee91 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 17 Feb 2026 13:38:02 -0800 Subject: [PATCH 30/55] spelling --- internal/checker/pseudotypenodebuilder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index 5ab1549e12b..145fc738b71 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -231,7 +231,7 @@ func (b *NodeBuilderImpl) pseudoTypeEquivalentToType(t *pseudochecker.PseudoType if type_ != nil && b.ch.isErrorType(type_) { return true } - typeFromPseudo := b.pseudoTypeToType(t) // note: cannot convert complex types like objects, which must be validated seperately + typeFromPseudo := b.pseudoTypeToType(t) // note: cannot convert complex types like objects, which must be validated separately if typeFromPseudo == type_ { return true } From beb1fc09a76f2a64130233d29135ba194f126c1a Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 17 Feb 2026 14:20:48 -0800 Subject: [PATCH 31/55] Fix initializer const-checking --- internal/checker/pseudotypenodebuilder.go | 5 ++++- internal/pseudochecker/lookup.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index 145fc738b71..6de193a89f1 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -256,7 +256,10 @@ func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { return nil // TODO: extract type selection logic from `serializeTypeForDeclaration`, not needed for current usecases but needed if completeness becomes required case pseudochecker.PseudoTypeKindMaybeConstLocation: d := t.AsPseudoTypeMaybeConstLocation() - return b.pseudoTypeToType(d.ConstType) // !!! TODO: not needed for const-checking usecases, but proper context switching behavior required if completeness is required + if b.ch.isConstContext(d.Node) { + return b.pseudoTypeToType(d.ConstType) + } + return b.pseudoTypeToType(d.RegularType) case pseudochecker.PseudoTypeKindUnion: var res []*Type var hasElidedType bool diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 1b2e5c5c889..337c74a0ac0 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -518,7 +518,7 @@ func (ch *PseudoChecker) typeFromParameter(node *ast.ParameterDeclaration) *Pseu if declaredType != nil { return NewPseudoTypeDirect(declaredType) } - if node.Initializer != nil && ast.IsIdentifier(node.Name()) && !isContextuallyTyped(node.AsNode()) { + if node.Initializer != nil && ast.IsIdentifier(node.Name()) && !isContextuallyTyped(node.Parent.AsNode()) { return ch.typeFromExpression(node.Initializer) } // TODO: In strada, the ID checker doesn't infer a parameter type from binding pattern names, but the real checker _does_! From 6da6b7088fe1b910a2d2422158a1998022e209db Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Feb 2026 14:29:00 -0800 Subject: [PATCH 32/55] Firm up handling of optional parameters, strengthen pseudo-signature validation to match --- internal/ast/utilities.go | 9 +++ internal/checker/nodebuilderimpl.go | 16 +--- internal/checker/pseudotypenodebuilder.go | 99 ++++++++++++++++++++++- internal/pseudochecker/checker.go | 9 ++- internal/pseudochecker/lookup.go | 94 ++++++++++++++++++++- internal/pseudochecker/type.go | 4 +- 6 files changed, 206 insertions(+), 25 deletions(-) diff --git a/internal/ast/utilities.go b/internal/ast/utilities.go index 152af11cfad..77b35b03549 100644 --- a/internal/ast/utilities.go +++ b/internal/ast/utilities.go @@ -2946,6 +2946,15 @@ func HasInitializer(node *Node) bool { } } +func IsVariableParameterOrProperty(node *Node) bool { + switch node.Kind { + case KindVariableDeclaration, KindParameter, KindPropertySignature, KindPropertyDeclaration: + return true + default: + return false + } +} + func GetTypeAnnotationNode(node *Node) *TypeNode { switch node.Kind { case KindVariableDeclaration, KindParameter, KindPropertySignature, KindPropertyDeclaration, diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index e1ec2d27be0..74b17a458ff 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -117,7 +117,7 @@ func newNodeBuilderImpl(ch *Checker, e *printer.EmitContext, idToSymbol map[*ast if idToSymbol == nil { idToSymbol = make(map[*ast.IdentifierNode]*ast.Symbol) } - b := &NodeBuilderImpl{f: e.Factory.AsNodeFactory(), ch: ch, e: e, idToSymbol: idToSymbol, pc: pseudochecker.NewPseudoChecker()} + b := &NodeBuilderImpl{f: e.Factory.AsNodeFactory(), ch: ch, e: e, idToSymbol: idToSymbol, pc: pseudochecker.NewPseudoChecker(ch.strictNullChecks, ch.exactOptionalPropertyTypes)} b.cloneBindingNameVisitor = ast.NewNodeVisitor(b.cloneBindingName, b.f, ast.NodeVisitorHooks{}) return b } @@ -1974,16 +1974,11 @@ func (b *NodeBuilderImpl) serializeReturnTypeForSignature(signature *Signature, declarationSymbol := b.ch.getSymbolOfDeclaration(signature.declaration) restore := b.addSymbolTypeToContext(declarationSymbol, returnType) pt := b.pc.GetReturnTypeOfSignature(signature.declaration) - if b.pseudoTypeEquivalentToType(pt, returnType) { + if b.pseudoTypeEquivalentToType(pt, returnType, false, !b.ctx.suppressReportInferenceFallback) { // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization // see: canReuseTypeNodeAnnotation in strada for context returnTypeNode = b.pseudoTypeToNode(pt) } - if returnTypeNode == nil && !b.ctx.suppressReportInferenceFallback { - // !!! TODO: see psuedochecker.canGetTypeFromObjectLiteral - this isn't quite the same as strada, which reports errors within - // object types with more specific inference failures rather than at the top level - b.ctx.tracker.ReportInferenceFallback(signature.declaration) - } restore() } if returnTypeNode == nil { @@ -2077,16 +2072,11 @@ func (b *NodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati } else { pt = b.pc.GetTypeOfDeclaration(declaration) } - if b.pseudoTypeEquivalentToType(pt, t) { + if b.pseudoTypeEquivalentToType(pt, t, (ast.IsParameter(declaration) || ast.IsPropertySignatureDeclaration(declaration) || ast.IsPropertyDeclaration(declaration)) && isOptionalDeclaration(declaration), !b.ctx.suppressReportInferenceFallback) { // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization // see: canReuseTypeNodeAnnotation in strada for context result = b.pseudoTypeToNode(pt) } - if result == nil && !b.ctx.suppressReportInferenceFallback { - // !!! TODO: see psuedochecker.canGetTypeFromObjectLiteral - this isn't quite the same as strada, which reports errors within - // object types with more specific inference failures rather than at the top level - b.ctx.tracker.ReportInferenceFallback(declaration) - } remove() } if result == nil { diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index 6de193a89f1..ca9b0eb50f6 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -92,6 +92,10 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod return b.f.NewLiteralTypeNode(b.f.NewKeywordExpression(ast.KindTrueKeyword)) case pseudochecker.PseudoTypeKindSingleCallSignature: d := t.AsPseudoTypeSingleCallSignature() + signature := b.ch.getSignatureFromDeclaration(d.Signature) + expandedParams := b.ch.getExpandedParameters(signature, true /*skipUnionExpanding*/)[0] + cleanup := b.enterNewScope(d.Signature, expandedParams, signature.typeParameters, signature.parameters, signature.mapper) + defer cleanup() var typeParams *ast.NodeList if len(d.TypeParameters) > 0 { res := make([]*ast.Node, 0, len(d.TypeParameters)) @@ -227,18 +231,105 @@ func (b *NodeBuilderImpl) pseudoParameterToNode(p *pseudochecker.PseudoParameter ) } -func (b *NodeBuilderImpl) pseudoTypeEquivalentToType(t *pseudochecker.PseudoType, type_ *Type) bool { +// see `typeNodeIsEquivalentToType` in strada, but applied more broadly here, so is setup to handle more equivalences - strada only used it via +// the `canReuseTypeNodeAnnotation` host hook and not the `canReuseTypeNode` hook, which meant locations using the later were reliant on +// over-invalidation by the ID inference engine to not emit incorrect types. +func (b *NodeBuilderImpl) pseudoTypeEquivalentToType(t *pseudochecker.PseudoType, type_ *Type, isOptionalAnnotated bool, reportErrors bool) bool { + // if type_ resolves to an error, we charitably assume equality, since we might be in a single-file checking mode if type_ != nil && b.ch.isErrorType(type_) { return true } + // If we can easily operate on just types, we should typeFromPseudo := b.pseudoTypeToType(t) // note: cannot convert complex types like objects, which must be validated separately if typeFromPseudo == type_ { return true } - if t.Kind == pseudochecker.PseudoTypeKindObjectLiteral || t.Kind == pseudochecker.PseudoTypeKindTuple { - return true // !!! TODO: validate. This relies on the psuedochecker tossing out all complex literals with insufficient/incorrect annotations/assertions + if typeFromPseudo != nil && type_ != nil { + if isOptionalAnnotated { + undefinedStripped := b.ch.getTypeWithFacts(type_, TypeFactsNEUndefined) + if undefinedStripped == typeFromPseudo { + return true + } + if typeFromPseudo.flags&TypeFlagsUnion != 0 && undefinedStripped.flags&TypeFlagsUnion != 0 { + // does union comparison in general, since the unions may not be `==` identical due to aliasing and the like + if b.ch.compareTypesIdentical(typeFromPseudo, undefinedStripped) == TernaryTrue { + return true + } + } + } + if typeFromPseudo.flags&TypeFlagsUnion != 0 && type_.flags&TypeFlagsUnion != 0 { + // handles freshness and `undefined` variant mismatches among union members, plus union comparison in general, since the unions may not be `==` + // identical due to aliasing and the like + if b.ch.compareTypesIdentical(typeFromPseudo, type_) == TernaryTrue { + return true + } + } + } + // otherwise, fallback to actual pseudo/type cross-comparisons + switch t.Kind { + case pseudochecker.PseudoTypeKindObjectLiteral: + // !!! TODO: validate, don't assume the pseudochecker is being conservative + // pt := t.AsPseudoTypeObjectLiteral() + return true + case pseudochecker.PseudoTypeKindTuple: + // !!! TODO: validate, don't assume the pseudochecker is being conservative + // pt := t.AsPseudoTypeTuple() + return true + case pseudochecker.PseudoTypeKindSingleCallSignature: + targetSig := b.ch.getSingleCallSignature(type_) + if targetSig == nil { + return false + } + pt := t.AsPseudoTypeSingleCallSignature() + if len(targetSig.typeParameters) != len(pt.TypeParameters) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(pt.Signature) + } + return false + } + if len(targetSig.parameters) != len(pt.Parameters) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(pt.Signature) + } + return false // TODO: spread tuple params may mess with this check + } + for i, p := range pt.Parameters { + targetParam := targetSig.parameters[i] + if p.Optional != isOptionalDeclaration(targetParam.ValueDeclaration) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(p.Name.Parent) + } + return false + } + paramType := b.ch.getTypeOfParameter(targetParam) + if !b.pseudoTypeEquivalentToType(p.Type, paramType, p.Optional, false) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(p.Name.Parent) + } + return false + } + } + if b.ch.getTypePredicateOfSignature(targetSig) != nil { + return true + } + if !b.pseudoTypeEquivalentToType(pt.ReturnType, b.ch.getReturnTypeOfSignature(targetSig), false, reportErrors) { + // error reported within the return type + return false + } + return true + case pseudochecker.PseudoTypeKindNoResult: + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(t.AsPseudoTypeNoResult().Declaration) + } + return false + case pseudochecker.PseudoTypeKindInferred: + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(t.AsPseudoTypeInferred().Expression) + } + return false + default: + return false } - return false } func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { diff --git a/internal/pseudochecker/checker.go b/internal/pseudochecker/checker.go index 16904c8c582..b9baa07f40b 100644 --- a/internal/pseudochecker/checker.go +++ b/internal/pseudochecker/checker.go @@ -11,8 +11,11 @@ package pseudochecker // This is an area of active ~~feature-creep~~ development in ID output, prerequisite refactoring would include // extracting the `mergeSymbol` core checker logic into a reusable component. -type PseudoChecker struct{} +type PseudoChecker struct { + strictNullChecks bool + exactOptionalPropertyTypes bool +} -func NewPseudoChecker() *PseudoChecker { - return &PseudoChecker{} +func NewPseudoChecker(strictNullChecks bool, exactOptionalPropertyTypes bool) *PseudoChecker { + return &PseudoChecker{strictNullChecks: strictNullChecks, exactOptionalPropertyTypes: exactOptionalPropertyTypes} } diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 337c74a0ac0..70c050b4ed9 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -1,6 +1,8 @@ package pseudochecker import ( + "slices" + "github.com/microsoft/typescript-go/internal/ast" "github.com/microsoft/typescript-go/internal/core" "github.com/microsoft/typescript-go/internal/debug" @@ -489,6 +491,7 @@ func (ch *PseudoChecker) typeFromFunctionLikeExpression(node *ast.Node) *PseudoT typeParameters := ch.cloneTypeParameters(node.FunctionLikeData().TypeParameters) parameters := ch.cloneParameters(node.FunctionLikeData().Parameters) return NewPseudoTypeSingleCallSignature( + node, parameters, typeParameters, returnType, @@ -509,6 +512,75 @@ func (ch *PseudoChecker) cloneTypeParameters(nodes *ast.NodeList) []*ast.TypePar return result } +func isUndefinedPseudoType(t *PseudoType) bool { + return t.Kind == PseudoTypeKindUndefined || (t.Kind == PseudoTypeKindMaybeConstLocation && isUndefinedPseudoType(t.AsPseudoTypeMaybeConstLocation().ConstType)) +} + +func typeNodeCouldReferToUndefined(node *ast.Node) bool { + for node.Kind == ast.KindParenthesizedType { + node = node.AsParenthesizedTypeNode().Type + } + switch node.Kind { + // these types require symbolic/type resolution to know if they definitely do or do not refer to `undefined`, so might (or definitely do) + case ast.KindTypeReference, ast.KindIndexedAccessType, ast.KindTypeQuery, ast.KindOptionalType, ast.KindRestType, ast.KindImportType: + return true + case ast.KindIntersectionType: + // TODO: why is this not `core.Every`? strada treated unions and intersections the same, but logically every intersection member needs to contain a possible `undefined` + // for the result type to contain `undefined`. Likely a bug persisting from strada. + return core.Some(node.AsIntersectionTypeNode().Types.Nodes, typeNodeCouldReferToUndefined) + case ast.KindUnionType: + return core.Some(node.AsUnionTypeNode().Types.Nodes, typeNodeCouldReferToUndefined) + case ast.KindConditionalType: // suspect - should be treated as a union of both branches instead, likely a bug persisted from strada + return true + case ast.KindTypeOperator: // suspect - always refers to a subset of `string | number | symbol` for `keyof` or `symbol` for `unique` + return true + case ast.KindTypePredicate: // suspect - always refers to `never` or `boolean`, depending on kind - considered possibly-`undefined` referencing for strada compat + return true + default: // all keywords (why is `undefined` not excluded???), literal types, function-y types, array/tuple types, type literals, template types, this types + return false + } +} + +// see this as the inverse of `canAddUndefined` in `expressionToTypeNode` in strada +func couldAlreadyReferToUndefinedType(t *PseudoType) bool { + if t.Kind == PseudoTypeKindNoResult || t.Kind == PseudoTypeKindInferred || isUndefinedPseudoType(t) { + return true + } + if t.Kind == PseudoTypeKindMaybeConstLocation { + mc := t.AsPseudoTypeMaybeConstLocation() + return couldAlreadyReferToUndefinedType(mc.RegularType) // if we're even asking this question, it's not a `const` location + } + if t.Kind == PseudoTypeKindDirect { + // inspect the direct type node + node := t.AsPseudoTypeDirect().TypeNode + return typeNodeCouldReferToUndefined(node) + } + if t.Kind == PseudoTypeKindUnion { + return core.Some(t.AsPseudoTypeUnion().Types, couldAlreadyReferToUndefinedType) + } + return false +} + +func isOptionalInitializedOrRestParameter(node *ast.ParameterDeclarationNode) bool { + p := node.AsParameterDeclaration() + if p.DotDotDotToken != nil || p.Initializer != nil || p.QuestionToken != nil { + return true + } + return false +} + +func addUndefinedIfDefinitelyRequired(expr *PseudoType) *PseudoType { + // If `expr` doesn't already contain `| undefined` or a direct/inferred type that may contain `undefined`, add `| undefined` + // in Strada, this reached into the checker to see if `undefined` was necessary, using `isRequiredOptionalParameter` from the emit resolver, + // but that's not required on top of the syntactic checks to get the same behavior. (If we get the type wrong, it'll mismatch later and be discarded + // for an inference error since corsa actually validates that pseudotypes semantically match the inferred type the checker produces) + if couldAlreadyReferToUndefinedType(expr) { + return expr // will just error later, more like than not, unless the `undefined` is explicit in the pseudo + } + // Explicitly add an `| undefined` + return NewPseudoTypeUnion([]*PseudoType{expr, PseudoTypeUndefined}) +} + func (ch *PseudoChecker) typeFromParameter(node *ast.ParameterDeclaration) *PseudoType { parent := node.Parent if parent.Kind == ast.KindSetAccessor { @@ -518,8 +590,22 @@ func (ch *PseudoChecker) typeFromParameter(node *ast.ParameterDeclaration) *Pseu if declaredType != nil { return NewPseudoTypeDirect(declaredType) } - if node.Initializer != nil && ast.IsIdentifier(node.Name()) && !isContextuallyTyped(node.Parent.AsNode()) { - return ch.typeFromExpression(node.Initializer) + if node.Initializer != nil && ast.IsIdentifier(node.Name()) && !isContextuallyTyped(node.AsNode()) { + expr := ch.typeFromExpression(node.Initializer) + if !ch.strictNullChecks { + return expr + } + p := node.Parent.Parameters() + selfIdx := slices.Index(p, node.AsNode()) + if selfIdx == len(p)-1 { + return expr + } + // if there is a non-optional parameter after this one, a `| undefined` will need to explicitly be emitted on this parameter, if it's not already there + remainingParams := node.Parent.Parameters()[selfIdx+1:] + if core.Every(remainingParams, isOptionalInitializedOrRestParameter) { + return expr + } + return addUndefinedIfDefinitelyRequired(expr) } // TODO: In strada, the ID checker doesn't infer a parameter type from binding pattern names, but the real checker _does_! // This means ID won't let you write, say, `({elem}) => false` without an annotation, even though it's trivially of type @@ -553,8 +639,8 @@ func isContextuallyTyped(node *ast.Node) bool { if ast.IsCallExpression(n) { return true } - if ast.IsFunctionLikeDeclaration(n) { - return n.FunctionLikeData().Type != nil || n.FunctionLikeData().FullSignature != nil + if (ast.IsVariableParameterOrProperty(n) || ast.IsAssertionExpression(n)) && n.Type() != nil { + return true } return ast.IsJsxElement(n) || ast.IsJsxExpression(n) }) != nil diff --git a/internal/pseudochecker/type.go b/internal/pseudochecker/type.go index 75ff87efe11..b2d698e6d52 100644 --- a/internal/pseudochecker/type.go +++ b/internal/pseudochecker/type.go @@ -172,13 +172,15 @@ func NewPseudoParameter(isRest bool, name *ast.Node, isOptional bool, t *PseudoT // PseudoTypeSingleCallSignature represents an object type with a single call signature, like an arrow or function expression type PseudoTypeSingleCallSignature struct { PseudoTypeBase + Signature *ast.Node Parameters []*PseudoParameter TypeParameters []*ast.TypeParameterDeclaration ReturnType *PseudoType } -func NewPseudoTypeSingleCallSignature(parameters []*PseudoParameter, typeParameters []*ast.TypeParameterDeclaration, returnType *PseudoType) *PseudoType { +func NewPseudoTypeSingleCallSignature(signature *ast.Node, parameters []*PseudoParameter, typeParameters []*ast.TypeParameterDeclaration, returnType *PseudoType) *PseudoType { return newPseudoType(PseudoTypeKindSingleCallSignature, &PseudoTypeSingleCallSignature{ + Signature: signature, Parameters: parameters, TypeParameters: typeParameters, ReturnType: returnType, From bd0d04718e774421485a34a227a564b260c3145d Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Feb 2026 15:21:29 -0800 Subject: [PATCH 33/55] Add another missing name gen scope during pseudotype node building --- internal/checker/pseudotypenodebuilder.go | 6 +++++ internal/pseudochecker/lookup.go | 3 +++ internal/pseudochecker/type.go | 29 +++++++++++++++++++---- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index ca9b0eb50f6..240c6304b3a 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -141,6 +141,12 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod if isConst || (e.Kind == pseudochecker.PseudoObjectElementKindPropertyAssignment && e.AsPseudoPropertyAssignment().Readonly) { modifiers = b.f.NewModifierList([]*ast.Node{b.f.NewModifier(ast.KindReadonlyKeyword)}) } + if e.Kind != pseudochecker.PseudoObjectElementKindPropertyAssignment { + signature := b.ch.getSignatureFromDeclaration(e.Signature()) + expandedParams := b.ch.getExpandedParameters(signature, true /*skipUnionExpanding*/)[0] + cleanup := b.enterNewScope(e.Signature(), expandedParams, signature.typeParameters, signature.parameters, signature.mapper) + defer cleanup() + } var newProp *ast.Node switch e.Kind { case pseudochecker.PseudoObjectElementKindMethod: diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 70c050b4ed9..c849787676c 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -328,6 +328,7 @@ func (ch *PseudoChecker) typeFromObjectLiteral(node *ast.ObjectLiteralExpression )) } else { results = append(results, NewPseudoObjectMethod( + e, e.Name(), optional, ch.cloneParameters(e.ParameterList()), @@ -362,12 +363,14 @@ func (ch *PseudoChecker) getAccessorMember(accessor *ast.Node, name *ast.Node) * if ast.IsGetAccessorDeclaration(accessor) { return NewPseudoGetAccessor( + accessor, name, false, ch.typeFromAccessor(accessor), ) } else { return NewPseudoSetAccessor( + accessor, name, false, ch.cloneParameters(accessor.AsSetAccessorDeclaration().Parameters)[0], diff --git a/internal/pseudochecker/type.go b/internal/pseudochecker/type.go index b2d698e6d52..de2f75db2a2 100644 --- a/internal/pseudochecker/type.go +++ b/internal/pseudochecker/type.go @@ -216,6 +216,19 @@ type PseudoObjectElement struct { func (e *PseudoObjectElement) AsPseudoObjectElement() *PseudoObjectElement { return e } +func (e *PseudoObjectElement) Signature() *ast.Node { + switch e.Kind { + case PseudoObjectElementKindMethod: + return e.AsPseudoObjectMethod().Signature + case PseudoObjectElementKindSetAccessor: + return e.AsPseudoSetAccessor().Signature + case PseudoObjectElementKindGetAccessor: + return e.AsPseudoGetAccessor().Signature + default: + return nil + } +} + type PseudoObjectElementKind int8 const ( @@ -240,12 +253,14 @@ func newPseudoObjectElement(kind PseudoObjectElementKind, name *ast.Node, option type PseudoObjectMethod struct { PseudoObjectElement + Signature *ast.Node Parameters []*PseudoParameter ReturnType *PseudoType } -func NewPseudoObjectMethod(name *ast.Node, optional bool, parameters []*PseudoParameter, returnType *PseudoType) *PseudoObjectElement { +func NewPseudoObjectMethod(signature *ast.Node, name *ast.Node, optional bool, parameters []*PseudoParameter, returnType *PseudoType) *PseudoObjectElement { return newPseudoObjectElement(PseudoObjectElementKindMethod, name, optional, &PseudoObjectMethod{ + Signature: signature, Parameters: parameters, ReturnType: returnType, }) @@ -274,11 +289,13 @@ func (e *PseudoObjectElement) AsPseudoPropertyAssignment() *PseudoPropertyAssign type PseudoSetAccessor struct { PseudoObjectElement + Signature *ast.Node Parameter *PseudoParameter } -func NewPseudoSetAccessor(name *ast.Node, optional bool, p *PseudoParameter) *PseudoObjectElement { +func NewPseudoSetAccessor(signature *ast.Node, name *ast.Node, optional bool, p *PseudoParameter) *PseudoObjectElement { return newPseudoObjectElement(PseudoObjectElementKindSetAccessor, name, optional, &PseudoSetAccessor{ + Signature: signature, Parameter: p, }) } @@ -289,12 +306,14 @@ func (e *PseudoObjectElement) AsPseudoSetAccessor() *PseudoSetAccessor { type PseudoGetAccessor struct { PseudoObjectElement - Type *PseudoType + Signature *ast.Node + Type *PseudoType } -func NewPseudoGetAccessor(name *ast.Node, optional bool, t *PseudoType) *PseudoObjectElement { +func NewPseudoGetAccessor(signature *ast.Node, name *ast.Node, optional bool, t *PseudoType) *PseudoObjectElement { return newPseudoObjectElement(PseudoObjectElementKindGetAccessor, name, optional, &PseudoGetAccessor{ - Type: t, + Signature: signature, + Type: t, }) } From 942097a9baa7dc70de2aba7437f8b8c84772d0e6 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Mar 2026 15:42:35 -0700 Subject: [PATCH 34/55] readonly all pseudotuples --- internal/checker/pseudotypenodebuilder.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index 240c6304b3a..16601d1b1b5 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -113,12 +113,11 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod for _, e := range elements { res = append(res, b.pseudoTypeToNode(e)) } - // !!! TODO: pseudo-tuples are implicitly `readonly` since they originate from `as const` contexts - // but strada fails to add the `readonly` modifier to the generated node. We replicate that bug here. - // return b.f.NewTypeOperatorNode(ast.KindReadonlyKeyword, b.f.NewTupleTypeNode(b.f.NewNodeList(res))) + // pseudo-tuples are implicitly `readonly` since they originate from `as const` contexts + // but strada *sometimes* fails to add the `readonly` modifier to the generated node. result := b.f.NewTupleTypeNode(b.f.NewNodeList(res)) b.e.AddEmitFlags(result, printer.EFSingleLine) - return result + return b.f.NewTypeOperatorNode(ast.KindReadonlyKeyword, result) case pseudochecker.PseudoTypeKindObjectLiteral: elements := t.AsPseudoTypeObjectLiteral().Elements if len(elements) == 0 { From 9e32c4e18a429b21188385712be146d69a8eefaf Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Mar 2026 15:48:47 -0700 Subject: [PATCH 35/55] property-named-new handling --- internal/checker/nodecopy.go | 12 ++++++++++++ internal/checker/pseudotypenodebuilder.go | 11 +++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index c8eb5f6af84..c6f8af92a90 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -17,6 +17,18 @@ func (b *NodeBuilderImpl) reuseNode(node *ast.Node) *ast.Node { return b.tryReuseExistingNodeHelper(node) } +// a wrapper around `reuseNode` that handles renaming `new` to `"new"` so we don't accidentally emit constructor signatures when we don't mean to +func (b *NodeBuilderImpl) reuseName(node *ast.Node) *ast.Node { + res := b.reuseNode(node) + if res != nil && res.Kind == ast.KindIdentifier && node.AsIdentifier().Text == "new" { + str := b.f.NewStringLiteral("new", ast.TokenFlagsNone) + b.e.SetOriginal(str, res) + str.Loc = res.Loc + return str + } + return res +} + func (b *NodeBuilderImpl) reuseTypeNode(node *ast.Node) *ast.Node { if node == nil { return node diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index 16601d1b1b5..a6b71cee403 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -133,8 +133,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod // Just something to keep in mind if the ID checker keeps growing. isConst := b.ch.isConstContext(elements[0].Name) newElements := make([]*ast.Node, 0, len(elements)) - // TODO: strada's ID logic is piecemeal in `name` reuse validation - only methods remap `new` to `"new"` - // we should have a unified `reuseName` codepath that remaps keyword ID names to string literal names + for _, e := range elements { var modifiers *ast.ModifierList if isConst || (e.Kind == pseudochecker.PseudoObjectElementKindPropertyAssignment && e.AsPseudoPropertyAssignment().Readonly) { @@ -152,7 +151,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod d := e.AsPseudoObjectMethod() newProp = b.f.NewMethodSignatureDeclaration( modifiers, - b.reuseNode(e.Name), + b.reuseName(e.Name), nil, nil, b.pseudoParametersToNodeList(d.Parameters), @@ -162,7 +161,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod d := e.AsPseudoPropertyAssignment() newProp = b.f.NewPropertySignatureDeclaration( modifiers, - b.reuseNode(e.Name), + b.reuseName(e.Name), nil, b.pseudoTypeToNode(d.Type), nil, @@ -171,7 +170,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod d := e.AsPseudoSetAccessor() newProp = b.f.NewSetAccessorDeclaration( nil, - b.reuseNode(e.Name), + b.reuseName(e.Name), nil, b.f.NewNodeList([]*ast.Node{b.pseudoParameterToNode(d.Parameter)}), nil, @@ -182,7 +181,7 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod d := e.AsPseudoGetAccessor() newProp = b.f.NewGetAccessorDeclaration( nil, - b.reuseNode(e.Name), + b.reuseName(e.Name), nil, nil, b.pseudoTypeToNode(d.Type), From 31d4581fab17afbd44be29d022ef6640ccb7a6bc Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Mar 2026 16:15:02 -0700 Subject: [PATCH 36/55] Widening, optional param fixes --- internal/checker/pseudotypenodebuilder.go | 8 ++++++++ internal/pseudochecker/lookup.go | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index a6b71cee403..eb8f1cec9b5 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -17,6 +17,14 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod case pseudochecker.PseudoTypeKindInferred: node := t.AsPseudoTypeInferred().Expression b.ctx.tracker.ReportInferenceFallback(node) + if ast.IsDeclaration(node.Parent) { + // use symbol type from parent declaration to automatically handle expression type widening without duplicating logic + if ast.IsFunctionLike(node.Parent) && !ast.IsAccessor(node.Parent) { + return b.serializeReturnTypeForSignature(b.ch.getSignatureFromDeclaration(node.Parent), false) + } + return b.serializeTypeForDeclaration(node.Parent, nil, nil, false) + } + // Parent wasn't a declaration - likely a return expression stitched into a pseudotype. TODO: This probably still needs some kind of widening logic. ty := b.ch.getTypeOfExpression(node) return b.typeToTypeNode(ty) case pseudochecker.PseudoTypeKindNoResult: diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index c849787676c..298ad9e102b 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -629,7 +629,7 @@ func (ch *PseudoChecker) cloneParameters(nodes *ast.NodeList) []*PseudoParameter result = append(result, NewPseudoParameter( e.AsParameterDeclaration().DotDotDotToken != nil, e.Name(), - e.AsParameterDeclaration().QuestionToken != nil, + e.AsParameterDeclaration().QuestionToken != nil || e.AsParameterDeclaration().Initializer != nil, ch.typeFromParameter(e.AsParameterDeclaration()), )) } From cc5b66eabef63d3546f793d8a32688f8ac3fe788 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Mar 2026 16:36:56 -0700 Subject: [PATCH 37/55] Fix binding initializer leak --- internal/checker/pseudotypenodebuilder.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index eb8f1cec9b5..70797151708 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -236,7 +236,8 @@ func (b *NodeBuilderImpl) pseudoParameterToNode(p *pseudochecker.PseudoParameter return b.f.NewParameterDeclaration( nil, dotDotDot, - b.reuseNode(p.Name), + // matches strada behavior of always reserializing param names from scratch + b.parameterToParameterDeclarationName(p.Name.Parent.Symbol(), p.Name.Parent), questionMark, b.pseudoTypeToNode(p.Type), nil, From 2c330982701212922227e07a3bd216a781e9552e Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 11 Mar 2026 17:11:51 -0700 Subject: [PATCH 38/55] Slightly better id inferred fallback widening logic --- internal/checker/pseudotypenodebuilder.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index 70797151708..62ad4e956b4 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -17,14 +17,21 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod case pseudochecker.PseudoTypeKindInferred: node := t.AsPseudoTypeInferred().Expression b.ctx.tracker.ReportInferenceFallback(node) - if ast.IsDeclaration(node.Parent) { - // use symbol type from parent declaration to automatically handle expression type widening without duplicating logic - if ast.IsFunctionLike(node.Parent) && !ast.IsAccessor(node.Parent) { - return b.serializeReturnTypeForSignature(b.ch.getSignatureFromDeclaration(node.Parent), false) + // use symbol type from parent declaration to automatically handle expression type widening without duplicating logic + if ast.IsReturnStatement(node.Parent) { + enclosing := ast.GetContainingFunction(node) + if ast.IsAccessor(enclosing) { + return b.serializeTypeForDeclaration(enclosing, nil, nil, false) } + return b.serializeReturnTypeForSignature(b.ch.getSignatureFromDeclaration(enclosing), false) + } + if ast.IsArrowFunction(node.Parent) && node.Parent.AsArrowFunction().Body == node { + return b.serializeReturnTypeForSignature(b.ch.getSignatureFromDeclaration(node.Parent), false) + } + if ast.IsDeclaration(node.Parent) { return b.serializeTypeForDeclaration(node.Parent, nil, nil, false) } - // Parent wasn't a declaration - likely a return expression stitched into a pseudotype. TODO: This probably still needs some kind of widening logic. + // This might be effectively unreachable. If it's not, it may need more widening rules to mirror checker behavior for whatever expressions are serialized here ty := b.ch.getTypeOfExpression(node) return b.typeToTypeNode(ty) case pseudochecker.PseudoTypeKindNoResult: From 82142ae7d730f47c18d0d1ec4a28f2c2fc2b933f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 17 Mar 2026 07:45:28 -0700 Subject: [PATCH 39/55] Add missing tuple/object pseudotype comparisons, tighten up single call signature predicate case --- internal/checker/pseudotypenodebuilder.go | 189 +++++++++++++++++++++- 1 file changed, 181 insertions(+), 8 deletions(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index 62ad4e956b4..5277a4be5e3 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -288,12 +288,134 @@ func (b *NodeBuilderImpl) pseudoTypeEquivalentToType(t *pseudochecker.PseudoType // otherwise, fallback to actual pseudo/type cross-comparisons switch t.Kind { case pseudochecker.PseudoTypeKindObjectLiteral: - // !!! TODO: validate, don't assume the pseudochecker is being conservative - // pt := t.AsPseudoTypeObjectLiteral() + pt := t.AsPseudoTypeObjectLiteral() + if type_ == nil { + return false + } + targetProps := b.ch.getPropertiesOfType(type_) + if len(pt.Elements) != len(targetProps) { + // Property count mismatch; fail open if no error reporting needed, since the type may + // contain index signatures or other structural features the pseudo object can't represent. + // When reporting errors, we can't tell which element is wrong, so just bail. + return len(pt.Elements) <= len(targetProps) + } + for _, e := range pt.Elements { + var targetProp *ast.Symbol + elemSymbol := e.Name.Parent.Symbol() + if elemSymbol != nil { + targetProp = b.ch.getPropertyOfType(type_, elemSymbol.Name) + } + if targetProp == nil { + // Name lookup failed or returned no result; search target properties + // for one whose declaration name node matches the one we have + for _, prop := range targetProps { + if prop.ValueDeclaration != nil && prop.ValueDeclaration.Name() == e.Name { + targetProp = prop + break + } + } + if targetProp == nil { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(e.Name.Parent) + } + return false + } + } + targetIsOptional := targetProp.Flags&ast.SymbolFlagsOptional != 0 + if e.Optional != targetIsOptional { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(e.Name.Parent) + } + return false + } + propType := b.ch.getTypeOfSymbol(targetProp) + propType = b.ch.removeMissingType(propType, targetIsOptional) + switch e.Kind { + case pseudochecker.PseudoObjectElementKindPropertyAssignment: + d := e.AsPseudoPropertyAssignment() + if !b.pseudoTypeEquivalentToType(d.Type, propType, e.Optional, false) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(e.Name.Parent) + } + return false + } + case pseudochecker.PseudoObjectElementKindMethod: + d := e.AsPseudoObjectMethod() + targetSig := b.ch.getSingleCallSignature(propType) + if targetSig == nil { + // Target property type doesn't have a single call signature; can't validate + continue + } + if len(targetSig.parameters) != len(d.Parameters) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(e.Name.Parent) + } + return false + } + for i, p := range d.Parameters { + targetParam := targetSig.parameters[i] + paramType := b.ch.getTypeOfParameter(targetParam) + if !b.pseudoTypeEquivalentToType(p.Type, paramType, p.Optional, false) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(e.Name.Parent) + } + return false + } + } + targetPredicate := b.ch.getTypePredicateOfSignature(targetSig) + if targetPredicate != nil { + if !b.pseudoReturnTypeMatchesPredicate(d.ReturnType, targetPredicate) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(e.Name.Parent) + } + return false + } + } else if !b.pseudoTypeEquivalentToType(d.ReturnType, b.ch.getReturnTypeOfSignature(targetSig), false, false) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(e.Name.Parent) + } + return false + } + case pseudochecker.PseudoObjectElementKindGetAccessor: + d := e.AsPseudoGetAccessor() + if !b.pseudoTypeEquivalentToType(d.Type, propType, false, false) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(e.Name.Parent) + } + return false + } + case pseudochecker.PseudoObjectElementKindSetAccessor: + d := e.AsPseudoSetAccessor() + writeType := b.ch.getWriteTypeOfSymbol(targetProp) + if !b.pseudoTypeEquivalentToType(d.Parameter.Type, writeType, false, false) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(e.Name.Parent) + } + return false + } + } + } return true case pseudochecker.PseudoTypeKindTuple: - // !!! TODO: validate, don't assume the pseudochecker is being conservative - // pt := t.AsPseudoTypeTuple() + pt := t.AsPseudoTypeTuple() + if type_ == nil || !isTupleType(type_) { + return false + } + tupleTarget := type_.TargetTupleType() + // Pseudo-tuples come from `as const` array literals, so they only ever have required elements. + // If the target tuple has optional, rest, or variadic elements, the structures can't match. + if tupleTarget.combinedFlags&ElementFlagsNonRequired != 0 { + return false + } + elementTypes := b.ch.getTypeArguments(type_) + if len(pt.Elements) != len(elementTypes) { + return false + } + for i, elem := range pt.Elements { + if !b.pseudoTypeEquivalentToType(elem, elementTypes[i], false, reportErrors) { + return false + } + } return true case pseudochecker.PseudoTypeKindSingleCallSignature: targetSig := b.ch.getSingleCallSignature(type_) @@ -329,10 +451,15 @@ func (b *NodeBuilderImpl) pseudoTypeEquivalentToType(t *pseudochecker.PseudoType return false } } - if b.ch.getTypePredicateOfSignature(targetSig) != nil { - return true - } - if !b.pseudoTypeEquivalentToType(pt.ReturnType, b.ch.getReturnTypeOfSignature(targetSig), false, reportErrors) { + targetPredicate := b.ch.getTypePredicateOfSignature(targetSig) + if targetPredicate != nil { + if !b.pseudoReturnTypeMatchesPredicate(pt.ReturnType, targetPredicate) { + if reportErrors { + b.ctx.tracker.ReportInferenceFallback(pt.Signature) + } + return false + } + } else if !b.pseudoTypeEquivalentToType(pt.ReturnType, b.ch.getReturnTypeOfSignature(targetSig), false, reportErrors) { // error reported within the return type return false } @@ -352,6 +479,52 @@ func (b *NodeBuilderImpl) pseudoTypeEquivalentToType(t *pseudochecker.PseudoType } } +// pseudoReturnTypeMatchesPredicate checks if a pseudo return type (which should be a Direct type +// wrapping a TypePredicateNode) matches the given type predicate from the checker. +func (b *NodeBuilderImpl) pseudoReturnTypeMatchesPredicate(rt *pseudochecker.PseudoType, predicate *TypePredicate) bool { + if rt.Kind != pseudochecker.PseudoTypeKindDirect { + return false + } + node := rt.AsPseudoTypeDirect().TypeNode + if !ast.IsTypePredicateNode(node) { + return false + } + tp := node.AsTypePredicateNode() + // Check asserts modifier matches + isAsserts := tp.AssertsModifier != nil + predicateIsAsserts := predicate.kind == TypePredicateKindAssertsThis || predicate.kind == TypePredicateKindAssertsIdentifier + if isAsserts != predicateIsAsserts { + return false + } + // Check this vs identifier matches + isThis := ast.IsThisTypeNode(tp.ParameterName) + predicateIsThis := predicate.kind == TypePredicateKindThis || predicate.kind == TypePredicateKindAssertsThis + if isThis != predicateIsThis { + return false + } + // For identifier predicates, check parameter name matches + if !isThis { + if tp.ParameterName.Text() != predicate.parameterName { + return false + } + } + // Check the narrowed type, if any + if predicate.t != nil { + if tp.Type == nil { + return false + } + predicateTypeFromNode := b.ch.getTypeFromTypeNode(tp.Type) + if predicateTypeFromNode != predicate.t { + if b.ch.compareTypesIdentical(predicateTypeFromNode, predicate.t) != TernaryTrue { + return false + } + } + } else if tp.Type != nil { + return false + } + return true +} + func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { // !!! TODO: only literal types currently mapped because this is only used to determine if literal contextual typing need apply to the pseudotype // If this is used more broadly, the implementation needs to be filled out more to handle the structural pseudotypes - signatures, objects, tuples, etc From bcb6ee5e62cb80aa91b4fdbd9267a4733dd1ee57 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 17 Mar 2026 09:38:11 -0700 Subject: [PATCH 40/55] Fail closed instead of open on prop count mismatch, handle accessors better --- internal/checker/pseudotypenodebuilder.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index 5277a4be5e3..e270e145cd6 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -293,11 +293,14 @@ func (b *NodeBuilderImpl) pseudoTypeEquivalentToType(t *pseudochecker.PseudoType return false } targetProps := b.ch.getPropertiesOfType(type_) - if len(pt.Elements) != len(targetProps) { - // Property count mismatch; fail open if no error reporting needed, since the type may - // contain index signatures or other structural features the pseudo object can't represent. - // When reporting errors, we can't tell which element is wrong, so just bail. - return len(pt.Elements) <= len(targetProps) + // Count total declarations across all target prop symbols to handle getter/setter pairs, + // which are two elements in pt.Elements but only one symbol in targetProps. + targetDeclCount := 0 + for _, prop := range targetProps { + targetDeclCount += len(prop.Declarations) + } + if len(pt.Elements) != targetDeclCount { + return false } for _, e := range pt.Elements { var targetProp *ast.Symbol From efa794330b825cab1f9dca538e13c966401ac9e1 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 17 Mar 2026 11:48:59 -0700 Subject: [PATCH 41/55] Use ID syntactic check when rechecking const contexts during node building to work around inconsistent contextual type generation in inference contexts --- internal/checker/pseudotypenodebuilder.go | 6 +++++- internal/pseudochecker/lookup.go | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index e270e145cd6..c63f76ef871 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -46,7 +46,11 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod // see checkExpressionWithContextualType for general literal widening rules which need to be emulated here, plus // checkTemplateLiteralExpression for template literal widening rules if the pseudochecker ever supports literalized templates isInConstContext := b.ch.isConstContext(d.Node) - if !isInConstContext { + if !isInConstContext && pseudochecker.IsInConstContext(d.Node) { + // Only consult the contextual type if the pseudochecker's syntactic check also puts us in a const context. + // getContextualType returns post-inference results at node-printing time which may not have existed + // during initial checking (e.g. when the contextual type depends on inference), causing incorrect + // literal type preservation. contextualType := b.ch.getContextualType(d.Node, ContextFlagsNone) t := b.pseudoTypeToType(d.ConstType) if t != nil && b.ch.isLiteralOfContextualType(t, b.ch.instantiateContextualType(contextualType, d.Node, ContextFlagsNone)) { diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 298ad9e102b..fa04fcf8ae6 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -438,7 +438,7 @@ func (ch *PseudoChecker) typeFromArrayLiteral(node *ast.ArrayLiteralExpression) } func (ch *PseudoChecker) canGetTypeFromArrayLiteral(node *ast.ArrayLiteralExpression) bool { - if !ch.isInConstContext(node.AsNode()) { + if !IsInConstContext(node.AsNode()) { return false } for _, e := range node.Elements.Nodes { @@ -449,9 +449,9 @@ func (ch *PseudoChecker) canGetTypeFromArrayLiteral(node *ast.ArrayLiteralExpres return true } -// Traverses up the parent chain to determine if the node is within a const context without needing any +// IsInConstContext traverses up the parent chain to determine if the node is within a const context without needing any // persistent traversal scope tracking (which could be unreliable in the presence of `typeof` queries anyway!) -func (ch *PseudoChecker) isInConstContext(node *ast.Node) bool { +func IsInConstContext(node *ast.Node) bool { // An expression is in a const context if an ancestor is a const type maybeAssertion expression maybeAssertion := ast.FindAncestor( node, From 949fe28c70441f8bbecfe848e3a63c5589fbd23d Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Mar 2026 13:40:46 -0700 Subject: [PATCH 42/55] Fix | undefined addition for param props --- internal/checker/nodebuilderimpl.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index ecad51f5b7d..16ece40c3af 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -2053,7 +2053,8 @@ func (b *NodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati } // !!! TODO: JSDoc, getEmitResolver call is unfortunate layering for the helper - hoist it into checker - addUndefinedForParameter := declaration != nil && (ast.IsParameter(declaration) /*|| ast.IsJSDocParameterTag(declaration)*/) && b.ch.GetEmitResolver().requiresAddingImplicitUndefined(declaration, symbol, b.ctx.enclosingDeclaration) + requiresAddingUndefined := declaration != nil && (ast.IsParameter(declaration) || ast.IsPropertySignatureDeclaration(declaration) || ast.IsPropertyDeclaration(declaration)) && b.ch.GetEmitResolver().requiresAddingImplicitUndefined(declaration, symbol, b.ctx.enclosingDeclaration) + addUndefinedForParameter := requiresAddingUndefined && (ast.IsParameter(declaration) /*|| ast.IsJSDocParameterTag(declaration)*/) if addUndefinedForParameter { t = b.ch.getOptionalType(t, false) } @@ -2074,10 +2075,15 @@ func (b *NodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati } else { pt = b.pc.GetTypeOfDeclaration(declaration) } - if b.pseudoTypeEquivalentToType(pt, t, (ast.IsParameter(declaration) || ast.IsPropertySignatureDeclaration(declaration) || ast.IsPropertyDeclaration(declaration)) && isOptionalDeclaration(declaration), !b.ctx.suppressReportInferenceFallback) { + if b.pseudoTypeEquivalentToType(pt, t, !requiresAddingUndefined && (ast.IsParameter(declaration) || ast.IsPropertySignatureDeclaration(declaration) || ast.IsPropertyDeclaration(declaration)) && isOptionalDeclaration(declaration), !b.ctx.suppressReportInferenceFallback) { // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization // see: canReuseTypeNodeAnnotation in strada for context result = b.pseudoTypeToNode(pt) + } else if requiresAddingUndefined { + pt = pseudochecker.NewPseudoTypeUnion([]*pseudochecker.PseudoType{pt, pseudochecker.PseudoTypeUndefined}) + if b.pseudoTypeEquivalentToType(pt, t, false, !b.ctx.suppressReportInferenceFallback) { + result = b.pseudoTypeToNode(pt) + } } remove() } From 4585f65adff8908e24c2493fde6b412aaf05b31d Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Mar 2026 13:47:43 -0700 Subject: [PATCH 43/55] Fix bad merge --- internal/checker/nodecopy.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index c6f8af92a90..b4a7cfc0c5b 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -508,6 +508,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as visitor.VisitModifiers(node.Modifiers()), newName, visitor.VisitNode(node.AsTypeParameter().Constraint), + visitor.VisitNode(node.AsTypeParameter().Expression), visitor.VisitNode(node.AsTypeParameter().DefaultType), ) } From 2bb2b079e8b44b047fa490e0a641d7953fdfb770 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Mar 2026 14:12:13 -0700 Subject: [PATCH 44/55] Fix | undefined addition for ? initialized props --- internal/pseudochecker/lookup.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index fa04fcf8ae6..65edcdea625 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -115,6 +115,10 @@ func (ch *PseudoChecker) typeFromProperty(node *ast.Node) *PseudoType { if init != nil && !isContextuallyTyped(node) { expr := ch.typeFromExpression(init) if expr != nil && expr.Kind != PseudoTypeKindInferred { + if expr.Kind != PseudoTypeKindDirect && node.AsPropertyDeclaration().PostfixToken != nil && node.AsPropertyDeclaration().PostfixToken.Kind == ast.KindQuestionToken { + // type comes from the initializer expression on a property with a `?` - add `| undefined` to the type + return addUndefinedIfDefinitelyRequired(expr) + } return expr } // fallback to NoResult if PseudoTypeKindInferred From f02170622717879da48dc2afced1244a9fa6cf51 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Mar 2026 15:22:43 -0700 Subject: [PATCH 45/55] PR feedback - two noops and one improvement to node reuse by using regular literal types where possible --- internal/checker/pseudotypenodebuilder.go | 18 ++++++++++++++++-- internal/pseudochecker/lookup.go | 4 ++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index c63f76ef871..b1e7bb9434a 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -168,6 +168,20 @@ func (b *NodeBuilderImpl) pseudoTypeToNode(t *pseudochecker.PseudoType) *ast.Nod switch e.Kind { case pseudochecker.PseudoObjectElementKindMethod: d := e.AsPseudoObjectMethod() + if isConst { + newProp = b.f.NewPropertySignatureDeclaration( + modifiers, + b.reuseName(e.Name), + nil, + b.f.NewFunctionTypeNode( + nil, + b.pseudoParametersToNodeList(d.Parameters), + b.pseudoTypeToNode(d.ReturnType), + ), + nil, + ) + break + } newProp = b.f.NewMethodSignatureDeclaration( modifiers, b.reuseName(e.Name), @@ -541,7 +555,7 @@ func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { return b.ch.getTypeFromTypeNode(t.AsPseudoTypeDirect().TypeNode) case pseudochecker.PseudoTypeKindInferred: node := t.AsPseudoTypeInferred().Expression - ty := b.ch.getTypeOfExpression(node) + ty := b.ch.getWidenedType(b.ch.getRegularTypeOfExpression(node)) return ty case pseudochecker.PseudoTypeKindNoResult: return nil // TODO: extract type selection logic from `serializeTypeForDeclaration`, not needed for current usecases but needed if completeness becomes required @@ -598,7 +612,7 @@ func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { return b.ch.trueType case pseudochecker.PseudoTypeKindStringLiteral, pseudochecker.PseudoTypeKindNumericLiteral, pseudochecker.PseudoTypeKindBigIntLiteral: source := t.AsPseudoTypeLiteral().Node - return b.ch.getTypeOfExpression(source) // big shortcut, uses cached expression types where possible + return b.ch.getWidenedType(b.ch.getRegularTypeOfExpression(source)) // big shortcut, uses cached expression types where possible default: return nil } diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 65edcdea625..a1378adffed 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -460,8 +460,8 @@ func IsInConstContext(node *ast.Node) bool { maybeAssertion := ast.FindAncestor( node, func(n *ast.Node) bool { - // stop traversing up at assertions, new scopes, and anything not an expression - they're contextual barriers - return ast.IsAssertionExpression(n) || ast.IsFunctionLike(n) || !ast.IsExpressionNode(n) + // stop traversing at assertions or anything not an array/object literal, since only those create or transfer const-ness + return ast.IsAssertionExpression(n) || !(ast.IsArrayLiteralExpression(n) || ast.IsObjectLiteralExpression(n) || ast.IsParenthesizedExpression(n)) }, ) return ast.IsConstAssertion(maybeAssertion) From d5bb5556992b061d7b490e48ece4a87f320783c6 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Mar 2026 15:36:33 -0700 Subject: [PATCH 46/55] Elide + prefix on literals --- internal/pseudochecker/lookup.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index a1378adffed..4811abff7db 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -468,12 +468,16 @@ func IsInConstContext(node *ast.Node) bool { } func (ch *PseudoChecker) typeFromPrimitiveLiteralPrefix(node *ast.PrefixUnaryExpression) *PseudoType { + expr := node.AsNode() + if node.Operator == ast.KindPlusToken { + expr = node.Operand + } inner := node.Operand if inner.Kind == ast.KindBigIntLiteral { - return NewPseudoTypeMaybeConstLocation(node.AsNode(), NewPseudoTypeBigIntLiteral(node.AsNode()), PseudoTypeBigInt) + return NewPseudoTypeMaybeConstLocation(node.AsNode(), NewPseudoTypeBigIntLiteral(expr.AsNode()), PseudoTypeBigInt) } if inner.Kind == ast.KindNumericLiteral { - return NewPseudoTypeMaybeConstLocation(node.AsNode(), NewPseudoTypeNumericLiteral(node.AsNode()), PseudoTypeNumber) + return NewPseudoTypeMaybeConstLocation(node.AsNode(), NewPseudoTypeNumericLiteral(expr.AsNode()), PseudoTypeNumber) } debug.FailBadSyntaxKind(inner) return nil From 75de5b0430d21456be4720263d9437fe1ce3c5f0 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Mar 2026 15:45:54 -0700 Subject: [PATCH 47/55] Add a debug fail --- internal/checker/pseudotypenodebuilder.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index b1e7bb9434a..bffeb73f299 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -613,7 +613,10 @@ func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { case pseudochecker.PseudoTypeKindStringLiteral, pseudochecker.PseudoTypeKindNumericLiteral, pseudochecker.PseudoTypeKindBigIntLiteral: source := t.AsPseudoTypeLiteral().Node return b.ch.getWidenedType(b.ch.getRegularTypeOfExpression(source)) // big shortcut, uses cached expression types where possible + case pseudochecker.PseudoTypeKindObjectLiteral, pseudochecker.PseudoTypeKindSingleCallSignature, pseudochecker.PseudoTypeKindTuple: + return nil // no simple mapping to a type, since these are structural types default: + debug.Fail("Unhandled pseudochecker.PseudoTypeKind in pseudoTypeToType") return nil } } From a4317dbf2790714aeb808deaa65cf3197aea0e1c Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Mar 2026 19:00:32 -0700 Subject: [PATCH 48/55] Fix inlay hints locations --- internal/checker/nodebuilderimpl.go | 7 ++- internal/checker/nodecopy.go | 84 +++++++++++++++++------------ 2 files changed, 56 insertions(+), 35 deletions(-) diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index 16ece40c3af..c7fb2e42c53 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -1281,7 +1281,8 @@ func (b *NodeBuilderImpl) setTextRange(range_ *ast.Node, location *ast.Node) *as } if !ast.NodeIsSynthesized(range_) || (range_.Flags&ast.NodeFlagsSynthesized == 0) || b.ctx.enclosingFile == nil || b.ctx.enclosingFile != ast.GetSourceFileOfNode(b.e.MostOriginal(range_)) { original := range_ - range_ = b.f.DeepCloneNode(range_) // if `range` is synthesized or originates in another file, copy it so it definitely has synthetic positions, deep clone so inner nodes have positions stripped + range_ = range_.Clone(b.f) // if `range` is synthesized or originates in another file, copy it so it definitely has synthetic positions + range_.Loc = core.NewTextRange(-1, -1) if symbol, ok := b.idToSymbol[original]; ok { b.idToSymbol[range_] = symbol } @@ -1299,9 +1300,11 @@ func (b *NodeBuilderImpl) setTextRange(range_ *ast.Node, location *ast.Node) *as } // only set positions if range comes from the same file since copying text across files isn't supported by the emitter - if b.ctx.enclosingFile != nil && b.ctx.enclosingFile == ast.GetSourceFileOfNode(b.e.MostOriginal(range_)) { + if b.ctx.enclosingFile != nil && b.ctx.enclosingFile == ast.GetSourceFileOfNode(b.e.MostOriginal(location)) { range_.Loc = location.Loc return range_ + } else { + range_.Loc = core.NewTextRange(-1, -1) } return range_ } diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index b4a7cfc0c5b..70819b083e7 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -23,8 +23,7 @@ func (b *NodeBuilderImpl) reuseName(node *ast.Node) *ast.Node { if res != nil && res.Kind == ast.KindIdentifier && node.AsIdentifier().Text == "new" { str := b.f.NewStringLiteral("new", ast.TokenFlagsNone) b.e.SetOriginal(str, res) - str.Loc = res.Loc - return str + return b.setTextRange(str, res) } return res } @@ -236,8 +235,8 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as var visitor *ast.NodeVisitor // note: also handles renaming type parameters renamed within the current context attachSymbolToLeftmostIdentifier := func(leftmost *ast.Node, node *ast.Node, sym *ast.Symbol) *ast.Node { - var visitor func(node *ast.Node) *ast.Node - visitor = func(node *ast.Node) *ast.Node { + var vis *ast.NodeVisitor + visitorFunc := func(node *ast.Node) *ast.Node { if node == leftmost { var type_ *Type var name *ast.Node @@ -248,22 +247,16 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as } } if name == nil { - name = node.Clone(b.f) + name = b.newIdentifier(node.Text(), sym) } - if name.DeclarationData() != nil { - name.DeclarationData().Symbol = sym // TODO: does this work? does quickinfo need this anymore? - } - name.Loc = node.Loc + name = b.setTextRange(name, node) b.e.AddEmitFlags(name, printer.EFNoAsciiEscaping) return name } - res := node.VisitEachChild(ast.NewNodeVisitor(visitor, b.f, ast.NodeVisitorHooks{})) - if res != node { - res.Loc = node.Loc - } - return res + return b.setTextRange(node.VisitEachChild(vis), node) } - return visitor(node) + vis = ast.NewNodeVisitor(visitorFunc, b.f, ast.NodeVisitorHooks{}) + return visitorFunc(node) } trackExistingEntityName := func(node *ast.Node, overrideEnclosing *ast.Node) (bool, *ast.Node, *ast.Symbol) { enclosingDeclaration := b.ctx.enclosingDeclaration @@ -274,7 +267,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as leftmost := ast.GetFirstIdentifier(node) if ast.IsInJSFile(node) && (ast.IsExportsIdentifier(leftmost) || ast.IsModuleExportsAccessExpression(leftmost.Parent) || (ast.IsQualifiedName(leftmost.Parent) && ast.IsModuleIdentifier(leftmost.Parent.AsQualifiedName().Left) && ast.IsExportsIdentifier(leftmost.Parent.AsQualifiedName().Right))) { introducesError = true - return introducesError, node, nil + return introducesError, b.setTextRange(b.f.DeepCloneNode(node), node), nil } meaning := getMeaningOfEntityNameReference(node) var sym *ast.Symbol @@ -308,7 +301,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as b.ctx.tracker.ReportInferenceFallback(node) } introducesError = true - return introducesError, node, sym + return introducesError, b.setTextRange(b.f.DeepCloneNode(node), node), sym } else { sym = symAtLocation } @@ -330,7 +323,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as } return introducesError, attachSymbolToLeftmostIdentifier(leftmost, node, sym), nil } - return introducesError, node, nil + return introducesError, b.setTextRange(b.f.DeepCloneNode(node), node), nil } var tryVisitSimpleTypeNode func(node *ast.Node) *ast.Node tryVisitIndexedAccess := func(node *ast.Node) *ast.Node { @@ -359,8 +352,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as serializedName := b.serializeTypeName(node.AsTypeQueryNode().ExprName, true, visitor.VisitNodes(node.AsTypeQueryNode().TypeArguments)) if serializedName != nil { - serializedName.Loc = node.AsTypeQueryNode().ExprName.Loc - return serializedName + return b.setTextRange(serializedName, node.AsTypeQueryNode().ExprName) } return nil } @@ -390,8 +382,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as } else { serializedName := b.serializeTypeName(node.AsTypeReferenceNode().TypeName, false, visitor.VisitNodes(node.AsTypeReferenceNode().TypeArguments)) if serializedName != nil { - serializedName.Loc = node.AsTypeReferenceNode().TypeName.Loc - return serializedName + return b.setTextRange(serializedName, node.AsTypeReferenceNode().TypeName) } return nil } @@ -719,7 +710,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as } return factory.UpdateTypePredicateNode( node.AsTypePredicateNode(), - node.AsTypePredicateNode().AssertsModifier, + visitor.VisitNode(node.AsTypePredicateNode().AssertsModifier), parameterName, visitor.VisitNode(node.AsTypePredicateNode().Type), ) @@ -746,7 +737,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as res := visitor.VisitEachChild(node) if res == node { res = res.Clone(factory) - b.setTextRange(res, node) + res = b.setTextRange(res, node) } b.e.AddEmitFlags(res, printer.EFSingleLine) return res @@ -761,6 +752,7 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as return visitor.VisitEachChild(node) } + nonLocalNode := true visitor = ast.NewNodeVisitor(func(node *ast.Node) *ast.Node { // If there was an error in a sibling node bail early, the result will be discarded anyway if bound.hadError { @@ -788,6 +780,18 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as exit() } + if result == node && !ast.NodeIsSynthesized(node) { + result = b.f.DeepCloneNode(node) // always clone a new node + } + + // We want to clone the subtree, so when we mark it up with __pos and __end in quickfixes, + // we don't get odd behavior because of reused nodes. We also need to clone to _remove_ + // the position information if the node comes from a different file than the one the node builder + // is set to build for (even though we are reusing the node structure, the position information + // would make the printer print invalid spans for literals and identifiers, and the formatter would + // choke on the mismatched positonal spans between a parent and an injected child from another file). + result = b.setTextRange(result, node) + if bound.hadError { if ast.IsTypeNode(node) && !ast.IsTypePredicateNode(node) { bound.endRecoveryScope(recover_) @@ -796,16 +800,30 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as t := b.getTypeFromTypeNode(node, false) return b.typeToTypeNode(t) } - return node + return b.setTextRange(node.Clone(b.f), node) } - // We want to clone the subtree, so when we mark it up with __pos and __end in quickfixes, - // we don't get odd behavior because of reused nodes. We also need to clone to _remove_ - // the position information if the node comes from a different file than the one the node builder - // is set to build for (even though we are reusing the node structure, the position information - // would make the printer print invalid spans for literals and identifiers, and the formatter would - // choke on the mismatched positonal spans between a parent and an injected child from another file). - return b.setTextRange(result, node) - }, b.f, ast.NodeVisitorHooks{}) + return result + }, b.f, ast.NodeVisitorHooks{ + VisitNodes: func(nodes *ast.NodeList, v *ast.NodeVisitor) *ast.NodeList { + res := v.VisitNodes(nodes) + if nonLocalNode && res != nil { + // Remove position data from node lists originating in other files + if res == nodes { + res = nodes.Clone(b.f) + } + res.Loc = core.NewTextRange(-1, -1) + } + return res + }, + VisitNode: func(node *ast.Node, v *ast.NodeVisitor) *ast.Node { + // Capture if the current node is in the current file so node lists knoww if they can keep positions or not + oldNonLocalNode := nonLocalNode + nonLocalNode = b.ctx.enclosingFile == nil || b.ctx.enclosingFile != ast.GetSourceFileOfNode(b.e.MostOriginal(node)) + res := v.VisitNode(node) + nonLocalNode = oldNonLocalNode + return res + }, + }) return visitor } From 6d5bc0a19292bcadb91d371715958613c5e3b550 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 19 Mar 2026 10:54:15 -0700 Subject: [PATCH 49/55] Add a few more kinds that confer constness down to their children --- internal/pseudochecker/lookup.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 4811abff7db..707bcbdf41b 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -461,7 +461,7 @@ func IsInConstContext(node *ast.Node) bool { node, func(n *ast.Node) bool { // stop traversing at assertions or anything not an array/object literal, since only those create or transfer const-ness - return ast.IsAssertionExpression(n) || !(ast.IsArrayLiteralExpression(n) || ast.IsObjectLiteralExpression(n) || ast.IsParenthesizedExpression(n)) + return ast.IsAssertionExpression(n) || !(ast.IsArrayLiteralExpression(n) || ast.IsObjectLiteralExpression(n) || ast.IsParenthesizedExpression(n) || ast.IsShorthandPropertyAssignment(n) || ast.IsPropertyAssignment(n) || ast.IsPrefixUnaryExpression(n)) }, ) return ast.IsConstAssertion(maybeAssertion) From d33ba9a892f203c3c70188dd88fdd1afc36c8c4f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 19 Mar 2026 11:08:00 -0700 Subject: [PATCH 50/55] Cleanup condition a bit, also include template spans to match checker better --- internal/pseudochecker/lookup.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 707bcbdf41b..868cb4dc7fa 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -453,6 +453,17 @@ func (ch *PseudoChecker) canGetTypeFromArrayLiteral(node *ast.ArrayLiteralExpres return true } +// See `isConstContext` in `checker.go` - this is basically any node kind mentioned in that +func isConstContextPropagatingKind(kind ast.Kind) bool { + switch kind { + case ast.KindArrayLiteralExpression, ast.KindObjectLiteralExpression, + ast.KindParenthesizedExpression, ast.KindSpreadElement, ast.KindPropertyAssignment, + ast.KindShorthandPropertyAssignment, ast.KindTemplateSpan, ast.KindPrefixUnaryExpression: + return true + } + return false +} + // IsInConstContext traverses up the parent chain to determine if the node is within a const context without needing any // persistent traversal scope tracking (which could be unreliable in the presence of `typeof` queries anyway!) func IsInConstContext(node *ast.Node) bool { @@ -461,7 +472,7 @@ func IsInConstContext(node *ast.Node) bool { node, func(n *ast.Node) bool { // stop traversing at assertions or anything not an array/object literal, since only those create or transfer const-ness - return ast.IsAssertionExpression(n) || !(ast.IsArrayLiteralExpression(n) || ast.IsObjectLiteralExpression(n) || ast.IsParenthesizedExpression(n) || ast.IsShorthandPropertyAssignment(n) || ast.IsPropertyAssignment(n) || ast.IsPrefixUnaryExpression(n)) + return ast.IsAssertionExpression(n) || !isConstContextPropagatingKind(n.Kind) }, ) return ast.IsConstAssertion(maybeAssertion) From dba669a78b7458e89bab338d521aa2f43950b4f7 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 19 Mar 2026 12:37:55 -0700 Subject: [PATCH 51/55] Reintroduce rule to add explicit | undefined to preserved nodes if they requireImplicitUndefined --- internal/checker/nodebuilderimpl.go | 4 ++++ internal/checker/pseudotypenodebuilder.go | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index c7fb2e42c53..cc869e56121 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -2081,6 +2081,10 @@ func (b *NodeBuilderImpl) serializeTypeForDeclaration(declaration *ast.Declarati if b.pseudoTypeEquivalentToType(pt, t, !requiresAddingUndefined && (ast.IsParameter(declaration) || ast.IsPropertySignatureDeclaration(declaration) || ast.IsPropertyDeclaration(declaration)) && isOptionalDeclaration(declaration), !b.ctx.suppressReportInferenceFallback) { // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization // see: canReuseTypeNodeAnnotation in strada for context + ptt := b.pseudoTypeToType(pt) + if ptt != nil && requiresAddingUndefined && containsNonMissingUndefinedType(b.ch, t) && !containsNonMissingUndefinedType(b.ch, ptt) { + pt = pseudochecker.NewPseudoTypeUnion([]*pseudochecker.PseudoType{pt, pseudochecker.PseudoTypeUndefined}) + } result = b.pseudoTypeToNode(pt) } else if requiresAddingUndefined { pt = pseudochecker.NewPseudoTypeUnion([]*pseudochecker.PseudoType{pt, pseudochecker.PseudoTypeUndefined}) diff --git a/internal/checker/pseudotypenodebuilder.go b/internal/checker/pseudotypenodebuilder.go index bffeb73f299..80a2e3e15d3 100644 --- a/internal/checker/pseudotypenodebuilder.go +++ b/internal/checker/pseudotypenodebuilder.go @@ -591,7 +591,7 @@ func (b *NodeBuilderImpl) pseudoTypeToType(t *pseudochecker.PseudoType) *Type { } return b.ch.neverType } - return b.ch.newUnionType(ObjectFlagsNone, res) + return b.ch.getUnionType(res) case pseudochecker.PseudoTypeKindUndefined: return b.ch.undefinedWideningType case pseudochecker.PseudoTypeKindNull: From e6ac1fa7925772088d6875006db310be16ab65cb Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 19 Mar 2026 15:56:18 -0700 Subject: [PATCH 52/55] Surprisingly, this affects nothing, since `Clone` copies TokenFlags and we apparently lack tests to otherwise exercise this, but lets fill in this TODO regardless --- internal/checker/nodecopy.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/checker/nodecopy.go b/internal/checker/nodecopy.go index 70819b083e7..da22d68dbbb 100644 --- a/internal/checker/nodecopy.go +++ b/internal/checker/nodecopy.go @@ -742,13 +742,13 @@ func getExistingNodeTreeVisitor(b *NodeBuilderImpl, bound *recoveryBoundary) *as b.e.AddEmitFlags(res, printer.EFSingleLine) return res } - // !!! TODO: support single-quoted strings - // if ast.IsStringLiteral(node) && b.ctx.flags&nodebuilder.FlagsUseSingleQuotesForStringLiteralType != 0 && node.AsStringLiteral().SingleQuote { - // // set single quote on string literals - // c := node.Clone(b.f) - // c.AsStringLiteral().SingleQuote = true - // return c - // } + + if ast.IsStringLiteral(node) && b.ctx.flags&nodebuilder.FlagsUseSingleQuotesForStringLiteralType != 0 && node.AsStringLiteral().TokenFlags&ast.TokenFlagsSingleQuote == 0 { + // set single quote on string literals + c := node.Clone(b.f) + c.AsStringLiteral().TokenFlags ^= ast.TokenFlagsSingleQuote + return c + } return visitor.VisitEachChild(node) } From 2c203550d2acf892586c373c9e6c56be3bc9b778 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 20 Mar 2026 10:56:55 -0700 Subject: [PATCH 53/55] Align a bunch of errors and error spans in isolatedDeclarationErrorsExpressions --- internal/pseudochecker/lookup.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/pseudochecker/lookup.go b/internal/pseudochecker/lookup.go index 868cb4dc7fa..0663915015b 100644 --- a/internal/pseudochecker/lookup.go +++ b/internal/pseudochecker/lookup.go @@ -113,6 +113,10 @@ func (ch *PseudoChecker) typeFromProperty(node *ast.Node) *PseudoType { if ast.IsPropertyDeclaration(node) { init := node.Initializer() if init != nil && !isContextuallyTyped(node) { + // explicit fail on readonly template literals to allow for literal freshness in the future + if ast.HasModifier(node, ast.ModifierFlagsReadonly) && ast.IsTemplateExpression(init) { + return NewPseudoTypeNoResult(node) + } expr := ch.typeFromExpression(init) if expr != nil && expr.Kind != PseudoTypeKindInferred { if expr.Kind != PseudoTypeKindDirect && node.AsPropertyDeclaration().PostfixToken != nil && node.AsPropertyDeclaration().PostfixToken.Kind == ast.KindQuestionToken { @@ -135,6 +139,10 @@ func (ch *PseudoChecker) typeFromVariable(declaration *ast.VariableDeclaration) init := declaration.Initializer if init != nil && (len(declaration.Symbol.Declarations) == 1 || core.CountWhere(declaration.Symbol.Declarations, ast.IsVariableDeclaration) == 1) { if !isContextuallyTyped(declaration.AsNode()) { // TODO: also should bail on expando declarations; reuse syntactic expando check used in declaration emit + // TODO: Strada forces an inference fallback on `const` variables with template expression initializers, to leave space for template literal freshness in the future + if ast.IsVarConst(declaration.AsNode()) && ast.IsTemplateExpression(init) { + return NewPseudoTypeNoResult(declaration.AsNode()) + } expr := ch.typeFromExpression(init) if expr != nil && expr.Kind != PseudoTypeKindInferred { return expr @@ -293,6 +301,9 @@ func (ch *PseudoChecker) typeFromExpression(node *ast.Node) *PseudoType { return NewPseudoTypeInferred(node) // No possible annotation/directly mappable syntax case ast.KindTemplateExpression: // templateLitWithHoles as const, not supported + if IsInConstContext(node) { + return NewPseudoTypeInferred(node) + } return NewPseudoTypeMaybeConstLocation(node, NewPseudoTypeInferred(node), PseudoTypeString) case ast.KindNumericLiteral: return NewPseudoTypeMaybeConstLocation(node, NewPseudoTypeNumericLiteral(node), PseudoTypeNumber) @@ -469,7 +480,7 @@ func isConstContextPropagatingKind(kind ast.Kind) bool { func IsInConstContext(node *ast.Node) bool { // An expression is in a const context if an ancestor is a const type maybeAssertion expression maybeAssertion := ast.FindAncestor( - node, + node.Parent, func(n *ast.Node) bool { // stop traversing at assertions or anything not an array/object literal, since only those create or transfer const-ness return ast.IsAssertionExpression(n) || !isConstContextPropagatingKind(n.Kind) From e891073087fd7cd4ae130282b531546acfc23ed4 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Mar 2026 13:54:06 -0700 Subject: [PATCH 54/55] Accept baselines --- .../compiler/assertionWithNoArgument.types | 6 +- .../contextuallyTypedJsxChildren2.types | 22 +- ...mitAugmentationUsesCorrectSourceFile.types | 4 +- ...ionEmitExpandoArrowFunctionParameter.types | 8 +- ...ionEmitExportValueSymbolWithTsIgnore.types | 6 +- ...NoCrashOnCommentCopiedFromOtherFile.js.map | 4 +- ...OnCommentCopiedFromOtherFile.sourcemap.txt | 30 +- .../excessivelyDeepConditionalTypes.types | 2 +- .../compiler/expandoContextualTypes.types | 2 +- .../compiler/freshObjectLiteralSubtype.types | 8 +- .../compiler/nestedSpreadsAndWidening.types | 8 +- .../reference/compiler/noCrashOnMixin2.types | 6 +- .../compiler/objectSubtypeReduction.types | 6 +- ...packageDeduplicationDuplicateGlobals.types | 24 +- .../reference/compiler/typedefHoisting.types | 2 +- .../unicodeSurrogatesInStringLiterals.js | 12 +- .../conformance/jsdocVariadicInOverload.types | 6 +- .../quickInfoCommentsCommentParsing.baseline | 8 +- .../quickInfoDisplayPartsFunction.baseline | 8 +- ...uickInfoDisplayPartsLocalFunction.baseline | 8 +- .../quickInfoDisplayPartsParameters.baseline | 4 +- .../quickInfo/quickInfoInheritDoc.baseline | 4 +- .../jsDocFunctionSignatures6.baseline | 36 +- ...gnatureHelpCommentsCommentParsing.baseline | 108 +- .../signatureHelpJSDocCallbackTag.baseline | 20 +- .../signatureHelp_unionType.baseline | 6 +- .../abstractPropertyInConstructor.types | 2 +- .../abstractPropertyInConstructor.types.diff | 11 - .../compiler/acceptSymbolAsWeakType.types | 4 +- .../acceptSymbolAsWeakType.types.diff | 14 - ...xpressionGenericIntersectionNoCrash2.types | 4 +- ...sionGenericIntersectionNoCrash2.types.diff | 16 - .../aliasOnMergedModuleInterface.types | 2 +- .../aliasOnMergedModuleInterface.types.diff | 11 - .../anonClassDeclarationEmitIsAnon.types | 6 +- .../anonClassDeclarationEmitIsAnon.types.diff | 6 +- .../submodule/compiler/anonterface.types | 6 +- .../submodule/compiler/anonterface.types.diff | 23 - .../submodule/compiler/arguments.types | 6 +- .../submodule/compiler/arguments.types.diff | 26 - ...nObjectLiteral_Js(alwaysstrict=true).types | 4 +- ...ctLiteral_Js(alwaysstrict=true).types.diff | 13 + .../compiler/arrayBestCommonTypes.types | 120 +- .../compiler/arrayBestCommonTypes.types.diff | 368 -- .../submodule/compiler/arrayConcat3.types | 2 +- .../compiler/arrayConcat3.types.diff | 10 - .../submodule/compiler/arrayEvery.types | 4 +- .../submodule/compiler/arrayEvery.types.diff | 15 - ...FakeFlatNoCrashInferenceDeclarations.types | 8 +- ...latNoCrashInferenceDeclarations.types.diff | 24 +- .../submodule/compiler/arrayFlatMap.types | 4 +- .../compiler/arrayFlatMap.types.diff | 18 - .../submodule/compiler/arrayFrom.types | 44 +- .../submodule/compiler/arrayFrom.types.diff | 125 - .../submodule/compiler/arrayFromAsync.types | 56 +- .../compiler/arrayFromAsync.types.diff | 139 +- .../arrayReferenceWithoutTypeArgs.types | 2 +- .../arrayReferenceWithoutTypeArgs.types.diff | 10 - .../submodule/compiler/arraySlice.types | 4 +- .../submodule/compiler/arraySlice.types.diff | 13 - .../compiler/arrayToLocaleStringES2015.types | 148 +- .../arrayToLocaleStringES2015.types.diff | 412 -- .../compiler/arrayToLocaleStringES2020.types | 180 +- .../arrayToLocaleStringES2020.types.diff | 500 -- ...rrayToLocaleStringES5(target=es2015).types | 132 +- ...oLocaleStringES5(target=es2015).types.diff | 365 -- ...ayTypeInSignatureOfInterfaceAndClass.types | 2 +- ...eInSignatureOfInterfaceAndClass.types.diff | 11 - .../compiler/assignmentCompatBug2.errors.txt | 12 +- .../assignmentCompatBug2.errors.txt.diff | 42 + .../compiler/assignmentCompatBug2.types | 12 +- .../compiler/assignmentCompatBug2.types.diff | 56 - ...CompatFunctionsWithOptionalArgs.errors.txt | 6 +- ...tFunctionsWithOptionalArgs.errors.txt.diff | 12 +- ...nmentCompatFunctionsWithOptionalArgs.types | 12 +- ...CompatFunctionsWithOptionalArgs.types.diff | 46 - .../compiler/assignmentCompatOnNew.types | 4 +- .../compiler/assignmentCompatOnNew.types.diff | 15 - ...tionalBrandedStringTemplateOrMapping.types | 20 +- ...lBrandedStringTemplateOrMapping.types.diff | 34 +- .../assignmentToInstantiationExpression.types | 4 +- ...gnmentToInstantiationExpression.types.diff | 20 - ...syncFunctionContextuallyTypedReturns.types | 12 +- ...unctionContextuallyTypedReturns.types.diff | 46 - .../compiler/asyncFunctionReturnType.types | 12 +- .../asyncFunctionReturnType.types.diff | 56 - .../asyncFunctionsAndStrictNullChecks.types | 12 +- ...yncFunctionsAndStrictNullChecks.types.diff | 28 +- .../submodule/compiler/autolift3.types | 4 +- .../submodule/compiler/autolift3.types.diff | 14 - ...BindingElementWithLiteralInitializer.types | 6 +- ...ngElementWithLiteralInitializer.types.diff | 20 - .../compiler/awaitedTypeJQuery.types | 32 +- .../compiler/awaitedTypeJQuery.types.diff | 112 +- .../submodule/compiler/awaitedTypeNoLib.types | 2 +- .../compiler/awaitedTypeNoLib.types.diff | 11 - ...baseClassImprovedMismatchErrors.errors.txt | 8 +- ...lassImprovedMismatchErrors.errors.txt.diff | 38 - .../baseClassImprovedMismatchErrors.types | 4 +- ...baseClassImprovedMismatchErrors.types.diff | 20 - .../bestCommonTypeReturnStatement.types | 2 +- .../bestCommonTypeReturnStatement.types.diff | 11 - .../compiler/bigint64ArraySubarray.types | 12 +- .../compiler/bigint64ArraySubarray.types.diff | 31 - ...ngPatternCannotBeOnlyInferenceSource.types | 4 +- ...ternCannotBeOnlyInferenceSource.types.diff | 17 - ...rnContextualTypeDoesNotCauseWidening.types | 6 +- ...textualTypeDoesNotCauseWidening.types.diff | 28 - .../compiler/bluebirdStaticThis.types | 44 +- .../compiler/bluebirdStaticThis.types.diff | 69 +- .../submodule/compiler/builtinIterator.types | 12 +- .../compiler/builtinIterator.types.diff | 38 - ...fConditionalTypeWithConcreteBranches.types | 8 +- ...itionalTypeWithConcreteBranches.types.diff | 26 - .../callSignatureFunctionOverload.types | 4 +- .../callSignatureFunctionOverload.types.diff | 20 + .../callbackArgsDifferByOptionality.types | 8 +- ...callbackArgsDifferByOptionality.types.diff | 23 + .../compiler/callbacksDontShareTypes.types | 12 +- .../callbacksDontShareTypes.types.diff | 38 +- .../compiler/callsOnComplexSignatures.types | 40 +- .../callsOnComplexSignatures.types.diff | 156 - .../cannotIndexGenericWritingError.types | 2 +- .../cannotIndexGenericWritingError.types.diff | 11 - .../capturedParametersInInitializers1.types | 12 +- ...pturedParametersInInitializers1.types.diff | 28 +- .../checkJsObjectLiteralIndexSignatures.types | 8 +- ...kJsObjectLiteralIndexSignatures.types.diff | 19 +- ...eckSwitchStatementIfCaseTypeIsString.types | 2 +- ...itchStatementIfCaseTypeIsString.types.diff | 11 - .../circularAccessorAnnotations.types | 8 +- .../circularAccessorAnnotations.types.diff | 29 - .../compiler/circularBaseTypes.types | 2 +- .../compiler/circularBaseTypes.types.diff | 11 - .../circularConstructorWithReturn.types | 4 +- .../circularConstructorWithReturn.types.diff | 20 - .../circularContextualReturnType.types | 8 +- .../circularContextualReturnType.types.diff | 26 - .../circularInstantiationExpression.types | 6 +- ...circularInstantiationExpression.types.diff | 17 - ...bjectLiteralAccessors(target=es2015).types | 6 +- ...LiteralAccessors(target=es2015).types.diff | 29 + .../compiler/circularOptionalityRemoval.types | 2 +- .../circularOptionalityRemoval.types.diff | 11 - .../circularReferenceInReturnType.types | 4 +- .../circularReferenceInReturnType.types.diff | 19 - .../compiler/circularResolvedSignature.types | 4 +- .../circularResolvedSignature.types.diff | 20 - ...ditionalNoInfiniteInstantiationDepth.types | 4 +- ...nalNoInfiniteInstantiationDepth.types.diff | 19 - .../classExtendsInterfaceInExpression.types | 4 +- ...assExtendsInterfaceInExpression.types.diff | 18 - .../classImplementsMethodWIthTupleArgs.types | 2 +- ...ssImplementsMethodWIthTupleArgs.types.diff | 10 - ...lParameterWithinItsOwnBaseExpression.types | 8 +- ...meterWithinItsOwnBaseExpression.types.diff | 32 - .../compiler/coAndContraVariantInferences.js | 6 +- .../coAndContraVariantInferences.js.diff | 14 +- .../coAndContraVariantInferences.types | 8 +- .../coAndContraVariantInferences.types.diff | 26 - .../coAndContraVariantInferences2.types | 4 +- .../coAndContraVariantInferences2.types.diff | 20 - .../coAndContraVariantInferences3.types | 4 +- .../coAndContraVariantInferences3.types.diff | 20 +- .../coAndContraVariantInferences6.types | 4 +- .../coAndContraVariantInferences6.types.diff | 20 - ...onArgumentsInType(alwaysstrict=true).types | 4 +- ...umentsInType(alwaysstrict=true).types.diff | 20 - .../collisionRestParameterInType.types | 2 +- .../collisionRestParameterInType.types.diff | 11 - ...llisionRestParameterUnderscoreIUsage.types | 10 +- ...onRestParameterUnderscoreIUsage.types.diff | 26 - .../compiler/commentOnAmbientfunction.types | 2 +- .../commentOnAmbientfunction.types.diff | 11 - ...rabilityTypeParametersRelatedByUnion.types | 2 +- ...ityTypeParametersRelatedByUnion.types.diff | 11 - .../complexRecursiveCollections.types | 282 +- .../complexRecursiveCollections.types.diff | 990 +-- ...essKeyofReliesOnKeyofNeverUpperBound.types | 6 +- ...yofReliesOnKeyofNeverUpperBound.types.diff | 29 - ...ndexesOfIntersectionsAreInferencable.types | 4 +- ...sOfIntersectionsAreInferencable.types.diff | 20 - .../complicatedPrivacy(target=es2015).types | 6 +- ...mplicatedPrivacy(target=es2015).types.diff | 29 - .../compositeContextualSignature.types | 4 +- .../compositeContextualSignature.types.diff | 17 - .../computedPropertiesNarrowed.errors.txt | 88 + ...computedPropertiesNarrowed.errors.txt.diff | 139 +- .../compiler/computedPropertiesNarrowed.js | 2 +- .../computedPropertiesNarrowed.js.diff | 2 +- ...rtyBindingElementDeclarationNoCrash1.types | 4 +- ...ndingElementDeclarationNoCrash1.types.diff | 14 - .../conditionalReturnExpression.types | 20 +- .../conditionalReturnExpression.types.diff | 62 - ...asedContextualTypeReturnTypeWidening.types | 16 +- ...ontextualTypeReturnTypeWidening.types.diff | 62 - ...onRegularTypeFetchingSpeedReasonable.types | 2 +- ...ularTypeFetchingSpeedReasonable.types.diff | 2 +- .../conditionalTypeDoesntSpinForever.types | 36 +- ...onditionalTypeDoesntSpinForever.types.diff | 116 +- .../conditionalTypesSimplifyWhenTrivial.types | 12 +- ...itionalTypesSimplifyWhenTrivial.types.diff | 42 - ...eOverloadsCausedByOverloadResolution.types | 16 +- ...loadsCausedByOverloadResolution.types.diff | 56 - ...tingDeclarationsImportFromNamespace1.types | 8 +- ...eclarationsImportFromNamespace1.types.diff | 26 +- ...tingDeclarationsImportFromNamespace2.types | 8 +- ...eclarationsImportFromNamespace2.types.diff | 26 +- ...sistentAliasVsNonAliasRecordBehavior.types | 16 +- ...ntAliasVsNonAliasRecordBehavior.types.diff | 73 + .../constEnumToStringNoComments.types | 48 +- .../constEnumToStringNoComments.types.diff | 134 - .../constEnumToStringWithComments.types | 48 +- .../constEnumToStringWithComments.types.diff | 134 - .../submodule/compiler/constEnums.types | 2 +- .../submodule/compiler/constEnums.types.diff | 11 - .../compiler/constantOverloadFunction.types | 10 +- .../constantOverloadFunction.types.diff | 31 + ...nstantOverloadFunctionNoSubtypeError.types | 10 +- ...tOverloadFunctionNoSubtypeError.types.diff | 31 + ...structorWithIncompleteTypeAnnotation.types | 8 +- ...torWithIncompleteTypeAnnotation.types.diff | 20 - .../contextSensitiveReturnTypeInference.types | 2 +- ...extSensitiveReturnTypeInference.types.diff | 11 - .../contextualOuterTypeParameters.types | 8 +- .../contextualOuterTypeParameters.types.diff | 38 - ...contextualOverloadListFromArrayUnion.types | 6 +- ...xtualOverloadListFromArrayUnion.types.diff | 29 - ...aramTypeVsNestedReturnTypeInference1.types | 4 +- ...ypeVsNestedReturnTypeInference1.types.diff | 19 - ...aramTypeVsNestedReturnTypeInference2.types | 12 +- ...ypeVsNestedReturnTypeInference2.types.diff | 55 - ...aramTypeVsNestedReturnTypeInference3.types | 12 +- ...ypeVsNestedReturnTypeInference3.types.diff | 55 - ...aramTypeVsNestedReturnTypeInference4.types | 8 +- ...ypeVsNestedReturnTypeInference4.types.diff | 37 - ...contextualSigInstantiationRestParams.types | 4 +- ...xtualSigInstantiationRestParams.types.diff | 17 - ...itionalTypeInstantiationUsingDefault.types | 6 +- ...alTypeInstantiationUsingDefault.types.diff | 26 - ...tualSignatureInArrayElementLibEs2015.types | 4 +- ...ignatureInArrayElementLibEs2015.types.diff | 20 - ...textualSignatureInArrayElementLibEs5.types | 4 +- ...alSignatureInArrayElementLibEs5.types.diff | 20 - .../contextualSignatureInObjectFreeze.types | 4 +- ...ntextualSignatureInObjectFreeze.types.diff | 14 - .../contextualSignatureInstantiation1.types | 12 +- ...ntextualSignatureInstantiation1.types.diff | 39 - ...contextualTupleTypeParameterReadonly.types | 4 +- ...xtualTupleTypeParameterReadonly.types.diff | 20 - ...eBasedOnIntersectionWithAnyInTheMix1.types | 6 +- ...dOnIntersectionWithAnyInTheMix1.types.diff | 21 +- ...eBasedOnIntersectionWithAnyInTheMix2.types | 18 +- ...dOnIntersectionWithAnyInTheMix2.types.diff | 48 - ...eBasedOnIntersectionWithAnyInTheMix3.types | 12 +- ...dOnIntersectionWithAnyInTheMix3.types.diff | 45 +- ...eBasedOnIntersectionWithAnyInTheMix5.types | 10 +- ...dOnIntersectionWithAnyInTheMix5.types.diff | 41 - ...peFunctionObjectPropertyIntersection.types | 6 +- ...ctionObjectPropertyIntersection.types.diff | 29 - ...peLikeConstraintInGenericMappedType2.types | 8 +- ...eConstraintInGenericMappedType2.types.diff | 28 + .../submodule/compiler/contextualTyping.types | 30 +- .../compiler/contextualTyping.types.diff | 136 - .../contextualTypingOfOptionalMembers.types | 4 +- ...ntextualTypingOfOptionalMembers.types.diff | 20 - ...urnStatementWithReturnTypeAnnotation.types | 6 +- ...atementWithReturnTypeAnnotation.types.diff | 29 - .../contextuallyTypeArgumentsKeyword.types | 2 +- ...ontextuallyTypeArgumentsKeyword.types.diff | 6 +- ...ntextuallyTypedByDiscriminableUnion2.types | 6 +- ...uallyTypedByDiscriminableUnion2.types.diff | 22 - .../contextuallyTypedJsxAttribute.types | 4 +- .../contextuallyTypedJsxAttribute.types.diff | 17 - .../contextuallyTypedJsxAttribute2.types | 8 +- .../contextuallyTypedJsxAttribute2.types.diff | 8 +- .../contextuallyTypedJsxChildren2.types | 22 +- .../contextuallyTypedJsxChildren2.types.diff | 75 - ...ty(exactoptionalpropertytypes=false).types | 10 +- ...actoptionalpropertytypes=false).types.diff | 35 - ...tuallyTypedParametersOptionalInJSDoc.types | 8 +- ...yTypedParametersOptionalInJSDoc.types.diff | 27 - ...allyTypedParametersWithInitializers1.types | 16 +- ...ypedParametersWithInitializers1.types.diff | 43 - ...allyTypedParametersWithQuestionToken.types | 8 +- ...ypedParametersWithQuestionToken.types.diff | 27 - ...ntextuallyTypedSymbolNamedProperties.types | 4 +- ...uallyTypedSymbolNamedProperties.types.diff | 19 + .../contravariantInferenceAndTypeGuard.types | 8 +- ...travariantInferenceAndTypeGuard.types.diff | 13 +- ...OnlyInferenceFromAnnotatedFunctionJs.types | 4 +- ...nferenceFromAnnotatedFunctionJs.types.diff | 11 +- ...erenceWithAnnotatedOptionalParameter.types | 4 +- ...eWithAnnotatedOptionalParameter.types.diff | 20 - ...enceWithAnnotatedOptionalParameterJs.types | 4 +- ...ithAnnotatedOptionalParameterJs.types.diff | 20 - .../controlFlowAliasedDiscriminants.types | 86 +- ...controlFlowAliasedDiscriminants.types.diff | 229 +- .../controlFlowDestructuringLoop.types | 4 +- .../controlFlowDestructuringLoop.types.diff | 14 - .../controlFlowForFunctionLike1.types | 42 +- .../controlFlowForFunctionLike1.types.diff | 156 - .../controlFlowForIndexSignatures.types | 2 +- .../controlFlowForIndexSignatures.types.diff | 11 - ...ontrolFlowFunctionLikeCircular1.errors.txt | 4 +- ...lFlowFunctionLikeCircular1.errors.txt.diff | 20 + .../controlFlowFunctionLikeCircular1.types | 90 +- ...ontrolFlowFunctionLikeCircular1.types.diff | 262 - ...lowInitializedDestructuringVariables.types | 4 +- ...itializedDestructuringVariables.types.diff | 17 - .../compiler/controlFlowOuterVariable.types | 4 +- .../controlFlowOuterVariable.types.diff | 13 - .../controlFlowPropertyDeclarations.types | 4 +- ...controlFlowPropertyDeclarations.types.diff | 13 - ...rolFlowUnionContainingTypeParameter1.types | 4 +- ...owUnionContainingTypeParameter1.types.diff | 20 - .../controlFlowWithIncompleteTypes.types | 8 +- .../controlFlowWithIncompleteTypes.types.diff | 26 - .../submodule/compiler/correlatedUnions.js | 14 +- .../compiler/correlatedUnions.js.diff | 39 +- .../submodule/compiler/correlatedUnions.types | 66 +- .../compiler/correlatedUnions.types.diff | 174 +- .../compiler/crashInResolveInterface.types | 2 +- .../crashInResolveInterface.types.diff | 11 - .../compiler/crashRegressionTest.types | 2 +- .../compiler/crashRegressionTest.types.diff | 11 - .../compiler/customAsyncIterator.types | 2 +- .../compiler/customAsyncIterator.types.diff | 11 - .../compiler/customEventDetail.types | 4 +- .../compiler/customEventDetail.types.diff | 14 - ...licGenericTypeInstantiationInference.types | 4 +- ...nericTypeInstantiationInference.types.diff | 16 - .../compiler/dataViewConstructor.errors.txt | 4 +- .../dataViewConstructor.errors.txt.diff | 17 + .../compiler/dataViewConstructor.types | 2 +- .../compiler/dataViewConstructor.types.diff | 11 - .../declFileConstructors(target=es2015).types | 8 +- ...FileConstructors(target=es2015).types.diff | 26 - .../declFileForInterfaceWithRestParams.types | 6 +- ...lFileForInterfaceWithRestParams.types.diff | 24 - .../compiler/declFileGenericType.types | 12 +- .../compiler/declFileGenericType.types.diff | 39 - .../compiler/declFileGenericType2.types | 2 +- .../compiler/declFileGenericType2.types.diff | 11 - ...FileImportModuleWithExportAssignment.types | 6 +- ...mportModuleWithExportAssignment.types.diff | 19 +- .../declFileMethods(target=es2015).types | 32 +- .../declFileMethods(target=es2015).types.diff | 98 - .../declFilePrivateMethodOverloads.types | 12 +- .../declFilePrivateMethodOverloads.types.diff | 46 - ...tParametersOfFunctionAndFunctionType.types | 8 +- ...metersOfFunctionAndFunctionType.types.diff | 28 - ...AnnotationTypeLiteral(target=es2015).types | 4 +- ...ationTypeLiteral(target=es2015).types.diff | 20 - .../compiler/declFileTypeofFunction.js | 4 +- .../compiler/declFileTypeofFunction.js.diff | 11 - .../compiler/declFileTypeofFunction.types | 32 +- .../declFileTypeofFunction.types.diff | 55 - .../compiler/declarationEmitAliasInlineing.js | 11 +- .../declarationEmitAliasInlineing.js.diff | 22 +- .../declarationEmitAliasInlineing.types | 20 +- .../declarationEmitAliasInlineing.types.diff | 28 +- ...larationEmitBindingPatternsFunctionExpr.js | 2 +- ...ionEmitBindingPatternsFunctionExpr.js.diff | 8 - ...ationEmitBindingPatternsFunctionExpr.types | 4 +- ...EmitBindingPatternsFunctionExpr.types.diff | 13 - .../declarationEmitBindingPatternsUnused.js | 4 +- ...clarationEmitBindingPatternsUnused.js.diff | 14 - ...declarationEmitBindingPatternsUnused.types | 44 +- ...rationEmitBindingPatternsUnused.types.diff | 179 - ...ReusesTypeNode1(strictnullchecks=false).js | 56 +- ...sTypeNode1(strictnullchecks=false).js.diff | 66 - ...tReusesTypeNode1(strictnullchecks=true).js | 59 +- ...esTypeNode1(strictnullchecks=true).js.diff | 72 - ...ReusesTypeNode2(strictnullchecks=false).js | 28 +- ...sTypeNode2(strictnullchecks=false).js.diff | 77 - ...tReusesTypeNode2(strictnullchecks=true).js | 38 +- ...esTypeNode2(strictnullchecks=true).js.diff | 84 - ...ReusesTypeNode3(strictnullchecks=false).js | 56 +- ...sTypeNode3(strictnullchecks=false).js.diff | 66 - ...tReusesTypeNode3(strictnullchecks=true).js | 59 +- ...esTypeNode3(strictnullchecks=true).js.diff | 72 - ...ReusesTypeNode4(strictnullchecks=false).js | 52 +- ...sTypeNode4(strictnullchecks=false).js.diff | 84 +- ...tReusesTypeNode4(strictnullchecks=true).js | 56 +- ...esTypeNode4(strictnullchecks=true).js.diff | 88 +- ...ReusesTypeNode5(strictnullchecks=false).js | 28 +- ...sTypeNode5(strictnullchecks=false).js.diff | 40 - ...tReusesTypeNode5(strictnullchecks=true).js | 28 +- ...esTypeNode5(strictnullchecks=true).js.diff | 40 - ...EmitClassMemberWithComputedPropertyName.js | 4 +- ...lassMemberWithComputedPropertyName.js.diff | 14 + .../declarationEmitComputedPropertyName1.js | 8 +- ...clarationEmitComputedPropertyName1.js.diff | 18 - ...declarationEmitComputedPropertyName1.types | 6 +- ...rationEmitComputedPropertyName1.types.diff | 18 - ...eclarationEmitComputedPropertyNameEnum1.js | 2 +- ...ationEmitComputedPropertyNameEnum1.js.diff | 9 - ...arationEmitComputedPropertyNameEnum1.types | 4 +- ...onEmitComputedPropertyNameEnum1.types.diff | 13 - ...eclarationEmitComputedPropertyNameEnum2.js | 4 +- ...ationEmitComputedPropertyNameEnum2.js.diff | 11 - ...arationEmitComputedPropertyNameEnum2.types | 4 +- ...onEmitComputedPropertyNameEnum2.types.diff | 13 - ...eclarationEmitComputedPropertyNameEnum3.js | 2 +- ...ationEmitComputedPropertyNameEnum3.js.diff | 9 - ...arationEmitComputedPropertyNameEnum3.types | 4 +- ...onEmitComputedPropertyNameEnum3.types.diff | 13 - ...larationEmitComputedPropertyNameSymbol1.js | 2 +- ...ionEmitComputedPropertyNameSymbol1.js.diff | 2 +- ...ationEmitComputedPropertyNameSymbol1.types | 4 +- ...EmitComputedPropertyNameSymbol1.types.diff | 13 - ...larationEmitComputedPropertyNameSymbol2.js | 2 +- ...ionEmitComputedPropertyNameSymbol2.js.diff | 2 +- ...ationEmitComputedPropertyNameSymbol2.types | 4 +- ...EmitComputedPropertyNameSymbol2.types.diff | 13 - ...cturingWithOptionalBindingParameters.types | 4 +- ...ngWithOptionalBindingParameters.types.diff | 18 - ...ionEmitDistributiveConditionalWithInfer.js | 2 +- ...itDistributiveConditionalWithInfer.js.diff | 8 - ...EmitDistributiveConditionalWithInfer.types | 6 +- ...istributiveConditionalWithInfer.types.diff | 16 - ...eused(exactoptionalpropertytypes=false).js | 2 +- ...(exactoptionalpropertytypes=false).js.diff | 11 + ...ed(exactoptionalpropertytypes=false).types | 14 +- ...actoptionalpropertytypes=false).types.diff | 26 +- ...Reused(exactoptionalpropertytypes=true).js | 2 +- ...d(exactoptionalpropertytypes=true).js.diff | 11 + ...sed(exactoptionalpropertytypes=true).types | 14 +- ...xactoptionalpropertytypes=true).types.diff | 26 +- ...FirstTypeArgumentGenericFunctionType.types | 2 +- ...TypeArgumentGenericFunctionType.types.diff | 3 +- ...EmitGenericTypeParamerSerialization2.types | 4 +- ...enericTypeParamerSerialization2.types.diff | 13 +- ...EmitGenericTypeParamerSerialization3.types | 4 +- ...enericTypeParamerSerialization3.types.diff | 4 +- .../declarationEmitGlobalThisPreserved.js | 12 +- ...declarationEmitGlobalThisPreserved.js.diff | 38 +- .../declarationEmitGlobalThisPreserved.types | 142 +- ...larationEmitGlobalThisPreserved.types.diff | 395 -- ...larationEmitHigherOrderRetainedGenerics.js | 4 +- ...ionEmitHigherOrderRetainedGenerics.js.diff | 9 +- ...ationEmitHigherOrderRetainedGenerics.types | 22 +- ...EmitHigherOrderRetainedGenerics.types.diff | 56 +- ...rrorNotEmittedForNonEmittedFile.errors.txt | 69 + ...otEmittedForNonEmittedFile.errors.txt.diff | 73 - ...tionErrorNotEmittedForNonEmittedFile.types | 10 +- ...rrorNotEmittedForNonEmittedFile.types.diff | 33 - ...peDistributivityPreservesConstraints.types | 6 +- ...tributivityPreservesConstraints.types.diff | 18 +- ...pedTypePreservesTypeParameterConstraint.js | 6 +- ...pePreservesTypeParameterConstraint.js.diff | 21 - ...TypePreservesTypeParameterConstraint.types | 12 +- ...reservesTypeParameterConstraint.types.diff | 27 +- ...ppedTypePropertyFromNumericStringKey.types | 4 +- ...ypePropertyFromNumericStringKey.types.diff | 13 - ...onEmitMappedTypeTemplateTypeofSymbol.types | 10 +- ...tMappedTypeTemplateTypeofSymbol.types.diff | 31 - .../compiler/declarationEmitNestedGenerics.js | 16 +- .../declarationEmitNestedGenerics.js.diff | 18 +- .../declarationEmitNestedGenerics.types | 6 +- .../declarationEmitNestedGenerics.types.diff | 23 - .../declarationEmitNoInvalidCommentReuse1.js | 2 +- ...larationEmitNoInvalidCommentReuse1.js.diff | 11 - ...eclarationEmitNoInvalidCommentReuse1.types | 8 +- ...ationEmitNoInvalidCommentReuse1.types.diff | 26 - .../declarationEmitNoInvalidCommentReuse2.js | 2 +- ...larationEmitNoInvalidCommentReuse2.js.diff | 2 +- ...eclarationEmitNoInvalidCommentReuse2.types | 8 +- ...ationEmitNoInvalidCommentReuse2.types.diff | 17 +- .../declarationEmitNoInvalidCommentReuse3.js | 3 +- ...larationEmitNoInvalidCommentReuse3.js.diff | 13 - ...eclarationEmitNoInvalidCommentReuse3.types | 8 +- ...ationEmitNoInvalidCommentReuse3.types.diff | 29 - ...ationEmitObjectAssignedDefaultExport.types | 14 +- ...EmitObjectAssignedDefaultExport.types.diff | 43 - .../declarationEmitObjectLiteralAccessors1.js | 4 +- ...arationEmitObjectLiteralAccessors1.js.diff | 13 + ...eclarationEmitObjectLiteralAccessorsJs1.js | 7 +- ...ationEmitObjectLiteralAccessorsJs1.js.diff | 9 +- ...appedTypePropertyNoStrictNullChecks1.types | 2 +- ...TypePropertyNoStrictNullChecks1.types.diff | 10 - ...appedTypePropertyNoStrictNullChecks2.types | 2 +- ...TypePropertyNoStrictNullChecks2.types.diff | 10 - ...appedTypePropertyNoStrictNullChecks3.types | 2 +- ...TypePropertyNoStrictNullChecks3.types.diff | 10 - .../compiler/declarationEmitOptionalMethod.js | 4 +- .../declarationEmitOptionalMethod.js.diff | 13 - .../declarationEmitOptionalMethod.types | 6 +- .../declarationEmitOptionalMethod.types.diff | 15 - ...rationEmitOverloadedPrivateInference.types | 16 +- ...nEmitOverloadedPrivateInference.types.diff | 35 +- .../declarationEmitPartialNodeReuseTypeOf.js | 24 +- ...larationEmitPartialNodeReuseTypeOf.js.diff | 37 - ...eclarationEmitPartialNodeReuseTypeOf.types | 18 +- ...ationEmitPartialNodeReuseTypeOf.types.diff | 48 - ...ationEmitPartialNodeReuseTypeReferences.js | 24 +- ...EmitPartialNodeReuseTypeReferences.js.diff | 40 - ...onEmitPartialNodeReuseTypeReferences.types | 18 +- ...tPartialNodeReuseTypeReferences.types.diff | 42 - ...arationEmitPartialReuseComputedProperty.js | 6 +- ...onEmitPartialReuseComputedProperty.js.diff | 16 - ...tionEmitPartialReuseComputedProperty.types | 4 +- ...mitPartialReuseComputedProperty.types.diff | 13 - ...eclarationEmitPrivateNameCausesError.types | 2 +- ...ationEmitPrivateNameCausesError.types.diff | 2 +- ...larationEmitPrivatePromiseLikeInterface.js | 8 +- ...ionEmitPrivatePromiseLikeInterface.js.diff | 14 +- .../compiler/declarationEmitPromise.js | 4 +- .../compiler/declarationEmitPromise.js.diff | 4 +- .../compiler/declarationEmitPromise.types | 36 +- .../declarationEmitPromise.types.diff | 78 +- ...declarationEmitPropertyNumericStringKey.js | 2 +- ...rationEmitPropertyNumericStringKey.js.diff | 11 + ...eclarationEmitResolveTypesIfNotReusable.js | 30 +- ...ationEmitResolveTypesIfNotReusable.js.diff | 43 +- ...arationEmitResolveTypesIfNotReusable.types | 22 +- ...onEmitResolveTypesIfNotReusable.types.diff | 38 +- ...clarationEmitReusesLambdaParameterNodes.js | 2 +- ...tionEmitReusesLambdaParameterNodes.js.diff | 9 - ...rationEmitReusesLambdaParameterNodes.types | 6 +- ...nEmitReusesLambdaParameterNodes.types.diff | 16 - .../declarationEmitScopeConsistency3.types | 8 +- ...eclarationEmitScopeConsistency3.types.diff | 25 - ...declarationEmitShadowingInferNotRenamed.js | 3 +- ...rationEmitShadowingInferNotRenamed.js.diff | 13 - ...larationEmitShadowingInferNotRenamed.types | 4 +- ...ionEmitShadowingInferNotRenamed.types.diff | 13 - ...eclarationEmitTopLevelNodeFromCrossFile.js | 4 +- ...ationEmitTopLevelNodeFromCrossFile.js.diff | 19 - ...arationEmitTopLevelNodeFromCrossFile.types | 18 +- ...onEmitTopLevelNodeFromCrossFile.types.diff | 35 - .../compiler/declarationEmitTypeofRest.js | 4 +- .../declarationEmitTypeofRest.js.diff | 10 +- ...TypeReferenceNotAdded(target=es2015).types | 4 +- ...eferenceNotAdded(target=es2015).types.diff | 17 - ...itUsingAlternativeContainingModules1.types | 18 +- ...ngAlternativeContainingModules1.types.diff | 67 +- ...itUsingAlternativeContainingModules2.types | 20 +- ...ngAlternativeContainingModules2.types.diff | 69 +- .../declarationEmitUsingTypeAlias1.errors.txt | 5 +- ...arationEmitUsingTypeAlias1.errors.txt.diff | 26 - .../declarationEmitUsingTypeAlias1.js | 1 + .../declarationEmitUsingTypeAlias1.js.diff | 1 + .../declarationEmitUsingTypeAlias1.types | 8 +- .../declarationEmitUsingTypeAlias1.types.diff | 24 - .../declarationEmitUsingTypeAlias2.types | 10 +- .../declarationEmitUsingTypeAlias2.types.diff | 10 +- .../submodule/compiler/declarationMaps.types | 6 +- .../compiler/declarationMaps.types.diff | 20 +- .../compiler/declarationMapsMultifile.js.map | 4 +- .../declarationMapsMultifile.js.map.diff | 4 +- .../declarationMapsMultifile.sourcemap.txt | 15 +- ...eclarationMapsMultifile.sourcemap.txt.diff | 18 +- .../declarationMapsWithoutDeclaration.types | 6 +- ...clarationMapsWithoutDeclaration.types.diff | 20 +- .../declarationNoDanglingGenerics.types | 4 +- .../declarationNoDanglingGenerics.types.diff | 20 +- ...clarationsForFileShadowingGlobalNoError.js | 3 +- ...tionsForFileShadowingGlobalNoError.js.diff | 16 - ...rationsForFileShadowingGlobalNoError.types | 2 +- ...nsForFileShadowingGlobalNoError.types.diff | 11 - ...iveInternalTypesProduceUniqueTypeParams.js | 7 +- ...ternalTypesProduceUniqueTypeParams.js.diff | 23 + ...InternalTypesProduceUniqueTypeParams.types | 32 +- ...nalTypesProduceUniqueTypeParams.types.diff | 71 +- .../declareFileExportAssignment.types | 6 +- .../declareFileExportAssignment.types.diff | 20 +- ...signmentWithVarFromVariableStatement.types | 6 +- ...entWithVarFromVariableStatement.types.diff | 20 +- ...ertyCheckingWhenTargetIsIntersection.types | 10 +- ...heckingWhenTargetIsIntersection.types.diff | 32 - .../submodule/compiler/deepKeysIndexing.types | 6 +- .../compiler/deepKeysIndexing.types.diff | 19 +- .../compiler/deeplyNestedCheck.types | 2 +- .../compiler/deeplyNestedCheck.types.diff | 10 - .../compiler/deeplyNestedMappedTypes.types | 6 +- .../deeplyNestedMappedTypes.types.diff | 29 - ...defaultDeclarationEmitNamedCorrectly.types | 4 +- ...ltDeclarationEmitNamedCorrectly.types.diff | 19 - ...eclarationEmitShadowedNamedCorrectly.types | 4 +- ...ationEmitShadowedNamedCorrectly.types.diff | 17 +- ...terAddsUndefinedWithStrictNullChecks.types | 10 +- ...dsUndefinedWithStrictNullChecks.types.diff | 31 - .../deferredLookupTypeResolution.types | 2 +- .../deferredLookupTypeResolution.types.diff | 11 + .../derivedInterfaceCallSignature.errors.txt | 4 +- ...ivedInterfaceCallSignature.errors.txt.diff | 19 + .../derivedInterfaceCallSignature.types | 34 +- .../derivedInterfaceCallSignature.types.diff | 93 - .../destructureOptionalParameter.types | 2 +- .../destructureOptionalParameter.types.diff | 11 - .../destructuredDeclarationEmit.types | 10 +- .../destructuredDeclarationEmit.types.diff | 40 + .../destructuringAssignmentWithDefault.types | 42 +- ...tructuringAssignmentWithDefault.types.diff | 107 - .../destructuringAssignmentWithDefault2.types | 44 +- ...ructuringAssignmentWithDefault2.types.diff | 111 - ...destructuringInVariableDeclarations1.types | 4 +- ...ucturingInVariableDeclarations1.types.diff | 15 - ...destructuringInVariableDeclarations2.types | 4 +- ...ucturingInVariableDeclarations2.types.diff | 16 - ...InitializerContextualTypeFromContext.types | 4 +- ...alizerContextualTypeFromContext.types.diff | 14 - .../destructuringWithGenericParameter.types | 4 +- ...structuringWithGenericParameter.types.diff | 13 - .../destructuringWithNumberLiteral.types | 2 +- .../destructuringWithNumberLiteral.types.diff | 9 - ...ionsForExpressionsWhichCouldBeCalled.types | 8 +- ...orExpressionsWhichCouldBeCalled.types.diff | 38 - .../compiler/differentTypesWithSameName.types | 2 +- .../differentTypesWithSameName.types.diff | 11 - ...riminableUnionWithIntersectedMembers.types | 4 +- ...ableUnionWithIntersectedMembers.types.diff | 20 + ...discriminantNarrowingCouldBeCircular.types | 4 +- ...iminantNarrowingCouldBeCircular.types.diff | 14 - .../compiler/discriminantPropertyCheck.types | 8 +- .../discriminantPropertyCheck.types.diff | 28 +- .../discriminantPropertyInference.types | 24 +- .../discriminantPropertyInference.types.diff | 87 - ...ntUsingEvaluatableTemplateExpression.types | 4 +- ...ngEvaluatableTemplateExpression.types.diff | 17 - .../compiler/discriminantsAndPrimitives.types | 16 +- .../discriminantsAndPrimitives.types.diff | 61 - ...y3(exactoptionalpropertytypes=false).types | 6 +- ...actoptionalpropertytypes=false).types.diff | 29 - ...ty3(exactoptionalpropertytypes=true).types | 4 +- ...xactoptionalpropertytypes=true).types.diff | 19 - ...discriminatedUnionWithIndexSignature.types | 6 +- ...iminatedUnionWithIndexSignature.types.diff | 17 + .../compiler/dissallowSymbolAsWeakType.types | 8 +- .../dissallowSymbolAsWeakType.types.diff | 21 - .../compiler/divergentAccessors1.types | 8 +- .../compiler/divergentAccessors1.types.diff | 34 - .../compiler/divergentAccessorsTypes6.types | 4 +- .../divergentAccessorsTypes6.types.diff | 13 - .../divideAndConquerIntersections.types | 6 +- .../divideAndConquerIntersections.types.diff | 31 +- .../compiler/doNotInferUnrelatedTypes.types | 4 +- .../doNotInferUnrelatedTypes.types.diff | 18 - ...uNeedToChangeYourTargetLibraryES2015.types | 40 +- ...ToChangeYourTargetLibraryES2015.types.diff | 118 - ...dToChangeYourTargetLibraryES2016Plus.types | 8 +- ...angeYourTargetLibraryES2016Plus.types.diff | 25 - ...urTargetLibraryES2023(target=esnext).types | 20 +- ...getLibraryES2023(target=esnext).types.diff | 58 - ...leMixinConditionalTypeBaseClassWorks.types | 6 +- ...inConditionalTypeBaseClassWorks.types.diff | 6 +- .../doubleUnderscoreExportStarConflict.types | 4 +- ...bleUnderscoreExportStarConflict.types.diff | 13 - ...iteralProperty_computedNameNegative1.types | 8 +- ...lProperty_computedNameNegative1.types.diff | 24 +- ...duplicateOverloadInTypeAugmentation1.types | 4 +- ...cateOverloadInTypeAugmentation1.types.diff | 13 +- .../compiler/duplicateTypeParameters3.types | 2 +- .../duplicateTypeParameters3.types.diff | 10 - .../emitClassExpressionInDeclarationFile.js | 4 +- ...itClassExpressionInDeclarationFile.js.diff | 20 +- .../emitClassExpressionInDeclarationFile2.js | 4 +- ...tClassExpressionInDeclarationFile2.js.diff | 4 +- .../submodule/compiler/emitMethodCalledNew.js | 2 +- .../compiler/emitMethodCalledNew.js.diff | 9 + ...BindingPatternInDeclarationSignature.types | 32 +- ...ngPatternInDeclarationSignature.types.diff | 94 - .../compiler/enumMemberReduction.types | 8 +- .../compiler/enumMemberReduction.types.diff | 38 - .../compiler/enumPropertyAccess.types | 8 +- .../compiler/enumPropertyAccess.types.diff | 24 - .../compiler/errorConstructorSubtypes.types | 6 +- .../errorConstructorSubtypes.types.diff | 20 - .../submodule/compiler/errorElaboration.types | 2 +- .../compiler/errorElaboration.types.diff | 11 - .../errorForUsingPropertyOfTypeAsType03.types | 6 +- ...rForUsingPropertyOfTypeAsType03.types.diff | 27 - ...nionVsObjectShouldDeeplyDisambiguate.types | 2 +- ...sObjectShouldDeeplyDisambiguate.types.diff | 11 - ...ionVsObjectShouldDeeplyDisambiguate2.types | 2 +- ...ObjectShouldDeeplyDisambiguate2.types.diff | 11 - ...errorsOnUnionsOfOverlappingObjects01.types | 6 +- ...sOnUnionsOfOverlappingObjects01.types.diff | 23 - .../compiler/es2018ObjectAssign.types | 4 +- .../compiler/es2018ObjectAssign.types.diff | 11 + ...HelpersAsyncFunctions(target=es2015).types | 2 +- ...rsAsyncFunctions(target=es2015).types.diff | 11 - .../esNextWeakRefs_IterableWeakMap.types | 6 +- .../esNextWeakRefs_IterableWeakMap.types.diff | 24 - .../escapedReservedCompilerNamedIdentifier.js | 6 +- ...pedReservedCompilerNamedIdentifier.js.diff | 29 + ...ckIntersectionWithRecursiveType.errors.txt | 12 +- ...ersectionWithRecursiveType.errors.txt.diff | 34 + ...tyCheckIntersectionWithRecursiveType.types | 6 +- ...ckIntersectionWithRecursiveType.types.diff | 23 +- ...yCheckWithMultipleDiscriminants.errors.txt | 12 +- ...kWithMultipleDiscriminants.errors.txt.diff | 40 + ...signmentMembersVisibleInAugmentation.types | 4 +- ...entMembersVisibleInAugmentation.types.diff | 19 - .../compiler/exportDefaultAbstractClass.types | 8 +- .../exportDefaultAbstractClass.types.diff | 29 - .../compiler/exportDefaultInterface.types | 8 +- .../exportDefaultInterface.types.diff | 27 - .../compiler/exportEqualErrorType.errors.txt | 4 +- .../exportEqualErrorType.errors.txt.diff | 17 + .../compiler/exportEqualErrorType.types | 4 +- .../compiler/exportEqualErrorType.types.diff | 18 - .../exportEqualMemberMissing.errors.txt | 4 +- .../exportEqualMemberMissing.errors.txt.diff | 17 + .../compiler/exportEqualMemberMissing.types | 4 +- .../exportEqualMemberMissing.types.diff | 17 - .../expressionWithJSDocTypeArguments.types | 16 +- ...xpressionWithJSDocTypeArguments.types.diff | 34 +- .../submodule/compiler/externFunc.types | 4 +- .../submodule/compiler/externFunc.types.diff | 15 - .../compiler/externModuleClobber.types | 2 +- .../compiler/externModuleClobber.types.diff | 11 - .../fatarrowfunctionsOptionalArgs.types | 52 +- .../fatarrowfunctionsOptionalArgs.types.diff | 146 - .../compiler/findLast(target=esnext).types | 44 +- .../findLast(target=esnext).types.diff | 145 - .../submodule/compiler/forAwaitForUnion.types | 2 +- .../compiler/forAwaitForUnion.types.diff | 11 - .../compiler/forOfTransformsExpression.types | 4 +- .../forOfTransformsExpression.types.diff | 16 - .../formatToPartsFractionalSecond.types | 4 +- .../formatToPartsFractionalSecond.types.diff | 17 - ...rdRefInTypeDeclaration(strict=false).types | 12 +- ...InTypeDeclaration(strict=false).types.diff | 33 + ...ardRefInTypeDeclaration(strict=true).types | 12 +- ...fInTypeDeclaration(strict=true).types.diff | 33 + .../submodule/compiler/functionCall11.types | 12 +- .../compiler/functionCall11.types.diff | 43 - .../submodule/compiler/functionCall12.types | 14 +- .../compiler/functionCall12.types.diff | 52 - .../submodule/compiler/functionCall14.types | 12 +- .../compiler/functionCall14.types.diff | 43 - .../submodule/compiler/functionCall15.types | 2 +- .../compiler/functionCall15.types.diff | 11 - .../submodule/compiler/functionCall16.types | 14 +- .../compiler/functionCall16.types.diff | 51 - .../submodule/compiler/functionCall17.types | 14 +- .../compiler/functionCall17.types.diff | 53 - .../submodule/compiler/functionCall8.types | 10 +- .../compiler/functionCall8.types.diff | 33 - .../submodule/compiler/functionCall9.types | 12 +- .../compiler/functionCall9.types.diff | 43 - ...nWithArgumentOfTypeFunctionTypeArray.types | 2 +- ...ArgumentOfTypeFunctionTypeArray.types.diff | 10 - .../functionExpressionReturningItself.js | 2 +- .../functionExpressionReturningItself.js.diff | 8 - .../functionExpressionShadowedByParams.types | 8 +- ...ctionExpressionShadowedByParams.types.diff | 26 - .../compiler/functionOverloads43.types | 6 +- .../compiler/functionOverloads43.types.diff | 21 - .../compiler/functionOverloads44.types | 4 +- .../compiler/functionOverloads44.types.diff | 20 - .../compiler/functionOverloads45.types | 4 +- .../compiler/functionOverloads45.types.diff | 20 - .../compiler/functionReturnTypeQuery.types | 4 +- .../functionReturnTypeQuery.types.diff | 19 - ...ctionSignatureAssignmentCompat1.errors.txt | 4 +- ...SignatureAssignmentCompat1.errors.txt.diff | 17 + .../functionSignatureAssignmentCompat1.types | 10 +- ...ctionSignatureAssignmentCompat1.types.diff | 29 - ...tementsAndExpressions(target=es2015).types | 10 +- ...tsAndExpressions(target=es2015).types.diff | 44 - ...ementsAndExpressionsStrictNullChecks.types | 6 +- ...sAndExpressionsStrictNullChecks.types.diff | 29 - ...eToUndefined(strictnullchecks=false).types | 2 +- ...defined(strictnullchecks=false).types.diff | 11 - .../generatorReturnExpressionIsChecked.types | 2 +- ...eratorReturnExpressionIsChecked.types.diff | 11 - ...nericArgumentCallSigAssignmentCompat.types | 10 +- ...ArgumentCallSigAssignmentCompat.types.diff | 35 - .../compiler/genericArrayMethods1.types | 4 +- .../compiler/genericArrayMethods1.types.diff | 14 - .../genericArrayWithoutTypeAnnotation.types | 2 +- ...nericArrayWithoutTypeAnnotation.types.diff | 11 - ...cCallAtYieldExpressionInGenericCall1.types | 48 +- ...AtYieldExpressionInGenericCall1.types.diff | 140 - ...cCallAtYieldExpressionInGenericCall2.types | 10 +- ...AtYieldExpressionInGenericCall2.types.diff | 45 - ...cCallAtYieldExpressionInGenericCall3.types | 6 +- ...AtYieldExpressionInGenericCall3.types.diff | 29 - ...genericCallInferenceConditionalType2.types | 12 +- ...icCallInferenceConditionalType2.types.diff | 31 - ...ericCallInferenceInConditionalTypes1.types | 22 +- ...allInferenceInConditionalTypes1.types.diff | 60 - ...acheReuseAfterMappedTypeApplication1.types | 10 +- ...euseAfterMappedTypeApplication1.types.diff | 36 +- ...allOnMemberReturningClosedOverObject.types | 10 +- ...MemberReturningClosedOverObject.types.diff | 17 +- .../genericCapturingFunctionNarrowing.types | 2 +- ...nericCapturingFunctionNarrowing.types.diff | 11 - .../compiler/genericChainedCalls.types | 16 +- .../compiler/genericChainedCalls.types.diff | 47 - .../compiler/genericCombinators2.types | 8 +- .../compiler/genericCombinators2.types.diff | 26 +- .../submodule/compiler/genericDefaults.types | 560 +- .../compiler/genericDefaults.types.diff | 1837 ------ .../compiler/genericDefaultsErrors.types | 6 +- .../compiler/genericDefaultsErrors.types.diff | 22 - .../compiler/genericFunctionInference1.types | 10 +- .../genericFunctionInference1.types.diff | 39 +- ...ericFunctionsAndConditionalInference.types | 18 +- ...unctionsAndConditionalInference.types.diff | 58 - ...ericFunctionsWithOptionalParameters1.types | 18 +- ...unctionsWithOptionalParameters1.types.diff | 44 - ...ericFunctionsWithOptionalParameters2.types | 18 +- ...unctionsWithOptionalParameters2.types.diff | 44 - ...ericFunctionsWithOptionalParameters3.types | 2 +- ...unctionsWithOptionalParameters3.types.diff | 11 - .../compiler/genericInterfaceTypeCall.types | 2 +- .../genericInterfaceTypeCall.types.diff | 11 - .../genericLambaArgWithoutTypeArguments.types | 2 +- ...ricLambaArgWithoutTypeArguments.types.diff | 11 - .../genericObjectSpreadResultInSwitch.types | 8 +- ...nericObjectSpreadResultInSwitch.types.diff | 26 + ...cRecursiveImplicitConstructorErrors3.types | 14 +- ...rsiveImplicitConstructorErrors3.types.diff | 43 +- .../submodule/compiler/genericReduce.types | 8 +- .../compiler/genericReduce.types.diff | 26 - .../submodule/compiler/genericRestArgs.types | 4 +- .../compiler/genericRestArgs.types.diff | 19 - .../submodule/compiler/genericRestTypes.types | 2 +- .../compiler/genericRestTypes.types.diff | 11 - .../genericTypeArgumentInference1.types | 18 +- .../genericTypeArgumentInference1.types.diff | 59 - .../genericTypeWithCallableMembers2.types | 4 +- ...genericTypeWithCallableMembers2.types.diff | 20 - .../genericsWithoutTypeParameters1.types | 10 +- .../genericsWithoutTypeParameters1.types.diff | 41 - .../compiler/getParameterNameAtPosition.types | 4 +- .../getParameterNameAtPosition.types.diff | 19 - ...cMappedTypeIntersectionAssignability.types | 12 +- ...edTypeIntersectionAssignability.types.diff | 32 - .../homomorphicMappedTypeNesting.types | 2 +- .../homomorphicMappedTypeNesting.types.diff | 9 - .../identityAndDivergentNormalizedTypes.types | 14 +- ...tityAndDivergentNormalizedTypes.types.diff | 28 +- .../compiler/implementArrayInterface.types | 18 +- .../implementArrayInterface.types.diff | 77 - .../implicitAnyGenericTypeInference.types | 24 +- ...implicitAnyGenericTypeInference.types.diff | 56 - .../compiler/implicitConstParameters.types | 6 +- .../implicitConstParameters.types.diff | 22 - .../compiler/importAssertionNonstring.types | 4 +- .../importAssertionNonstring.types.diff | 11 - .../importHelpers(target=es2015).types | 2 +- .../importHelpers(target=es2015).types.diff | 11 - ...lpersInAmbientContext(target=es2015).types | 2 +- ...InAmbientContext(target=es2015).types.diff | 11 - ...persInIsolatedModules(target=es2015).types | 2 +- ...nIsolatedModules(target=es2015).types.diff | 11 - .../importHelpersInTsx(target=es2015).types | 2 +- ...portHelpersInTsx(target=es2015).types.diff | 11 - .../inDoesNotOperateOnPrimitiveTypes.types | 6 +- ...nDoesNotOperateOnPrimitiveTypes.types.diff | 29 - .../compiler/inKeywordAndIntersection.types | 2 +- .../inKeywordAndIntersection.types.diff | 10 - .../compiler/inKeywordAndUnknown.types | 4 +- .../compiler/inKeywordAndUnknown.types.diff | 20 - .../inKeywordTypeguard(strict=false).types | 24 +- ...nKeywordTypeguard(strict=false).types.diff | 71 - .../inKeywordTypeguard(strict=true).types | 14 +- ...inKeywordTypeguard(strict=true).types.diff | 40 - .../indexedAccessAndNullableNarrowing.types | 2 +- ...dexedAccessAndNullableNarrowing.types.diff | 11 - ...fNestedSimplifiedSubstituteUnwrapped.types | 2 +- ...edSimplifiedSubstituteUnwrapped.types.diff | 11 - .../compiler/indexedAccessNormalization.types | 4 +- .../indexedAccessNormalization.types.diff | 19 - .../indexedAccessTypeConstraints.types | 2 +- .../indexedAccessTypeConstraints.types.diff | 11 + .../indexedAccessWithFreshObjectLiteral.types | 6 +- ...xedAccessWithFreshObjectLiteral.types.diff | 29 + .../indirectTypeParameterReferences.types | 4 +- ...indirectTypeParameterReferences.types.diff | 19 - ...inferFromGenericFunctionReturnTypes3.types | 16 +- ...FromGenericFunctionReturnTypes3.types.diff | 72 + .../inferFromNestedSameShapeTuple.types | 30 +- .../inferFromNestedSameShapeTuple.types.diff | 64 + ...erParameterWithMethodCallInitializer.types | 2 +- ...ameterWithMethodCallInitializer.types.diff | 11 - .../submodule/compiler/inferTypePredicates.js | 12 +- .../compiler/inferTypePredicates.js.diff | 28 +- .../compiler/inferTypePredicates.types | 48 +- .../compiler/inferTypePredicates.types.diff | 144 - .../inferenceContextualReturnTypeUnion1.types | 8 +- ...renceContextualReturnTypeUnion1.types.diff | 33 - .../inferenceContextualReturnTypeUnion2.types | 10 +- ...renceContextualReturnTypeUnion2.types.diff | 33 - .../inferenceContextualReturnTypeUnion3.types | 10 +- ...renceContextualReturnTypeUnion3.types.diff | 47 - .../inferenceDoesNotAddUndefinedOrNull.types | 22 +- ...erenceDoesNotAddUndefinedOrNull.types.diff | 73 +- .../compiler/inferenceErasedSignatures.types | 6 +- .../inferenceErasedSignatures.types.diff | 29 - .../inferenceExactOptionalProperties2.types | 18 +- ...ferenceExactOptionalProperties2.types.diff | 50 +- .../inferenceFromGenericClassNoCrash1.types | 4 +- ...ferenceFromGenericClassNoCrash1.types.diff | 18 - .../submodule/compiler/inferenceLimit.types | 2 +- .../compiler/inferenceLimit.types.diff | 10 - ...eOfNullableObjectTypesWithCommonBase.types | 4 +- ...llableObjectTypesWithCommonBase.types.diff | 19 + ...eOptionalPropertiesToIndexSignatures.types | 12 +- ...onalPropertiesToIndexSignatures.types.diff | 44 - .../inferenceShouldFailOnEvolvingArrays.types | 14 +- ...renceShouldFailOnEvolvingArrays.types.diff | 59 + .../inferredReturnTypeIncorrectReuse1.types | 4 +- ...ferredReturnTypeIncorrectReuse1.types.diff | 18 - .../inferrenceInfiniteLoopWithSubtyping.types | 10 +- ...rrenceInfiniteLoopWithSubtyping.types.diff | 30 - .../compiler/infiniteConstraints.types | 12 +- .../compiler/infiniteConstraints.types.diff | 56 - .../infinitelyExpandingOverloads.types | 2 +- .../infinitelyExpandingOverloads.types.diff | 11 - ...arameterBeforeNonoptionalNotOptional.types | 2 +- ...terBeforeNonoptionalNotOptional.types.diff | 11 - ...iasAssignableToConstraintSameAsAlias.types | 2 +- ...signableToConstraintSameAsAlias.types.diff | 11 - .../compiler/innerTypeArgumentInference.types | 4 +- .../innerTypeArgumentInference.types.diff | 16 - .../compiler/instanceOfAssignability.types | 4 +- .../instanceOfAssignability.types.diff | 20 - .../instanceofNarrowReadonlyArray.types | 2 +- .../instanceofNarrowReadonlyArray.types.diff | 11 - .../instanceofTypeAliasToGenericClass.types | 2 +- ...stanceofTypeAliasToGenericClass.types.diff | 11 - .../instanceofWithPrimitiveUnion.types | 4 +- .../instanceofWithPrimitiveUnion.types.diff | 20 - .../compiler/instantiateContextualTypes.types | 18 +- .../instantiateContextualTypes.types.diff | 76 - ...antiationExpressionErrorNoCrash.errors.txt | 12 +- ...tionExpressionErrorNoCrash.errors.txt.diff | 27 +- .../instantiationExpressionErrorNoCrash.types | 6 +- ...antiationExpressionErrorNoCrash.types.diff | 22 - ...nOfTypeVariableHasApparentSignatures.types | 2 +- ...peVariableHasApparentSignatures.types.diff | 10 - .../intersectionPropertyCheck.errors.txt | 12 +- .../intersectionPropertyCheck.errors.txt.diff | 32 + .../compiler/intersectionPropertyCheck.types | 10 +- .../intersectionPropertyCheck.types.diff | 29 - .../intersectionTypeNormalization.types | 4 +- .../intersectionTypeNormalization.types.diff | 16 + ...rsectionType_useDefineForClassFields.types | 4 +- ...ionType_useDefineForClassFields.types.diff | 20 - .../intersectionWithConflictingPrivates.types | 6 +- ...rsectionWithConflictingPrivates.types.diff | 19 - ...ersectionsAndOptionalProperties.errors.txt | 8 +- ...tionsAndOptionalProperties.errors.txt.diff | 27 + .../intersectionsAndOptionalProperties.types | 6 +- ...ersectionsAndOptionalProperties.types.diff | 26 - .../compiler/intersectionsOfLargeUnions.types | 6 +- .../intersectionsOfLargeUnions.types.diff | 28 - .../intersectionsOfLargeUnions2.types | 6 +- .../intersectionsOfLargeUnions2.types.diff | 28 - .../submodule/compiler/invalidSplice.types | 4 +- .../compiler/invalidSplice.types.diff | 14 - .../invariantGenericErrorElaboration.types | 2 +- ...nvariantGenericErrorElaboration.types.diff | 10 + .../submodule/compiler/ipromise2.types | 14 +- .../submodule/compiler/ipromise2.types.diff | 30 +- .../submodule/compiler/ipromise3.types | 14 +- .../submodule/compiler/ipromise3.types.diff | 30 +- .../submodule/compiler/ipromise4.types | 22 +- .../submodule/compiler/ipromise4.types.diff | 49 +- ...ationVisibleNodeKinds(target=es2015).types | 8 +- ...VisibleNodeKinds(target=es2015).types.diff | 37 - .../isolatedDeclarationErrorTypes1.js | 5 +- .../isolatedDeclarationErrorTypes1.js.diff | 12 - .../isolatedDeclarationErrorTypes1.types | 8 +- .../isolatedDeclarationErrorTypes1.types.diff | 20 - .../isolatedDeclarationErrors.errors.txt | 29 + .../isolatedDeclarationErrors.errors.txt.diff | 48 +- ...edDeclarationErrorsAugmentation.errors.txt | 28 + ...larationErrorsAugmentation.errors.txt.diff | 32 - ...solatedDeclarationErrorsClasses.errors.txt | 62 +- ...edDeclarationErrorsClasses.errors.txt.diff | 134 +- ...arationErrorsClassesExpressions.errors.txt | 36 + ...onErrorsClassesExpressions.errors.txt.diff | 52 +- ...solatedDeclarationErrorsDefault.errors.txt | 49 + ...edDeclarationErrorsDefault.errors.txt.diff | 67 +- .../isolatedDeclarationErrorsEnums.errors.txt | 70 + ...atedDeclarationErrorsEnums.errors.txt.diff | 74 - ...clarationErrorsExpandoFunctions.errors.txt | 55 + ...tionErrorsExpandoFunctions.errors.txt.diff | 87 +- ...tedDeclarationErrorsExpressions.errors.txt | 345 + ...clarationErrorsExpressions.errors.txt.diff | 387 +- .../isolatedDeclarationErrorsExpressions.js | 4 +- ...olatedDeclarationErrorsExpressions.js.diff | 4 +- ...ationErrorsFunctionDeclarations.errors.txt | 40 + ...ErrorsFunctionDeclarations.errors.txt.diff | 44 - ...solatedDeclarationErrorsObjects.errors.txt | 83 +- ...edDeclarationErrorsObjects.errors.txt.diff | 148 +- ...tedDeclarationErrorsReturnTypes.errors.txt | 656 ++ ...clarationErrorsReturnTypes.errors.txt.diff | 914 +-- .../isolatedDeclarationLazySymbols.errors.txt | 16 +- ...atedDeclarationLazySymbols.errors.txt.diff | 36 +- ...solatedDeclarationsAddUndefined.errors.txt | 28 + ...edDeclarationsAddUndefined.errors.txt.diff | 43 +- .../isolatedDeclarationsAddUndefined.js | 8 +- .../isolatedDeclarationsAddUndefined.js.diff | 26 +- .../isolatedDeclarationsAddUndefined.types | 6 +- ...solatedDeclarationsAddUndefined.types.diff | 15 - .../isolatedDeclarationsAddUndefined2.types | 6 +- ...olatedDeclarationsAddUndefined2.types.diff | 19 - .../isolatedDeclarationsAllowJs.errors.txt | 6 +- ...solatedDeclarationsAllowJs.errors.txt.diff | 20 - .../compiler/isolatedDeclarationsLiterals.js | 4 +- .../isolatedDeclarationsLiterals.js.diff | 14 + .../isolatedDeclarationsLiterals.types | 6 +- .../isolatedDeclarationsLiterals.types.diff | 15 + ...alse,strictbuiltiniteratorreturn=false).js | 20 +- ...strictbuiltiniteratorreturn=false).js.diff | 29 - ...false,strictbuiltiniteratorreturn=true).js | 20 +- ...,strictbuiltiniteratorreturn=true).js.diff | 29 - ...true,strictbuiltiniteratorreturn=false).js | 20 +- ...strictbuiltiniteratorreturn=false).js.diff | 29 - ...=true,strictbuiltiniteratorreturn=true).js | 20 +- ...,strictbuiltiniteratorreturn=true).js.diff | 29 - ...ithNeverAsUnionMember(target=esnext).types | 16 +- ...verAsUnionMember(target=esnext).types.diff | 47 - .../iteratorsAndStrictNullChecks.types | 4 +- .../iteratorsAndStrictNullChecks.types.diff | 14 - ...oesNotUseNodeModulesPathWithoutError.types | 2 +- ...tUseNodeModulesPathWithoutError.types.diff | 11 +- .../compiler/jsEnumTagOnObjectFrozen.types | 4 +- .../jsEnumTagOnObjectFrozen.types.diff | 14 +- .../compiler/jsFileFunctionOverloads.types | 2 +- .../jsFileFunctionOverloads.types.diff | 11 +- .../compiler/jsFileFunctionOverloads2.types | 2 +- .../jsFileFunctionOverloads2.types.diff | 11 +- .../compiler/jsFileMethodOverloads.types | 2 +- .../compiler/jsFileMethodOverloads.types.diff | 11 + .../compiler/jsFileMethodOverloads2.types | 2 +- .../jsFileMethodOverloads2.types.diff | 11 +- .../compiler/jsFileMethodOverloads4.types | 4 +- .../jsFileMethodOverloads4.types.diff | 4 +- .../compiler/jsFileMethodOverloads5.js | 2 +- .../compiler/jsFileMethodOverloads5.js.diff | 2 +- .../compiler/jsFileMethodOverloads5.types | 4 +- .../jsFileMethodOverloads5.types.diff | 4 +- ...ithPrototypeNoErrorTruncationNoCrash.types | 20 +- ...ototypeNoErrorTruncationNoCrash.types.diff | 20 +- .../jsdocArrayObjectPromiseImplicitAny.types | 4 +- ...ocArrayObjectPromiseImplicitAny.types.diff | 20 +- ...jsdocArrayObjectPromiseNoImplicitAny.types | 4 +- ...ArrayObjectPromiseNoImplicitAny.types.diff | 20 +- .../jsdocBracelessTypeTag1.errors.txt | 2 +- .../jsdocBracelessTypeTag1.errors.txt.diff | 9 + .../compiler/jsdocBracelessTypeTag1.types | 4 +- .../jsdocBracelessTypeTag1.types.diff | 20 + .../jsdocClassMissingTypeArguments.types | 2 +- .../jsdocClassMissingTypeArguments.types.diff | 9 + .../jsdocResolveNameFailureInTypedef.types | 2 +- ...sdocResolveNameFailureInTypedef.types.diff | 11 - ...jsdocTypeGenericInstantiationAttempt.types | 2 +- ...TypeGenericInstantiationAttempt.types.diff | 11 - ...ocTypeNongenericInstantiationAttempt.types | 30 +- ...eNongenericInstantiationAttempt.types.diff | 43 +- ...TypedefBeforeParenthesizedExpression.types | 2 +- ...efBeforeParenthesizedExpression.types.diff | 10 + .../submodule/compiler/json.stringify.types | 20 +- .../compiler/json.stringify.types.diff | 59 - .../jsxCallElaborationCheckNoCrash1.types | 4 +- ...jsxCallElaborationCheckNoCrash1.types.diff | 13 - .../jsxCallbackWithDestructuring.types | 2 +- .../jsxCallbackWithDestructuring.types.diff | 10 - .../compiler/jsxComponentTypeErrors.types | 18 +- .../jsxComponentTypeErrors.types.diff | 18 +- .../compiler/jsxElementType.errors.txt | 8 +- .../compiler/jsxElementType.errors.txt.diff | 22 +- ...ptyExpressionNotCountedAsChild2.errors.txt | 4 +- ...pressionNotCountedAsChild2.errors.txt.diff | 17 + ...jsxEmptyExpressionNotCountedAsChild2.types | 2 +- ...ptyExpressionNotCountedAsChild2.types.diff | 10 - .../jsxExcessPropsAndAssignability.types | 4 +- .../jsxExcessPropsAndAssignability.types.diff | 13 - .../jsxFragmentFactoryNoUnusedLocals.types | 2 +- ...sxFragmentFactoryNoUnusedLocals.types.diff | 2 +- .../compiler/jsxFragmentWrongType.errors.txt | 4 +- .../jsxFragmentWrongType.errors.txt.diff | 17 + .../compiler/jsxFragmentWrongType.types | 8 +- .../compiler/jsxFragmentWrongType.types.diff | 17 - ...ngTemplateLiteralTypeSignatures.errors.txt | 2 +- ...plateLiteralTypeSignatures.errors.txt.diff | 9 + .../jsxIntrinsicElementsCompatability.types | 8 +- ...xIntrinsicElementsCompatability.types.diff | 10 +- ...sErrorWhenTagExpectsTooManyArguments.types | 4 +- ...rWhenTagExpectsTooManyArguments.types.diff | 19 - ...ibraryManagedAttributesUnusedGeneric.types | 6 +- ...yManagedAttributesUnusedGeneric.types.diff | 17 - ...xLocalNamespaceIndexSignatureNoCrash.types | 4 +- ...lNamespaceIndexSignatureNoCrash.types.diff | 14 - .../compiler/jsxNamespaceGlobalReexport.types | 24 +- .../jsxNamespaceGlobalReexport.types.diff | 98 - ...paceGlobalReexportMissingAliasTarget.types | 24 +- ...lobalReexportMissingAliasTarget.types.diff | 98 - ...xNamespaceImplicitImportJSXNamespace.types | 24 +- ...spaceImplicitImportJSXNamespace.types.diff | 98 - .../submodule/compiler/jsxPartialSpread.types | 2 +- .../compiler/jsxPartialSpread.types.diff | 11 - .../compiler/jsxPropsAsIdentifierNames.types | 2 +- .../jsxPropsAsIdentifierNames.types.diff | 11 - .../submodule/compiler/largeTupleTypes.types | 2 +- .../compiler/largeTupleTypes.types.diff | 11 - .../compiler/letDeclarations-access.types | 4 +- .../letDeclarations-access.types.diff | 11 - .../compiler/library_ArraySlice.types | 12 +- .../compiler/library_ArraySlice.types.diff | 36 - .../library_DatePrototypeProperties.types | 52 +- ...library_DatePrototypeProperties.types.diff | 152 - .../library_RegExpExecArraySlice.types | 12 +- .../library_RegExpExecArraySlice.types.diff | 30 - .../compiler/library_StringSlice.types | 12 +- .../compiler/library_StringSlice.types.diff | 36 - .../literalsInComputedProperties1.types | 48 +- .../literalsInComputedProperties1.types.diff | 134 - .../localTypeParameterInferencePriority.types | 2 +- ...lTypeParameterInferencePriority.types.diff | 11 - .../mappedTypeContextualTypesApplied.types | 20 +- ...appedTypeContextualTypesApplied.types.diff | 59 +- .../mappedTypeGenericIndexedAccess.types | 6 +- .../mappedTypeGenericIndexedAccess.types.diff | 25 + .../mappedTypeIndexedAccessConstraint.types | 50 +- ...ppedTypeIndexedAccessConstraint.types.diff | 133 - .../compiler/mappedTypeMultiInference.types | 4 +- .../mappedTypeMultiInference.types.diff | 20 - ...ppedTypeTupleConstraintAssignability.types | 4 +- ...ypeTupleConstraintAssignability.types.diff | 20 - ...nionConstrainTupleTreatedAsArrayLike.types | 2 +- ...onstrainTupleTreatedAsArrayLike.types.diff | 11 - ...ithAsClauseAndLateBoundProperty.errors.txt | 4 +- ...ClauseAndLateBoundProperty.errors.txt.diff | 16 + ...TypeWithAsClauseAndLateBoundProperty.types | 6 +- ...ithAsClauseAndLateBoundProperty.types.diff | 15 - ...edTypeWithAsClauseAndLateBoundProperty2.js | 18 +- ...eWithAsClauseAndLateBoundProperty2.js.diff | 55 - ...ypeWithAsClauseAndLateBoundProperty2.types | 8 +- ...thAsClauseAndLateBoundProperty2.types.diff | 15 - .../mergedInstantiationAssignment.types | 18 +- .../mergedInstantiationAssignment.types.diff | 61 - ...ExplicitTypeParameterAndArgumentType.types | 12 +- ...citTypeParameterAndArgumentType.types.diff | 38 - .../compiler/missingTypeArguments1.types | 4 +- .../compiler/missingTypeArguments1.types.diff | 20 - .../compiler/missingTypeArguments2.types | 6 +- .../compiler/missingTypeArguments2.types.diff | 20 - .../compiler/misspelledJsDocTypedefTags.types | 4 +- .../misspelledJsDocTypedefTags.types.diff | 20 - .../compiler/mixinOverMappedTypeNoCrash.types | 2 +- .../mixinOverMappedTypeNoCrash.types.diff | 11 +- .../compiler/mixinPrivateAndProtected.types | 12 +- .../mixinPrivateAndProtected.types.diff | 30 - ...eLibrary_NoErrorDuplicateLibOptions1.types | 8 +- ...ary_NoErrorDuplicateLibOptions1.types.diff | 25 - ...eLibrary_NoErrorDuplicateLibOptions2.types | 8 +- ...ary_NoErrorDuplicateLibOptions2.types.diff | 25 - ...dularizeLibrary_TargetES5UsingES6Lib.types | 8 +- ...izeLibrary_TargetES5UsingES6Lib.types.diff | 25 - ...dularizeLibrary_TargetES6UsingES6Lib.types | 8 +- ...izeLibrary_TargetES6UsingES6Lib.types.diff | 25 - .../moduleAugmentationDeclarationEmit2.types | 4 +- ...uleAugmentationDeclarationEmit2.types.diff | 16 - ...mentationDuringSyntheticDefaultCheck.types | 4 +- ...tionDuringSyntheticDefaultCheck.types.diff | 30 +- ...duleAugmentationExtendAmbientModule2.types | 4 +- ...ugmentationExtendAmbientModule2.types.diff | 16 - .../moduleAugmentationExtendFileModule2.types | 4 +- ...leAugmentationExtendFileModule2.types.diff | 16 - .../compiler/multipleInferenceContexts.types | 4 +- .../multipleInferenceContexts.types.diff | 20 - ...MergedWithFunctionWithOverloadsUsage.types | 10 +- ...dWithFunctionWithOverloadsUsage.types.diff | 27 +- .../submodule/compiler/narrowByEquality.types | 2 +- .../compiler/narrowByEquality.types.diff | 11 - .../compiler/narrowByInstanceof.types | 2 +- .../compiler/narrowByInstanceof.types.diff | 11 - ...arrowByParenthesizedSwitchExpression.types | 4 +- ...ByParenthesizedSwitchExpression.types.diff | 20 - .../narrowCommaOperatorNestedWithinLHS.types | 30 +- ...rowCommaOperatorNestedWithinLHS.types.diff | 81 - ...gAssignmentReadonlyRespectsAssertion.types | 4 +- ...gnmentReadonlyRespectsAssertion.types.diff | 14 - .../compiler/narrowingByTypeofInSwitch.types | 18 +- .../narrowingByTypeofInSwitch.types.diff | 65 +- .../compiler/narrowingDestructuring.types | 2 +- .../narrowingDestructuring.types.diff | 11 - ...nCaseClauseAfterCaseClauseWithReturn.types | 2 +- ...ClauseAfterCaseClauseWithReturn.types.diff | 11 - .../compiler/narrowingIntersection.types | 4 +- .../compiler/narrowingIntersection.types.diff | 17 - .../compiler/narrowingMutualSubtypes.types | 4 +- .../narrowingMutualSubtypes.types.diff | 20 - .../compiler/narrowingNoInfer1.types | 14 +- .../compiler/narrowingNoInfer1.types.diff | 39 + .../compiler/narrowingOfQualifiedNames.types | 168 +- .../narrowingOfQualifiedNames.types.diff | 278 - .../narrowingPastLastAssignment.types | 6 +- .../narrowingPastLastAssignment.types.diff | 22 - .../narrowingTypeofDiscriminant.types | 20 +- .../narrowingTypeofDiscriminant.types.diff | 61 +- .../compiler/narrowingTypeofFunction.types | 4 +- .../narrowingTypeofFunction.types.diff | 20 - .../compiler/narrowingTypeofUndefined2.types | 6 +- .../narrowingTypeofUndefined2.types.diff | 25 - .../compiler/narrowingUnionToUnion.types | 40 +- .../compiler/narrowingUnionToUnion.types.diff | 164 +- .../compiler/narrowingUnionWithBang.types | 56 +- .../narrowingUnionWithBang.types.diff | 150 + ...rbyIdenticalGenericLambdasAssignable.types | 24 +- ...enticalGenericLambdasAssignable.types.diff | 68 - .../nestedExcessPropertyChecking.errors.txt | 6 +- ...stedExcessPropertyChecking.errors.txt.diff | 28 + .../nestedExcessPropertyChecking.types | 12 +- .../nestedExcessPropertyChecking.types.diff | 33 +- ...everAsDiscriminantType(strict=false).types | 4 +- ...sDiscriminantType(strict=false).types.diff | 20 + ...neverAsDiscriminantType(strict=true).types | 4 +- ...AsDiscriminantType(strict=true).types.diff | 13 +- .../submodule/compiler/noCrashOnMixin.types | 4 +- .../compiler/noCrashOnMixin.types.diff | 4 +- .../submodule/compiler/noCrashOnMixin2.types | 6 +- .../compiler/noCrashOnMixin2.types.diff | 6 +- .../compiler/noCrashOnThisTypeUsage.types | 4 +- .../noCrashOnThisTypeUsage.types.diff | 20 - .../noImplicitReturnsExclusions.types | 6 +- .../noImplicitReturnsExclusions.types.diff | 15 +- ...plicitReturnsWithoutReturnExpression.types | 2 +- ...tReturnsWithoutReturnExpression.types.diff | 11 - .../compiler/noImplicitThisBigThis.js | 126 +- .../compiler/noImplicitThisBigThis.js.diff | 135 + .../compiler/noImplicitThisBigThis.types | 4 +- .../compiler/noImplicitThisBigThis.types.diff | 20 + .../noInferUnionExcessPropertyCheck1.types | 6 +- ...oInferUnionExcessPropertyCheck1.types.diff | 29 - .../compiler/noIterationTypeErrorsInCFA.types | 2 +- .../noIterationTypeErrorsInCFA.types.diff | 11 - .../noTypeArgumentOnReturnType1.types | 2 +- .../noTypeArgumentOnReturnType1.types.diff | 11 - .../compiler/noUnusedLocals_writeOnly.types | 2 +- .../noUnusedLocals_writeOnly.types.diff | 9 - ...oUsedBeforeDefinedErrorInTypeContext.types | 10 +- ...BeforeDefinedErrorInTypeContext.types.diff | 40 - .../nonInferrableTypePropagation2.types | 4 +- .../nonInferrableTypePropagation2.types.diff | 20 - ...tUnionNestedExcessPropertyCheck.errors.txt | 4 +- ...nNestedExcessPropertyCheck.errors.txt.diff | 18 + ...ObjectUnionNestedExcessPropertyCheck.types | 2 +- ...tUnionNestedExcessPropertyCheck.types.diff | 11 - .../nondistributiveConditionalTypeInfer.types | 6 +- ...istributiveConditionalTypeInfer.types.diff | 22 - .../normalizedIntersectionTooComplex.types | 82 +- ...ormalizedIntersectionTooComplex.types.diff | 172 - .../submodule/compiler/objectCreate2.types | 40 +- .../compiler/objectCreate2.types.diff | 110 - .../submodule/compiler/objectFreeze.types | 24 +- .../compiler/objectFreeze.types.diff | 72 - .../objectFreezeLiteralsDontWiden.types | 4 +- .../objectFreezeLiteralsDontWiden.types.diff | 14 - .../compiler/objectFromEntries.types | 10 +- .../compiler/objectFromEntries.types.diff | 35 - ...iteralComputedNameNoDeclarationError.types | 6 +- ...lComputedNameNoDeclarationError.types.diff | 21 + .../compiler/objectMembersOnTypes.types | 4 +- .../compiler/objectMembersOnTypes.types.diff | 14 - .../observableInferenceCanBeMade.types | 4 +- .../observableInferenceCanBeMade.types.diff | 20 - ...ailableOnPromisedType(target=es2015).types | 4 +- ...leOnPromisedType(target=es2015).types.diff | 20 - ...ptionalFunctionArgAssignability.errors.txt | 4 +- ...alFunctionArgAssignability.errors.txt.diff | 19 - .../optionalFunctionArgAssignability.types | 20 +- ...ptionalFunctionArgAssignability.types.diff | 45 - .../compiler/optionalParamArgsTest.types | 76 +- .../compiler/optionalParamArgsTest.types.diff | 246 - .../optionalParamAssignmentCompat.errors.txt | 4 +- ...ionalParamAssignmentCompat.errors.txt.diff | 17 + .../optionalParamAssignmentCompat.types | 6 +- .../optionalParamAssignmentCompat.types.diff | 20 - .../optionalParamTypeComparison.errors.txt | 8 +- ...ptionalParamTypeComparison.errors.txt.diff | 29 + .../optionalParamTypeComparison.types | 16 +- .../optionalParamTypeComparison.types.diff | 32 - ...ameterInDestructuringWithInitializer.types | 22 +- ...rInDestructuringWithInitializer.types.diff | 96 - .../optionalParameterRetainsNull.types | 12 +- .../optionalParameterRetainsNull.types.diff | 27 - .../compiler/optionalPropertiesTest.types | 2 +- .../optionalPropertiesTest.types.diff | 11 - .../overEagerReturnTypeSpecialization.types | 8 +- ...erEagerReturnTypeSpecialization.types.diff | 26 - .../overloadOnConstAsTypeAnnotation.types | 4 +- ...overloadOnConstAsTypeAnnotation.types.diff | 13 + .../overloadOnConstConstraintChecks1.types | 18 +- ...verloadOnConstConstraintChecks1.types.diff | 55 + .../overloadOnConstConstraintChecks2.types | 8 +- ...verloadOnConstConstraintChecks2.types.diff | 26 + .../overloadOnConstConstraintChecks3.types | 8 +- ...verloadOnConstConstraintChecks3.types.diff | 26 + .../overloadOnConstConstraintChecks4.types | 8 +- ...verloadOnConstConstraintChecks4.types.diff | 26 + .../overloadOnConstDuplicateOverloads1.types | 14 +- ...rloadOnConstDuplicateOverloads1.types.diff | 48 + ...InBaseWithBadImplementationInDerived.types | 8 +- ...eWithBadImplementationInDerived.types.diff | 26 + .../compiler/overloadOnConstInCallback1.types | 6 +- .../overloadOnConstInCallback1.types.diff | 19 + ...ObjectLiteralImplementingAnInterface.types | 12 +- ...tLiteralImplementingAnInterface.types.diff | 26 + .../overloadOnConstInheritance1.types | 8 +- .../overloadOnConstInheritance1.types.diff | 26 + .../overloadOnConstInheritance2.errors.txt | 4 +- ...verloadOnConstInheritance2.errors.txt.diff | 19 + .../overloadOnConstInheritance2.types | 6 +- .../overloadOnConstInheritance2.types.diff | 21 + .../overloadOnConstInheritance3.types | 4 +- .../overloadOnConstInheritance3.types.diff | 15 + .../overloadOnConstInheritance4.types | 12 +- .../overloadOnConstInheritance4.types.diff | 33 + .../overloadOnConstNoAnyImplementation.types | 18 +- ...rloadOnConstNoAnyImplementation.types.diff | 53 + ...loadOnConstNoAnyImplementation2.errors.txt | 8 +- ...nConstNoAnyImplementation2.errors.txt.diff | 31 + .../overloadOnConstNoAnyImplementation2.types | 30 +- ...loadOnConstNoAnyImplementation2.types.diff | 81 + ...loadOnConstNoNonSpecializedSignature.types | 4 +- ...nConstNoNonSpecializedSignature.types.diff | 15 + ...verloadOnConstNoStringImplementation.types | 18 +- ...adOnConstNoStringImplementation.types.diff | 53 + ...dOnConstNoStringImplementation2.errors.txt | 8 +- ...nstNoStringImplementation2.errors.txt.diff | 29 + ...erloadOnConstNoStringImplementation2.types | 30 +- ...dOnConstNoStringImplementation2.types.diff | 81 + ...structorFixesInferencesAppropriately.types | 8 +- ...torFixesInferencesAppropriately.types.diff | 26 - .../compiler/overloadingOnConstants1.types | 40 +- .../overloadingOnConstants1.types.diff | 107 + ...erloadingOnConstantsInImplementation.types | 6 +- ...dingOnConstantsInImplementation.types.diff | 23 + .../compiler/overloadsWithComputedNames.types | 6 +- .../overloadsWithComputedNames.types.diff | 23 - .../parameterDestructuringObjectLiteral.js | 2 +- ...arameterDestructuringObjectLiteral.js.diff | 11 - .../parameterDestructuringObjectLiteral.types | 8 +- ...meterDestructuringObjectLiteral.types.diff | 21 - .../parameterNamesInTypeParameterList.types | 12 +- ...rameterNamesInTypeParameterList.types.diff | 55 - ...WhenAppropriatelyContextualized.errors.txt | 8 +- ...ppropriatelyContextualized.errors.txt.diff | 31 + ...TypesWhenAppropriatelyContextualized.types | 20 +- ...WhenAppropriatelyContextualized.types.diff | 56 - ...eArrowFunctionWithFunctionReturnType.types | 4 +- ...wFunctionWithFunctionReturnType.types.diff | 11 - .../compiler/parseAssertEntriesError.js | 4 +- .../compiler/parseAssertEntriesError.js.diff | 10 - .../submodule/compiler/parseBigInt.types | 20 +- .../submodule/compiler/parseBigInt.types.diff | 50 - .../compiler/parseImportAttributesError.js | 4 +- .../parseImportAttributesError.js.diff | 10 - .../compiler/predicateSemantics.types | 6 +- .../compiler/predicateSemantics.types.diff | 29 - .../compiler/primitiveUnionDetection.types | 6 +- .../primitiveUnionDetection.types.diff | 21 - ...ssignmentOnExportedGenericInterface1.types | 2 +- ...mentOnExportedGenericInterface1.types.diff | 11 - .../privacyFunctionParameterDeclFile.types | 40 +- ...rivacyFunctionParameterDeclFile.types.diff | 158 - .../privacyFunctionReturnTypeDeclFile.types | 40 +- ...ivacyFunctionReturnTypeDeclFile.types.diff | 169 - .../compiler/promisePermutations.types | 8 +- .../compiler/promisePermutations.types.diff | 8 +- .../compiler/promisePermutations2.types | 2 +- .../compiler/promisePermutations2.types.diff | 11 +- .../compiler/promisePermutations3.types | 8 +- .../compiler/promisePermutations3.types.diff | 8 +- .../submodule/compiler/promiseTest.types | 4 +- .../submodule/compiler/promiseTest.types.diff | 16 - .../submodule/compiler/promiseTry.types | 6 +- .../submodule/compiler/promiseTry.types.diff | 29 - .../submodule/compiler/promises.types | 4 +- .../submodule/compiler/promises.types.diff | 4 +- .../compiler/promisesWithConstraints.types | 2 +- .../promisesWithConstraints.types.diff | 11 - .../compiler/propTypeValidatorInference.types | 4 +- .../propTypeValidatorInference.types.diff | 20 - .../propagationOfPromiseInitialization.types | 2 +- ...pagationOfPromiseInitialization.types.diff | 11 - .../submodule/compiler/qualify.errors.txt | 20 +- .../compiler/qualify.errors.txt.diff | 40 + ...ctionCheckCorrectlyCachesErrors.errors.txt | 12 +- ...CheckCorrectlyCachesErrors.errors.txt.diff | 27 + ...tersectionCheckCorrectlyCachesErrors.types | 2 +- ...ctionCheckCorrectlyCachesErrors.types.diff | 11 - ...kinfoTypeAtReturnPositionsInaccurate.types | 6 +- ...TypeAtReturnPositionsInaccurate.types.diff | 24 - .../compiler/ramdaToolsNoInfinite2.types | 4 +- .../compiler/ramdaToolsNoInfinite2.types.diff | 4 +- .../reachabilityChecksNoCrash1.errors.txt | 4 +- ...reachabilityChecksNoCrash1.errors.txt.diff | 19 +- .../compiler/reachabilityChecksNoCrash1.types | 2 +- .../reachabilityChecksNoCrash1.types.diff | 11 + .../compiler/reactHOCSpreadprops.types | 2 +- .../compiler/reactHOCSpreadprops.types.diff | 11 - .../reactReadonlyHOCAssignabilityReal.types | 2 +- ...actReadonlyHOCAssignabilityReal.types.diff | 11 - ...ikeDeferredInferenceAllowsAssignment.types | 18 +- ...ferredInferenceAllowsAssignment.types.diff | 58 - ...tTransitiveImportHasValidDeclaration.types | 2 +- ...sitiveImportHasValidDeclaration.types.diff | 9 +- ...oat32ArrayAssignableWithFloat32Array.types | 10 +- ...ArrayAssignableWithFloat32Array.types.diff | 40 - .../readonlyTupleAndArrayElaboration.types | 10 +- ...eadonlyTupleAndArrayElaboration.types.diff | 38 - .../compiler/recursiveClassBaseType.types | 4 +- .../recursiveClassBaseType.types.diff | 18 - .../recursiveClassReferenceTest.types | 10 +- .../recursiveClassReferenceTest.types.diff | 31 - .../compiler/recursiveConditionalTypes.types | 20 +- .../recursiveConditionalTypes.types.diff | 49 +- .../recursiveFunctionTypes.errors.txt | 12 +- .../recursiveFunctionTypes.errors.txt.diff | 34 +- .../compiler/recursiveFunctionTypes.types | 54 +- .../recursiveFunctionTypes.types.diff | 104 - .../compiler/recursiveGenericMethodCall.types | 4 +- .../recursiveGenericMethodCall.types.diff | 16 - ...thSpreadConditionalReturnNotCircular.types | 18 +- ...eadConditionalReturnNotCircular.types.diff | 54 - .../compiler/recursiveTypeComparison2.types | 4 +- .../recursiveTypeComparison2.types.diff | 19 - .../recursiveUnionTypeInference.types | 4 +- .../recursiveUnionTypeInference.types.diff | 16 - ...amingDestructuredPropertyInFunctionType.js | 6 +- ...DestructuredPropertyInFunctionType.js.diff | 19 - ...ngDestructuredPropertyInFunctionType.types | 16 +- ...tructuredPropertyInFunctionType.types.diff | 47 - ...appedTypeModifierTrumpsVariance.errors.txt | 40 +- ...TypeModifierTrumpsVariance.errors.txt.diff | 81 + ...iredMappedTypeModifierTrumpsVariance.types | 64 +- ...appedTypeModifierTrumpsVariance.types.diff | 132 - .../compiler/resolveNameWithNamspace.types | 2 +- .../resolveNameWithNamspace.types.diff | 11 +- ...sDeclarationWhenInBaseTypeResolution.types | 80 +- ...arationWhenInBaseTypeResolution.types.diff | 362 -- ...ithNumberPropertyName(target=es2015).types | 2 +- ...mberPropertyName(target=es2015).types.diff | 11 - .../compiler/restInvalidArgumentType.types | 2 +- .../restInvalidArgumentType.types.diff | 11 - ...amUsingMappedTypeOverUnionConstraint.types | 2 +- ...ngMappedTypeOverUnionConstraint.types.diff | 11 - .../restParameterWithBindingPattern3.types | 2 +- ...estParameterWithBindingPattern3.types.diff | 8 - .../submodule/compiler/restParameters.types | 8 +- .../compiler/restParameters.types.diff | 31 - .../restParamsWithNonRestParams.types | 4 +- .../restParamsWithNonRestParams.types.diff | 15 - ...ContextualParameterTypesInGenerator1.types | 6 +- ...xtualParameterTypesInGenerator1.types.diff | 24 - .../returnTypeParameterWithModules.types | 6 +- .../returnTypeParameterWithModules.types.diff | 22 - .../compiler/returnTypeTypeArguments.types | 44 +- .../returnTypeTypeArguments.types.diff | 122 - ...ationImportTypeInGlobalThisTypeArgument.js | 2 +- ...ImportTypeInGlobalThisTypeArgument.js.diff | 6 +- ...reverseMappedPartiallyInferableTypes.types | 4 +- ...seMappedPartiallyInferableTypes.types.diff | 20 - ...everseMappedTypeInferenceSameSource1.types | 6 +- ...eMappedTypeInferenceSameSource1.types.diff | 29 - ...appedTypeIntersectionConstraint.errors.txt | 4 +- ...TypeIntersectionConstraint.errors.txt.diff | 20 + ...erseMappedTypeIntersectionConstraint.types | 22 +- ...appedTypeIntersectionConstraint.types.diff | 70 - .../reverseMappedTypeLimitedConstraint.types | 4 +- ...erseMappedTypeLimitedConstraint.types.diff | 17 - .../selfReferentialFunctionType.types | 10 +- .../selfReferentialFunctionType.types.diff | 23 - .../signatureCombiningRestParameters1.types | 4 +- ...gnatureCombiningRestParameters1.types.diff | 14 - .../signatureCombiningRestParameters3.types | 6 +- ...gnatureCombiningRestParameters3.types.diff | 29 - .../signatureCombiningRestParameters4.types | 4 +- ...gnatureCombiningRestParameters4.types.diff | 20 - .../signatureCombiningRestParameters5.types | 6 +- ...gnatureCombiningRestParameters5.types.diff | 29 - ...hMismatchWithOptionalParameters.errors.txt | 4 +- ...atchWithOptionalParameters.errors.txt.diff | 16 + ...LengthMismatchWithOptionalParameters.types | 6 +- ...hMismatchWithOptionalParameters.types.diff | 17 - .../submodule/compiler/sliceResultCast.types | 4 +- .../compiler/sliceResultCast.types.diff | 12 - ...pValidationDecorators(target=es2015).types | 28 +- ...dationDecorators(target=es2015).types.diff | 77 - ...ForObjectBindingPatternDefaultValues.types | 2 +- ...jectBindingPatternDefaultValues.types.diff | 11 - ...orObjectBindingPatternDefaultValues2.types | 2 +- ...ectBindingPatternDefaultValues2.types.diff | 11 - ...gPatternDefaultValues(target=es2015).types | 2 +- ...ernDefaultValues(target=es2015).types.diff | 11 - ...tedObjectBindingPatternDefaultValues.types | 6 +- ...jectBindingPatternDefaultValues.types.diff | 28 - ...bjectBindingPatternWithDefaultValues.types | 2 +- ...BindingPatternWithDefaultValues.types.diff | 11 - .../compiler/sourceMapValidationFor.types | 4 +- .../sourceMapValidationFor.types.diff | 20 - .../compiler/sourceMapValidationForIn.types | 8 +- .../sourceMapValidationForIn.types.diff | 38 - .../sourceMapValidationFunctions.types | 4 +- .../sourceMapValidationFunctions.types.diff | 20 - .../compiler/specializationError.types | 2 +- .../compiler/specializationError.types.diff | 11 +- ...pecializedOverloadWithRestParameters.types | 12 +- ...lizedOverloadWithRestParameters.types.diff | 42 + ...ializedSignatureAsCallbackParameter1.types | 2 +- ...edSignatureAsCallbackParameter1.types.diff | 10 + .../spellingSuggestionJSXAttribute.errors.txt | 32 +- ...lingSuggestionJSXAttribute.errors.txt.diff | 46 +- .../spellingSuggestionJSXAttribute.types | 10 +- .../spellingSuggestionJSXAttribute.types.diff | 38 - .../spreadIdenticalTypesRemoved.types | 6 +- .../spreadIdenticalTypesRemoved.types.diff | 25 - .../compiler/spreadInvalidArgumentType.types | 4 +- .../spreadInvalidArgumentType.types.diff | 13 - .../compiler/spreadObjectNoCircular1.types | 4 +- .../spreadObjectNoCircular1.types.diff | 15 - ...ns(exactoptionalpropertytypes=false).types | 32 +- ...actoptionalpropertytypes=false).types.diff | 104 - ...ons(exactoptionalpropertytypes=true).types | 4 +- ...xactoptionalpropertytypes=true).types.diff | 12 - ...ramsFromGeneratorMakesRequiredParams.types | 2 +- ...romGeneratorMakesRequiredParams.types.diff | 9 + .../compiler/spreadUnionPropOverride.types | 8 +- .../spreadUnionPropOverride.types.diff | 31 - .../spreadsAndContextualTupleTypes.types | 12 +- .../spreadsAndContextualTupleTypes.types.diff | 52 + .../spuriousCircularityOnTypeImport.types | 4 +- ...spuriousCircularityOnTypeImport.types.diff | 15 + .../compiler/spyComparisonChecking.types | 6 +- .../compiler/spyComparisonChecking.types.diff | 26 - ...peOrdering(stabletypeordering=false).types | 6 +- ...ering(stabletypeordering=false).types.diff | 6 +- ...ypeOrdering(stabletypeordering=true).types | 6 +- ...dering(stabletypeordering=true).types.diff | 28 - .../compiler/stackDepthLimitCastingType.types | 2 +- .../stackDepthLimitCastingType.types.diff | 10 - ...ymousTypeNotReferencingTypeParameter.types | 64 +- ...TypeNotReferencingTypeParameter.types.diff | 201 - .../compiler/strictFunctionTypes1.types | 10 +- .../compiler/strictFunctionTypes1.types.diff | 45 - .../strictFunctionTypesErrors.errors.txt | 8 +- .../strictFunctionTypesErrors.errors.txt.diff | 31 +- .../compiler/strictNullLogicalAndOr.types | 4 +- .../strictNullLogicalAndOr.types.diff | 18 - .../strictSubtypeAndNarrowing.errors.txt | 12 +- .../strictSubtypeAndNarrowing.errors.txt.diff | 33 + .../compiler/strictSubtypeAndNarrowing.types | 46 +- .../strictSubtypeAndNarrowing.types.diff | 133 +- .../compiler/strictTypeofUnionNarrowing.types | 2 +- .../strictTypeofUnionNarrowing.types.diff | 11 - .../submodule/compiler/stringIncludes.types | 8 +- .../compiler/stringIncludes.types.diff | 24 - .../compiler/stringPropCodeGen.types | 4 +- .../compiler/stringPropCodeGen.types.diff | 13 - .../submodule/compiler/stringRawType.types | 4 +- .../compiler/stringRawType.types.diff | 14 - ...ty(exactoptionalpropertytypes=false).types | 4 +- ...actoptionalpropertytypes=false).types.diff | 19 - ...entsInstantiaionLimitNotReached.errors.txt | 8 +- ...nstantiaionLimitNotReached.errors.txt.diff | 38 + ...omponentsInstantiaionLimitNotReached.types | 6 +- ...entsInstantiaionLimitNotReached.types.diff | 15 +- .../subclassThisTypeAssignable01.errors.txt | 4 +- ...bclassThisTypeAssignable01.errors.txt.diff | 20 + .../subclassThisTypeAssignable01.types | 2 +- .../subclassThisTypeAssignable01.types.diff | 11 - ...ubstitutionTypesInIndexedAccessTypes.types | 8 +- ...tutionTypesInIndexedAccessTypes.types.diff | 32 - ...rectLinkGeneratesDeepNonrelativeName.types | 6 +- ...inkGeneratesDeepNonrelativeName.types.diff | 15 +- .../compiler/targetTypeVoidFunc.types | 6 +- .../compiler/targetTypeVoidFunc.types.diff | 26 - .../templateLiteralIntersection2.types | 18 +- .../templateLiteralIntersection2.types.diff | 63 - .../submodule/compiler/temporal.types | 1836 +++--- .../submodule/compiler/temporal.types.diff | 5522 ----------------- .../submodule/compiler/thisBinding2.types | 4 +- .../compiler/thisBinding2.types.diff | 20 - ...ionalOnMethodReturnOfGenericInstance.types | 2 +- ...OnMethodReturnOfGenericInstance.types.diff | 11 - .../thisInPropertyBoundDeclarations.types | 16 +- ...thisInPropertyBoundDeclarations.types.diff | 29 +- ...hislessFunctionsNotContextSensitive1.types | 6 +- ...ssFunctionsNotContextSensitive1.types.diff | 28 - ...hislessFunctionsNotContextSensitive3.types | 10 +- ...ssFunctionsNotContextSensitive3.types.diff | 40 - .../compiler/toStringOnPrimitives.types | 4 +- .../compiler/toStringOnPrimitives.types.diff | 11 - ...umentsInGenericFunctionTypedArgument.types | 8 +- ...sInGenericFunctionTypedArgument.types.diff | 25 +- .../compiler/trackedSymbolsNoCrash.js | 200 +- .../compiler/trackedSymbolsNoCrash.js.diff | 208 - .../compiler/trackedSymbolsNoCrash.types | 4 +- .../compiler/trackedSymbolsNoCrash.types.diff | 12 +- .../truthinessCallExpressionCoercion.types | 2 +- ...ruthinessCallExpressionCoercion.types.diff | 10 - .../truthinessCallExpressionCoercion1.types | 2 +- ...uthinessCallExpressionCoercion1.types.diff | 10 - .../truthinessCallExpressionCoercion2.types | 10 +- ...uthinessCallExpressionCoercion2.types.diff | 34 - .../compiler/tryCatchFinallyControlFlow.types | 4 +- .../tryCatchFinallyControlFlow.types.diff | 14 - .../compiler/tslibReExportHelpers2.types | 6 +- .../compiler/tslibReExportHelpers2.types.diff | 15 +- .../tsxDiscriminantPropertyInference.types | 24 +- ...sxDiscriminantPropertyInference.types.diff | 80 - .../compiler/tsxInvokeComponentType.types | 6 +- .../tsxInvokeComponentType.types.diff | 6 +- ...ArgumentPartialDefinitionStillErrors.types | 2 +- ...entPartialDefinitionStillErrors.types.diff | 11 - .../tsxUnionMemberChecksFilterDataProps.types | 12 +- ...nionMemberChecksFilterDataProps.types.diff | 37 - .../compiler/tupleTypeInference.types | 26 +- .../compiler/tupleTypeInference.types.diff | 58 +- .../typeAliasFunctionTypeSharedSymbol.types | 4 +- ...peAliasFunctionTypeSharedSymbol.types.diff | 4 +- .../compiler/typeArgInference2.types | 14 +- .../compiler/typeArgInference2.types.diff | 57 - .../compiler/typeArgInference2WithError.types | 4 +- .../typeArgInference2WithError.types.diff | 18 - .../typeGuardConstructorClassAndNumber.types | 2 +- ...eGuardConstructorClassAndNumber.types.diff | 11 - ...NarrowsIndexedAccessOfKnownProperty1.types | 2 +- ...wsIndexedAccessOfKnownProperty1.types.diff | 11 - ...NarrowsIndexedAccessOfKnownProperty2.types | 8 +- ...wsIndexedAccessOfKnownProperty2.types.diff | 31 - ...NarrowsIndexedAccessOfKnownProperty5.types | 28 +- ...wsIndexedAccessOfKnownProperty5.types.diff | 68 - ...NarrowsIndexedAccessOfKnownProperty6.types | 28 +- ...wsIndexedAccessOfKnownProperty6.types.diff | 68 - .../compiler/typeInferenceLiteralUnion.types | 4 +- .../typeInferenceLiteralUnion.types.diff | 20 - .../compiler/typeLiteralCallback.types | 2 +- .../compiler/typeLiteralCallback.types.diff | 11 - .../submodule/compiler/typeName1.errors.txt | 4 +- .../compiler/typeName1.errors.txt.diff | 20 + .../submodule/compiler/typeName1.types | 2 +- .../submodule/compiler/typeName1.types.diff | 11 - .../compiler/typeNamedUndefined1.types | 2 +- .../compiler/typeNamedUndefined1.types.diff | 10 - .../compiler/typeNamedUndefined2.types | 2 +- .../compiler/typeNamedUndefined2.types.diff | 11 - .../submodule/compiler/typeOfOnTypeArg.types | 4 +- .../compiler/typeOfOnTypeArg.types.diff | 18 - .../typeParameterAndArgumentOfSameName1.types | 4 +- ...ParameterAndArgumentOfSameName1.types.diff | 14 - .../compiler/typeParameterConstraints1.types | 2 +- .../typeParameterConstraints1.types.diff | 11 - .../compiler/typeParameterDiamond3.types | 2 +- .../compiler/typeParameterDiamond3.types.diff | 11 - .../compiler/typeParameterDiamond4.types | 2 +- .../compiler/typeParameterDiamond4.types.diff | 11 - ...ypePredicatesCanNarrowByDiscriminant.types | 16 +- ...edicatesCanNarrowByDiscriminant.types.diff | 60 + .../compiler/typePredicatesInUnion2.types | 6 +- .../typePredicatesInUnion2.types.diff | 23 - .../compiler/typePredicatesInUnion3.types | 6 +- .../typePredicatesInUnion3.types.diff | 28 - .../typePredicatesOptionalChaining1.types | 10 +- ...typePredicatesOptionalChaining1.types.diff | 30 - .../typePredicatesOptionalChaining2.types | 8 +- ...typePredicatesOptionalChaining2.types.diff | 24 - .../compiler/typeReferenceDirectives13.types | 2 +- .../typeReferenceDirectives13.types.diff | 10 - .../typeVariableConstraintIntersections.types | 2 +- ...VariableConstraintIntersections.types.diff | 2 +- ...straintedToAliasNotAssignableToUnion.types | 2 +- ...ntedToAliasNotAssignableToUnion.types.diff | 11 - .../typeofImportInstantiationExpression.types | 2 +- ...ofImportInstantiationExpression.types.diff | 10 + .../compiler/typeofInObjectLiteralType.types | 2 +- .../typeofInObjectLiteralType.types.diff | 11 - .../compiler/typeofObjectInference.types | 20 +- .../compiler/typeofObjectInference.types.diff | 57 - .../typeofThisInMethodSignature.types | 6 +- .../typeofThisInMethodSignature.types.diff | 22 - ...uncalledFunctionChecksInConditional2.types | 108 +- ...ledFunctionChecksInConditional2.types.diff | 234 - ...ntWithUnknown(strictnullchecks=true).types | 4 +- ...hUnknown(strictnullchecks=true).types.diff | 14 + ...heckNoApparentPropTypeMismatchErrors.types | 4 +- ...oApparentPropTypeMismatchErrors.types.diff | 20 - .../unionExcessPropsWithPartialMember.types | 4 +- ...ionExcessPropsWithPartialMember.types.diff | 14 - .../compiler/unionOfClassCalls.types | 6 +- .../compiler/unionOfClassCalls.types.diff | 28 - .../compiler/unionOfEnumInference.types | 2 +- .../compiler/unionOfEnumInference.types.diff | 11 - ...nionOfFunctionAndSignatureIsCallable.types | 2 +- ...fFunctionAndSignatureIsCallable.types.diff | 11 - .../unionReductionMutualSubtypes.types | 18 +- .../unionReductionMutualSubtypes.types.diff | 35 - .../compiler/unionTypeWithIndexAndTuple.types | 4 +- .../unionTypeWithIndexAndTuple.types.diff | 16 - ...eWithRecursiveSubtypeReduction3.errors.txt | 4 +- ...RecursiveSubtypeReduction3.errors.txt.diff | 16 + ...onTypeWithRecursiveSubtypeReduction3.types | 12 +- ...eWithRecursiveSubtypeReduction3.types.diff | 26 - ...ConstructorTypeInUnionOrIntersection.types | 4 +- ...ructorTypeInUnionOrIntersection.types.diff | 20 - ...zedFunctionTypeInUnionOrIntersection.types | 4 +- ...nctionTypeInUnionOrIntersection.types.diff | 20 - .../compiler/unusedLocalsInMethod4.types | 12 +- .../compiler/unusedLocalsInMethod4.types.diff | 37 - ...ParameterUsedInTypeOf(target=es2015).types | 2 +- ...eterUsedInTypeOf(target=es2015).types.diff | 11 - .../useUnknownInCatchVariables01.types | 4 +- .../useUnknownInCatchVariables01.types.diff | 14 - .../compiler/varArgParamTypeCheck.types | 4 +- .../compiler/varArgParamTypeCheck.types.diff | 20 - ...eroOrderIndexSignatureRelationsAlign.types | 4 +- ...derIndexSignatureRelationsAlign.types.diff | 17 - ...roOrderIndexSignatureRelationsAlign2.types | 2 +- ...erIndexSignatureRelationsAlign2.types.diff | 11 - .../verbatim-declarations-parameters.js | 12 +- .../verbatim-declarations-parameters.js.diff | 20 - .../verbatim-declarations-parameters.types | 2 +- ...erbatim-declarations-parameters.types.diff | 11 - .../visibilityOfCrossModuleTypeUsage.types | 6 +- ...isibilityOfCrossModuleTypeUsage.types.diff | 25 - .../voidAsNonAmbiguousReturnType.types | 8 +- .../voidAsNonAmbiguousReturnType.types.diff | 26 - .../compiler/voidUndefinedReduction.types | 4 +- .../voidUndefinedReduction.types.diff | 20 - .../vueLikeDataAndPropsInference.types | 6 +- .../vueLikeDataAndPropsInference.types.diff | 22 - .../vueLikeDataAndPropsInference2.types | 6 +- .../vueLikeDataAndPropsInference2.types.diff | 22 - .../submodule/compiler/weakType.errors.txt | 8 +- .../compiler/weakType.errors.txt.diff | 32 + .../submodule/compiler/weakType.types | 8 +- .../submodule/compiler/weakType.types.diff | 35 - .../weakTypeAndPrimitiveNarrowing.types | 6 +- .../weakTypeAndPrimitiveNarrowing.types.diff | 25 - .../submodule/compiler/widenedTypes.types | 2 +- .../compiler/widenedTypes.types.diff | 11 - .../conformance/TypeGuardWithArrayUnion.types | 2 +- .../TypeGuardWithArrayUnion.types.diff | 11 - .../conformance/TypeGuardWithEnumUnion.types | 4 +- .../TypeGuardWithEnumUnion.types.diff | 20 - .../submodule/conformance/ambientErrors.types | 4 +- .../conformance/ambientErrors.types.diff | 16 + ...ayLiteralWithMultipleBestCommonTypes.types | 56 +- ...eralWithMultipleBestCommonTypes.types.diff | 99 - .../conformance/arrayTypeOfTypeOf.types | 4 +- .../conformance/arrayTypeOfTypeOf.types.diff | 15 - .../assertionTypePredicates1.types | 18 +- .../assertionTypePredicates1.types.diff | 59 - .../assignFromNumberInterface2.types | 8 +- .../assignFromNumberInterface2.types.diff | 26 - .../assignFromStringInterface2.types | 14 +- .../assignFromStringInterface2.types.diff | 52 - ...gnmentCompatWithCallSignatures3.errors.txt | 8 +- ...tCompatWithCallSignatures3.errors.txt.diff | 8 +- .../assignmentCompatWithCallSignatures3.types | 32 +- ...gnmentCompatWithCallSignatures3.types.diff | 66 - ...gnmentCompatWithCallSignatures4.errors.txt | 4 +- ...tCompatWithCallSignatures4.errors.txt.diff | 4 +- .../assignmentCompatWithCallSignatures4.types | 28 +- ...gnmentCompatWithCallSignatures4.types.diff | 77 - ...ignaturesWithOptionalParameters.errors.txt | 48 +- ...uresWithOptionalParameters.errors.txt.diff | 195 + ...CallSignaturesWithOptionalParameters.types | 180 +- ...ignaturesWithOptionalParameters.types.diff | 417 -- ...allSignaturesWithRestParameters.errors.txt | 36 +- ...gnaturesWithRestParameters.errors.txt.diff | 95 +- ...WithCallSignaturesWithRestParameters.types | 78 +- ...allSignaturesWithRestParameters.types.diff | 212 - ...tCompatWithConstructSignatures3.errors.txt | 8 +- ...atWithConstructSignatures3.errors.txt.diff | 8 +- ...gnmentCompatWithConstructSignatures3.types | 32 +- ...tCompatWithConstructSignatures3.types.diff | 66 - ...tCompatWithConstructSignatures4.errors.txt | 24 +- ...atWithConstructSignatures4.errors.txt.diff | 50 +- ...gnmentCompatWithConstructSignatures4.types | 28 +- ...tCompatWithConstructSignatures4.types.diff | 77 - ...ignaturesWithOptionalParameters.errors.txt | 32 +- ...uresWithOptionalParameters.errors.txt.diff | 123 + ...ructSignaturesWithOptionalParameters.types | 138 +- ...ignaturesWithOptionalParameters.types.diff | 298 - ...signmentCompatWithDiscriminatedUnion.types | 4 +- ...entCompatWithDiscriminatedUnion.types.diff | 17 +- ...mentCompatWithGenericCallSignatures3.types | 6 +- ...ompatWithGenericCallSignatures3.types.diff | 20 - .../assignmentCompatWithObjectMembers.types | 38 +- ...signmentCompatWithObjectMembers.types.diff | 85 - ...assignmentGenericLookupTypeNarrowing.types | 4 +- ...nmentGenericLookupTypeNarrowing.types.diff | 20 - .../conformance/assignmentTypeNarrowing.types | 8 +- .../assignmentTypeNarrowing.types.diff | 24 - ...tUsingDeclarationsWithIteratorObject.types | 4 +- ...gDeclarationsWithIteratorObject.types.diff | 14 - ...stCommonTypeOfConditionalExpressions.types | 20 +- ...monTypeOfConditionalExpressions.types.diff | 44 - .../conformance/bivariantInferences.types | 2 +- .../bivariantInferences.types.diff | 2 +- .../conformance/booleanLiteralTypes1.types | 12 +- .../booleanLiteralTypes1.types.diff | 56 - .../conformance/booleanLiteralTypes2.types | 12 +- .../booleanLiteralTypes2.types.diff | 56 - ...lerSyntaxRestrictions(module=esnext).types | 2 +- ...ntaxRestrictions(module=esnext).types.diff | 11 - ...rSyntaxRestrictions(module=preserve).types | 2 +- ...axRestrictions(module=preserve).types.diff | 11 - .../submodule/conformance/callChain.2.types | 4 +- .../conformance/callChain.2.types.diff | 19 - .../submodule/conformance/callChain.types | 14 +- .../conformance/callChain.types.diff | 39 - .../submodule/conformance/callOverload.types | 8 +- .../conformance/callOverload.types.diff | 32 - ...SignatureAssignabilityInInheritance2.types | 8 +- ...tureAssignabilityInInheritance2.types.diff | 31 - ...SignatureAssignabilityInInheritance3.types | 10 +- ...tureAssignabilityInInheritance3.types.diff | 43 - ...SignatureAssignabilityInInheritance5.types | 8 +- ...tureAssignabilityInInheritance5.types.diff | 31 - .../conformance/callWithMissingVoid.types | 16 +- .../callWithMissingVoid.types.diff | 70 - .../conformance/callWithSpread2.types | 42 +- .../conformance/callWithSpread2.types.diff | 160 - .../conformance/callWithSpread4.types | 6 +- .../conformance/callWithSpread4.types.diff | 29 - .../conformance/callbackCrossModule.types | 2 +- .../callbackCrossModule.types.diff | 11 +- .../checkJsdocOptionalParamOrder.types | 2 +- .../checkJsdocOptionalParamOrder.types.diff | 11 - ...OnVariableDeclaredFunctionExpression.types | 6 +- .../conformance/checkJsdocParamTag1.types | 8 +- .../checkJsdocParamTag1.types.diff | 28 - .../conformance/checkJsdocSatisfiesTag1.types | 4 +- .../checkJsdocSatisfiesTag1.types.diff | 14 +- .../checkJsdocSatisfiesTag10.types | 8 +- .../checkJsdocSatisfiesTag10.types.diff | 27 - .../conformance/checkJsdocSatisfiesTag6.types | 4 +- .../checkJsdocSatisfiesTag6.types.diff | 16 - .../conformance/checkJsdocSatisfiesTag7.types | 8 +- .../checkJsdocSatisfiesTag7.types.diff | 27 - .../conformance/checkJsdocTypeTag5.types | 4 +- .../conformance/checkJsdocTypeTag5.types.diff | 4 +- .../conformance/checkJsdocTypeTag8.types | 2 +- .../conformance/checkJsdocTypeTag8.types.diff | 2 +- .../checkJsxChildrenProperty12.types | 8 +- .../checkJsxChildrenProperty12.types.diff | 25 - .../checkJsxChildrenProperty13.types | 4 +- .../checkJsxChildrenProperty13.types.diff | 14 - .../checkJsxChildrenProperty3.types | 4 +- .../checkJsxChildrenProperty3.types.diff | 14 - .../checkJsxChildrenProperty4.types | 4 +- .../checkJsxChildrenProperty4.types.diff | 14 - ...xGenericTagHasCorrectInferences.errors.txt | 2 +- ...ricTagHasCorrectInferences.errors.txt.diff | 8 + ...checkJsxIntersectionElementPropsType.types | 2 +- ...JsxIntersectionElementPropsType.types.diff | 11 - ...heckJsxSubtleSkipContextSensitiveBug.types | 6 +- ...sxSubtleSkipContextSensitiveBug.types.diff | 22 - .../checkObjectDefineProperty.types | 4 +- .../checkObjectDefineProperty.types.diff | 9 +- .../classCanExtendConstructorFunction.types | 4 +- ...assCanExtendConstructorFunction.types.diff | 14 +- .../classIsSubtypeOfBaseType.errors.txt | 4 +- .../classIsSubtypeOfBaseType.errors.txt.diff | 20 + .../classIsSubtypeOfBaseType.types | 2 +- .../classIsSubtypeOfBaseType.types.diff | 11 - ...aOperatorWithSecondOperandStringType.types | 8 +- ...atorWithSecondOperandStringType.types.diff | 26 - .../commonTypeIntersection.errors.txt | 16 +- .../commonTypeIntersection.errors.txt.diff | 38 + .../conformance/commonTypeIntersection.types | 12 +- .../commonTypeIntersection.types.diff | 12 +- ...NoRelationshipObjectsOnCallSignature.types | 72 +- ...ationshipObjectsOnCallSignature.types.diff | 196 - ...ionshipObjectsOnConstructorSignature.types | 68 +- ...ipObjectsOnConstructorSignature.types.diff | 192 - ...ipObjectsOnInstantiatedCallSignature.types | 72 +- ...ectsOnInstantiatedCallSignature.types.diff | 196 - ...tsOnInstantiatedConstructorSignature.types | 68 +- ...nstantiatedConstructorSignature.types.diff | 192 - ...atorWithSubtypeObjectOnCallSignature.types | 72 +- ...ithSubtypeObjectOnCallSignature.types.diff | 196 - ...hSubtypeObjectOnConstructorSignature.types | 68 +- ...ypeObjectOnConstructorSignature.types.diff | 192 - ...ypeObjectOnInstantiatedCallSignature.types | 72 +- ...jectOnInstantiatedCallSignature.types.diff | 196 - ...ctOnInstantiatedConstructorSignature.types | 68 +- ...nstantiatedConstructorSignature.types.diff | 192 - ...nditionalOperatorWithoutIdenticalBCT.types | 2 +- ...onalOperatorWithoutIdenticalBCT.types.diff | 11 - .../conformance/conditionalTypes1.js | 2 +- .../conformance/conditionalTypes1.js.diff | 11 - .../conformance/conditionalTypes1.types | 24 +- .../conformance/conditionalTypes1.types.diff | 81 - .../conformance/conditionalTypes2.types | 10 +- .../conformance/conditionalTypes2.types.diff | 43 - .../submodule/conformance/constAssertions.js | 14 +- .../conformance/constAssertions.js.diff | 44 + .../conformance/constAssertions.types | 4 +- .../conformance/constAssertions.types.diff | 4 +- .../submodule/conformance/constEnum3.types | 6 +- .../conformance/constEnum3.types.diff | 24 - .../constEnumPropertyAccess3.types | 36 +- .../constEnumPropertyAccess3.types.diff | 93 - ...SignatureAssignabilityInInheritance2.types | 8 +- ...tureAssignabilityInInheritance2.types.diff | 31 - ...SignatureAssignabilityInInheritance3.types | 10 +- ...tureAssignabilityInInheritance3.types.diff | 43 - ...SignatureAssignabilityInInheritance5.types | 8 +- ...tureAssignabilityInInheritance5.types.diff | 31 - .../constructSignaturesWithOverloads.types | 8 +- ...onstructSignaturesWithOverloads.types.diff | 34 - .../conformance/contextualTypeFromJSDoc.types | 10 +- .../contextualTypeFromJSDoc.types.diff | 35 - ...xtualTypeWithUnionTypeCallSignatures.types | 8 +- ...TypeWithUnionTypeCallSignatures.types.diff | 26 - ...tualTypeWithUnionTypeIndexSignatures.types | 8 +- ...ypeWithUnionTypeIndexSignatures.types.diff | 26 - .../contextualTypedSpecialAssignment.types | 6 +- ...ontextualTypedSpecialAssignment.types.diff | 13 +- .../contextuallyTypedBindingInitializer.types | 16 +- ...extuallyTypedBindingInitializer.types.diff | 50 - .../controlFlowAliasing.errors.txt | 64 +- .../controlFlowAliasing.errors.txt.diff | 117 + .../conformance/controlFlowAliasing.types | 192 +- .../controlFlowAliasing.types.diff | 543 +- .../controlFlowComputedPropertyNames.types | 4 +- ...ontrolFlowComputedPropertyNames.types.diff | 16 - .../controlFlowDeleteOperator.types | 28 +- .../controlFlowDeleteOperator.types.diff | 92 - .../controlFlowForOfStatement.types | 4 +- .../controlFlowForOfStatement.types.diff | 14 - .../conformance/controlFlowForStatement.types | 4 +- .../controlFlowForStatement.types.diff | 14 - .../conformance/controlFlowGenericTypes.types | 18 +- .../controlFlowGenericTypes.types.diff | 48 +- .../conformance/controlFlowIIFE.types | 4 +- .../conformance/controlFlowIIFE.types.diff | 14 - .../conformance/controlFlowIfStatement.types | 4 +- .../controlFlowIfStatement.types.diff | 14 - ...controlFlowInstanceOfGuardPrimitives.types | 4 +- ...olFlowInstanceOfGuardPrimitives.types.diff | 14 - .../controlFlowNullishCoalesce.types | 4 +- .../controlFlowNullishCoalesce.types.diff | 14 - .../controlFlowOptionalChain.types | 250 +- .../controlFlowOptionalChain.types.diff | 471 +- .../controlFlowOptionalChain2.types | 16 +- .../controlFlowOptionalChain2.types.diff | 74 - .../controlFlowOptionalChain3.types | 10 +- .../controlFlowOptionalChain3.types.diff | 31 - .../conformance/controlFlowParameter.types | 6 +- .../controlFlowParameter.types.diff | 29 - .../conformance/controlFlowStringIndex.types | 4 +- .../controlFlowStringIndex.types.diff | 16 - .../controlFlowWithTemplateLiterals.types | 8 +- ...controlFlowWithTemplateLiterals.types.diff | 27 - ...FileForHtmlFileWithinDeclarationFile.types | 4 +- ...orHtmlFileWithinDeclarationFile.types.diff | 16 - ...port(allowarbitraryextensions=false).types | 4 +- ...allowarbitraryextensions=false).types.diff | 16 - ...mport(allowarbitraryextensions=true).types | 4 +- ...(allowarbitraryextensions=true).types.diff | 16 - .../conformance/declarationFiles.errors.txt | 8 +- .../declarationFiles.errors.txt.diff | 34 + .../submodule/conformance/declarationFiles.js | 8 +- .../conformance/declarationFiles.js.diff | 8 +- ...AssignmentAssertionsWithObjectShortHand.js | 2 +- ...nmentAssertionsWithObjectShortHand.js.diff | 9 + .../submodule/conformance/deleteChain.types | 94 +- .../conformance/deleteChain.types.diff | 178 - .../dependentDestructuredVariables.types | 80 +- .../dependentDestructuredVariables.types.diff | 270 +- ...ProtectedMembers(target=es2015).errors.txt | 4 +- ...ctedMembers(target=es2015).errors.txt.diff | 20 + ...ridesProtectedMembers(target=es2015).types | 16 +- ...ProtectedMembers(target=es2015).types.diff | 73 - ...rotectedMembers2(target=es2015).errors.txt | 4 +- ...tedMembers2(target=es2015).errors.txt.diff | 20 + ...idesProtectedMembers2(target=es2015).types | 36 +- ...rotectedMembers2(target=es2015).types.diff | 126 - ...idesProtectedMembers3(target=es2015).types | 16 +- ...rotectedMembers3(target=es2015).types.diff | 73 - ...ivedClassOverridesPublicMembers.errors.txt | 4 +- ...lassOverridesPublicMembers.errors.txt.diff | 20 + .../derivedClassOverridesPublicMembers.types | 36 +- ...ivedClassOverridesPublicMembers.types.diff | 126 - .../derivedClassTransitivity.errors.txt | 4 +- .../derivedClassTransitivity.errors.txt.diff | 19 + .../derivedClassTransitivity.types | 6 +- .../derivedClassTransitivity.types.diff | 21 - .../derivedClassTransitivity2.errors.txt | 4 +- .../derivedClassTransitivity2.errors.txt.diff | 19 + .../derivedClassTransitivity2.types | 6 +- .../derivedClassTransitivity2.types.diff | 22 - .../derivedClassTransitivity3.errors.txt | 4 +- .../derivedClassTransitivity3.errors.txt.diff | 19 + .../derivedClassTransitivity3.types | 6 +- .../derivedClassTransitivity3.types.diff | 22 - .../derivedClassTransitivity4.errors.txt | 4 +- .../derivedClassTransitivity4.errors.txt.diff | 19 + .../derivedClassTransitivity4.types | 6 +- .../derivedClassTransitivity4.types.diff | 21 - .../destructuringControlFlow.types | 30 +- .../destructuringControlFlow.types.diff | 86 - ...ternAndAssignment9SiblingInitializer.types | 6 +- ...ndAssignment9SiblingInitializer.types.diff | 21 - ...ParameterDeclaration10(strict=false).types | 8 +- ...eterDeclaration10(strict=false).types.diff | 29 - ...gParameterDeclaration10(strict=true).types | 8 +- ...meterDeclaration10(strict=true).types.diff | 29 - ...estructuringParameterDeclaration1ES5.types | 8 +- ...cturingParameterDeclaration1ES5.types.diff | 37 - ...ringParameterDeclaration1ES5iterable.types | 8 +- ...arameterDeclaration1ES5iterable.types.diff | 37 - ...estructuringParameterDeclaration1ES6.types | 8 +- ...cturingParameterDeclaration1ES6.types.diff | 37 - .../destructuringParameterDeclaration2.types | 4 +- ...tructuringParameterDeclaration2.types.diff | 20 - ...estructuringParameterDeclaration3ES5.types | 6 +- ...cturingParameterDeclaration3ES5.types.diff | 28 - ...claration3ES5iterable(target=es2015).types | 6 +- ...tion3ES5iterable(target=es2015).types.diff | 28 - ...estructuringParameterDeclaration3ES6.types | 6 +- ...cturingParameterDeclaration3ES6.types.diff | 28 - .../destructuringParameterDeclaration4.types | 6 +- ...tructuringParameterDeclaration4.types.diff | 28 - ...tructuringParameterDeclaration8.errors.txt | 8 +- ...uringParameterDeclaration8.errors.txt.diff | 30 + .../destructuringParameterDeclaration8.types | 12 +- ...tructuringParameterDeclaration8.types.diff | 21 +- ...gParameterDeclaration9(strict=false).types | 6 +- ...meterDeclaration9(strict=false).types.diff | 13 +- ...ngParameterDeclaration9(strict=true).types | 10 +- ...ameterDeclaration9(strict=true).types.diff | 33 +- .../discriminatedUnionTypes2.types | 22 +- .../discriminatedUnionTypes2.types.diff | 68 +- .../discriminatedUnionTypes4.types | 14 +- .../discriminatedUnionTypes4.types.diff | 63 - .../duplicatePropertiesInTypeAssertions01.js | 1 + ...licatePropertiesInTypeAssertions01.js.diff | 8 - .../duplicatePropertiesInTypeAssertions02.js | 1 + ...licatePropertiesInTypeAssertions02.js.diff | 8 - .../conformance/elementAccessChain.2.types | 6 +- .../elementAccessChain.2.types.diff | 26 - .../conformance/elementAccessChain.types | 74 +- .../conformance/elementAccessChain.types.diff | 156 - ...etersFunctionProperty(target=es2015).types | 2 +- ...FunctionProperty(target=es2015).types.diff | 11 - ...mitRestParametersFunctionPropertyES6.types | 2 +- ...stParametersFunctionPropertyES6.types.diff | 11 - .../conformance/enumLiteralTypes3.types | 16 +- .../conformance/enumLiteralTypes3.types.diff | 74 - .../conformance/equalityStrictNulls.types | 2 +- .../equalityStrictNulls.types.diff | 11 - ...ishCoalescingAssignment(strict=true).types | 4 +- ...alescingAssignment(strict=true).types.diff | 20 - .../conformance/es2016IntlAPIs.types | 12 +- .../conformance/es2016IntlAPIs.types.diff | 38 - .../conformance/es2017DateAPIs.types | 4 +- .../conformance/es2017DateAPIs.types.diff | 12 - .../conformance/es2018IntlAPIs.types | 20 +- .../conformance/es2018IntlAPIs.types.diff | 49 +- .../conformance/es2020IntlAPIs.types | 100 +- .../conformance/es2020IntlAPIs.types.diff | 236 +- .../es2021LocalesObjectArgument.types | 36 +- .../es2021LocalesObjectArgument.types.diff | 80 - .../es2022LocalesObjectArgument.types | 36 +- .../es2022LocalesObjectArgument.types.diff | 80 - .../conformance/es2024SharedMemory.types | 4 +- .../conformance/es2024SharedMemory.types.diff | 14 - .../es5DateAPIs(target=es2015).types | 4 +- .../es5DateAPIs(target=es2015).types.diff | 12 - ...eclaration-sourceMap(target=es2015).js.map | 4 +- ...ation-sourceMap(target=es2015).js.map.diff | 4 +- ...ion-sourceMap(target=es2015).sourcemap.txt | 18 +- ...ourceMap(target=es2015).sourcemap.txt.diff | 34 +- ...eclaration-sourceMap(target=es2022).js.map | 4 +- ...ation-sourceMap(target=es2022).js.map.diff | 4 +- ...ion-sourceMap(target=es2022).sourcemap.txt | 18 +- ...ourceMap(target=es2022).sourcemap.txt.diff | 34 +- ...eclaration-sourceMap(target=esnext).js.map | 4 +- ...ation-sourceMap(target=esnext).js.map.diff | 4 +- ...ion-sourceMap(target=esnext).sourcemap.txt | 18 +- ...ourceMap(target=esnext).sourcemap.txt.diff | 34 +- .../esDecorators-contextualTypes.2.types | 8 +- .../esDecorators-contextualTypes.2.types.diff | 29 - .../conformance/esnextSharedMemory.types | 8 +- .../conformance/esnextSharedMemory.types.diff | 20 - ...veryTypeWithAnnotationAndInitializer.types | 4 +- ...ypeWithAnnotationAndInitializer.types.diff | 14 - ...eWithAnnotationAndInvalidInitializer.types | 8 +- ...AnnotationAndInvalidInitializer.types.diff | 26 - .../submodule/conformance/for-of29.errors.txt | 4 +- .../conformance/for-of29.errors.txt.diff | 15 + .../submodule/conformance/for-of29.types | 6 +- .../submodule/conformance/for-of29.types.diff | 21 - .../submodule/conformance/forStatements.types | 4 +- .../conformance/forStatements.types.diff | 14 - .../forStatementsMultipleInvalidDecl.types | 4 +- ...orStatementsMultipleInvalidDecl.types.diff | 14 - .../functionConstraintSatisfaction.types | 2 +- .../functionConstraintSatisfaction.types.diff | 10 - .../functionConstraintSatisfaction2.types | 2 +- ...functionConstraintSatisfaction2.types.diff | 10 - .../functionExpressionContextualTyping3.types | 4 +- ...tionExpressionContextualTyping3.types.diff | 17 - .../conformance/functionLiterals.types | 52 +- .../conformance/functionLiterals.types.diff | 155 +- .../conformance/functionOverloadErrors.types | 12 +- .../functionOverloadErrors.types.diff | 39 - ...unctionWithMultipleReturnStatements2.types | 16 +- ...onWithMultipleReturnStatements2.types.diff | 54 - .../generatedContextualTyping.types | 112 +- .../generatedContextualTyping.types.diff | 386 -- .../generatorReturnContextualType.errors.txt | 8 +- ...eratorReturnContextualType.errors.txt.diff | 30 + .../generatorReturnContextualType.types | 16 +- .../generatorReturnContextualType.types.diff | 74 + .../conformance/generatorTypeCheck1.types | 2 +- .../generatorTypeCheck1.types.diff | 8 - .../conformance/generatorTypeCheck29.types | 2 +- .../generatorTypeCheck29.types.diff | 11 - .../conformance/generatorTypeCheck30.types | 2 +- .../generatorTypeCheck30.types.diff | 11 - .../conformance/generatorTypeCheck31.types | 2 +- .../generatorTypeCheck31.types.diff | 11 - .../conformance/generatorTypeCheck45.types | 6 +- .../generatorTypeCheck45.types.diff | 22 - .../conformance/generatorTypeCheck64.types | 4 +- .../generatorTypeCheck64.types.diff | 20 - .../generatorYieldContextualType.types | 14 +- .../generatorYieldContextualType.types.diff | 54 - ...rloadedMethodWithOverloadedArguments.types | 22 +- ...edMethodWithOverloadedArguments.types.diff | 32 +- ...ricCallWithGenericSignatureArguments.types | 8 +- ...llWithGenericSignatureArguments.types.diff | 30 - .../genericCallWithNonSymmetricSubtypes.types | 54 +- ...ricCallWithNonSymmetricSubtypes.types.diff | 107 - ...hOverloadedConstructorTypedArguments.types | 28 +- ...loadedConstructorTypedArguments.types.diff | 100 - ...OverloadedConstructorTypedArguments2.types | 22 +- ...oadedConstructorTypedArguments2.types.diff | 78 - ...WithOverloadedFunctionTypedArguments.types | 8 +- ...verloadedFunctionTypedArguments.types.diff | 36 - ...ithOverloadedFunctionTypedArguments2.types | 4 +- ...erloadedFunctionTypedArguments2.types.diff | 20 - .../genericFunctionParameters.types | 6 +- .../genericFunctionParameters.types.diff | 17 +- .../conformance/genericRestParameters1.types | 10 +- .../genericRestParameters1.types.diff | 44 - .../conformance/genericRestParameters2.types | 20 +- .../genericRestParameters2.types.diff | 86 - .../conformance/genericRestParameters3.types | 10 +- .../genericRestParameters3.types.diff | 28 - ...icTypeReferenceWithoutTypeArgument.d.types | 10 +- ...eReferenceWithoutTypeArgument.d.types.diff | 38 - ...ericTypeReferenceWithoutTypeArgument.types | 20 +- ...ypeReferenceWithoutTypeArgument.types.diff | 58 - ...ricTypeReferenceWithoutTypeArgument2.types | 20 +- ...peReferenceWithoutTypeArgument2.types.diff | 58 - ...ricTypeReferenceWithoutTypeArgument3.types | 10 +- ...peReferenceWithoutTypeArgument3.types.diff | 38 - .../conformance/ifDoWhileStatements.types | 22 +- .../ifDoWhileStatements.types.diff | 62 - .../importAttributes6(module=node18).types | 4 +- ...mportAttributes6(module=node18).types.diff | 11 - .../importAttributes6(module=node20).types | 4 +- ...mportAttributes6(module=node20).types.diff | 11 - .../importAttributes6(module=nodenext).types | 4 +- ...ortAttributes6(module=nodenext).types.diff | 11 - ...tMeta(module=commonjs,target=esnext).types | 8 +- ...(module=commonjs,target=esnext).types.diff | 33 - ...ortMeta(module=es2020,target=esnext).types | 8 +- ...ta(module=es2020,target=esnext).types.diff | 33 - ...ortMeta(module=esnext,target=esnext).types | 8 +- ...ta(module=esnext,target=esnext).types.diff | 33 - .../submodule/conformance/importTag24.types | 2 +- .../conformance/importTag24.types.diff | 9 - .../conformance/importTypeGeneric.types | 4 +- .../conformance/importTypeGeneric.types.diff | 20 - .../conformance/importTypeInJSDoc.types | 14 +- .../conformance/importTypeInJSDoc.types.diff | 37 +- .../inOperatorWithValidOperands.types | 2 +- .../inOperatorWithValidOperands.types.diff | 11 - .../independentPropertyVariance.types | 4 +- .../independentPropertyVariance.types.diff | 16 + .../conformance/indexSignatures1.types | 10 +- .../conformance/indexSignatures1.types.diff | 40 +- .../conformance/inferFromBindingPattern.types | 14 +- .../inferFromBindingPattern.types.diff | 54 - .../submodule/conformance/inferTypes1.types | 8 +- .../conformance/inferTypes1.types.diff | 30 +- .../submodule/conformance/inferTypes2.types | 4 +- .../conformance/inferTypes2.types.diff | 19 - .../conformance/inferTypesWithExtends1.js | 4 +- .../inferTypesWithExtends1.js.diff | 8 +- .../conformance/inferTypesWithExtends1.types | 12 +- .../inferTypesWithExtends1.types.diff | 33 - ...lineJsxFactoryDeclarationsLocalTypes.types | 96 +- ...sxFactoryDeclarationsLocalTypes.types.diff | 269 - .../innerTypeParameterShadowingOuterOne.types | 8 +- ...rTypeParameterShadowingOuterOne.types.diff | 26 - ...innerTypeParameterShadowingOuterOne2.types | 8 +- ...TypeParameterShadowingOuterOne2.types.diff | 26 - ...fOperatorWithRHSHasSymbolHasInstance.types | 52 +- ...atorWithRHSHasSymbolHasInstance.types.diff | 195 +- .../instantiationExpressions.types | 42 +- .../instantiationExpressions.types.diff | 111 +- .../interfaceWithMultipleBaseTypes2.types | 4 +- ...interfaceWithMultipleBaseTypes2.types.diff | 20 - ...nIncludingPropFromGlobalAugmentation.types | 2 +- ...udingPropFromGlobalAugmentation.types.diff | 2 +- ...sectionMemberOfUnionNarrowsCorrectly.types | 4 +- ...onMemberOfUnionNarrowsCorrectly.types.diff | 4 +- .../conformance/intersectionNarrowing.types | 4 +- .../intersectionNarrowing.types.diff | 20 - .../conformance/intersectionReduction.types | 16 +- .../intersectionReduction.types.diff | 41 - .../intersectionReductionStrict.types | 16 +- .../intersectionReductionStrict.types.diff | 41 - .../intersectionTypeInference2.types | 4 +- .../intersectionTypeInference2.types.diff | 19 - .../intersectionTypeInference3.types | 8 +- .../intersectionTypeInference3.types.diff | 22 - .../intersectionWithIndexSignatures.types | 4 +- ...intersectionWithIndexSignatures.types.diff | 18 - .../intersectionWithUnionConstraint.types | 4 +- ...intersectionWithUnionConstraint.types.diff | 20 - .../intlDateTimeFormatRangeES2021.types | 8 +- .../intlDateTimeFormatRangeES2021.types.diff | 31 - .../conformance/intlDurationFormat.types | 4 +- .../conformance/intlDurationFormat.types.diff | 14 - .../conformance/intlNumberFormatES2023.types | 4 +- .../intlNumberFormatES2023.types.diff | 18 - .../intraExpressionInferences.types | 40 +- .../intraExpressionInferences.types.diff | 122 - .../intraExpressionInferencesJsx.types | 12 +- .../intraExpressionInferencesJsx.types.diff | 37 - .../conformance/intrinsicTypes.types | 2 +- .../conformance/intrinsicTypes.types.diff | 2 +- .../invalidMultipleVariableDeclarations.types | 4 +- ...lidMultipleVariableDeclarations.types.diff | 14 - .../isomorphicMappedTypeInference.types | 8 +- .../isomorphicMappedTypeInference.types.diff | 37 - .../conformance/iteratorSpreadInCall5.types | 4 +- .../iteratorSpreadInCall5.types.diff | 20 - .../conformance/iteratorSpreadInCall6.types | 4 +- .../iteratorSpreadInCall6.types.diff | 20 - ...GenericsSerialization(target=es2015).types | 2 +- ...icsSerialization(target=es2015).types.diff | 11 - ...assesCjsExportAssignment(target=es2015).js | 2 +- ...CjsExportAssignment(target=es2015).js.diff | 2 +- ...esCjsExportAssignment(target=es2015).types | 28 +- ...ExportAssignment(target=es2015).types.diff | 43 +- .../jsDeclarationsFunctions.errors.txt | 8 +- .../jsDeclarationsFunctions.errors.txt.diff | 8 +- .../conformance/jsDeclarationsFunctions.types | 26 +- .../jsDeclarationsFunctions.types.diff | 26 +- ...eclarationsInterfaces(target=es2015).types | 8 +- ...ationsInterfaces(target=es2015).types.diff | 18 +- ...ationsMissingGenerics(target=es2015).types | 4 +- ...sMissingGenerics(target=es2015).types.diff | 17 + ...MissingTypeParameters(target=es2015).types | 6 +- ...ngTypeParameters(target=es2015).types.diff | 6 +- ...eclarationsOptionalTypeLiteralProps1.types | 2 +- ...ationsOptionalTypeLiteralProps1.types.diff | 2 +- ...eclarationsOptionalTypeLiteralProps2.types | 2 +- ...ationsOptionalTypeLiteralProps2.types.diff | 2 +- ...sDeclarationsPackageJson(target=es2015).js | 10 +- ...arationsPackageJson(target=es2015).js.diff | 31 +- ...clarationsPackageJson(target=es2015).types | 14 +- ...tionsPackageJson(target=es2015).types.diff | 29 +- ...tionsParameterTagReusesInputNodeInEmit1.js | 2 +- ...ParameterTagReusesInputNodeInEmit1.js.diff | 2 +- ...nsParameterTagReusesInputNodeInEmit1.types | 4 +- ...ameterTagReusesInputNodeInEmit1.types.diff | 10 +- ...tionsParameterTagReusesInputNodeInEmit2.js | 4 +- ...ParameterTagReusesInputNodeInEmit2.js.diff | 4 +- ...nsParameterTagReusesInputNodeInEmit2.types | 4 +- ...ameterTagReusesInputNodeInEmit2.types.diff | 12 - ...ationsReactComponents(target=es2015).types | 6 +- ...sReactComponents(target=es2015).types.diff | 29 +- ...tionsTypeReassignmentFromDeclaration.types | 2 +- ...TypeReassignmentFromDeclaration.types.diff | 2 +- .../jsDeclarationsUniqueSymbolUsage.types | 2 +- ...jsDeclarationsUniqueSymbolUsage.types.diff | 11 + .../jsdocDisallowedInTypescript.types | 4 +- .../jsdocDisallowedInTypescript.types.diff | 13 +- ...jsdocImportTypeReferenceToClassAlias.types | 2 +- ...ImportTypeReferenceToClassAlias.types.diff | 6 +- ...cImportTypeReferenceToCommonjsModule.types | 2 +- ...rtTypeReferenceToCommonjsModule.types.diff | 2 +- .../jsdocImportTypeReferenceToESModule.types | 2 +- ...ocImportTypeReferenceToESModule.types.diff | 2 +- .../conformance/jsdocIndexSignature.types | 2 +- .../jsdocIndexSignature.types.diff | 2 +- .../jsdocParamTagTypeLiteral.types | 18 +- .../jsdocParamTagTypeLiteral.types.diff | 33 +- .../jsdocParseBackquotedParamName.types | 2 +- .../jsdocParseBackquotedParamName.types.diff | 11 - .../conformance/jsdocParseStarEquals.types | 2 +- .../jsdocParseStarEquals.types.diff | 8 +- .../jsdocPostfixEqualsAddsOptionality.types | 10 +- ...docPostfixEqualsAddsOptionality.types.diff | 34 - .../jsdocPrefixPostfixParsing.types | 2 +- .../jsdocPrefixPostfixParsing.types.diff | 10 +- .../conformance/jsdocTemplateTag.errors.txt | 4 +- .../jsdocTemplateTag.errors.txt.diff | 4 +- .../conformance/jsdocTemplateTag.types | 8 +- .../conformance/jsdocTemplateTag.types.diff | 10 +- .../submodule/conformance/jsdocThisType.types | 6 +- .../conformance/jsdocThisType.types.diff | 22 +- .../jsdocTypeTagOnParameter1.types | 8 +- .../jsdocTypeTagOnParameter1.types.diff | 21 - .../conformance/keyofAndIndexedAccess.js | 6 +- .../conformance/keyofAndIndexedAccess.js.diff | 22 +- .../conformance/keyofAndIndexedAccess.types | 70 +- .../keyofAndIndexedAccess.types.diff | 257 +- .../conformance/keyofAndIndexedAccess2.types | 26 +- .../keyofAndIndexedAccess2.types.diff | 86 +- .../keyofAndIndexedAccessErrors.types | 2 +- .../keyofAndIndexedAccessErrors.types.diff | 11 - .../leaveOptionalParameterAsWritten.js | 4 +- .../leaveOptionalParameterAsWritten.js.diff | 10 - .../leaveOptionalParameterAsWritten.types | 4 +- ...leaveOptionalParameterAsWritten.types.diff | 11 - .../submodule/conformance/literalTypes1.types | 2 +- .../conformance/literalTypes1.types.diff | 10 - .../submodule/conformance/literalTypes2.types | 10 +- .../conformance/literalTypes2.types.diff | 41 - .../submodule/conformance/literalTypes3.types | 4 +- .../conformance/literalTypes3.types.diff | 20 - .../conformance/localesObjectArgument.types | 152 +- .../localesObjectArgument.types.diff | 390 -- .../logicalAssignment2(target=es2015).types | 88 +- ...gicalAssignment2(target=es2015).types.diff | 88 +- .../logicalAssignment2(target=es2020).types | 88 +- ...gicalAssignment2(target=es2020).types.diff | 88 +- .../logicalAssignment2(target=es2021).types | 88 +- ...gicalAssignment2(target=es2021).types.diff | 88 +- .../logicalAssignment2(target=esnext).types | 88 +- ...gicalAssignment2(target=esnext).types.diff | 88 +- .../logicalAssignment5(target=es2015).types | 12 +- ...gicalAssignment5(target=es2015).types.diff | 55 - .../logicalAssignment5(target=es2020).types | 12 +- ...gicalAssignment5(target=es2020).types.diff | 55 - .../logicalAssignment5(target=es2021).types | 12 +- ...gicalAssignment5(target=es2021).types.diff | 55 - .../logicalAssignment5(target=esnext).types | 12 +- ...gicalAssignment5(target=esnext).types.diff | 55 - .../logicalAssignment8(target=es2015).types | 8 +- ...gicalAssignment8(target=es2015).types.diff | 38 - .../logicalAssignment8(target=es2020).types | 8 +- ...gicalAssignment8(target=es2020).types.diff | 38 - .../logicalAssignment8(target=es2021).types | 8 +- ...gicalAssignment8(target=es2021).types.diff | 38 - .../logicalAssignment8(target=esnext).types | 8 +- ...gicalAssignment8(target=esnext).types.diff | 38 - .../conformance/logicalAssignment9.types | 6 +- .../conformance/logicalAssignment9.types.diff | 25 - .../conformance/mappedTypeAsClauses.types | 4 +- .../mappedTypeAsClauses.types.diff | 20 - .../conformance/mappedTypeConstraints.types | 10 +- .../mappedTypeConstraints.types.diff | 26 +- .../conformance/mappedTypeConstraints2.types | 6 +- .../mappedTypeConstraints2.types.diff | 23 - .../conformance/mappedTypeErrors.errors.txt | 2 +- .../mappedTypeErrors.errors.txt.diff | 11 +- .../conformance/mappedTypeErrors.types | 4 +- .../conformance/mappedTypeErrors.types.diff | 16 +- .../conformance/mappedTypeModifiers.types | 18 +- .../mappedTypeModifiers.types.diff | 66 - .../conformance/mappedTypeProperties.types | 2 +- .../mappedTypeProperties.types.diff | 2 +- .../conformance/mappedTypeWithAny.types | 2 +- .../conformance/mappedTypeWithAny.types.diff | 11 - .../conformance/mappedTypesArraysTuples.types | 4 +- .../mappedTypesArraysTuples.types.diff | 20 - .../mappedTypesGenericTuples2.types | 4 +- .../mappedTypesGenericTuples2.types.diff | 14 - .../memberFunctionsWithPrivateOverloads.types | 36 +- ...erFunctionsWithPrivateOverloads.types.diff | 112 + .../memberFunctionsWithPublicOverloads.types | 32 +- ...berFunctionsWithPublicOverloads.types.diff | 101 + ...rFunctionsWithPublicPrivateOverloads.types | 40 +- ...tionsWithPublicPrivateOverloads.types.diff | 123 + .../methodSignaturesWithOverloads.types | 4 +- .../methodSignaturesWithOverloads.types.diff | 17 +- .../methodSignaturesWithOverloads2.types | 20 +- .../methodSignaturesWithOverloads2.types.diff | 62 +- .../conformance/mixinAccessModifiers.types | 10 +- .../mixinAccessModifiers.types.diff | 47 - .../conformance/mixinAccessors1.types | 16 +- .../conformance/mixinAccessors1.types.diff | 43 +- .../conformance/mixinAccessors2.types | 4 +- .../conformance/mixinAccessors2.types.diff | 4 +- .../conformance/mixinAccessors3.types | 4 +- .../conformance/mixinAccessors3.types.diff | 4 +- .../conformance/moduleExportAssignment7.types | 8 +- .../moduleExportAssignment7.types.diff | 17 +- ...eExportWithExportPropertyAssignment2.types | 4 +- ...rtWithExportPropertyAssignment2.types.diff | 6 +- ...eExportWithExportPropertyAssignment3.types | 12 +- ...rtWithExportPropertyAssignment3.types.diff | 18 +- ...eExportWithExportPropertyAssignment4.types | 12 +- ...rtWithExportPropertyAssignment4.types.diff | 18 +- .../conformance/namedTupleMembers.js | 2 +- .../conformance/namedTupleMembers.js.diff | 11 - ...wExceptionVariableInCatchClause.errors.txt | 4 +- ...ptionVariableInCatchClause.errors.txt.diff | 17 + ...narrowExceptionVariableInCatchClause.types | 8 +- ...wExceptionVariableInCatchClause.types.diff | 33 + .../narrowingConstrainedTypeVariable.types | 2 +- ...arrowingConstrainedTypeVariable.types.diff | 11 - .../conformance/neverInference.types | 8 +- .../conformance/neverInference.types.diff | 26 - .../neverReturningFunctions1.types | 78 +- .../neverReturningFunctions1.types.diff | 286 - .../submodule/conformance/neverType.types | 4 +- .../conformance/neverType.types.diff | 20 - .../conformance/neverTypeErrors1.types | 2 +- .../conformance/neverTypeErrors1.types.diff | 11 - .../conformance/neverTypeErrors2.types | 2 +- .../conformance/neverTypeErrors2.types.diff | 11 - .../conformance/newOperatorConformance.types | 4 +- .../newOperatorConformance.types.diff | 19 - .../newTarget.es5(target=es2015).types | 4 +- .../newTarget.es5(target=es2015).types.diff | 13 + .../submodule/conformance/newTarget.es6.types | 4 +- .../conformance/newTarget.es6.types.diff | 13 + .../noUncheckedIndexedAccess.types | 12 +- .../noUncheckedIndexedAccess.types.diff | 34 - ...oUncheckedIndexedAccessDestructuring.types | 36 +- ...eckedIndexedAccessDestructuring.types.diff | 99 - ...sTypeModeDeclarationEmit(module=node16).js | 2 +- ...ModeDeclarationEmit(module=node16).js.diff | 9 - ...sTypeModeDeclarationEmit(module=node18).js | 2 +- ...ModeDeclarationEmit(module=node18).js.diff | 9 - ...sTypeModeDeclarationEmit(module=node20).js | 2 +- ...ModeDeclarationEmit(module=node20).js.diff | 9 - ...ypeModeDeclarationEmit(module=nodenext).js | 2 +- ...deDeclarationEmit(module=nodenext).js.diff | 9 - ...odeDeclarationEmitErrors(module=node16).js | 18 +- ...clarationEmitErrors(module=node16).js.diff | 38 - ...odeDeclarationEmitErrors(module=node18).js | 18 +- ...clarationEmitErrors(module=node18).js.diff | 38 - ...odeDeclarationEmitErrors(module=node20).js | 18 +- ...clarationEmitErrors(module=node20).js.diff | 38 - ...eDeclarationEmitErrors(module=nodenext).js | 18 +- ...arationEmitErrors(module=nodenext).js.diff | 38 - ...TypeModeDeclarationEmit1(module=node16).js | 2 +- ...odeDeclarationEmit1(module=node16).js.diff | 9 - ...TypeModeDeclarationEmit1(module=node18).js | 2 +- ...odeDeclarationEmit1(module=node18).js.diff | 9 - ...TypeModeDeclarationEmit1(module=node20).js | 2 +- ...odeDeclarationEmit1(module=node20).js.diff | 9 - ...peModeDeclarationEmit1(module=nodenext).js | 2 +- ...eDeclarationEmit1(module=nodenext).js.diff | 9 - ...deDeclarationEmitErrors1(module=node16).js | 10 +- ...larationEmitErrors1(module=node16).js.diff | 29 - ...deDeclarationEmitErrors1(module=node18).js | 10 +- ...larationEmitErrors1(module=node18).js.diff | 29 - ...deDeclarationEmitErrors1(module=node20).js | 10 +- ...larationEmitErrors1(module=node20).js.diff | 29 - ...DeclarationEmitErrors1(module=nodenext).js | 10 +- ...rationEmitErrors1(module=nodenext).js.diff | 29 - ...enceModeDeclarationEmit6(module=node16).js | 43 +- ...odeDeclarationEmit6(module=node16).js.diff | 50 - ...enceModeDeclarationEmit6(module=node18).js | 43 +- ...odeDeclarationEmit6(module=node18).js.diff | 50 - ...enceModeDeclarationEmit6(module=node20).js | 43 +- ...odeDeclarationEmit6(module=node20).js.diff | 50 - ...ceModeDeclarationEmit6(module=nodenext).js | 43 +- ...eDeclarationEmit6(module=nodenext).js.diff | 50 - .../conformance/numberPropertyAccess.types | 6 +- .../numberPropertyAccess.types.diff | 22 - .../conformance/numericLiteralTypes1.types | 2 +- .../numericLiteralTypes1.types.diff | 11 - .../conformance/numericLiteralTypes2.types | 2 +- .../numericLiteralTypes2.types.diff | 11 - .../conformance/numericLiteralTypes3.types | 14 +- .../numericLiteralTypes3.types.diff | 65 - .../objectLiteralContextualTyping.types | 6 +- .../objectLiteralContextualTyping.types.diff | 20 - .../objectLiteralGettersAndSetters.types | 4 +- .../objectLiteralGettersAndSetters.types.diff | 13 - .../conformance/objectLiteralNormalization.js | 12 +- .../objectLiteralNormalization.js.diff | 23 - .../objectLiteralNormalization.types | 14 +- .../objectLiteralNormalization.types.diff | 35 - .../objectSpread(target=es2015).types | 18 +- .../objectSpread(target=es2015).types.diff | 55 - .../objectSpreadNegative(target=es2015).types | 8 +- ...ctSpreadNegative(target=es2015).types.diff | 25 - .../objectSpreadRepeatedNullCheckPerf.types | 104 +- ...jectSpreadRepeatedNullCheckPerf.types.diff | 365 -- .../conformance/objectSpreadStrictNull.types | 20 +- .../objectSpreadStrictNull.types.diff | 64 - .../conformance/objectTypesIdentity.types | 42 +- .../objectTypesIdentity.types.diff | 130 - .../conformance/objectTypesIdentity2.types | 30 +- .../objectTypesIdentity2.types.diff | 92 - ...bjectTypesIdentityWithCallSignatures.types | 42 +- ...TypesIdentityWithCallSignatures.types.diff | 132 - ...jectTypesIdentityWithCallSignatures2.types | 42 +- ...ypesIdentityWithCallSignatures2.types.diff | 132 - ...jectTypesIdentityWithCallSignatures3.types | 24 +- ...ypesIdentityWithCallSignatures3.types.diff | 76 - ...thCallSignaturesDifferingParamCounts.types | 42 +- ...lSignaturesDifferingParamCounts.types.diff | 132 - ...hCallSignaturesDifferingParamCounts2.types | 18 +- ...SignaturesDifferingParamCounts2.types.diff | 63 - ...ntityWithCallSignaturesWithOverloads.types | 42 +- ...WithCallSignaturesWithOverloads.types.diff | 132 - ...TypesIdentityWithConstructSignatures.types | 24 +- ...IdentityWithConstructSignatures.types.diff | 83 - ...ypesIdentityWithConstructSignatures2.types | 36 +- ...dentityWithConstructSignatures2.types.diff | 112 - ...structSignaturesDifferingParamCounts.types | 36 +- ...tSignaturesDifferingParamCounts.types.diff | 112 - ...pesIdentityWithGenericCallSignatures.types | 42 +- ...entityWithGenericCallSignatures.types.diff | 132 - ...esIdentityWithGenericCallSignatures2.types | 42 +- ...ntityWithGenericCallSignatures2.types.diff | 132 - ...CallSignaturesDifferingByConstraints.types | 90 +- ...ignaturesDifferingByConstraints.types.diff | 213 - ...allSignaturesDifferingByConstraints2.types | 90 +- ...gnaturesDifferingByConstraints2.types.diff | 213 - ...allSignaturesDifferingByConstraints3.types | 42 +- ...gnaturesDifferingByConstraints3.types.diff | 132 - ...cCallSignaturesDifferingByReturnType.types | 42 +- ...SignaturesDifferingByReturnType.types.diff | 132 - ...CallSignaturesDifferingByReturnType2.types | 42 +- ...ignaturesDifferingByReturnType2.types.diff | 132 - ...gnaturesDifferingTypeParameterCounts.types | 42 +- ...resDifferingTypeParameterCounts.types.diff | 132 - ...naturesDifferingTypeParameterCounts2.types | 18 +- ...esDifferingTypeParameterCounts2.types.diff | 59 - ...ignaturesDifferingTypeParameterNames.types | 42 +- ...uresDifferingTypeParameterNames.types.diff | 132 - ...hGenericCallSignaturesOptionalParams.types | 42 +- ...ricCallSignaturesOptionalParams.types.diff | 132 - ...GenericCallSignaturesOptionalParams2.types | 42 +- ...icCallSignaturesOptionalParams2.types.diff | 132 - ...GenericCallSignaturesOptionalParams3.types | 42 +- ...icCallSignaturesOptionalParams3.types.diff | 132 - ...ructSignaturesDifferingByConstraints.types | 72 +- ...ignaturesDifferingByConstraints.types.diff | 172 - ...uctSignaturesDifferingByConstraints2.types | 72 +- ...gnaturesDifferingByConstraints2.types.diff | 176 - ...uctSignaturesDifferingByConstraints3.types | 36 +- ...gnaturesDifferingByConstraints3.types.diff | 110 - ...tructSignaturesDifferingByReturnType.types | 42 +- ...SignaturesDifferingByReturnType.types.diff | 129 - ...ructSignaturesDifferingByReturnType2.types | 36 +- ...ignaturesDifferingByReturnType2.types.diff | 112 - ...gnaturesDifferingTypeParameterCounts.types | 36 +- ...resDifferingTypeParameterCounts.types.diff | 110 - ...ignaturesDifferingTypeParameterNames.types | 36 +- ...uresDifferingTypeParameterNames.types.diff | 110 - ...ricConstructSignaturesOptionalParams.types | 36 +- ...nstructSignaturesOptionalParams.types.diff | 110 - ...icConstructSignaturesOptionalParams2.types | 36 +- ...structSignaturesOptionalParams2.types.diff | 110 - ...icConstructSignaturesOptionalParams3.types | 36 +- ...structSignaturesOptionalParams3.types.diff | 110 - ...ectTypesIdentityWithNumericIndexers1.types | 42 +- ...pesIdentityWithNumericIndexers1.types.diff | 132 - ...ectTypesIdentityWithNumericIndexers2.types | 42 +- ...pesIdentityWithNumericIndexers2.types.diff | 132 - ...ectTypesIdentityWithNumericIndexers3.types | 42 +- ...pesIdentityWithNumericIndexers3.types.diff | 132 - .../objectTypesIdentityWithOptionality.types | 30 +- ...ectTypesIdentityWithOptionality.types.diff | 97 - .../objectTypesIdentityWithPrivates.types | 42 +- ...objectTypesIdentityWithPrivates.types.diff | 132 - .../objectTypesIdentityWithPublics.types | 42 +- .../objectTypesIdentityWithPublics.types.diff | 130 - ...bjectTypesIdentityWithStringIndexers.types | 42 +- ...TypesIdentityWithStringIndexers.types.diff | 132 - ...jectTypesIdentityWithStringIndexers2.types | 42 +- ...ypesIdentityWithStringIndexers2.types.diff | 132 - .../objectTypesWithOptionalProperties.types | 2 +- ...jectTypesWithOptionalProperties.types.diff | 11 - .../optionalBindingParameters1.types | 6 +- .../optionalBindingParameters1.types.diff | 29 - .../optionalBindingParameters2.types | 6 +- .../optionalBindingParameters2.types.diff | 29 - .../optionalBindingParameters3.types | 2 +- .../optionalBindingParameters3.types.diff | 10 - .../optionalBindingParameters4.types | 2 +- .../optionalBindingParameters4.types.diff | 10 - ...ptionalBindingParametersInOverloads1.types | 8 +- ...alBindingParametersInOverloads1.types.diff | 35 - ...ptionalBindingParametersInOverloads2.types | 8 +- ...alBindingParametersInOverloads2.types.diff | 37 - ...ssignableToStringIndexSignature.errors.txt | 4 +- ...ableToStringIndexSignature.errors.txt.diff | 20 + ...ertyAssignableToStringIndexSignature.types | 16 +- ...ssignableToStringIndexSignature.types.diff | 56 - .../submodule/conformance/override19.types | 6 +- .../conformance/override19.types.diff | 28 - .../submodule/conformance/override2.types | 8 +- .../conformance/override2.types.diff | 34 + ...paramTagBracketsAddOptionalUndefined.types | 8 +- ...TagBracketsAddOptionalUndefined.types.diff | 33 - .../conformance/paramTagTypeResolution2.types | 4 +- .../paramTagTypeResolution2.types.diff | 11 - .../conformance/parser15.4.4.14-9-2.types | 16 +- .../parser15.4.4.14-9-2.types.diff | 49 - .../parserArrowFunctionExpression14.types | 4 +- ...parserArrowFunctionExpression14.types.diff | 20 - .../parserMissingLambdaOpenBrace1.types | 2 +- .../parserMissingLambdaOpenBrace1.types.diff | 11 - .../parserOverloadOnConstants1.types | 8 +- .../parserOverloadOnConstants1.types.diff | 8 +- .../conformance/parserParameterList2.types | 2 +- .../parserParameterList2.types.diff | 11 + .../conformance/parserRealSource14.types | 10 +- .../conformance/parserRealSource14.types.diff | 37 +- .../conformance/parserRealSource8.types | 4 +- .../conformance/parserRealSource8.types.diff | 16 + .../parserShorthandPropertyAssignment1.types | 6 +- ...serShorthandPropertyAssignment1.types.diff | 22 - .../parserUsingConstructorAsIdentifier.types | 4 +- ...serUsingConstructorAsIdentifier.types.diff | 14 - .../submodule/conformance/parserharness.types | 220 +- .../conformance/parserharness.types.diff | 782 +-- .../conformance/partiallyNamedTuples2.types | 4 +- .../partiallyNamedTuples2.types.diff | 12 + .../conformance/plainJSRedeclare.types | 4 +- .../conformance/plainJSRedeclare.types.diff | 11 - .../conformance/plainJSRedeclare2.types | 4 +- .../conformance/plainJSRedeclare2.types.diff | 11 - .../conformance/plainJSRedeclare3.types | 4 +- .../conformance/plainJSRedeclare3.types.diff | 11 - .../primtiveTypesAreIdentical.types | 8 +- .../primtiveTypesAreIdentical.types.diff | 26 + .../privateNameAndPropertySignature.types | 4 +- ...privateNameAndPropertySignature.types.diff | 19 - ...ateNameInInExpression(target=es2022).types | 2 +- ...meInInExpression(target=es2022).types.diff | 11 - ...ateNameInInExpression(target=esnext).types | 2 +- ...meInInExpression(target=esnext).types.diff | 11 - .../conformance/privateNamesUnique-2.types | 4 +- .../privateNamesUnique-2.types.diff | 12 - .../conformance/propertyAccessChain.2.types | 4 +- .../propertyAccessChain.2.types.diff | 18 - .../conformance/propertyAccessChain.types | 42 +- .../propertyAccessChain.types.diff | 87 - .../conformance/propertyAccessWidening.types | 2 +- .../propertyAccessWidening.types.diff | 11 - .../propertyAssignmentUseParentType3.types | 4 +- ...ropertyAssignmentUseParentType3.types.diff | 4 +- ...tyAssignmentMergeWithInterfaceMethod.types | 10 +- ...ignmentMergeWithInterfaceMethod.types.diff | 37 +- .../conformance/recursiveMappedTypes.types | 2 +- .../recursiveMappedTypes.types.diff | 11 - .../recursiveTypeReferences1.types | 42 +- .../recursiveTypeReferences1.types.diff | 174 - .../recursiveTypeReferences2.errors.txt | 4 +- .../recursiveTypeReferences2.errors.txt.diff | 16 + .../recursiveTypesWithTypeof.types | 122 +- .../recursiveTypesWithTypeof.types.diff | 174 - .../requireAssertsFromTypescript.types | 16 +- .../requireAssertsFromTypescript.types.diff | 55 - ...stParametersWithArrayTypeAnnotations.types | 36 +- ...ametersWithArrayTypeAnnotations.types.diff | 87 - ...rtyWithBindingPattern(target=es2015).types | 4 +- ...thBindingPattern(target=es2015).types.diff | 19 - .../restTuplesFromContextualTypes.types | 36 +- .../restTuplesFromContextualTypes.types.diff | 153 - .../conformance/returnTagTypeGuard.types | 2 +- .../conformance/returnTagTypeGuard.types.diff | 11 - .../submodule/conformance/sharedMemory.types | 12 +- .../conformance/sharedMemory.types.diff | 38 - ...sNotSubtypeOfNonSpecializedSignature.types | 52 +- ...ubtypeOfNonSpecializedSignature.types.diff | 173 + ...reIsSubtypeOfNonSpecializedSignature.types | 70 +- ...ubtypeOfNonSpecializedSignature.types.diff | 218 + .../specializedSignatureWithOptional.types | 4 +- ...pecializedSignatureWithOptional.types.diff | 14 - .../conformance/spreadDuplicate.types | 10 +- .../conformance/spreadDuplicate.types.diff | 34 - .../conformance/spreadObjectOrFalsy.types | 6 +- .../spreadObjectOrFalsy.types.diff | 25 - .../spreadOverwritesProperty.types | 4 +- .../spreadOverwritesProperty.types.diff | 20 - .../spreadOverwritesPropertyStrict.types | 6 +- .../spreadOverwritesPropertyStrict.types.diff | 28 - .../submodule/conformance/spreadUnion3.types | 8 +- .../conformance/spreadUnion3.types.diff | 31 - .../submodule/conformance/spreadUnion4.types | 4 +- .../conformance/spreadUnion4.types.diff | 16 - ...s2015,usedefineforclassfields=false).types | 126 +- ...,usedefineforclassfields=false).types.diff | 494 ++ ...es2015,usedefineforclassfields=true).types | 126 +- ...5,usedefineforclassfields=true).types.diff | 494 ++ .../conformance/stringEnumLiteralTypes3.types | 16 +- .../stringEnumLiteralTypes3.types.diff | 74 - .../conformance/stringLiteralType.types | 6 +- .../conformance/stringLiteralType.types.diff | 20 + .../stringLiteralTypeIsSubtypeOfString.types | 96 +- ...ingLiteralTypeIsSubtypeOfString.types.diff | 216 +- .../stringLiteralTypesAsTags03.types | 10 +- .../stringLiteralTypesAsTags03.types.diff | 40 - ...eralTypesAsTypeParameterConstraint01.types | 4 +- ...ypesAsTypeParameterConstraint01.types.diff | 20 - ...eralTypesAsTypeParameterConstraint02.types | 2 +- ...ypesAsTypeParameterConstraint02.types.diff | 11 - ...teralTypesInImplementationSignatures.types | 36 +- ...TypesInImplementationSignatures.types.diff | 87 + ...eralTypesInImplementationSignatures2.types | 18 +- ...ypesInImplementationSignatures2.types.diff | 43 +- .../stringLiteralTypesOverloads01.types | 36 +- .../stringLiteralTypesOverloads01.types.diff | 119 - .../stringLiteralTypesOverloads02.types | 36 +- .../stringLiteralTypesOverloads02.types.diff | 119 - .../stringLiteralTypesOverloads04.types | 6 +- .../stringLiteralTypesOverloads04.types.diff | 18 - .../stringMappingOverPatternLiterals.types | 8 +- ...tringMappingOverPatternLiterals.types.diff | 38 - .../conformance/stringMappingReduction.types | 8 +- .../stringMappingReduction.types.diff | 24 - .../subtypingWithCallSignatures.types | 16 +- .../subtypingWithCallSignatures.types.diff | 65 - .../subtypingWithCallSignatures2.types | 176 +- .../subtypingWithCallSignatures2.types.diff | 492 -- .../subtypingWithCallSignatures3.types | 110 +- .../subtypingWithCallSignatures3.types.diff | 326 - .../subtypingWithCallSignaturesA.types | 4 +- .../subtypingWithCallSignaturesA.types.diff | 20 - ...ignaturesWithOptionalParameters.errors.txt | 16 +- ...uresWithOptionalParameters.errors.txt.diff | 70 + ...CallSignaturesWithOptionalParameters.types | 16 +- ...ignaturesWithOptionalParameters.types.diff | 71 - ...allSignaturesWithRestParameters.errors.txt | 44 +- ...gnaturesWithRestParameters.errors.txt.diff | 181 + ...WithCallSignaturesWithRestParameters.types | 26 +- ...allSignaturesWithRestParameters.types.diff | 114 - ...lSignaturesWithSpecializedSignatures.types | 6 +- ...aturesWithSpecializedSignatures.types.diff | 29 + .../subtypingWithConstructSignatures.types | 16 +- ...ubtypingWithConstructSignatures.types.diff | 66 - .../subtypingWithConstructSignatures2.types | 168 +- ...btypingWithConstructSignatures2.types.diff | 480 -- .../subtypingWithConstructSignatures3.types | 106 +- ...btypingWithConstructSignatures3.types.diff | 322 - .../subtypingWithConstructSignatures5.types | 8 +- ...btypingWithConstructSignatures5.types.diff | 31 - ...ignaturesWithOptionalParameters.errors.txt | 16 +- ...uresWithOptionalParameters.errors.txt.diff | 70 + ...ructSignaturesWithOptionalParameters.types | 16 +- ...ignaturesWithOptionalParameters.types.diff | 71 - ...tSignaturesWithSpecializedSignatures.types | 6 +- ...aturesWithSpecializedSignatures.types.diff | 29 + ...ignaturesWithOptionalParameters.errors.txt | 36 +- ...uresWithOptionalParameters.errors.txt.diff | 153 + ...CallSignaturesWithOptionalParameters.types | 48 +- ...ignaturesWithOptionalParameters.types.diff | 209 - ...ignaturesWithOptionalParameters.errors.txt | 36 +- ...uresWithOptionalParameters.errors.txt.diff | 153 + ...ructSignaturesWithOptionalParameters.types | 48 +- ...ignaturesWithOptionalParameters.types.diff | 209 - ...ubtypingWithObjectMembersOptionality.types | 16 +- ...ingWithObjectMembersOptionality.types.diff | 47 - ...btypingWithObjectMembersOptionality2.types | 8 +- ...ngWithObjectMembersOptionality2.types.diff | 19 - ...btypingWithObjectMembersOptionality3.types | 8 +- ...ngWithObjectMembersOptionality3.types.diff | 23 - ...btypingWithObjectMembersOptionality4.types | 8 +- ...ngWithObjectMembersOptionality4.types.diff | 19 - ...subtypingWithOptionalProperties.errors.txt | 6 +- ...pingWithOptionalProperties.errors.txt.diff | 18 +- .../subtypingWithOptionalProperties.types | 20 +- ...subtypingWithOptionalProperties.types.diff | 47 - .../superCallParameterContextualTyping1.types | 4 +- ...rCallParameterContextualTyping1.types.diff | 12 - .../switchWithConstrainedTypeVariable.types | 2 +- ...itchWithConstrainedTypeVariable.types.diff | 11 + ...ingsWithManyCallAndMemberExpressions.types | 8 +- ...ithManyCallAndMemberExpressions.types.diff | 28 - ...sWithManyCallAndMemberExpressionsES6.types | 8 +- ...ManyCallAndMemberExpressionsES6.types.diff | 28 - ...mplateStringsWithOverloadResolution3.types | 4 +- ...eStringsWithOverloadResolution3.types.diff | 13 +- ...teStringsWithOverloadResolution3_ES6.types | 4 +- ...ingsWithOverloadResolution3_ES6.types.diff | 13 +- .../taggedTemplatesWithTypeArguments1.types | 4 +- ...ggedTemplatesWithTypeArguments1.types.diff | 20 - .../conformance/templateLiteralTypes1.types | 62 +- .../templateLiteralTypes1.types.diff | 117 +- .../conformance/templateLiteralTypes2.types | 2 +- .../templateLiteralTypes2.types.diff | 2 +- .../conformance/templateLiteralTypes3.types | 26 +- .../templateLiteralTypes3.types.diff | 103 +- .../conformance/templateLiteralTypes4.types | 28 +- .../templateLiteralTypes4.types.diff | 68 +- .../templateLiteralTypesPatterns.types | 56 +- .../templateLiteralTypesPatterns.types.diff | 184 - .../templateStringWithPropertyAccess.types | 4 +- ...emplateStringWithPropertyAccess.types.diff | 13 - .../templateStringWithPropertyAccessES6.types | 4 +- ...lateStringWithPropertyAccessES6.types.diff | 13 - .../thisPropertyAssignmentCircular.types | 4 +- .../thisPropertyAssignmentCircular.types.diff | 16 +- .../conformance/thisTypeErrors.types | 40 +- .../conformance/thisTypeErrors.types.diff | 122 - ...TypeInObjectLiterals2(target=es2015).types | 2 +- ...nObjectLiterals2(target=es2015).types.diff | 11 - .../thisTypeInTaggedTemplateCall.types | 12 +- .../thisTypeInTaggedTemplateCall.types.diff | 32 - .../conformance/thisTypeInTuples.types | 14 +- .../conformance/thisTypeInTuples.types.diff | 41 - .../thisTypeOfConstructorFunctions.errors.txt | 8 +- ...TypeOfConstructorFunctions.errors.txt.diff | 8 +- .../thisTypeOfConstructorFunctions.types | 30 +- .../thisTypeOfConstructorFunctions.types.diff | 51 +- .../thisTypeSyntacticContext.types | 18 +- .../thisTypeSyntacticContext.types.diff | 70 - .../conformance/transferableArrayBuffer.types | 4 +- .../transferableArrayBuffer.types.diff | 14 - .../conformance/tsxAttributeErrors.errors.txt | 8 +- .../tsxAttributeErrors.errors.txt.diff | 33 + .../conformance/tsxAttributeErrors.types | 2 +- .../conformance/tsxAttributeErrors.types.diff | 11 - .../tsxAttributeInvalidNames.types | 4 +- .../tsxAttributeInvalidNames.types.diff | 16 - .../tsxAttributeResolution11.errors.txt | 8 +- .../tsxAttributeResolution11.errors.txt.diff | 21 + .../tsxAttributeResolution11.types | 2 +- .../tsxAttributeResolution11.types.diff | 11 - .../tsxAttributeResolution12.types | 6 +- .../tsxAttributeResolution12.types.diff | 25 - .../tsxAttributeResolution15.errors.txt | 8 +- .../tsxAttributeResolution15.errors.txt.diff | 22 + .../tsxAttributeResolution6.errors.txt | 4 +- .../tsxAttributeResolution6.errors.txt.diff | 16 + .../conformance/tsxAttributeResolution6.types | 2 +- .../tsxAttributeResolution6.types.diff | 10 - .../tsxAttributeResolution7.errors.txt | 4 +- .../tsxAttributeResolution7.errors.txt.diff | 17 + .../conformance/tsxAttributeResolution7.types | 2 +- .../tsxAttributeResolution7.types.diff | 11 - ...tsxDefaultAttributesResolution3.errors.txt | 2 +- ...faultAttributesResolution3.errors.txt.diff | 8 + .../tsxElementResolution11.errors.txt | 8 +- .../tsxElementResolution11.errors.txt.diff | 21 + .../tsxGenericAttributesType1.types | 18 +- .../tsxGenericAttributesType1.types.diff | 49 - .../tsxGenericAttributesType2.types | 6 +- .../tsxGenericAttributesType2.types.diff | 17 - .../tsxGenericAttributesType3.types | 4 +- .../tsxGenericAttributesType3.types.diff | 14 - .../tsxGenericAttributesType4.types | 4 +- .../tsxGenericAttributesType4.types.diff | 14 - .../tsxGenericAttributesType5.errors.txt | 10 +- .../tsxGenericAttributesType5.errors.txt.diff | 21 +- .../tsxGenericAttributesType6.errors.txt | 10 +- .../tsxGenericAttributesType6.errors.txt.diff | 21 +- .../tsxGenericAttributesType9.types | 4 +- .../tsxGenericAttributesType9.types.diff | 14 - .../conformance/tsxInArrowFunction.types | 2 +- .../conformance/tsxInArrowFunction.types.diff | 11 - .../tsxIntrinsicAttributeErrors.types | 2 +- .../tsxIntrinsicAttributeErrors.types.diff | 11 - ...ponentWithDefaultTypeParameter3.errors.txt | 2 +- ...tWithDefaultTypeParameter3.errors.txt.diff | 8 + ...sxSfcReturnUndefinedStrictNullChecks.types | 6 +- ...ReturnUndefinedStrictNullChecks.types.diff | 19 - ...tsxSpreadAttributesResolution10.errors.txt | 8 +- ...readAttributesResolution10.errors.txt.diff | 24 + ...tsxSpreadAttributesResolution12.errors.txt | 4 +- ...readAttributesResolution12.errors.txt.diff | 16 + .../tsxSpreadAttributesResolution2.errors.txt | 12 +- ...preadAttributesResolution2.errors.txt.diff | 34 + .../tsxSpreadAttributesResolution5.errors.txt | 4 +- ...preadAttributesResolution5.errors.txt.diff | 17 + .../tsxSpreadAttributesResolution6.errors.txt | 4 +- ...preadAttributesResolution6.errors.txt.diff | 17 + .../conformance/tsxSpreadChildren.types | 4 +- .../conformance/tsxSpreadChildren.types.diff | 16 - ...InvalidType(jsx=react,target=es2015).types | 4 +- ...idType(jsx=react,target=es2015).types.diff | 16 - ...lidType(jsx=react-jsx,target=es2015).types | 4 +- ...pe(jsx=react-jsx,target=es2015).types.diff | 16 - ...elessFunctionComponentOverload4.errors.txt | 14 +- ...FunctionComponentOverload4.errors.txt.diff | 23 +- ...xStatelessFunctionComponentOverload4.types | 32 +- ...elessFunctionComponentOverload4.types.diff | 101 - ...tsxStatelessFunctionComponents2.errors.txt | 8 +- ...atelessFunctionComponents2.errors.txt.diff | 22 + .../tsxStatelessFunctionComponents2.types | 18 +- ...tsxStatelessFunctionComponents2.types.diff | 65 - .../tsxTypeArgumentResolution.errors.txt | 8 +- .../tsxTypeArgumentResolution.errors.txt.diff | 30 + .../submodule/conformance/tsxTypeErrors.types | 2 +- .../conformance/tsxTypeErrors.types.diff | 11 - .../tsxUnionElementType3.errors.txt | 2 +- .../tsxUnionElementType3.errors.txt.diff | 11 + .../tsxUnionElementType4.errors.txt | 10 +- .../tsxUnionElementType4.errors.txt.diff | 25 + .../conformance/tsxUnionTypeComponent1.types | 4 +- .../tsxUnionTypeComponent1.types.diff | 14 - .../submodule/conformance/typeAliases.types | 18 +- .../conformance/typeAliases.types.diff | 66 - .../typeArgumentInference.errors.txt | 4 +- .../typeArgumentInference.errors.txt.diff | 20 + .../conformance/typeArgumentInference.types | 14 +- .../typeArgumentInference.types.diff | 45 - ...rgumentInferenceWithConstraints.errors.txt | 4 +- ...ntInferenceWithConstraints.errors.txt.diff | 20 + ...typeArgumentInferenceWithConstraints.types | 14 +- ...rgumentInferenceWithConstraints.types.diff | 45 - .../typeFromContextualThisType.types | 8 +- .../typeFromContextualThisType.types.diff | 17 +- .../typeFromPrivatePropertyAssignmentJs.types | 18 +- ...FromPrivatePropertyAssignmentJs.types.diff | 40 - .../conformance/typeGuardFunctionErrors.types | 2 +- .../typeGuardFunctionErrors.types.diff | 11 +- ...ypeGuardNarrowsPrimitiveIntersection.types | 4 +- ...ardNarrowsPrimitiveIntersection.types.diff | 13 +- .../typeGuardNarrowsToLiteralTypeUnion.types | 4 +- ...eGuardNarrowsToLiteralTypeUnion.types.diff | 13 +- ...ypeGuardOfFormThisMember(target=es2015).js | 2 +- ...ardOfFormThisMember(target=es2015).js.diff | 11 - ...rdOfFormThisMemberErrors(target=es2015).js | 2 +- ...ormThisMemberErrors(target=es2015).js.diff | 11 - .../typeGuardOfFormTypeOfFunction.types | 2 +- .../typeGuardOfFormTypeOfFunction.types.diff | 11 - .../conformance/typeGuardRedundancy.types | 16 +- .../typeGuardRedundancy.types.diff | 47 - .../typeGuardTypeOfUndefined.types | 24 +- .../typeGuardTypeOfUndefined.types.diff | 110 - .../conformance/typeGuardsAsAssertions.types | 40 +- .../typeGuardsAsAssertions.types.diff | 128 - .../conformance/typeGuardsDefeat.types | 6 +- .../conformance/typeGuardsDefeat.types.diff | 29 - .../typeGuardsInConditionalExpression.types | 32 +- ...peGuardsInConditionalExpression.types.diff | 129 - .../typeGuardsInFunctionAndModuleBlock.types | 34 +- ...eGuardsInFunctionAndModuleBlock.types.diff | 110 - .../conformance/typeGuardsInIfStatement.types | 32 +- .../typeGuardsInIfStatement.types.diff | 134 - ...GuardsInRightOperandOfAndAndOperator.types | 18 +- ...sInRightOperandOfAndAndOperator.types.diff | 77 - ...peGuardsInRightOperandOfOrOrOperator.types | 18 +- ...rdsInRightOperandOfOrOrOperator.types.diff | 77 - .../typeGuardsOnClassProperty.types | 20 +- .../typeGuardsOnClassProperty.types.diff | 68 - .../typeGuardsWithInstanceOf.types | 2 +- .../typeGuardsWithInstanceOf.types.diff | 11 - ...ameterConstModifiersReturnsAndYields.types | 12 +- ...rConstModifiersReturnsAndYields.types.diff | 36 +- ...eterConstModifiersReverseMappedTypes.types | 12 +- ...onstModifiersReverseMappedTypes.types.diff | 56 - ...terExtendsUnionConstraintDistributed.types | 4 +- ...tendsUnionConstraintDistributed.types.diff | 19 - .../conformance/typeSatisfaction.types | 4 +- .../conformance/typeSatisfaction.types.diff | 14 - ...tisfaction_optionalMemberConformance.types | 4 +- ...ction_optionalMemberConformance.types.diff | 16 - ...ypeSatisfaction_propNameConstraining.types | 8 +- ...tisfaction_propNameConstraining.types.diff | 27 - ...Satisfaction_propertyNameFulfillment.types | 8 +- ...faction_propertyNameFulfillment.types.diff | 27 - .../typeTagOnPropertyAssignment.types | 14 +- .../typeTagOnPropertyAssignment.types.diff | 36 + .../typeTagWithGenericSignature.types | 4 +- .../typeTagWithGenericSignature.types.diff | 19 - .../typedefMultipleTypeParameters.types | 2 +- .../typedefMultipleTypeParameters.types.diff | 11 + .../typedefTagTypeResolution.types | 2 +- .../typedefTagTypeResolution.types.diff | 11 +- .../submodule/conformance/typeofThis.types | 50 +- .../conformance/typeofThis.types.diff | 122 - .../types.asyncGenerators.es2018.1.types | 20 +- .../types.asyncGenerators.es2018.1.types.diff | 91 - .../types.asyncGenerators.es2018.2.errors.txt | 12 +- ...s.asyncGenerators.es2018.2.errors.txt.diff | 67 +- .../types.asyncGenerators.es2018.2.types | 14 +- .../types.asyncGenerators.es2018.2.types.diff | 64 - .../typesWithOptionalProperty.types | 14 +- .../typesWithOptionalProperty.types.diff | 43 - .../typesWithSpecializedCallSignatures.types | 46 +- ...esWithSpecializedCallSignatures.types.diff | 130 + ...esWithSpecializedConstructSignatures.types | 14 +- ...hSpecializedConstructSignatures.types.diff | 42 + .../conformance/umd-augmentation-1.types | 6 +- .../conformance/umd-augmentation-1.types.diff | 23 - .../conformance/umd-augmentation-2.types | 2 +- .../conformance/umd-augmentation-2.types.diff | 11 - .../conformance/umd-augmentation-3.types | 6 +- .../conformance/umd-augmentation-3.types.diff | 23 - .../conformance/umd-augmentation-4.types | 2 +- .../conformance/umd-augmentation-4.types.diff | 11 - .../unionAndIntersectionInference1.types | 4 +- .../unionAndIntersectionInference1.types.diff | 19 - .../unionAndIntersectionInference2.types | 12 +- .../unionAndIntersectionInference2.types.diff | 44 - .../unionAndIntersectionInference3.types | 50 +- .../unionAndIntersectionInference3.types.diff | 116 - .../unionThisTypeInFunctions.types | 2 +- .../unionThisTypeInFunctions.types.diff | 11 - .../conformance/unionTypeCallSignatures.types | 30 +- .../unionTypeCallSignatures.types.diff | 124 - .../unionTypeCallSignatures3.types | 20 +- .../unionTypeCallSignatures3.types.diff | 55 - .../unionTypeConstructSignatures.types | 30 +- .../unionTypeConstructSignatures.types.diff | 124 - .../conformance/unionTypeInference.types | 18 +- .../conformance/unionTypeInference.types.diff | 37 - .../conformance/unionTypeReduction2.types | 136 +- .../unionTypeReduction2.types.diff | 253 +- .../submodule/conformance/uniqueSymbols.types | 44 +- .../conformance/uniqueSymbols.types.diff | 146 - .../uniqueSymbolsDeclarations.types | 24 +- .../uniqueSymbolsDeclarations.types.diff | 87 - .../uniqueSymbolsDeclarationsErrors.types | 20 +- ...uniqueSymbolsDeclarationsErrors.types.diff | 63 - .../conformance/uniqueSymbolsErrors.types | 50 +- .../uniqueSymbolsErrors.types.diff | 124 +- .../uniqueSymbolsPropertyNames.types | 20 +- .../uniqueSymbolsPropertyNames.types.diff | 81 +- .../conformance/unknownControlFlow.types | 10 +- .../conformance/unknownControlFlow.types.diff | 46 - .../submodule/conformance/unknownType2.types | 4 +- .../conformance/unknownType2.types.diff | 13 - ...jectValuesAndEntries1(target=es2015).types | 60 +- ...aluesAndEntries1(target=es2015).types.diff | 164 - .../useObjectValuesAndEntries4.types | 8 +- .../useObjectValuesAndEntries4.types.diff | 24 - .../usePromiseFinally(target=es2015).types | 4 +- ...sePromiseFinally(target=es2015).types.diff | 18 + ...useSharedArrayBuffer1(target=es2015).types | 4 +- ...aredArrayBuffer1(target=es2015).types.diff | 13 - .../conformance/useSharedArrayBuffer4.types | 4 +- .../useSharedArrayBuffer4.types.diff | 13 - .../usingDeclarationsWithIteratorObject.types | 4 +- ...gDeclarationsWithIteratorObject.types.diff | 14 - .../submodule/conformance/variadicTuples1.js | 2 +- .../conformance/variadicTuples1.js.diff | 11 - .../conformance/variadicTuples1.types | 44 +- .../conformance/variadicTuples1.types.diff | 152 +- .../conformance/variadicTuples2.types | 4 +- .../conformance/variadicTuples2.types.diff | 14 - .../submodule/conformance/variance.types | 2 +- .../submodule/conformance/variance.types.diff | 11 - .../conformance/varianceAnnotations.js | 2 +- .../conformance/varianceAnnotations.js.diff | 11 - .../conformance/varianceAnnotations.types | 4 +- .../varianceAnnotations.types.diff | 20 - .../conformance/weakTypesAndLiterals01.types | 8 +- .../weakTypesAndLiterals01.types.diff | 38 - ...inlayHintsFunctionParameterTypes1.baseline | 15 +- ...nteractiveFunctionParameterTypes1.baseline | 21 +- ...layHintsInteractiveVariableTypes1.baseline | 15 +- ...iableDeclaredFunctionExpression.types.diff | 14 - ...HintsFunctionParameterTypes1.baseline.diff | 5 +- ...ctiveFunctionParameterTypes1.baseline.diff | 25 +- ...ntsInteractiveVariableTypes1.baseline.diff | 12 - ...based-projects-and-emits-them-correctly.js | 11 +- ...zed-module-specifiers-resolve-correctly.js | 11 +- .../incremental/serializing-error-chain.js | 10 +- 3069 files changed, 25981 insertions(+), 76948 deletions(-) delete mode 100644 testdata/baselines/reference/submodule/compiler/abstractPropertyInConstructor.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/acceptSymbolAsWeakType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/aliasInstantiationExpressionGenericIntersectionNoCrash2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/aliasOnMergedModuleInterface.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/anonterface.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arguments.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayBestCommonTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayConcat3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayEvery.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayFlatMap.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayFrom.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayReferenceWithoutTypeArgs.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arraySlice.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2015.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2020.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES5(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/arrayTypeInSignatureOfInterfaceAndClass.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/assignmentCompatOnNew.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/assignmentToInstantiationExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/asyncFunctionContextuallyTypedReturns.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/asyncFunctionReturnType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/autolift3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/awaitedTypeNoLib.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/bestCommonTypeReturnStatement.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/bigint64ArraySubarray.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/bindingPatternCannotBeOnlyInferenceSource.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/bindingPatternContextualTypeDoesNotCauseWidening.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/builtinIterator.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/callOfConditionalTypeWithConcreteBranches.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/callSignatureFunctionOverload.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/callbackArgsDifferByOptionality.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/callsOnComplexSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/cannotIndexGenericWritingError.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/checkSwitchStatementIfCaseTypeIsString.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/circularAccessorAnnotations.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/circularBaseTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/circularConstructorWithReturn.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/circularContextualReturnType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/circularInstantiationExpression.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/circularObjectLiteralAccessors(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/circularOptionalityRemoval.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/circularReferenceInReturnType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/circularResolvedSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/classExtendsInterfaceInExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/classImplementsMethodWIthTupleArgs.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/classReferencedInContextualParameterWithinItsOwnBaseExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences6.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/collisionArgumentsInType(alwaysstrict=true).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/collisionRestParameterInType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/collisionRestParameterUnderscoreIUsage.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/commentOnAmbientfunction.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/comparabilityTypeParametersRelatedByUnion.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/complicatedIndexesOfIntersectionsAreInferencable.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/complicatedPrivacy(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/compositeContextualSignature.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/computedPropertyBindingElementDeclarationNoCrash1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/conditionalReturnExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/conditionalTypeBasedContextualTypeReturnTypeWidening.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/conditionalTypesSimplifyWhenTrivial.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/conditionallyDuplicateOverloadsCausedByOverloadResolution.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/consistentAliasVsNonAliasRecordBehavior.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/constEnumToStringNoComments.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/constEnumToStringWithComments.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/constEnums.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/constantOverloadFunction.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/constantOverloadFunctionNoSubtypeError.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/constructorWithIncompleteTypeAnnotation.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextSensitiveReturnTypeInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualOuterTypeParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualOverloadListFromArrayUnion.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference4.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualSigInstantiationRestParams.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs2015.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs5.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualSignatureInObjectFreeze.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualSignatureInstantiation1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualTupleTypeParameterReadonly.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix5.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualTypeFunctionObjectPropertyIntersection.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualTyping.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualTypingOfOptionalMembers.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextuallyTypedByDiscriminableUnion2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxChildren2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersOptionalInJSDoc.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithInitializers1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithQuestionToken.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/contextuallyTypedSymbolNamedProperties.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowDestructuringLoop.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowForFunctionLike1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowForIndexSignatures.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowInitializedDestructuringVariables.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowOuterVariable.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowPropertyDeclarations.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowUnionContainingTypeParameter1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/controlFlowWithIncompleteTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/crashInResolveInterface.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/crashRegressionTest.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/customAsyncIterator.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/customEventDetail.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/cyclicGenericTypeInstantiationInference.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/dataViewConstructor.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/dataViewConstructor.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFileConstructors(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFileForInterfaceWithRestParams.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFileGenericType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFileGenericType2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFileMethods(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFilePrivateMethodOverloads.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFileRestParametersOfFunctionAndFunctionType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFileTypeAnnotationTypeLiteral(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=false).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=true).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=false).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=true).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=false).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=true).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=false).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=true).js.diff create mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitClassMemberWithComputedPropertyName.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitDestructuringWithOptionalBindingParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js.diff create mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePropertyFromNumericStringKey.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeTemplateTypeofSymbol.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitObjectAssignedDefaultExport.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessors1.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitPropertyNumericStringKey.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitScopeConsistency3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitShadowingInferNotRenamed.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitShadowingInferNotRenamed.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitTopLevelNodeFromCrossFile.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitTopLevelNodeFromCrossFile.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitUnnessesaryTypeReferenceNotAdded(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitUsingTypeAlias1.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitUsingTypeAlias1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationsForFileShadowingGlobalNoError.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationsForFileShadowingGlobalNoError.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/deepExcessPropertyCheckingWhenTargetIsIntersection.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/deeplyNestedCheck.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/deeplyNestedMappedTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitNamedCorrectly.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/defaultParameterAddsUndefinedWithStrictNullChecks.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/deferredLookupTypeResolution.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/destructureOptionalParameter.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/destructuredDeclarationEmit.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/destructuringInitializerContextualTypeFromContext.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/destructuringWithGenericParameter.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/destructuringWithNumberLiteral.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/differentTypesWithSameName.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/discriminableUnionWithIntersectedMembers.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/discriminantNarrowingCouldBeCircular.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/discriminantPropertyInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/discriminantUsingEvaluatableTemplateExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/discriminantsAndPrimitives.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/discriminatedUnionWithIndexSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/dissallowSymbolAsWeakType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/divergentAccessors1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/divergentAccessorsTypes6.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/doNotInferUnrelatedTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2015.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2016Plus.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/doubleUnderscoreExportStarConflict.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/duplicateTypeParameters3.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/emitMethodCalledNew.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/emptyOptionalBindingPatternInDeclarationSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/enumMemberReduction.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/enumPropertyAccess.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/errorConstructorSubtypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/errorElaboration.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/errorForUsingPropertyOfTypeAsType03.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/errorsOnUnionsOfOverlappingObjects01.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/es2018ObjectAssign.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/es5-importHelpersAsyncFunctions(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/esNextWeakRefs_IterableWeakMap.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/escapedReservedCompilerNamedIdentifier.js.diff create mode 100644 testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/excessPropertyCheckWithMultipleDiscriminants.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/exportAssignmentMembersVisibleInAugmentation.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/exportDefaultAbstractClass.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/exportDefaultInterface.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/exportEqualErrorType.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/exportEqualErrorType.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/externFunc.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/externModuleClobber.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/fatarrowfunctionsOptionalArgs.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/findLast(target=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/forAwaitForUnion.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/forOfTransformsExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/formatToPartsFractionalSecond.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=false).types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=true).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionCall11.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionCall12.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionCall14.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionCall15.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionCall16.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionCall17.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionCall8.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionCall9.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionExpressionReturningItself.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionExpressionShadowedByParams.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionOverloads43.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionOverloads44.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionOverloads45.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionReturnTypeQuery.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressions(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/generatorReturnExpressionIsChecked.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericArgumentCallSigAssignmentCompat.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericArrayMethods1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericArrayWithoutTypeAnnotation.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericCallInferenceConditionalType2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericCallInferenceInConditionalTypes1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericCapturingFunctionNarrowing.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericChainedCalls.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericDefaults.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericDefaultsErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericFunctionsAndConditionalInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericInterfaceTypeCall.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericLambaArgWithoutTypeArguments.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/genericObjectSpreadResultInSwitch.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericReduce.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericRestArgs.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericRestTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericTypeArgumentInference1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericTypeWithCallableMembers2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/genericsWithoutTypeParameters1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/getParameterNameAtPosition.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeIntersectionAssignability.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeNesting.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/implementArrayInterface.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/implicitAnyGenericTypeInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/implicitConstParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/importAssertionNonstring.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/importHelpers(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/importHelpersInAmbientContext(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/importHelpersInIsolatedModules(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/importHelpersInTsx(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inDoesNotOperateOnPrimitiveTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inKeywordAndIntersection.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inKeywordAndUnknown.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=false).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=true).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/indexedAccessAndNullableNarrowing.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/indexedAccessNormalization.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/indexedAccessTypeConstraints.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/indexedAccessWithFreshObjectLiteral.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/indirectTypeParameterReferences.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/inferFromGenericFunctionReturnTypes3.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/inferFromNestedSameShapeTuple.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferParameterWithMethodCallInitializer.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferTypePredicates.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferenceErasedSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferenceFromGenericClassNoCrash1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferenceLimit.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/inferenceOfNullableObjectTypesWithCommonBase.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferenceOptionalPropertiesToIndexSignatures.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/inferenceShouldFailOnEvolvingArrays.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferredReturnTypeIncorrectReuse1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inferrenceInfiniteLoopWithSubtyping.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/infiniteConstraints.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/infinitelyExpandingOverloads.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/initializedParameterBeforeNonoptionalNotOptional.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/inlinedAliasAssignableToConstraintSameAsAlias.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/innerTypeArgumentInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/instanceOfAssignability.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/instanceofNarrowReadonlyArray.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/instanceofTypeAliasToGenericClass.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/instanceofWithPrimitiveUnion.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/instantiateContextualTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/intersectionOfTypeVariableHasApparentSignatures.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/intersectionTypeNormalization.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/intersectionType_useDefineForClassFields.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/intersectionWithConflictingPrivates.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/invalidSplice.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/invariantGenericErrorElaboration.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/isDeclarationVisibleNodeKinds(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrors.errors.txt create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsAugmentation.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsAugmentation.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClassesExpressions.errors.txt create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsDefault.errors.txt create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsEnums.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsEnums.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpandoFunctions.errors.txt create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.errors.txt create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsFunctionDeclarations.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsFunctionDeclarations.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsReturnTypes.errors.txt create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAllowJs.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.js.diff create mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/iterableWithNeverAsUnionMember(target=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/iteratorsAndStrictNullChecks.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/jsdocClassMissingTypeArguments.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsdocResolveNameFailureInTypedef.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsdocTypeGenericInstantiationAttempt.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/jsdocTypedefBeforeParenthesizedExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/json.stringify.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxCallElaborationCheckNoCrash1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxCallbackWithDestructuring.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxExcessPropsAndAssignability.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxIssuesErrorWhenTagExpectsTooManyArguments.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxLibraryManagedAttributesUnusedGeneric.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxLocalNamespaceIndexSignatureNoCrash.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexport.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexportMissingAliasTarget.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxNamespaceImplicitImportJSXNamespace.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxPartialSpread.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/jsxPropsAsIdentifierNames.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/largeTupleTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/letDeclarations-access.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/library_ArraySlice.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/library_DatePrototypeProperties.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/library_RegExpExecArraySlice.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/library_StringSlice.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/literalsInComputedProperties1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/localTypeParameterInferencePriority.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/mappedTypeGenericIndexedAccess.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/mappedTypeMultiInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/mappedTypeTupleConstraintAssignability.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/mappedTypeUnionConstrainTupleTreatedAsArrayLike.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/mergedInstantiationAssignment.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/mismatchedExplicitTypeParameterAndArgumentType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/missingTypeArguments1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/missingTypeArguments2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/misspelledJsDocTypedefTags.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES5UsingES6Lib.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES6UsingES6Lib.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleAugmentationDeclarationEmit2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendAmbientModule2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendFileModule2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/multipleInferenceContexts.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowByEquality.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowByInstanceof.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowByParenthesizedSwitchExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowCommaOperatorNestedWithinLHS.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowingAssignmentReadonlyRespectsAssertion.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowingDestructuring.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowingInCaseClauseAfterCaseClauseWithReturn.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowingIntersection.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowingMutualSubtypes.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/narrowingNoInfer1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowingOfQualifiedNames.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowingPastLastAssignment.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowingTypeofFunction.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/narrowingTypeofUndefined2.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/narrowingUnionWithBang.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/nearbyIdenticalGenericLambdasAssignable.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=false).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/noCrashOnThisTypeUsage.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/noImplicitReturnsWithoutReturnExpression.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.js.diff create mode 100644 testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/noInferUnionExcessPropertyCheck1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/noIterationTypeErrorsInCFA.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/noTypeArgumentOnReturnType1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/noUnusedLocals_writeOnly.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/noUsedBeforeDefinedErrorInTypeContext.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/nonInferrableTypePropagation2.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/nondistributiveConditionalTypeInfer.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/objectCreate2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/objectFreeze.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/objectFreezeLiteralsDontWiden.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/objectFromEntries.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/objectLiteralComputedNameNoDeclarationError.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/objectMembersOnTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/observableInferenceCanBeMade.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/operationsAvailableOnPromisedType(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/optionalParamArgsTest.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/optionalParameterInDestructuringWithInitializer.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/optionalParameterRetainsNull.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/optionalPropertiesTest.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/overEagerReturnTypeSpecialization.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstAsTypeAnnotation.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks1.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks2.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks3.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks4.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstDuplicateOverloads1.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstInBaseWithBadImplementationInDerived.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstInCallback1.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstInObjectLiteralImplementingAnInterface.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance1.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance3.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance4.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstNoNonSpecializedSignature.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/overloadedConstructorFixesInferencesAppropriately.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadingOnConstants1.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/overloadingOnConstantsInImplementation.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/overloadsWithComputedNames.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parameterNamesInTypeParameterList.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parseArrowFunctionWithFunctionReturnType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parseBigInt.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parseImportAttributesError.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/predicateSemantics.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/primitiveUnionDetection.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/privacyCheckExportAssignmentOnExportedGenericInterface1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/privacyFunctionParameterDeclFile.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/privacyFunctionReturnTypeDeclFile.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/promiseTest.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/promiseTry.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/promisesWithConstraints.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/propTypeValidatorInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/propagationOfPromiseInitialization.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/qualify.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/quickinfoTypeAtReturnPositionsInaccurate.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/reactHOCSpreadprops.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/reactReadonlyHOCAssignabilityReal.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/reactReduxLikeDeferredInferenceAllowsAssignment.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/readonlyTupleAndArrayElaboration.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/recursiveClassBaseType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/recursiveClassReferenceTest.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/recursiveGenericMethodCall.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/recursiveTypeComparison2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/recursiveUnionTypeInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/resolvingClassDeclarationWhenInBaseTypeResolution.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/restInvalidArgumentType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/restParamUsingMappedTypeOverUnionConstraint.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/restParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/restParamsWithNonRestParams.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/returnTypeInferenceContextualParameterTypesInGenerator1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/returnTypeParameterWithModules.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/returnTypeTypeArguments.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/reverseMappedPartiallyInferableTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/reverseMappedTypeInferenceSameSource1.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/reverseMappedTypeLimitedConstraint.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/selfReferentialFunctionType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters4.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters5.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sliceResultCast.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sourceMapValidationDecorators(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sourceMapValidationFor.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sourceMapValidationForIn.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sourceMapValidationFunctions.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/specializedOverloadWithRestParameters.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/specializedSignatureAsCallbackParameter1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/spreadIdenticalTypesRemoved.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/spreadInvalidArgumentType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/spreadObjectNoCircular1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=false).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=true).types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/spreadOfParamsFromGeneratorMakesRequiredParams.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/spreadUnionPropOverride.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/spreadsAndContextualTupleTypes.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/spuriousCircularityOnTypeImport.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/spyComparisonChecking.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=true).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/stackDepthLimitCastingType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/staticAnonymousTypeNotReferencingTypeParameter.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/strictFunctionTypes1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/strictNullLogicalAndOr.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/strictTypeofUnionNarrowing.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/stringIncludes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/stringPropCodeGen.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/stringRawType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/stripMembersOptionality(exactoptionalpropertytypes=false).types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/substitutionTypesInIndexedAccessTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/targetTypeVoidFunc.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/templateLiteralIntersection2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/temporal.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/thisBinding2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/thisConditionalOnMethodReturnOfGenericInstance.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/toStringOnPrimitives.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/tryCatchFinallyControlFlow.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/tsxDiscriminantPropertyInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/tsxTypeArgumentPartialDefinitionStillErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/tsxUnionMemberChecksFilterDataProps.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeArgInference2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeArgInference2WithError.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeGuardConstructorClassAndNumber.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty5.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty6.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeInferenceLiteralUnion.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeLiteralCallback.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/typeName1.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeName1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeNamedUndefined1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeNamedUndefined2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeOfOnTypeArg.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeParameterAndArgumentOfSameName1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeParameterConstraints1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeParameterDiamond3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeParameterDiamond4.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/typePredicatesCanNarrowByDiscriminant.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typePredicatesInUnion2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typePredicatesInUnion3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeReferenceDirectives13.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeVariableConstraintedToAliasNotAssignableToUnion.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/typeofImportInstantiationExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeofInObjectLiteralType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeofObjectInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/typeofThisInMethodSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/uncalledFunctionChecksInConditional2.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unionExcessPropsWithPartialMember.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unionOfClassCalls.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unionOfEnumInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unionOfFunctionAndSignatureIsCallable.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unionReductionMutualSubtypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unionTypeWithIndexAndTuple.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unparenthesizedConstructorTypeInUnionOrIntersection.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unparenthesizedFunctionTypeInUnionOrIntersection.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unusedLocalsInMethod4.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/unusedParameterUsedInTypeOf(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/useUnknownInCatchVariables01.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/varArgParamTypeCheck.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/visibilityOfCrossModuleTypeUsage.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/voidAsNonAmbiguousReturnType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/voidUndefinedReduction.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference2.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/weakType.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/weakType.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/weakTypeAndPrimitiveNarrowing.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/widenedTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/TypeGuardWithArrayUnion.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/TypeGuardWithEnumUnion.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/ambientErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/arrayLiteralWithMultipleBestCommonTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/arrayTypeOfTypeOf.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assertionTypePredicates1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignFromNumberInterface2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignFromStringInterface2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithGenericCallSignatures3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentCompatWithObjectMembers.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentGenericLookupTypeNarrowing.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/assignmentTypeNarrowing.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/awaitUsingDeclarationsWithIteratorObject.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/bestCommonTypeOfConditionalExpressions.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/booleanLiteralTypes1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/booleanLiteralTypes2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=preserve).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/callChain.2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/callChain.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/callOverload.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance5.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/callWithMissingVoid.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/callWithSpread2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/callWithSpread4.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsdocOptionalParamOrder.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsdocParamTag1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag10.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag6.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag7.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty12.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty13.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty4.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/checkJsxGenericTagHasCorrectInferences.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsxIntersectionElementPropsType.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/checkJsxSubtleSkipContextSensitiveBug.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/commaOperatorWithSecondOperandStringType.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/commonTypeIntersection.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnCallSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/conditionalOperatorWithoutIdenticalBCT.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/conditionalTypes1.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/conditionalTypes1.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/constAssertions.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/constEnum3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/constEnumPropertyAccess3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance5.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/constructSignaturesWithOverloads.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/contextualTypeFromJSDoc.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeCallSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeIndexSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/contextuallyTypedBindingInitializer.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowAliasing.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowComputedPropertyNames.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowDeleteOperator.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowForOfStatement.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowForStatement.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowIIFE.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowIfStatement.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowInstanceOfGuardPrimitives.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowNullishCoalesce.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowParameter.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowStringIndex.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/controlFlowWithTemplateLiterals.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/declarationFileForHtmlFileWithinDeclarationFile.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=true).types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/declarationFiles.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/definiteAssignmentAssertionsWithObjectShortHand.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/deleteChain.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers3(target=es2015).types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringControlFlow.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=false).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=true).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5iterable.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES6.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5iterable(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES6.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration4.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes4.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions01.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions02.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/elementAccessChain.2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/elementAccessChain.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionProperty(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionPropertyES6.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/enumLiteralTypes3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/equalityStrictNulls.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/equalityWithtNullishCoalescingAssignment(strict=true).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/es2016IntlAPIs.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/es2017DateAPIs.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/es2021LocalesObjectArgument.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/es2022LocalesObjectArgument.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/es2024SharedMemory.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/es5DateAPIs(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/esDecorators-contextualTypes.2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/esnextSharedMemory.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInitializer.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInvalidInitializer.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/for-of29.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/for-of29.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/forStatements.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/forStatementsMultipleInvalidDecl.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/functionExpressionContextualTyping3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/functionOverloadErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/functionWithMultipleReturnStatements2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/generatedContextualTyping.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/generatorTypeCheck1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/generatorTypeCheck29.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/generatorTypeCheck30.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/generatorTypeCheck31.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/generatorTypeCheck45.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/generatorTypeCheck64.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/generatorYieldContextualType.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericCallWithGenericSignatureArguments.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericCallWithNonSymmetricSubtypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericRestParameters1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericRestParameters2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericRestParameters3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.d.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/ifDoWhileStatements.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/importAttributes6(module=node18).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/importAttributes6(module=node20).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/importAttributes6(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/importMeta(module=commonjs,target=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/importMeta(module=es2020,target=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/importMeta(module=esnext,target=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/importTag24.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/importTypeGeneric.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/inOperatorWithValidOperands.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/independentPropertyVariance.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/inferFromBindingPattern.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/inferTypes2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/inlineJsxFactoryDeclarationsLocalTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/interfaceWithMultipleBaseTypes2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intersectionNarrowing.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intersectionReduction.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intersectionReductionStrict.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intersectionTypeInference2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intersectionTypeInference3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intersectionWithIndexSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intersectionWithUnionConstraint.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intlDateTimeFormatRangeES2021.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intlDurationFormat.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intlNumberFormatES2023.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intraExpressionInferences.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/intraExpressionInferencesJsx.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/invalidMultipleVariableDeclarations.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/isomorphicMappedTypeInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall5.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall6.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingGenerics(target=es2015).types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/jsDeclarationsUniqueSymbolUsage.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/jsdocParseBackquotedParamName.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/jsdocPostfixEqualsAddsOptionality.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/jsdocTypeTagOnParameter1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccessErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/literalTypes1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/literalTypes2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/literalTypes3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/localesObjectArgument.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2020).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2021).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2020).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2021).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/logicalAssignment9.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/mappedTypeAsClauses.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/mappedTypeConstraints2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/mappedTypeModifiers.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/mappedTypeWithAny.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/mappedTypesArraysTuples.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/mappedTypesGenericTuples2.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/memberFunctionsWithPrivateOverloads.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicOverloads.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicPrivateOverloads.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/mixinAccessModifiers.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/namedTupleMembers.js.diff create mode 100644 testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/narrowingConstrainedTypeVariable.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/neverInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/neverType.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/neverTypeErrors1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/neverTypeErrors2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/newOperatorConformance.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/newTarget.es5(target=es2015).types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/newTarget.es6.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccess.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccessDestructuring.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node18).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node20).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/numberPropertyAccess.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/numericLiteralTypes1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/numericLiteralTypes2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/numericLiteralTypes3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectLiteralContextualTyping.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectLiteralGettersAndSetters.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectSpread(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectSpreadNegative(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectSpreadRepeatedNullCheckPerf.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectSpreadStrictNull.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentity.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentity2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesWithOverloads.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithOptionality.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPrivates.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPublics.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/optionalBindingParameters1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/optionalBindingParameters2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/optionalBindingParameters3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/optionalBindingParameters4.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads2.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/override19.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/override2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/paramTagBracketsAddOptionalUndefined.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/paramTagTypeResolution2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/parser15.4.4.14-9-2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/parserArrowFunctionExpression14.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/parserMissingLambdaOpenBrace1.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/parserParameterList2.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/parserRealSource8.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/parserShorthandPropertyAssignment1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/parserUsingConstructorAsIdentifier.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/partiallyNamedTuples2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/plainJSRedeclare.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/plainJSRedeclare2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/plainJSRedeclare3.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/primtiveTypesAreIdentical.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/privateNameAndPropertySignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=es2022).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/privateNamesUnique-2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/propertyAccessChain.2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/propertyAccessChain.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/propertyAccessWidening.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/recursiveMappedTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/recursiveTypeReferences1.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/recursiveTypesWithTypeof.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/requireAssertsFromTypescript.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/restParametersWithArrayTypeAnnotations.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/restPropertyWithBindingPattern(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/restTuplesFromContextualTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/returnTagTypeGuard.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/sharedMemory.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/specializedSignatureIsSubtypeOfNonSpecializedSignature.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/specializedSignatureWithOptional.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/spreadDuplicate.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/spreadObjectOrFalsy.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/spreadOverwritesProperty.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/spreadOverwritesPropertyStrict.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/spreadUnion3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/spreadUnion4.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/stringEnumLiteralTypes3.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/stringLiteralType.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTags03.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint01.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint02.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads01.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads02.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads04.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/stringMappingOverPatternLiterals.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/stringMappingReduction.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesA.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithSpecializedSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures5.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithSpecializedSignatures.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality4.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/superCallParameterContextualTyping1.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/switchWithConstrainedTypeVariable.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressions.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/taggedTemplatesWithTypeArguments1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/templateLiteralTypesPatterns.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccess.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccessES6.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/thisTypeErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/thisTypeInObjectLiterals2(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/thisTypeInTaggedTemplateCall.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/thisTypeInTuples.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/thisTypeSyntacticContext.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/transferableArrayBuffer.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeInvalidNames.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeResolution12.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeResolution15.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxDefaultAttributesResolution3.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxElementResolution11.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType4.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType9.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxInArrowFunction.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxIntrinsicAttributeErrors.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxReactComponentWithDefaultTypeParameter3.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxSfcReturnUndefinedStrictNullChecks.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution10.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution12.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution2.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution5.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution6.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxSpreadChildren.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxTypeArgumentResolution.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxTypeErrors.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxUnionElementType3.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/tsxUnionElementType4.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/tsxUnionTypeComponent1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeAliases.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/typeArgumentInference.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeArgumentInference.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeFromPrivatePropertyAssignmentJs.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMember(target=es2015).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMemberErrors(target=es2015).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardOfFormTypeOfFunction.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardRedundancy.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardTypeOfUndefined.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardsAsAssertions.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardsDefeat.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardsInConditionalExpression.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardsInFunctionAndModuleBlock.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardsInIfStatement.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfAndAndOperator.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfOrOrOperator.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardsOnClassProperty.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeGuardsWithInstanceOf.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReverseMappedTypes.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeParameterExtendsUnionConstraintDistributed.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeSatisfaction.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeSatisfaction_optionalMemberConformance.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeSatisfaction_propNameConstraining.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeSatisfaction_propertyNameFulfillment.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/typeTagOnPropertyAssignment.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeTagWithGenericSignature.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typeofThis.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/typesWithOptionalProperty.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/typesWithSpecializedCallSignatures.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/typesWithSpecializedConstructSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/umd-augmentation-1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/umd-augmentation-2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/umd-augmentation-3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/umd-augmentation-4.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference1.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unionThisTypeInFunctions.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures3.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unionTypeConstructSignatures.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unionTypeInference.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/uniqueSymbols.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarations.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarationsErrors.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unknownControlFlow.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/unknownType2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries1(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries4.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/usePromiseFinally(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer1(target=es2015).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer4.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/usingDeclarationsWithIteratorObject.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/variadicTuples1.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/variadicTuples2.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/variance.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/varianceAnnotations.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/varianceAnnotations.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/weakTypesAndLiterals01.types.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsInteractiveVariableTypes1.baseline.diff diff --git a/testdata/baselines/reference/compiler/assertionWithNoArgument.types b/testdata/baselines/reference/compiler/assertionWithNoArgument.types index 51ac01d907c..da1dd7912e4 100644 --- a/testdata/baselines/reference/compiler/assertionWithNoArgument.types +++ b/testdata/baselines/reference/compiler/assertionWithNoArgument.types @@ -2,16 +2,16 @@ === assertionWithNoArgument.ts === export function assertWeird(value?: string): asserts value { ->assertWeird : (value?: string | undefined) => asserts value +>assertWeird : (value?: string) => asserts value >value : string | undefined } assertWeird(); >assertWeird() : void ->assertWeird : (value?: string | undefined) => asserts value +>assertWeird : (value?: string) => asserts value assertWeird("hello"); >assertWeird("hello") : void ->assertWeird : (value?: string | undefined) => asserts value +>assertWeird : (value?: string) => asserts value >"hello" : "hello" diff --git a/testdata/baselines/reference/compiler/contextuallyTypedJsxChildren2.types b/testdata/baselines/reference/compiler/contextuallyTypedJsxChildren2.types index c87db4e2797..78de1b3d588 100644 --- a/testdata/baselines/reference/compiler/contextuallyTypedJsxChildren2.types +++ b/testdata/baselines/reference/compiler/contextuallyTypedJsxChildren2.types @@ -9,8 +9,8 @@ import * as React from 'react'; >React : typeof React declare const TestComponentWithChildren: (props: { ->TestComponentWithChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement ->props : { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; } +>TestComponentWithChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement +>props : { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; } state: T; >state : T @@ -28,8 +28,8 @@ declare const TestComponentWithChildren: (props: { >React : any declare const TestComponentWithoutChildren: (props: { ->TestComponentWithoutChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; notChildren?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement ->props : { state: T; selector?: ((state: NoInfer) => TParam) | undefined; notChildren?: ((state: NoInfer) => React.ReactElement | null) | undefined; } +>TestComponentWithoutChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; notChildren?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement +>props : { state: T; selector?: (state: NoInfer) => TParam; notChildren?: (state: NoInfer) => React.ReactElement | null; } state: T; >state : T @@ -58,7 +58,7 @@ const App = () => { state.foo}> > state.foo}> {(selected) =>
{Math.max(selected, 0)}
}
: JSX.Element ->TestComponentWithChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement +>TestComponentWithChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement >state : { foo: number; } >{ foo: 123 } : { foo: number; } >foo : number @@ -84,11 +84,11 @@ const App = () => { >div : any
->TestComponentWithChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement +>TestComponentWithChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement state.foo} notChildren={(selected) =>
{Math.max(selected, 0)}
} /> : JSX.Element ->TestComponentWithoutChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; notChildren?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement +>TestComponentWithoutChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; notChildren?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement state={{ foo: 123 }} >state : { foo: number; } @@ -131,8 +131,8 @@ interface State { } declare const Subscribe: (props: { ->Subscribe : (props: { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; }) => React.ReactElement ->props : { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; } +>Subscribe : (props: { selector?: (state: State) => TSelected; children: (state: TSelected) => void; }) => React.ReactElement +>props : { selector?: (state: State) => TSelected; children: (state: TSelected) => void; } selector?: (state: State) => TSelected >selector : ((state: State) => TSelected) | undefined @@ -151,7 +151,7 @@ const _result = ( { return [state.value] }} > {([value = false]) => { console.log(value) }} : JSX.Element ->Subscribe : (props: { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; }) => React.ReactElement +>Subscribe : (props: { selector?: (state: State) => TSelected; children: (state: TSelected) => void; }) => React.ReactElement selector={(state) => { >selector : (state: State) => boolean[] @@ -180,7 +180,7 @@ const _result = ( }} ->Subscribe : (props: { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; }) => React.ReactElement +>Subscribe : (props: { selector?: (state: State) => TSelected; children: (state: TSelected) => void; }) => React.ReactElement ) diff --git a/testdata/baselines/reference/compiler/declarationEmitAugmentationUsesCorrectSourceFile.types b/testdata/baselines/reference/compiler/declarationEmitAugmentationUsesCorrectSourceFile.types index 59932e33510..fa563edc912 100644 --- a/testdata/baselines/reference/compiler/declarationEmitAugmentationUsesCorrectSourceFile.types +++ b/testdata/baselines/reference/compiler/declarationEmitAugmentationUsesCorrectSourceFile.types @@ -22,7 +22,7 @@ declare namespace knex { declare namespace Knex { interface Interface { method(): ShouldJustBeAny; ->method : () => any +>method : () => ShouldJustBeAny } } @@ -38,7 +38,7 @@ declare module "knex" { >Knex : typeof Knex function newFunc(): Knex.Interface; ->newFunc : () => Interface +>newFunc : () => Knex.Interface >Knex : any } } diff --git a/testdata/baselines/reference/compiler/declarationEmitExpandoArrowFunctionParameter.types b/testdata/baselines/reference/compiler/declarationEmitExpandoArrowFunctionParameter.types index 36529f239f6..a94b76cee96 100644 --- a/testdata/baselines/reference/compiler/declarationEmitExpandoArrowFunctionParameter.types +++ b/testdata/baselines/reference/compiler/declarationEmitExpandoArrowFunctionParameter.types @@ -17,7 +17,7 @@ interface Props { } declare function forwardRef( ->forwardRef : (render: (props: P, ref: { current: T | null; }) => string) => (props: P & { ref?: { current: T | null; } | undefined; }) => string +>forwardRef : (render: (props: P, ref: { current: T | null; }) => string) => (props: P & { ref?: { current: T | null; }; }) => string render: (props: P, ref: { current: T | null }) => string >render : (props: P, ref: { current: T | null; }) => string @@ -26,7 +26,7 @@ declare function forwardRef( >current : T | null ): (props: P & { ref?: { current: T | null } }) => string; ->props : P & { ref?: { current: T | null; } | undefined; } +>props : P & { ref?: { current: T | null; }; } >ref : { current: T | null; } | undefined >current : T | null @@ -40,14 +40,14 @@ type FixedForwardRef = ( >current : T | null ) => (props: P & { ref?: { current: T | null } }) => string; ->props : P & { ref?: { current: T | null; } | undefined; } +>props : P & { ref?: { current: T | null; }; } >ref : { current: T | null; } | undefined >current : T | null const GenericForwardRef = forwardRef as FixedForwardRef; >GenericForwardRef : FixedForwardRef >forwardRef as FixedForwardRef : FixedForwardRef ->forwardRef : (render: (props: P, ref: { current: T | null; }) => string) => (props: P & { ref?: { current: T | null; } | undefined; }) => string +>forwardRef : (render: (props: P, ref: { current: T | null; }) => string) => (props: P & { ref?: { current: T | null; }; }) => string function Inner( >Inner : ({ disabled, value, onValueChange, colors }: Props, ref: { current: HTMLButtonElement | null; }) => string diff --git a/testdata/baselines/reference/compiler/declarationEmitExportValueSymbolWithTsIgnore.types b/testdata/baselines/reference/compiler/declarationEmitExportValueSymbolWithTsIgnore.types index a77f7eb1228..e6b6bd95831 100644 --- a/testdata/baselines/reference/compiler/declarationEmitExportValueSymbolWithTsIgnore.types +++ b/testdata/baselines/reference/compiler/declarationEmitExportValueSymbolWithTsIgnore.types @@ -5,7 +5,7 @@ export declare const MySymbol: unique symbol; >MySymbol : unique symbol export declare function createService(): { ->createService : () => new () => { [MySymbol](): T | undefined; } +>createService : () => { new (): { [MySymbol](): T | undefined; }; } new (): { [MySymbol](): T | undefined; @@ -21,14 +21,14 @@ import { MySymbol } from "lib"; >MySymbol : unique symbol import { createService } from "lib"; ->createService : () => new () => { [MySymbol](): T | undefined; } +>createService : () => { new (): { [MySymbol](): T | undefined; }; } // The extends clause references the factory result which uses MySymbol // This should trigger symbol accessibility check for MySymbol export class Client extends createService() { >Client : Client >createService() : { [MySymbol](): string | undefined; } ->createService : () => new () => { [MySymbol](): T | undefined; } +>createService : () => { new (): { [MySymbol](): T | undefined; }; } doSomething(): string { >doSomething : () => string diff --git a/testdata/baselines/reference/compiler/declarationEmitNoCrashOnCommentCopiedFromOtherFile.js.map b/testdata/baselines/reference/compiler/declarationEmitNoCrashOnCommentCopiedFromOtherFile.js.map index 16c8eee813a..b77b826c10e 100644 --- a/testdata/baselines/reference/compiler/declarationEmitNoCrashOnCommentCopiedFromOtherFile.js.map +++ b/testdata/baselines/reference/compiler/declarationEmitNoCrashOnCommentCopiedFromOtherFile.js.map @@ -1,6 +1,6 @@ //// [export.d.ts.map] -{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,GAAG,yCAIlB"} -//// https://sokra.github.io/source-map-visualization#base64,LyoqDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKi8NCmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGZvbygpOiAoX2l0ZW06IHVua25vd24pID0+IF9pdGVtIGlzIGJvb2xlYW47DQovLyMgc291cmNlTWFwcGluZ1VSTD1leHBvcnQuZC50cy5tYXA=,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsd0JBQWdCLEdBQUcseUNBSWxCIn0=,LyoqCiAqIGJsYWggYmxhaCBibGFoIGJsYWgKICogYmxhaCBibGFoIGJsYWggYmxhaAogKiBibGFoIGJsYWggYmxhaCBibGFoCiAqIGJsYWggYmxhaCBibGFoIGJsYWgKICogYmxhaCBibGFoIGJsYWggYmxhaAogKi8KCmV4cG9ydCBmdW5jdGlvbiBmb28oKSB7CiAgcmV0dXJuIChfaXRlbTogdW5rbm93bik6IF9pdGVtIGlzIGJvb2xlYW4gPT4gewogICAgcmV0dXJuIHRydWU7CiAgfTsKfQ== +{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,GAAG,YACF,OAAO,KAAG,KAAK,IAAI,OAAO,CAG1C"} +//// https://sokra.github.io/source-map-visualization#base64,LyoqDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKiBibGFoIGJsYWggYmxhaCBibGFoDQogKi8NCmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGZvbygpOiAoX2l0ZW06IHVua25vd24pID0+IF9pdGVtIGlzIGJvb2xlYW47DQovLyMgc291cmNlTWFwcGluZ1VSTD1leHBvcnQuZC50cy5tYXA=,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsd0JBQWdCLEdBQUcsWUFDRixPQUFPLEtBQUcsS0FBSyxJQUFJLE9BQU8sQ0FHMUMifQ==,LyoqCiAqIGJsYWggYmxhaCBibGFoIGJsYWgKICogYmxhaCBibGFoIGJsYWggYmxhaAogKiBibGFoIGJsYWggYmxhaCBibGFoCiAqIGJsYWggYmxhaCBibGFoIGJsYWgKICogYmxhaCBibGFoIGJsYWggYmxhaAogKi8KCmV4cG9ydCBmdW5jdGlvbiBmb28oKSB7CiAgcmV0dXJuIChfaXRlbTogdW5rbm93bik6IF9pdGVtIGlzIGJvb2xlYW4gPT4gewogICAgcmV0dXJuIHRydWU7CiAgfTsKfQ== //// [import.d.ts.map] {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["import.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,CAAC,sCAAQ,CAAC"} diff --git a/testdata/baselines/reference/compiler/declarationEmitNoCrashOnCommentCopiedFromOtherFile.sourcemap.txt b/testdata/baselines/reference/compiler/declarationEmitNoCrashOnCommentCopiedFromOtherFile.sourcemap.txt index d6411d01755..3289c9c7d1e 100644 --- a/testdata/baselines/reference/compiler/declarationEmitNoCrashOnCommentCopiedFromOtherFile.sourcemap.txt +++ b/testdata/baselines/reference/compiler/declarationEmitNoCrashOnCommentCopiedFromOtherFile.sourcemap.txt @@ -35,21 +35,39 @@ sourceFile:export.ts 1-> 2 >^^^^^^^^^^^^^^^^^^^^^^^^ 3 > ^^^ -4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^^^^^^^^^^^ +5 > ^^^^^^^ +6 > ^^^^^ +7 > ^^^^^ +8 > ^^^^ +9 > ^^^^^^^ +10> ^ 1-> > > 2 >export function 3 > foo 4 > () { - > return (_item: unknown): _item is boolean => { - > return true; - > }; - > } + > return (_item: +5 > unknown +6 > ): +7 > _item +8 > is +9 > boolean +10> => { + > return true; + > }; + > } 1->Emitted(8, 1) Source(9, 1) + SourceIndex(0) 2 >Emitted(8, 25) Source(9, 17) + SourceIndex(0) 3 >Emitted(8, 28) Source(9, 20) + SourceIndex(0) -4 >Emitted(8, 69) Source(13, 2) + SourceIndex(0) +4 >Emitted(8, 40) Source(10, 18) + SourceIndex(0) +5 >Emitted(8, 47) Source(10, 25) + SourceIndex(0) +6 >Emitted(8, 52) Source(10, 28) + SourceIndex(0) +7 >Emitted(8, 57) Source(10, 33) + SourceIndex(0) +8 >Emitted(8, 61) Source(10, 37) + SourceIndex(0) +9 >Emitted(8, 68) Source(10, 44) + SourceIndex(0) +10>Emitted(8, 69) Source(13, 2) + SourceIndex(0) --- >>>//# sourceMappingURL=export.d.ts.map=================================================================== JsFile: import.d.ts diff --git a/testdata/baselines/reference/compiler/excessivelyDeepConditionalTypes.types b/testdata/baselines/reference/compiler/excessivelyDeepConditionalTypes.types index bcf36f74ae3..baa9aa119f2 100644 --- a/testdata/baselines/reference/compiler/excessivelyDeepConditionalTypes.types +++ b/testdata/baselines/reference/compiler/excessivelyDeepConditionalTypes.types @@ -35,7 +35,7 @@ export type GetByString< interface Duck { taxonomy: { ->taxonomy : { genus: "anas"; species: "platyrhynchos"; } +>taxonomy : { genus: 'anas'; species: 'platyrhynchos'; } genus: 'anas'; >genus : "anas" diff --git a/testdata/baselines/reference/compiler/expandoContextualTypes.types b/testdata/baselines/reference/compiler/expandoContextualTypes.types index 10c4316f0cf..f7141853f97 100644 --- a/testdata/baselines/reference/compiler/expandoContextualTypes.types +++ b/testdata/baselines/reference/compiler/expandoContextualTypes.types @@ -43,7 +43,7 @@ export const FooPage: Page = () => { FooPage.getLayout = () => { >FooPage.getLayout = () => { return <>} : () => JSX.Element >FooPage.getLayout : ((component: JSX.Element) => JSX.Element) | undefined ->FooPage : import("react").StatelessComponent<{}> & { getLayout?: ((component: JSX.Element) => JSX.Element) | undefined; } +>FooPage : import("react").StatelessComponent<{}> & { getLayout?: (component: JSX.Element) => JSX.Element; } >getLayout : ((component: JSX.Element) => JSX.Element) | undefined >() => { return <>} : () => JSX.Element diff --git a/testdata/baselines/reference/compiler/freshObjectLiteralSubtype.types b/testdata/baselines/reference/compiler/freshObjectLiteralSubtype.types index 4c368aa669f..4869a55af97 100644 --- a/testdata/baselines/reference/compiler/freshObjectLiteralSubtype.types +++ b/testdata/baselines/reference/compiler/freshObjectLiteralSubtype.types @@ -95,9 +95,9 @@ function normalise_trace_logs([log]: any[]) { >log : any >"string" : "string" >log.includes("%c") : boolean ->log.includes : (searchString: string, position?: number | undefined) => boolean +>log.includes : (searchString: string, position?: number) => boolean >log : string ->includes : (searchString: string, position?: number | undefined) => boolean +>includes : (searchString: string, position?: number) => boolean >"%c" : "%c" normalised.push({ log, highlighted: log.includes("foo") }); @@ -109,9 +109,9 @@ function normalise_trace_logs([log]: any[]) { >log : string >highlighted : boolean >log.includes("foo") : boolean ->log.includes : (searchString: string, position?: number | undefined) => boolean +>log.includes : (searchString: string, position?: number) => boolean >log : string ->includes : (searchString: string, position?: number | undefined) => boolean +>includes : (searchString: string, position?: number) => boolean >"foo" : "foo" } else { diff --git a/testdata/baselines/reference/compiler/nestedSpreadsAndWidening.types b/testdata/baselines/reference/compiler/nestedSpreadsAndWidening.types index bbf720d9491..25f165f0225 100644 --- a/testdata/baselines/reference/compiler/nestedSpreadsAndWidening.types +++ b/testdata/baselines/reference/compiler/nestedSpreadsAndWidening.types @@ -55,7 +55,7 @@ type S10 = { input: { j: number } }; type S11 = { input: { k?: string[] } }; >S11 : S11 ->input : { k?: string[] | undefined; } +>input : { k?: string[]; } >k : string[] | undefined type Base = { type: string; settings: S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10 | S11; }; @@ -120,7 +120,7 @@ declare const step: Action; read({ >read({ ...step, settings: { ...step.settings, input: { ...step.settings.input, k: ['5'] } },}) : void >read : (arg: T) => void ->{ ...step, settings: { ...step.settings, input: { ...step.settings.input, k: ['5'] } },} : { type: "1"; settings: { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; }; } | { type: "2"; settings: { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; }; } | { type: "3"; settings: { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | any | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; }; } | any | { } +>{ ...step, settings: { ...step.settings, input: { ...step.settings.input, k: ['5'] } },} : { type: "1"; settings: { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; }; } | { type: "2"; settings: { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; }; } | { type: "3"; settings: { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; } | any | { input: { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; }; }; } | any | { } ...step, >step : Action @@ -133,11 +133,11 @@ read({ >settings : ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S1) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S10) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S11) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S2) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S3) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S4) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S5) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S6) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S7) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S8) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S9) >input : { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } >{ ...step.settings.input, k: ['5'] } : { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } | { k: string[]; } | { a: number; b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { a: number; k: string[]; } | { a: number; b: number; k: string[]; } | { b: number; c: number; k: string[]; } | { b: number; d: number; k: string[]; } | { b: number; e: number; k: string[]; } | { b: number; f: number; k: string[]; } | { b: number; g: number; k: string[]; } | { b: number; h: number; k: string[]; } | { b: number; i: number; k: string[]; } | { b: number; j: number; k: string[]; } | { b: number; k: string[]; } | { a: number; c: number; k: string[]; } | { b: number; c: number; k: string[]; } | { c: number; d: number; k: string[]; } | { c: number; e: number; k: string[]; } | { c: number; f: number; k: string[]; } | { c: number; g: number; k: string[]; } | { c: number; h: number; k: string[]; } | { c: number; i: number; k: string[]; } | { c: number; j: number; k: string[]; } | { c: number; k: string[]; } | { a: number; d: number; k: string[]; } | { b: number; d: number; k: string[]; } | { c: number; d: number; k: string[]; } | { d: number; e: number; k: string[]; } | { d: number; f: number; k: string[]; } | { d: number; g: number; k: string[]; } | { d: number; h: number; k: string[]; } | { d: number; i: number; k: string[]; } | { d: number; j: number; k: string[]; } | { d: number; k: string[]; } | { a: number; e: number; k: string[]; } | { b: number; e: number; k: string[]; } | { c: number; e: number; k: string[]; } | { d: number; e: number; k: string[]; } | { e: number; f: number; k: string[]; } | { e: number; g: number; k: string[]; } | { e: number; h: number; k: string[]; } | { e: number; i: number; k: string[]; } | { e: number; j: number; k: string[]; } | { e: number; k: string[]; } | { a: number; f: number; k: string[]; } | { b: number; f: number; k: string[]; } | { c: number; f: number; k: string[]; } | { d: number; f: number; k: string[]; } | { e: number; f: number; k: string[]; } | { f: number; g: number; k: string[]; } | { f: number; h: number; k: string[]; } | { f: number; i: number; k: string[]; } | { f: number; j: number; k: string[]; } | { f: number; k: string[]; } | { a: number; g: number; k: string[]; } | { b: number; g: number; k: string[]; } | { c: number; g: number; k: string[]; } | { d: number; g: number; k: string[]; } | { e: number; g: number; k: string[]; } | { f: number; g: number; k: string[]; } | { g: number; h: number; k: string[]; } | { g: number; i: number; k: string[]; } | { g: number; j: number; k: string[]; } | { g: number; k: string[]; } | { a: number; h: number; k: string[]; } | { b: number; h: number; k: string[]; } | { c: number; h: number; k: string[]; } | { d: number; h: number; k: string[]; } | { e: number; h: number; k: string[]; } | { f: number; h: number; k: string[]; } | { g: number; h: number; k: string[]; } | { h: number; i: number; k: string[]; } | { h: number; j: number; k: string[]; } | { h: number; k: string[]; } | { a: number; i: number; k: string[]; } | { b: number; i: number; k: string[]; } | { c: number; i: number; k: string[]; } | { d: number; i: number; k: string[]; } | { e: number; i: number; k: string[]; } | { f: number; i: number; k: string[]; } | { g: number; i: number; k: string[]; } | { h: number; i: number; k: string[]; } | { i: number; j: number; k: string[]; } | { i: number; k: string[]; } | { a: number; j: number; k: string[]; } | { b: number; j: number; k: string[]; } | { c: number; j: number; k: string[]; } | { d: number; j: number; k: string[]; } | { e: number; j: number; k: string[]; } | { f: number; j: number; k: string[]; } | { g: number; j: number; k: string[]; } | { h: number; j: number; k: string[]; } | { i: number; j: number; k: string[]; } | { j: number; k: string[]; } | { a: number; k: string[]; } | { b: number; k: string[]; } | { c: number; k: string[]; } | { d: number; k: string[]; } | { e: number; k: string[]; } | { f: number; k: string[]; } | { g: number; k: string[]; } | { h: number; k: string[]; } | { i: number; k: string[]; } | { j: number; k: string[]; } ->step.settings.input : { a: number; } | { b: number; } | { c: number; } | { d: number; } | { e: number; } | { f: number; } | { g: number; } | { h: number; } | { i: number; } | { j: number; } | { k?: string[] | undefined; } | ({ a: number; } & { b: number; }) | ({ a: number; } & { c: number; }) | ({ a: number; } & { d: number; }) | ({ a: number; } & { e: number; }) | ({ a: number; } & { f: number; }) | ({ a: number; } & { g: number; }) | ({ a: number; } & { h: number; }) | ({ a: number; } & { i: number; }) | ({ a: number; } & { j: number; }) | ({ a: number; } & { k?: string[] | undefined; }) | ({ b: number; } & { a: number; }) | ({ b: number; } & { c: number; }) | ({ b: number; } & { d: number; }) | ({ b: number; } & { e: number; }) | ({ b: number; } & { f: number; }) | ({ b: number; } & { g: number; }) | ({ b: number; } & { h: number; }) | ({ b: number; } & { i: number; }) | ({ b: number; } & { j: number; }) | ({ b: number; } & { k?: string[] | undefined; }) | ({ c: number; } & { a: number; }) | ({ c: number; } & { b: number; }) | ({ c: number; } & { d: number; }) | ({ c: number; } & { e: number; }) | ({ c: number; } & { f: number; }) | ({ c: number; } & { g: number; }) | ({ c: number; } & { h: number; }) | ({ c: number; } & { i: number; }) | ({ c: number; } & { j: number; }) | ({ c: number; } & { k?: string[] | undefined; }) | ({ d: number; } & { a: number; }) | ({ d: number; } & { b: number; }) | ({ d: number; } & { c: number; }) | ({ d: number; } & { e: number; }) | ({ d: number; } & { f: number; }) | ({ d: number; } & { g: number; }) | ({ d: number; } & { h: number; }) | ({ d: number; } & { i: number; }) | ({ d: number; } & { j: number; }) | ({ d: number; } & { k?: string[] | undefined; }) | ({ e: number; } & { a: number; }) | ({ e: number; } & { b: number; }) | ({ e: number; } & { c: number; }) | ({ e: number; } & { d: number; }) | ({ e: number; } & { f: number; }) | ({ e: number; } & { g: number; }) | ({ e: number; } & { h: number; }) | ({ e: number; } & { i: number; }) | ({ e: number; } & { j: number; }) | ({ e: number; } & { k?: string[] | undefined; }) | ({ f: number; } & { a: number; }) | ({ f: number; } & { b: number; }) | ({ f: number; } & { c: number; }) | ({ f: number; } & { d: number; }) | ({ f: number; } & { e: number; }) | ({ f: number; } & { g: number; }) | ({ f: number; } & { h: number; }) | ({ f: number; } & { i: number; }) | ({ f: number; } & { j: number; }) | ({ f: number; } & { k?: string[] | undefined; }) | ({ g: number; } & { a: number; }) | ({ g: number; } & { b: number; }) | ({ g: number; } & { c: number; }) | ({ g: number; } & { d: number; }) | ({ g: number; } & { e: number; }) | ({ g: number; } & { f: number; }) | ({ g: number; } & { h: number; }) | ({ g: number; } & { i: number; }) | ({ g: number; } & { j: number; }) | ({ g: number; } & { k?: string[] | undefined; }) | ({ h: number; } & { a: number; }) | ({ h: number; } & { b: number; }) | ({ h: number; } & { c: number; }) | ({ h: number; } & { d: number; }) | ({ h: number; } & { e: number; }) | ({ h: number; } & { f: number; }) | ({ h: number; } & { g: number; }) | ({ h: number; } & { i: number; }) | ({ h: number; } & { j: number; }) | ({ h: number; } & { k?: string[] | undefined; }) | ({ i: number; } & { a: number; }) | ({ i: number; } & { b: number; }) | ({ i: number; } & { c: number; }) | ({ i: number; } & { d: number; }) | ({ i: number; } & { e: number; }) | ({ i: number; } & { f: number; }) | ({ i: number; } & { g: number; }) | ({ i: number; } & { h: number; }) | ({ i: number; } & { j: number; }) | ({ i: number; } & { k?: string[] | undefined; }) | ({ j: number; } & { a: number; }) | ({ j: number; } & { b: number; }) | ({ j: number; } & { c: number; }) | ({ j: number; } & { d: number; }) | ({ j: number; } & { e: number; }) | ({ j: number; } & { f: number; }) | ({ j: number; } & { g: number; }) | ({ j: number; } & { h: number; }) | ({ j: number; } & { i: number; }) | ({ j: number; } & { k?: string[] | undefined; }) | ({ k?: string[] | undefined; } & { a: number; }) | ({ k?: string[] | undefined; } & { b: number; }) | ({ k?: string[] | undefined; } & { c: number; }) | ({ k?: string[] | undefined; } & { d: number; }) | ({ k?: string[] | undefined; } & { e: number; }) | ({ k?: string[] | undefined; } & { f: number; }) | ({ k?: string[] | undefined; } & { g: number; }) | ({ k?: string[] | undefined; } & { h: number; }) | ({ k?: string[] | undefined; } & { i: number; }) | ({ k?: string[] | undefined; } & { j: number; }) +>step.settings.input : { a: number; } | { b: number; } | { c: number; } | { d: number; } | { e: number; } | { f: number; } | { g: number; } | { h: number; } | { i: number; } | { j: number; } | { k?: string[]; } | ({ a: number; } & { b: number; }) | ({ a: number; } & { c: number; }) | ({ a: number; } & { d: number; }) | ({ a: number; } & { e: number; }) | ({ a: number; } & { f: number; }) | ({ a: number; } & { g: number; }) | ({ a: number; } & { h: number; }) | ({ a: number; } & { i: number; }) | ({ a: number; } & { j: number; }) | ({ a: number; } & { k?: string[]; }) | ({ b: number; } & { a: number; }) | ({ b: number; } & { c: number; }) | ({ b: number; } & { d: number; }) | ({ b: number; } & { e: number; }) | ({ b: number; } & { f: number; }) | ({ b: number; } & { g: number; }) | ({ b: number; } & { h: number; }) | ({ b: number; } & { i: number; }) | ({ b: number; } & { j: number; }) | ({ b: number; } & { k?: string[]; }) | ({ c: number; } & { a: number; }) | ({ c: number; } & { b: number; }) | ({ c: number; } & { d: number; }) | ({ c: number; } & { e: number; }) | ({ c: number; } & { f: number; }) | ({ c: number; } & { g: number; }) | ({ c: number; } & { h: number; }) | ({ c: number; } & { i: number; }) | ({ c: number; } & { j: number; }) | ({ c: number; } & { k?: string[]; }) | ({ d: number; } & { a: number; }) | ({ d: number; } & { b: number; }) | ({ d: number; } & { c: number; }) | ({ d: number; } & { e: number; }) | ({ d: number; } & { f: number; }) | ({ d: number; } & { g: number; }) | ({ d: number; } & { h: number; }) | ({ d: number; } & { i: number; }) | ({ d: number; } & { j: number; }) | ({ d: number; } & { k?: string[]; }) | ({ e: number; } & { a: number; }) | ({ e: number; } & { b: number; }) | ({ e: number; } & { c: number; }) | ({ e: number; } & { d: number; }) | ({ e: number; } & { f: number; }) | ({ e: number; } & { g: number; }) | ({ e: number; } & { h: number; }) | ({ e: number; } & { i: number; }) | ({ e: number; } & { j: number; }) | ({ e: number; } & { k?: string[]; }) | ({ f: number; } & { a: number; }) | ({ f: number; } & { b: number; }) | ({ f: number; } & { c: number; }) | ({ f: number; } & { d: number; }) | ({ f: number; } & { e: number; }) | ({ f: number; } & { g: number; }) | ({ f: number; } & { h: number; }) | ({ f: number; } & { i: number; }) | ({ f: number; } & { j: number; }) | ({ f: number; } & { k?: string[]; }) | ({ g: number; } & { a: number; }) | ({ g: number; } & { b: number; }) | ({ g: number; } & { c: number; }) | ({ g: number; } & { d: number; }) | ({ g: number; } & { e: number; }) | ({ g: number; } & { f: number; }) | ({ g: number; } & { h: number; }) | ({ g: number; } & { i: number; }) | ({ g: number; } & { j: number; }) | ({ g: number; } & { k?: string[]; }) | ({ h: number; } & { a: number; }) | ({ h: number; } & { b: number; }) | ({ h: number; } & { c: number; }) | ({ h: number; } & { d: number; }) | ({ h: number; } & { e: number; }) | ({ h: number; } & { f: number; }) | ({ h: number; } & { g: number; }) | ({ h: number; } & { i: number; }) | ({ h: number; } & { j: number; }) | ({ h: number; } & { k?: string[]; }) | ({ i: number; } & { a: number; }) | ({ i: number; } & { b: number; }) | ({ i: number; } & { c: number; }) | ({ i: number; } & { d: number; }) | ({ i: number; } & { e: number; }) | ({ i: number; } & { f: number; }) | ({ i: number; } & { g: number; }) | ({ i: number; } & { h: number; }) | ({ i: number; } & { j: number; }) | ({ i: number; } & { k?: string[]; }) | ({ j: number; } & { a: number; }) | ({ j: number; } & { b: number; }) | ({ j: number; } & { c: number; }) | ({ j: number; } & { d: number; }) | ({ j: number; } & { e: number; }) | ({ j: number; } & { f: number; }) | ({ j: number; } & { g: number; }) | ({ j: number; } & { h: number; }) | ({ j: number; } & { i: number; }) | ({ j: number; } & { k?: string[]; }) | ({ k?: string[]; } & { a: number; }) | ({ k?: string[]; } & { b: number; }) | ({ k?: string[]; } & { c: number; }) | ({ k?: string[]; } & { d: number; }) | ({ k?: string[]; } & { e: number; }) | ({ k?: string[]; } & { f: number; }) | ({ k?: string[]; } & { g: number; }) | ({ k?: string[]; } & { h: number; }) | ({ k?: string[]; } & { i: number; }) | ({ k?: string[]; } & { j: number; }) >step.settings : ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S1) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S10) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S11) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S2) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S3) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S4) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S5) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S6) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S7) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S8) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S9) >step : Action >settings : ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S1) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S10) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S11) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S2) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S3) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S4) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S5) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S6) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S7) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S8) | ((S1 | S10 | S11 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9) & S9) ->input : { a: number; } | { b: number; } | { c: number; } | { d: number; } | { e: number; } | { f: number; } | { g: number; } | { h: number; } | { i: number; } | { j: number; } | { k?: string[] | undefined; } | ({ a: number; } & { b: number; }) | ({ a: number; } & { c: number; }) | ({ a: number; } & { d: number; }) | ({ a: number; } & { e: number; }) | ({ a: number; } & { f: number; }) | ({ a: number; } & { g: number; }) | ({ a: number; } & { h: number; }) | ({ a: number; } & { i: number; }) | ({ a: number; } & { j: number; }) | ({ a: number; } & { k?: string[] | undefined; }) | ({ b: number; } & { a: number; }) | ({ b: number; } & { c: number; }) | ({ b: number; } & { d: number; }) | ({ b: number; } & { e: number; }) | ({ b: number; } & { f: number; }) | ({ b: number; } & { g: number; }) | ({ b: number; } & { h: number; }) | ({ b: number; } & { i: number; }) | ({ b: number; } & { j: number; }) | ({ b: number; } & { k?: string[] | undefined; }) | ({ c: number; } & { a: number; }) | ({ c: number; } & { b: number; }) | ({ c: number; } & { d: number; }) | ({ c: number; } & { e: number; }) | ({ c: number; } & { f: number; }) | ({ c: number; } & { g: number; }) | ({ c: number; } & { h: number; }) | ({ c: number; } & { i: number; }) | ({ c: number; } & { j: number; }) | ({ c: number; } & { k?: string[] | undefined; }) | ({ d: number; } & { a: number; }) | ({ d: number; } & { b: number; }) | ({ d: number; } & { c: number; }) | ({ d: number; } & { e: number; }) | ({ d: number; } & { f: number; }) | ({ d: number; } & { g: number; }) | ({ d: number; } & { h: number; }) | ({ d: number; } & { i: number; }) | ({ d: number; } & { j: number; }) | ({ d: number; } & { k?: string[] | undefined; }) | ({ e: number; } & { a: number; }) | ({ e: number; } & { b: number; }) | ({ e: number; } & { c: number; }) | ({ e: number; } & { d: number; }) | ({ e: number; } & { f: number; }) | ({ e: number; } & { g: number; }) | ({ e: number; } & { h: number; }) | ({ e: number; } & { i: number; }) | ({ e: number; } & { j: number; }) | ({ e: number; } & { k?: string[] | undefined; }) | ({ f: number; } & { a: number; }) | ({ f: number; } & { b: number; }) | ({ f: number; } & { c: number; }) | ({ f: number; } & { d: number; }) | ({ f: number; } & { e: number; }) | ({ f: number; } & { g: number; }) | ({ f: number; } & { h: number; }) | ({ f: number; } & { i: number; }) | ({ f: number; } & { j: number; }) | ({ f: number; } & { k?: string[] | undefined; }) | ({ g: number; } & { a: number; }) | ({ g: number; } & { b: number; }) | ({ g: number; } & { c: number; }) | ({ g: number; } & { d: number; }) | ({ g: number; } & { e: number; }) | ({ g: number; } & { f: number; }) | ({ g: number; } & { h: number; }) | ({ g: number; } & { i: number; }) | ({ g: number; } & { j: number; }) | ({ g: number; } & { k?: string[] | undefined; }) | ({ h: number; } & { a: number; }) | ({ h: number; } & { b: number; }) | ({ h: number; } & { c: number; }) | ({ h: number; } & { d: number; }) | ({ h: number; } & { e: number; }) | ({ h: number; } & { f: number; }) | ({ h: number; } & { g: number; }) | ({ h: number; } & { i: number; }) | ({ h: number; } & { j: number; }) | ({ h: number; } & { k?: string[] | undefined; }) | ({ i: number; } & { a: number; }) | ({ i: number; } & { b: number; }) | ({ i: number; } & { c: number; }) | ({ i: number; } & { d: number; }) | ({ i: number; } & { e: number; }) | ({ i: number; } & { f: number; }) | ({ i: number; } & { g: number; }) | ({ i: number; } & { h: number; }) | ({ i: number; } & { j: number; }) | ({ i: number; } & { k?: string[] | undefined; }) | ({ j: number; } & { a: number; }) | ({ j: number; } & { b: number; }) | ({ j: number; } & { c: number; }) | ({ j: number; } & { d: number; }) | ({ j: number; } & { e: number; }) | ({ j: number; } & { f: number; }) | ({ j: number; } & { g: number; }) | ({ j: number; } & { h: number; }) | ({ j: number; } & { i: number; }) | ({ j: number; } & { k?: string[] | undefined; }) | ({ k?: string[] | undefined; } & { a: number; }) | ({ k?: string[] | undefined; } & { b: number; }) | ({ k?: string[] | undefined; } & { c: number; }) | ({ k?: string[] | undefined; } & { d: number; }) | ({ k?: string[] | undefined; } & { e: number; }) | ({ k?: string[] | undefined; } & { f: number; }) | ({ k?: string[] | undefined; } & { g: number; }) | ({ k?: string[] | undefined; } & { h: number; }) | ({ k?: string[] | undefined; } & { i: number; }) | ({ k?: string[] | undefined; } & { j: number; }) +>input : { a: number; } | { b: number; } | { c: number; } | { d: number; } | { e: number; } | { f: number; } | { g: number; } | { h: number; } | { i: number; } | { j: number; } | { k?: string[]; } | ({ a: number; } & { b: number; }) | ({ a: number; } & { c: number; }) | ({ a: number; } & { d: number; }) | ({ a: number; } & { e: number; }) | ({ a: number; } & { f: number; }) | ({ a: number; } & { g: number; }) | ({ a: number; } & { h: number; }) | ({ a: number; } & { i: number; }) | ({ a: number; } & { j: number; }) | ({ a: number; } & { k?: string[]; }) | ({ b: number; } & { a: number; }) | ({ b: number; } & { c: number; }) | ({ b: number; } & { d: number; }) | ({ b: number; } & { e: number; }) | ({ b: number; } & { f: number; }) | ({ b: number; } & { g: number; }) | ({ b: number; } & { h: number; }) | ({ b: number; } & { i: number; }) | ({ b: number; } & { j: number; }) | ({ b: number; } & { k?: string[]; }) | ({ c: number; } & { a: number; }) | ({ c: number; } & { b: number; }) | ({ c: number; } & { d: number; }) | ({ c: number; } & { e: number; }) | ({ c: number; } & { f: number; }) | ({ c: number; } & { g: number; }) | ({ c: number; } & { h: number; }) | ({ c: number; } & { i: number; }) | ({ c: number; } & { j: number; }) | ({ c: number; } & { k?: string[]; }) | ({ d: number; } & { a: number; }) | ({ d: number; } & { b: number; }) | ({ d: number; } & { c: number; }) | ({ d: number; } & { e: number; }) | ({ d: number; } & { f: number; }) | ({ d: number; } & { g: number; }) | ({ d: number; } & { h: number; }) | ({ d: number; } & { i: number; }) | ({ d: number; } & { j: number; }) | ({ d: number; } & { k?: string[]; }) | ({ e: number; } & { a: number; }) | ({ e: number; } & { b: number; }) | ({ e: number; } & { c: number; }) | ({ e: number; } & { d: number; }) | ({ e: number; } & { f: number; }) | ({ e: number; } & { g: number; }) | ({ e: number; } & { h: number; }) | ({ e: number; } & { i: number; }) | ({ e: number; } & { j: number; }) | ({ e: number; } & { k?: string[]; }) | ({ f: number; } & { a: number; }) | ({ f: number; } & { b: number; }) | ({ f: number; } & { c: number; }) | ({ f: number; } & { d: number; }) | ({ f: number; } & { e: number; }) | ({ f: number; } & { g: number; }) | ({ f: number; } & { h: number; }) | ({ f: number; } & { i: number; }) | ({ f: number; } & { j: number; }) | ({ f: number; } & { k?: string[]; }) | ({ g: number; } & { a: number; }) | ({ g: number; } & { b: number; }) | ({ g: number; } & { c: number; }) | ({ g: number; } & { d: number; }) | ({ g: number; } & { e: number; }) | ({ g: number; } & { f: number; }) | ({ g: number; } & { h: number; }) | ({ g: number; } & { i: number; }) | ({ g: number; } & { j: number; }) | ({ g: number; } & { k?: string[]; }) | ({ h: number; } & { a: number; }) | ({ h: number; } & { b: number; }) | ({ h: number; } & { c: number; }) | ({ h: number; } & { d: number; }) | ({ h: number; } & { e: number; }) | ({ h: number; } & { f: number; }) | ({ h: number; } & { g: number; }) | ({ h: number; } & { i: number; }) | ({ h: number; } & { j: number; }) | ({ h: number; } & { k?: string[]; }) | ({ i: number; } & { a: number; }) | ({ i: number; } & { b: number; }) | ({ i: number; } & { c: number; }) | ({ i: number; } & { d: number; }) | ({ i: number; } & { e: number; }) | ({ i: number; } & { f: number; }) | ({ i: number; } & { g: number; }) | ({ i: number; } & { h: number; }) | ({ i: number; } & { j: number; }) | ({ i: number; } & { k?: string[]; }) | ({ j: number; } & { a: number; }) | ({ j: number; } & { b: number; }) | ({ j: number; } & { c: number; }) | ({ j: number; } & { d: number; }) | ({ j: number; } & { e: number; }) | ({ j: number; } & { f: number; }) | ({ j: number; } & { g: number; }) | ({ j: number; } & { h: number; }) | ({ j: number; } & { i: number; }) | ({ j: number; } & { k?: string[]; }) | ({ k?: string[]; } & { a: number; }) | ({ k?: string[]; } & { b: number; }) | ({ k?: string[]; } & { c: number; }) | ({ k?: string[]; } & { d: number; }) | ({ k?: string[]; } & { e: number; }) | ({ k?: string[]; } & { f: number; }) | ({ k?: string[]; } & { g: number; }) | ({ k?: string[]; } & { h: number; }) | ({ k?: string[]; } & { i: number; }) | ({ k?: string[]; } & { j: number; }) >k : string[] >['5'] : string[] >'5' : "5" diff --git a/testdata/baselines/reference/compiler/noCrashOnMixin2.types b/testdata/baselines/reference/compiler/noCrashOnMixin2.types index e7505ee15ee..511939d463b 100644 --- a/testdata/baselines/reference/compiler/noCrashOnMixin2.types +++ b/testdata/baselines/reference/compiler/noCrashOnMixin2.types @@ -20,11 +20,11 @@ type Constructor = new (...args?: any[]) => T; >args : any[] | undefined function Mixin(Base: TBase) { ->Mixin : >(Base: TBase) => { new (...args?: any[] | undefined): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin : (Base: TBase) => { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Base : TBase return class extends Base { ->class extends Base { } : { new (...args?: any[] | undefined): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>class extends Base { } : { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Base : {} }; @@ -37,7 +37,7 @@ class Empty { class CrashTrigger extends Mixin(Empty) { >CrashTrigger : CrashTrigger >Mixin(Empty) : Mixin.(Anonymous class) ->Mixin : >(Base: TBase) => { new (...args?: any[] | undefined): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin : (Base: TBase) => { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Empty : typeof Empty public trigger() { diff --git a/testdata/baselines/reference/compiler/objectSubtypeReduction.types b/testdata/baselines/reference/compiler/objectSubtypeReduction.types index cc84cf2e2cf..d060e2c0b6d 100644 --- a/testdata/baselines/reference/compiler/objectSubtypeReduction.types +++ b/testdata/baselines/reference/compiler/objectSubtypeReduction.types @@ -4,16 +4,16 @@ // https://github.com/microsoft/typescript-go/issues/1164 function foo(x?: object) { ->foo : (x?: object | undefined) => [string, any][] +>foo : (x?: object) => [string, any][] >x : object | undefined return Object.entries(x || {}) >Object.entries(x || {}) .sort(([k1, v1], [k2, v2]) => v1.name.localeCompare(v2.name)) : [string, any][] >Object.entries(x || {}) .sort : (compareFn?: ((a: [string, any], b: [string, any]) => number) | undefined) => [string, any][] >Object.entries(x || {}) : [string, any][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >x || {} : object >x : object | undefined >{} : {} diff --git a/testdata/baselines/reference/compiler/packageDeduplicationDuplicateGlobals.types b/testdata/baselines/reference/compiler/packageDeduplicationDuplicateGlobals.types index 11ce01d5f35..577762d6623 100644 --- a/testdata/baselines/reference/compiler/packageDeduplicationDuplicateGlobals.types +++ b/testdata/baselines/reference/compiler/packageDeduplicationDuplicateGlobals.types @@ -2,20 +2,20 @@ === /src/index.ts === import { useBar } from "bar"; ->useBar : () => string +>useBar : () => ReturnType<() => typeof myGlobal> import { useBaz } from "baz"; ->useBaz : () => string +>useBaz : () => ReturnType<() => typeof myGlobal> const barResult = useBar(); >barResult : string >useBar() : string ->useBar : () => string +>useBar : () => ReturnType<() => typeof myGlobal> const bazResult = useBaz(); >bazResult : string >useBaz() : string ->useBaz : () => string +>useBaz : () => ReturnType<() => typeof myGlobal> const x: string = myGlobal; >x : string @@ -24,7 +24,7 @@ const x: string = myGlobal; === /node_modules/.pnpm/foo@1.0.0+globals@1.0.0/node_modules/foo/index.d.ts === import "globals"; export declare function useFoo(): typeof myGlobal; ->useFoo : () => string +>useFoo : () => typeof myGlobal >myGlobal : string === /node_modules/.pnpm/foo@1.0.0+globals@1.0.0/node_modules/globals/index.d.ts === @@ -34,24 +34,24 @@ declare var myGlobal: string; === /node_modules/.pnpm/foo@1.0.0+globals@2.0.0/node_modules/foo/index.d.ts === import "globals"; export declare function useFoo(): typeof myGlobal; ->useFoo : () => string +>useFoo : () => typeof myGlobal >myGlobal : string === /node_modules/.pnpm/bar@1.0.0/node_modules/bar/index.d.ts === import { useFoo } from "foo"; ->useFoo : () => string +>useFoo : () => typeof myGlobal export declare function useBar(): ReturnType; ->useBar : () => string ->useFoo : () => string +>useBar : () => ReturnType +>useFoo : () => typeof myGlobal === /node_modules/.pnpm/baz@1.0.0/node_modules/baz/index.d.ts === import { useFoo } from "foo"; ->useFoo : () => string +>useFoo : () => typeof myGlobal export declare function useBaz(): ReturnType; ->useBaz : () => string ->useFoo : () => string +>useBaz : () => ReturnType +>useFoo : () => typeof myGlobal diff --git a/testdata/baselines/reference/compiler/typedefHoisting.types b/testdata/baselines/reference/compiler/typedefHoisting.types index 5b60cac6045..4c394dd4102 100644 --- a/testdata/baselines/reference/compiler/typedefHoisting.types +++ b/testdata/baselines/reference/compiler/typedefHoisting.types @@ -14,7 +14,7 @@ class C { >"def" : "def" bar(/** @type {Bar} */ x) { ->bar : (x: string) => string +>bar : (x: Bar) => string >x : string return x diff --git a/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.js b/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.js index e7e054a6862..e33c239550e 100644 --- a/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.js +++ b/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.js @@ -36,9 +36,9 @@ export const lowHigh = "\ude03\ud83d"; //// [unicodeSurrogatesInStringLiterals.d.ts] -export declare const highLow: "😃"; -export declare const high: "�"; -export declare const low: "�"; -export declare const highHigh: "��"; -export declare const lowLow: "��"; -export declare const lowHigh: "��"; +export declare const highLow: "\uD83D\uDE03"; +export declare const high: "\uFFFD"; +export declare const low: "\uFFFD"; +export declare const highHigh: "\uFFFD\uFFFD"; +export declare const lowLow: "\uFFFD\uFFFD"; +export declare const lowHigh: "\uFFFD\uFFFD"; diff --git a/testdata/baselines/reference/conformance/jsdocVariadicInOverload.types b/testdata/baselines/reference/conformance/jsdocVariadicInOverload.types index fe0213ca92c..5514b6480b1 100644 --- a/testdata/baselines/reference/conformance/jsdocVariadicInOverload.types +++ b/testdata/baselines/reference/conformance/jsdocVariadicInOverload.types @@ -41,7 +41,7 @@ export class Processor { * Current processor. */ use(value, ...parameters) { ->use : { (preset?: string | null | undefined): Processor; (plugin: number, ...parameters: Parameters | [boolean]): Processor; } +>use : { (preset?: string | null | undefined): Processor; = [], Input extends Node | string | undefined = undefined, Output = Input>(plugin: number, ...parameters: (Parameters | [boolean])): Processor; } >value : string | number | boolean | null | undefined >parameters : unknown[] @@ -64,9 +64,9 @@ var x = 1, y = 2, z = 3; p.use(x, y, z); >p.use(x, y, z) : Processor ->p.use : { (preset?: string | null | undefined): Processor; (plugin: number, ...parameters: Parameters | [boolean]): Processor; } +>p.use : { (preset?: string | null | undefined): Processor; = [], Input extends Node | string | undefined = undefined, Output = Input>(plugin: number, ...parameters: Parameters | [boolean]): Processor; } >p : Processor ->use : { (preset?: string | null | undefined): Processor; (plugin: number, ...parameters: Parameters | [boolean]): Processor; } +>use : { (preset?: string | null | undefined): Processor; = [], Input extends Node | string | undefined = undefined, Output = Input>(plugin: number, ...parameters: Parameters | [boolean]): Processor; } >x : number >y : number >z : number diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoCommentsCommentParsing.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoCommentsCommentParsing.baseline index b4402caaf96..9f980aafdc1 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoCommentsCommentParsing.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoCommentsCommentParsing.baseline @@ -277,7 +277,7 @@ // ^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function multiply(a: number, b: number, c?: number | undefined, d?: any, e?: any): void +// | function multiply(a: number, b: number, c?: number, d?: any, e?: any): void // | ``` // | This is multiplication function // | @@ -405,7 +405,7 @@ // ^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void +// | function subtract(a: number, b: number, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void // | ``` // | This is subtract function // | @@ -1308,7 +1308,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction multiply(a: number, b: number, c?: number | undefined, d?: any, e?: any): void\n```\nThis is multiplication function\n\n*@param* ``\n\n*@param* `a` — first number\n\n\n*@param* `b`\n\n*@param* `c`\n\n*@param* `d`\n\n*@anotherTag*\n\n*@param* `e` — LastParam \n\n*@anotherTag*" + "value": "```tsx\nfunction multiply(a: number, b: number, c?: number, d?: any, e?: any): void\n```\nThis is multiplication function\n\n*@param* ``\n\n*@param* `a` — first number\n\n\n*@param* `b`\n\n*@param* `c`\n\n*@param* `d`\n\n*@anotherTag*\n\n*@param* `e` — LastParam \n\n*@anotherTag*" }, "range": { "start": { @@ -1605,7 +1605,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void\n```\nThis is subtract function\n\n*@param* ``\n\n*@param* `b` — this is about b\n\n\n*@param* `c` — this is optional param c\n\n\n*@param* `d` — this is optional param d\n\n\n*@param* `e` — this is optional param e\n\n\n*@param* `` — { () => string; } } f this is optional param f\n" + "value": "```tsx\nfunction subtract(a: number, b: number, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void\n```\nThis is subtract function\n\n*@param* ``\n\n*@param* `b` — this is about b\n\n\n*@param* `c` — this is optional param c\n\n\n*@param* `d` — this is optional param d\n\n\n*@param* `e` — this is optional param e\n\n\n*@param* `` — { () => string; } } f this is optional param f\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsFunction.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsFunction.baseline index 9fc3185edb3..bccaaa43e79 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsFunction.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsFunction.baseline @@ -4,7 +4,7 @@ // ^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void +// | function foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void // | ``` // | // | ---------------------------------------------------------------------- @@ -73,7 +73,7 @@ // ^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void +// | function foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void // | ``` // | // | ---------------------------------------------------------------------- @@ -131,7 +131,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void\n```\n" + "value": "```tsx\nfunction foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void\n```\n" }, "range": { "start": { @@ -347,7 +347,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void\n```\n" + "value": "```tsx\nfunction foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void\n```\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsLocalFunction.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsLocalFunction.baseline index ceace654600..c96c894c381 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsLocalFunction.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsLocalFunction.baseline @@ -12,7 +12,7 @@ // ^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void +// | function foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void // | ``` // | // | ---------------------------------------------------------------------- @@ -81,7 +81,7 @@ // ^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void +// | function foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void // | ``` // | // | ---------------------------------------------------------------------- @@ -175,7 +175,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void\n```\n" + "value": "```tsx\nfunction foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void\n```\n" }, "range": { "start": { @@ -391,7 +391,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void\n```\n" + "value": "```tsx\nfunction foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void\n```\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsParameters.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsParameters.baseline index cc604f6d5a5..9d59a003d9b 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsParameters.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsParameters.baseline @@ -5,7 +5,7 @@ // ^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void +// | function foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void // | ``` // | // | @@ -86,7 +86,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(param: string, optionalParam?: string | undefined, paramWithInitializer?: string, ...restParam: string[]): void\n```\n\n\n*@return* — *crunch* " + "value": "```tsx\nfunction foo(param: string, optionalParam?: string, paramWithInitializer?: string, ...restParam: string[]): void\n```\n\n\n*@return* — *crunch* " }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoInheritDoc.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoInheritDoc.baseline index 42a439e003b..c490bd95dc9 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoInheritDoc.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoInheritDoc.baseline @@ -38,7 +38,7 @@ // ^^^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | (method) SubClass.doSomethingUseful(mySpecificStuff?: { tiger: string; lion: string; } | undefined): string +// | (method) SubClass.doSomethingUseful(mySpecificStuff?: { tiger: string; lion: string; }): string // | ``` // | // | @@ -108,7 +108,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) SubClass.doSomethingUseful(mySpecificStuff?: { tiger: string; lion: string; } | undefined): string\n```\n\n\n*@inheritDoc*\n\n*@param* `mySpecificStuff` — Description of my specific parameter.\n" + "value": "```tsx\n(method) SubClass.doSomethingUseful(mySpecificStuff?: { tiger: string; lion: string; }): string\n```\n\n\n*@inheritDoc*\n\n*@param* `mySpecificStuff` — Description of my specific parameter.\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/signatureHelp/jsDocFunctionSignatures6.baseline b/testdata/baselines/reference/fourslash/signatureHelp/jsDocFunctionSignatures6.baseline index cd21fa8b156..6c3b7db0727 100644 --- a/testdata/baselines/reference/fourslash/signatureHelp/jsDocFunctionSignatures6.baseline +++ b/testdata/baselines/reference/fourslash/signatureHelp/jsDocFunctionSignatures6.baseline @@ -10,26 +10,26 @@ // f1('foo', 'bar', 'baz', 'qux'); // ^ // | ---------------------------------------------------------------------- -// | f1(**p1: string**, p2: string | null, p3?: string | undefined, p4?: string | undefined): void +// | f1(**p1: string**, p2: string | null, p3?: string, p4?: string): void // | - `p1: string`: - A string param // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | f1(p1: string, **p2: string | null**, p3?: string | undefined, p4?: string | undefined): void +// | f1(p1: string, **p2: string | null**, p3?: string, p4?: string): void // | - `p2: string | null`: - An optional param // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | f1(p1: string, p2: string | null, **p3?: string | undefined**, p4?: string | undefined): void -// | - `p3?: string | undefined`: - Another optional param +// | f1(p1: string, p2: string | null, **p3?: string**, p4?: string): void +// | - `p3?: string`: - Another optional param // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | f1(p1: string, p2: string | null, p3?: string | undefined, **p4?: string | undefined**): void -// | - `p4?: string | undefined`: - An optional param with a default value +// | f1(p1: string, p2: string | null, p3?: string, **p4?: string**): void +// | - `p4?: string`: - An optional param with a default value // | ---------------------------------------------------------------------- [ @@ -46,7 +46,7 @@ "item": { "signatures": [ { - "label": "f1(p1: string, p2: string | null, p3?: string | undefined, p4?: string | undefined): void", + "label": "f1(p1: string, p2: string | null, p3?: string, p4?: string): void", "parameters": [ { "label": "p1: string", @@ -63,14 +63,14 @@ } }, { - "label": "p3?: string | undefined", + "label": "p3?: string", "documentation": { "kind": "markdown", "value": "- Another optional param\n" } }, { - "label": "p4?: string | undefined", + "label": "p4?: string", "documentation": { "kind": "markdown", "value": "- An optional param with a default value\n" @@ -96,7 +96,7 @@ "item": { "signatures": [ { - "label": "f1(p1: string, p2: string | null, p3?: string | undefined, p4?: string | undefined): void", + "label": "f1(p1: string, p2: string | null, p3?: string, p4?: string): void", "parameters": [ { "label": "p1: string", @@ -113,14 +113,14 @@ } }, { - "label": "p3?: string | undefined", + "label": "p3?: string", "documentation": { "kind": "markdown", "value": "- Another optional param\n" } }, { - "label": "p4?: string | undefined", + "label": "p4?: string", "documentation": { "kind": "markdown", "value": "- An optional param with a default value\n" @@ -146,7 +146,7 @@ "item": { "signatures": [ { - "label": "f1(p1: string, p2: string | null, p3?: string | undefined, p4?: string | undefined): void", + "label": "f1(p1: string, p2: string | null, p3?: string, p4?: string): void", "parameters": [ { "label": "p1: string", @@ -163,14 +163,14 @@ } }, { - "label": "p3?: string | undefined", + "label": "p3?: string", "documentation": { "kind": "markdown", "value": "- Another optional param\n" } }, { - "label": "p4?: string | undefined", + "label": "p4?: string", "documentation": { "kind": "markdown", "value": "- An optional param with a default value\n" @@ -196,7 +196,7 @@ "item": { "signatures": [ { - "label": "f1(p1: string, p2: string | null, p3?: string | undefined, p4?: string | undefined): void", + "label": "f1(p1: string, p2: string | null, p3?: string, p4?: string): void", "parameters": [ { "label": "p1: string", @@ -213,14 +213,14 @@ } }, { - "label": "p3?: string | undefined", + "label": "p3?: string", "documentation": { "kind": "markdown", "value": "- Another optional param\n" } }, { - "label": "p4?: string | undefined", + "label": "p4?: string", "documentation": { "kind": "markdown", "value": "- An optional param with a default value\n" diff --git a/testdata/baselines/reference/fourslash/signatureHelp/signatureHelpCommentsCommentParsing.baseline b/testdata/baselines/reference/fourslash/signatureHelp/signatureHelpCommentsCommentParsing.baseline index 89fd1c63c25..8134a9dfdc2 100644 --- a/testdata/baselines/reference/fourslash/signatureHelp/signatureHelpCommentsCommentParsing.baseline +++ b/testdata/baselines/reference/fourslash/signatureHelp/signatureHelpCommentsCommentParsing.baseline @@ -192,29 +192,29 @@ // multiply(10, 20, 30, 40, 50); // ^ // | ---------------------------------------------------------------------- -// | multiply(**a: number**, b: number, c?: number | undefined, d?: any, e?: any): void +// | multiply(**a: number**, b: number, c?: number, d?: any, e?: any): void // | - `a: number`: first number // | This is multiplication function // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | multiply(a: number, **b: number**, c?: number | undefined, d?: any, e?: any): void +// | multiply(a: number, **b: number**, c?: number, d?: any, e?: any): void // | This is multiplication function // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | multiply(a: number, b: number, **c?: number | undefined**, d?: any, e?: any): void +// | multiply(a: number, b: number, **c?: number**, d?: any, e?: any): void // | This is multiplication function // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | multiply(a: number, b: number, c?: number | undefined, **d?: any**, e?: any): void +// | multiply(a: number, b: number, c?: number, **d?: any**, e?: any): void // | This is multiplication function // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | multiply(a: number, b: number, c?: number | undefined, d?: any, **e?: any**): void +// | multiply(a: number, b: number, c?: number, d?: any, **e?: any**): void // | - `e?: any`: LastParam // | This is multiplication function // | ---------------------------------------------------------------------- @@ -255,40 +255,40 @@ // subtract(10, 20, null, null, null, null); // ^ // | ---------------------------------------------------------------------- -// | subtract(**a: number**, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void +// | subtract(**a: number**, b: number, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void // | This is subtract function // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | subtract(a: number, **b: number**, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void +// | subtract(a: number, **b: number**, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void // | - `b: number`: this is about b // | This is subtract function // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | subtract(a: number, b: number, **c?: (() => string) | undefined**, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void -// | - `c?: (() => string) | undefined`: this is optional param c +// | subtract(a: number, b: number, **c?: () => string**, d?: () => string, e?: () => string, f?: () => string): void +// | - `c?: () => string`: this is optional param c // | This is subtract function // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | subtract(a: number, b: number, c?: (() => string) | undefined, **d?: (() => string) | undefined**, e?: (() => string) | undefined, f?: (() => string) | undefined): void -// | - `d?: (() => string) | undefined`: this is optional param d +// | subtract(a: number, b: number, c?: () => string, **d?: () => string**, e?: () => string, f?: () => string): void +// | - `d?: () => string`: this is optional param d // | This is subtract function // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, **e?: (() => string) | undefined**, f?: (() => string) | undefined): void -// | - `e?: (() => string) | undefined`: this is optional param e +// | subtract(a: number, b: number, c?: () => string, d?: () => string, **e?: () => string**, f?: () => string): void +// | - `e?: () => string`: this is optional param e // | This is subtract function // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, **f?: (() => string) | undefined**): void +// | subtract(a: number, b: number, c?: () => string, d?: () => string, e?: () => string, **f?: () => string**): void // | This is subtract function // | ---------------------------------------------------------------------- // /** this is square function @@ -878,7 +878,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "multiply(a: number, b: number, c?: number | undefined, d?: any, e?: any): void", + "label": "multiply(a: number, b: number, c?: number, d?: any, e?: any): void", "documentation": { "kind": "markdown", "value": "This is multiplication function" @@ -895,7 +895,7 @@ not aligned text about parameter will eat only one space "label": "b: number" }, { - "label": "c?: number | undefined" + "label": "c?: number" }, { "label": "d?: any" @@ -927,7 +927,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "multiply(a: number, b: number, c?: number | undefined, d?: any, e?: any): void", + "label": "multiply(a: number, b: number, c?: number, d?: any, e?: any): void", "documentation": { "kind": "markdown", "value": "This is multiplication function" @@ -944,7 +944,7 @@ not aligned text about parameter will eat only one space "label": "b: number" }, { - "label": "c?: number | undefined" + "label": "c?: number" }, { "label": "d?: any" @@ -976,7 +976,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "multiply(a: number, b: number, c?: number | undefined, d?: any, e?: any): void", + "label": "multiply(a: number, b: number, c?: number, d?: any, e?: any): void", "documentation": { "kind": "markdown", "value": "This is multiplication function" @@ -993,7 +993,7 @@ not aligned text about parameter will eat only one space "label": "b: number" }, { - "label": "c?: number | undefined" + "label": "c?: number" }, { "label": "d?: any" @@ -1025,7 +1025,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "multiply(a: number, b: number, c?: number | undefined, d?: any, e?: any): void", + "label": "multiply(a: number, b: number, c?: number, d?: any, e?: any): void", "documentation": { "kind": "markdown", "value": "This is multiplication function" @@ -1042,7 +1042,7 @@ not aligned text about parameter will eat only one space "label": "b: number" }, { - "label": "c?: number | undefined" + "label": "c?: number" }, { "label": "d?: any" @@ -1074,7 +1074,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "multiply(a: number, b: number, c?: number | undefined, d?: any, e?: any): void", + "label": "multiply(a: number, b: number, c?: number, d?: any, e?: any): void", "documentation": { "kind": "markdown", "value": "This is multiplication function" @@ -1091,7 +1091,7 @@ not aligned text about parameter will eat only one space "label": "b: number" }, { - "label": "c?: number | undefined" + "label": "c?: number" }, { "label": "d?: any" @@ -1215,7 +1215,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void", + "label": "subtract(a: number, b: number, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void", "documentation": { "kind": "markdown", "value": "This is subtract function" @@ -1232,28 +1232,28 @@ not aligned text about parameter will eat only one space } }, { - "label": "c?: (() => string) | undefined", + "label": "c?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param c\n" } }, { - "label": "d?: (() => string) | undefined", + "label": "d?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param d\n" } }, { - "label": "e?: (() => string) | undefined", + "label": "e?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param e\n" } }, { - "label": "f?: (() => string) | undefined" + "label": "f?: () => string" } ], "activeParameter": 0 @@ -1275,7 +1275,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void", + "label": "subtract(a: number, b: number, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void", "documentation": { "kind": "markdown", "value": "This is subtract function" @@ -1292,28 +1292,28 @@ not aligned text about parameter will eat only one space } }, { - "label": "c?: (() => string) | undefined", + "label": "c?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param c\n" } }, { - "label": "d?: (() => string) | undefined", + "label": "d?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param d\n" } }, { - "label": "e?: (() => string) | undefined", + "label": "e?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param e\n" } }, { - "label": "f?: (() => string) | undefined" + "label": "f?: () => string" } ], "activeParameter": 1 @@ -1335,7 +1335,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void", + "label": "subtract(a: number, b: number, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void", "documentation": { "kind": "markdown", "value": "This is subtract function" @@ -1352,28 +1352,28 @@ not aligned text about parameter will eat only one space } }, { - "label": "c?: (() => string) | undefined", + "label": "c?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param c\n" } }, { - "label": "d?: (() => string) | undefined", + "label": "d?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param d\n" } }, { - "label": "e?: (() => string) | undefined", + "label": "e?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param e\n" } }, { - "label": "f?: (() => string) | undefined" + "label": "f?: () => string" } ], "activeParameter": 2 @@ -1395,7 +1395,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void", + "label": "subtract(a: number, b: number, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void", "documentation": { "kind": "markdown", "value": "This is subtract function" @@ -1412,28 +1412,28 @@ not aligned text about parameter will eat only one space } }, { - "label": "c?: (() => string) | undefined", + "label": "c?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param c\n" } }, { - "label": "d?: (() => string) | undefined", + "label": "d?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param d\n" } }, { - "label": "e?: (() => string) | undefined", + "label": "e?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param e\n" } }, { - "label": "f?: (() => string) | undefined" + "label": "f?: () => string" } ], "activeParameter": 3 @@ -1455,7 +1455,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void", + "label": "subtract(a: number, b: number, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void", "documentation": { "kind": "markdown", "value": "This is subtract function" @@ -1472,28 +1472,28 @@ not aligned text about parameter will eat only one space } }, { - "label": "c?: (() => string) | undefined", + "label": "c?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param c\n" } }, { - "label": "d?: (() => string) | undefined", + "label": "d?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param d\n" } }, { - "label": "e?: (() => string) | undefined", + "label": "e?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param e\n" } }, { - "label": "f?: (() => string) | undefined" + "label": "f?: () => string" } ], "activeParameter": 4 @@ -1515,7 +1515,7 @@ not aligned text about parameter will eat only one space "item": { "signatures": [ { - "label": "subtract(a: number, b: number, c?: (() => string) | undefined, d?: (() => string) | undefined, e?: (() => string) | undefined, f?: (() => string) | undefined): void", + "label": "subtract(a: number, b: number, c?: () => string, d?: () => string, e?: () => string, f?: () => string): void", "documentation": { "kind": "markdown", "value": "This is subtract function" @@ -1532,28 +1532,28 @@ not aligned text about parameter will eat only one space } }, { - "label": "c?: (() => string) | undefined", + "label": "c?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param c\n" } }, { - "label": "d?: (() => string) | undefined", + "label": "d?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param d\n" } }, { - "label": "e?: (() => string) | undefined", + "label": "e?: () => string", "documentation": { "kind": "markdown", "value": "this is optional param e\n" } }, { - "label": "f?: (() => string) | undefined" + "label": "f?: () => string" } ], "activeParameter": 5 diff --git a/testdata/baselines/reference/fourslash/signatureHelp/signatureHelpJSDocCallbackTag.baseline b/testdata/baselines/reference/fourslash/signatureHelp/signatureHelpJSDocCallbackTag.baseline index 335bb0ee732..2a865e60b66 100644 --- a/testdata/baselines/reference/fourslash/signatureHelp/signatureHelpJSDocCallbackTag.baseline +++ b/testdata/baselines/reference/fourslash/signatureHelp/signatureHelpJSDocCallbackTag.baseline @@ -24,19 +24,19 @@ // t("!", 12, false); // ^ // | ---------------------------------------------------------------------- -// | t(**eventName: string**, eventName2: string | number, eventName3: any): number +// | t(**eventName: string**, eventName2: number | string, eventName3: any): number // | - `eventName: string`: - So many words // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | t(eventName: string, **eventName2: string | number**, eventName3: any): number -// | - `eventName2: string | number`: - Silence is golden +// | t(eventName: string, **eventName2: number | string**, eventName3: any): number +// | - `eventName2: number | string`: - Silence is golden // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | t(eventName: string, eventName2: string | number, **eventName3: any**): number +// | t(eventName: string, eventName2: number | string, **eventName3: any**): number // | - `eventName3: any`: - Osterreich mos def // | ---------------------------------------------------------------------- @@ -54,7 +54,7 @@ "item": { "signatures": [ { - "label": "t(eventName: string, eventName2: string | number, eventName3: any): number", + "label": "t(eventName: string, eventName2: number | string, eventName3: any): number", "parameters": [ { "label": "eventName: string", @@ -64,7 +64,7 @@ } }, { - "label": "eventName2: string | number", + "label": "eventName2: number | string", "documentation": { "kind": "markdown", "value": "- Silence is golden\n" @@ -97,7 +97,7 @@ "item": { "signatures": [ { - "label": "t(eventName: string, eventName2: string | number, eventName3: any): number", + "label": "t(eventName: string, eventName2: number | string, eventName3: any): number", "parameters": [ { "label": "eventName: string", @@ -107,7 +107,7 @@ } }, { - "label": "eventName2: string | number", + "label": "eventName2: number | string", "documentation": { "kind": "markdown", "value": "- Silence is golden\n" @@ -140,7 +140,7 @@ "item": { "signatures": [ { - "label": "t(eventName: string, eventName2: string | number, eventName3: any): number", + "label": "t(eventName: string, eventName2: number | string, eventName3: any): number", "parameters": [ { "label": "eventName: string", @@ -150,7 +150,7 @@ } }, { - "label": "eventName2: string | number", + "label": "eventName2: number | string", "documentation": { "kind": "markdown", "value": "- Silence is golden\n" diff --git a/testdata/baselines/reference/fourslash/signatureHelp/signatureHelp_unionType.baseline b/testdata/baselines/reference/fourslash/signatureHelp/signatureHelp_unionType.baseline index 859efc0d2aa..de46967af36 100644 --- a/testdata/baselines/reference/fourslash/signatureHelp/signatureHelp_unionType.baseline +++ b/testdata/baselines/reference/fourslash/signatureHelp/signatureHelp_unionType.baseline @@ -12,7 +12,7 @@ // a(() => { // ^ // | ---------------------------------------------------------------------- -// | a(**fn?: ((x: string) => string) | ((y: number) => number) | undefined**): void +// | a(**fn?: ((x: string) => string) | ((y: number) => number)**): void // | ---------------------------------------------------------------------- // return undefined; // }); @@ -42,10 +42,10 @@ "item": { "signatures": [ { - "label": "a(fn?: ((x: string) => string) | ((y: number) => number) | undefined): void", + "label": "a(fn?: ((x: string) => string) | ((y: number) => number)): void", "parameters": [ { - "label": "fn?: ((x: string) => string) | ((y: number) => number) | undefined" + "label": "fn?: ((x: string) => string) | ((y: number) => number)" } ], "activeParameter": 0 diff --git a/testdata/baselines/reference/submodule/compiler/abstractPropertyInConstructor.types b/testdata/baselines/reference/submodule/compiler/abstractPropertyInConstructor.types index b9fcc27601c..79952bea0f2 100644 --- a/testdata/baselines/reference/submodule/compiler/abstractPropertyInConstructor.types +++ b/testdata/baselines/reference/submodule/compiler/abstractPropertyInConstructor.types @@ -14,7 +14,7 @@ abstract class AbstractClass { >this : this >method : (num: number) => void >parseInt(str) : number ->parseInt : (string: string, radix?: number | undefined) => number +>parseInt : (string: string, radix?: number) => number >str : string let val = this.prop.toLowerCase(); diff --git a/testdata/baselines/reference/submodule/compiler/abstractPropertyInConstructor.types.diff b/testdata/baselines/reference/submodule/compiler/abstractPropertyInConstructor.types.diff deleted file mode 100644 index 596c1224102..00000000000 --- a/testdata/baselines/reference/submodule/compiler/abstractPropertyInConstructor.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.abstractPropertyInConstructor.types -+++ new.abstractPropertyInConstructor.types -@@= skipped -13, +13 lines =@@ - >this : this - >method : (num: number) => void - >parseInt(str) : number -->parseInt : (string: string, radix?: number) => number -+>parseInt : (string: string, radix?: number | undefined) => number - >str : string - - let val = this.prop.toLowerCase(); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/acceptSymbolAsWeakType.types b/testdata/baselines/reference/submodule/compiler/acceptSymbolAsWeakType.types index de1dfb95d8e..851a2d8e28c 100644 --- a/testdata/baselines/reference/submodule/compiler/acceptSymbolAsWeakType.types +++ b/testdata/baselines/reference/submodule/compiler/acceptSymbolAsWeakType.types @@ -93,9 +93,9 @@ const f = new FinalizationRegistry(() => {}); f.register(s, null); >f.register(s, null) : void ->f.register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey | undefined) => void +>f.register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void >f : FinalizationRegistry ->register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey | undefined) => void +>register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void >s : symbol f.unregister(s); diff --git a/testdata/baselines/reference/submodule/compiler/acceptSymbolAsWeakType.types.diff b/testdata/baselines/reference/submodule/compiler/acceptSymbolAsWeakType.types.diff deleted file mode 100644 index b32c690df5c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/acceptSymbolAsWeakType.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.acceptSymbolAsWeakType.types -+++ new.acceptSymbolAsWeakType.types -@@= skipped -92, +92 lines =@@ - - f.register(s, null); - >f.register(s, null) : void -->f.register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void -+>f.register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey | undefined) => void - >f : FinalizationRegistry -->register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void -+>register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey | undefined) => void - >s : symbol - - f.unregister(s); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/aliasInstantiationExpressionGenericIntersectionNoCrash2.types b/testdata/baselines/reference/submodule/compiler/aliasInstantiationExpressionGenericIntersectionNoCrash2.types index 40883c77cab..8ddaf31d491 100644 --- a/testdata/baselines/reference/submodule/compiler/aliasInstantiationExpressionGenericIntersectionNoCrash2.types +++ b/testdata/baselines/reference/submodule/compiler/aliasInstantiationExpressionGenericIntersectionNoCrash2.types @@ -13,11 +13,11 @@ declare function fn(): T; type ClassAlias = typeof Class; ->ClassAlias : { new (): Class; prototype: Class; } +>ClassAlias : typeof Class >Class : typeof Class type FnAlias = typeof fn; ->FnAlias : () => T +>FnAlias : typeof fn >fn : () => T_1 type Wat = ClassAlias & FnAlias; diff --git a/testdata/baselines/reference/submodule/compiler/aliasInstantiationExpressionGenericIntersectionNoCrash2.types.diff b/testdata/baselines/reference/submodule/compiler/aliasInstantiationExpressionGenericIntersectionNoCrash2.types.diff deleted file mode 100644 index 26660b9c94b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/aliasInstantiationExpressionGenericIntersectionNoCrash2.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.aliasInstantiationExpressionGenericIntersectionNoCrash2.types -+++ new.aliasInstantiationExpressionGenericIntersectionNoCrash2.types -@@= skipped -12, +12 lines =@@ - - - type ClassAlias = typeof Class; -->ClassAlias : typeof Class -+>ClassAlias : { new (): Class; prototype: Class; } - >Class : typeof Class - - type FnAlias = typeof fn; -->FnAlias : typeof fn -+>FnAlias : () => T - >fn : () => T_1 - - type Wat = ClassAlias & FnAlias; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/aliasOnMergedModuleInterface.types b/testdata/baselines/reference/submodule/compiler/aliasOnMergedModuleInterface.types index 6edbbd7168e..5b9aae57462 100644 --- a/testdata/baselines/reference/submodule/compiler/aliasOnMergedModuleInterface.types +++ b/testdata/baselines/reference/submodule/compiler/aliasOnMergedModuleInterface.types @@ -34,7 +34,7 @@ declare module "foo" } interface B { bar(name: string): B.A; ->bar : (name: string) => import("foo").A +>bar : (name: string) => B.A >name : string >B : any } diff --git a/testdata/baselines/reference/submodule/compiler/aliasOnMergedModuleInterface.types.diff b/testdata/baselines/reference/submodule/compiler/aliasOnMergedModuleInterface.types.diff deleted file mode 100644 index 595cd4b807c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/aliasOnMergedModuleInterface.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.aliasOnMergedModuleInterface.types -+++ new.aliasOnMergedModuleInterface.types -@@= skipped -33, +33 lines =@@ - } - interface B { - bar(name: string): B.A; -->bar : (name: string) => B.A -+>bar : (name: string) => import("foo").A - >name : string - >B : any - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/anonClassDeclarationEmitIsAnon.types b/testdata/baselines/reference/submodule/compiler/anonClassDeclarationEmitIsAnon.types index a33663daf9c..ecf75ec0684 100644 --- a/testdata/baselines/reference/submodule/compiler/anonClassDeclarationEmitIsAnon.types +++ b/testdata/baselines/reference/submodule/compiler/anonClassDeclarationEmitIsAnon.types @@ -23,7 +23,7 @@ export type Constructor = new (...args: any[]) => T; >args : any[] export function Timestamped(Base: TBase) { ->Timestamped : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase +>Timestamped : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase >Base : TBase return class extends Base { @@ -43,7 +43,7 @@ export function Timestamped(Base: TBase) { === index.ts === import { wrapClass, Timestamped } from "./wrapClass"; >wrapClass : (param: any) => typeof Wrapped ->Timestamped : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase +>Timestamped : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase export default wrapClass(0); >wrapClass(0) : typeof Wrapped @@ -63,7 +63,7 @@ export class User { export class TimestampedUser extends Timestamped(User) { >TimestampedUser : TimestampedUser >Timestamped(User) : Timestamped.(Anonymous class) & User ->Timestamped : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase +>Timestamped : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase >User : typeof User constructor() { diff --git a/testdata/baselines/reference/submodule/compiler/anonClassDeclarationEmitIsAnon.types.diff b/testdata/baselines/reference/submodule/compiler/anonClassDeclarationEmitIsAnon.types.diff index a1aa287bdeb..b63b6eaf628 100644 --- a/testdata/baselines/reference/submodule/compiler/anonClassDeclarationEmitIsAnon.types.diff +++ b/testdata/baselines/reference/submodule/compiler/anonClassDeclarationEmitIsAnon.types.diff @@ -5,7 +5,7 @@ export function Timestamped(Base: TBase) { ->Timestamped : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase -+>Timestamped : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase ++>Timestamped : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase >Base : TBase return class extends Base { @@ -19,7 +19,7 @@ import { wrapClass, Timestamped } from "./wrapClass"; >wrapClass : (param: any) => typeof Wrapped ->Timestamped : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase -+>Timestamped : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase ++>Timestamped : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase export default wrapClass(0); >wrapClass(0) : typeof Wrapped @@ -30,7 +30,7 @@ ->Timestamped(User) : Timestamped.(Anonymous class) & User ->Timestamped : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase +>Timestamped(User) : Timestamped.(Anonymous class) & User -+>Timestamped : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase ++>Timestamped : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase >User : typeof User constructor() { diff --git a/testdata/baselines/reference/submodule/compiler/anonterface.types b/testdata/baselines/reference/submodule/compiler/anonterface.types index 9d50569455b..afdbbe5389d 100644 --- a/testdata/baselines/reference/submodule/compiler/anonterface.types +++ b/testdata/baselines/reference/submodule/compiler/anonterface.types @@ -8,7 +8,7 @@ namespace M { >C : C m(fn:{ (n:number):string; },n2:number):string { ->m : (fn: (n: number) => string, n2: number) => string +>m : (fn: { (n: number): string; }, n2: number) => string >fn : (n: number) => string >n : number >n2 : number @@ -30,9 +30,9 @@ var c=new M.C(); c.m(function(n) { return "hello: "+n; },18); >c.m(function(n) { return "hello: "+n; },18) : string ->c.m : (fn: (n: number) => string, n2: number) => string +>c.m : (fn: { (n: number): string; }, n2: number) => string >c : M.C ->m : (fn: (n: number) => string, n2: number) => string +>m : (fn: { (n: number): string; }, n2: number) => string >function(n) { return "hello: "+n; } : (n: number) => string >n : number >"hello: "+n : string diff --git a/testdata/baselines/reference/submodule/compiler/anonterface.types.diff b/testdata/baselines/reference/submodule/compiler/anonterface.types.diff deleted file mode 100644 index 5b447ce17f3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/anonterface.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.anonterface.types -+++ new.anonterface.types -@@= skipped -7, +7 lines =@@ - >C : C - - m(fn:{ (n:number):string; },n2:number):string { -->m : (fn: { (n: number): string; }, n2: number) => string -+>m : (fn: (n: number) => string, n2: number) => string - >fn : (n: number) => string - >n : number - >n2 : number -@@= skipped -22, +22 lines =@@ - - c.m(function(n) { return "hello: "+n; },18); - >c.m(function(n) { return "hello: "+n; },18) : string -->c.m : (fn: { (n: number): string; }, n2: number) => string -+>c.m : (fn: (n: number) => string, n2: number) => string - >c : M.C -->m : (fn: { (n: number): string; }, n2: number) => string -+>m : (fn: (n: number) => string, n2: number) => string - >function(n) { return "hello: "+n; } : (n: number) => string - >n : number - >"hello: "+n : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arguments.types b/testdata/baselines/reference/submodule/compiler/arguments.types index fc2fd1d5080..073b811d771 100644 --- a/testdata/baselines/reference/submodule/compiler/arguments.types +++ b/testdata/baselines/reference/submodule/compiler/arguments.types @@ -25,12 +25,12 @@ function f() { interface I { method(args: typeof arguments): void; ->method : (args: any) => void +>method : (args: typeof arguments) => void >args : any >arguments : any fn: (args: typeof arguments) => void; ->fn : (args: any) => void +>fn : (args: typeof arguments) => void >args : any >arguments : any @@ -43,7 +43,7 @@ interface I { >arguments : any construct: new (args: typeof arguments) => void; ->construct : new (args: any) => void +>construct : new (args: typeof arguments) => void >args : any >arguments : any } diff --git a/testdata/baselines/reference/submodule/compiler/arguments.types.diff b/testdata/baselines/reference/submodule/compiler/arguments.types.diff deleted file mode 100644 index df36c5af432..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arguments.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.arguments.types -+++ new.arguments.types -@@= skipped -24, +24 lines =@@ - - interface I { - method(args: typeof arguments): void; -->method : (args: typeof arguments) => void -+>method : (args: any) => void - >args : any - >arguments : any - - fn: (args: typeof arguments) => void; -->fn : (args: typeof arguments) => void -+>fn : (args: any) => void - >args : any - >arguments : any - -@@= skipped -18, +18 lines =@@ - >arguments : any - - construct: new (args: typeof arguments) => void; -->construct : new (args: typeof arguments) => void -+>construct : new (args: any) => void - >args : any - >arguments : any - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types b/testdata/baselines/reference/submodule/compiler/argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types index c29b02354c5..ede507ae296 100644 --- a/testdata/baselines/reference/submodule/compiler/argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types +++ b/testdata/baselines/reference/submodule/compiler/argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types @@ -2,8 +2,8 @@ === /a.js === const a = () => { ->a : () => { arguments: any[]; } ->() => { return { arguments: [], };} : () => { arguments: any[]; } +>a : () => { arguments: undefined[]; } +>() => { return { arguments: [], };} : () => { arguments: undefined[]; } return { >{ arguments: [], } : { arguments: undefined[]; } diff --git a/testdata/baselines/reference/submodule/compiler/argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types.diff b/testdata/baselines/reference/submodule/compiler/argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types.diff new file mode 100644 index 00000000000..312c8f2384a --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types.diff @@ -0,0 +1,13 @@ +--- old.argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types ++++ new.argumentsReferenceInObjectLiteral_Js(alwaysstrict=true).types +@@= skipped -1, +1 lines =@@ + + === /a.js === + const a = () => { +->a : () => { arguments: any[]; } +->() => { return { arguments: [], };} : () => { arguments: any[]; } ++>a : () => { arguments: undefined[]; } ++>() => { return { arguments: [], };} : () => { arguments: undefined[]; } + + return { + >{ arguments: [], } : { arguments: undefined[]; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arrayBestCommonTypes.types b/testdata/baselines/reference/submodule/compiler/arrayBestCommonTypes.types index 54dbe445584..9b2223a63fe 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayBestCommonTypes.types +++ b/testdata/baselines/reference/submodule/compiler/arrayBestCommonTypes.types @@ -20,22 +20,22 @@ namespace EmptyTypes { >f : f public voidIfAny(x: boolean, y?: boolean): number; ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : boolean >y : boolean | undefined public voidIfAny(x: string, y?: boolean): number; ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : string >y : boolean | undefined public voidIfAny(x: number, y?: boolean): number; ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : number >y : boolean | undefined public voidIfAny(x: any, y = false): any { return null; } ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : any >y : boolean >false : false @@ -47,9 +47,9 @@ namespace EmptyTypes { >(this.voidIfAny([4, 2][0])) : number >(this.voidIfAny([4, 2][0])) : number >this.voidIfAny([4, 2][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2][0] : number >[4, 2] : number[] >4 : 4 @@ -60,9 +60,9 @@ namespace EmptyTypes { >(this.voidIfAny([4, 2, undefined][0])) : number >(this.voidIfAny([4, 2, undefined][0])) : number >this.voidIfAny([4, 2, undefined][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2, undefined][0] : number | undefined >[4, 2, undefined] : (number | undefined)[] >4 : 4 @@ -74,9 +74,9 @@ namespace EmptyTypes { >(this.voidIfAny([undefined, 2, 4][0])) : number >(this.voidIfAny([undefined, 2, 4][0])) : number >this.voidIfAny([undefined, 2, 4][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, 2, 4][0] : number | undefined >[undefined, 2, 4] : (number | undefined)[] >undefined : undefined @@ -88,9 +88,9 @@ namespace EmptyTypes { >(this.voidIfAny([null, 2, 4][0])) : number >(this.voidIfAny([null, 2, 4][0])) : number >this.voidIfAny([null, 2, 4][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, 2, 4][0] : number | null >[null, 2, 4] : (number | null)[] >2 : 2 @@ -101,9 +101,9 @@ namespace EmptyTypes { >(this.voidIfAny([2, 4, null][0])) : number >(this.voidIfAny([2, 4, null][0])) : number >this.voidIfAny([2, 4, null][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[2, 4, null][0] : number | null >[2, 4, null] : (number | null)[] >2 : 2 @@ -114,9 +114,9 @@ namespace EmptyTypes { >(this.voidIfAny([undefined, 4, null][0])) : number >(this.voidIfAny([undefined, 4, null][0])) : number >this.voidIfAny([undefined, 4, null][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, 4, null][0] : number | null | undefined >[undefined, 4, null] : (number | null | undefined)[] >undefined : undefined @@ -127,9 +127,9 @@ namespace EmptyTypes { >(this.voidIfAny(['', "q"][0])) : number >(this.voidIfAny(['', "q"][0])) : number >this.voidIfAny(['', "q"][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q"][0] : string >['', "q"] : string[] >'' : "" @@ -140,9 +140,9 @@ namespace EmptyTypes { >(this.voidIfAny(['', "q", undefined][0])) : number >(this.voidIfAny(['', "q", undefined][0])) : number >this.voidIfAny(['', "q", undefined][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q", undefined][0] : string | undefined >['', "q", undefined] : (string | undefined)[] >'' : "" @@ -154,9 +154,9 @@ namespace EmptyTypes { >(this.voidIfAny([undefined, "q", ''][0])) : number >(this.voidIfAny([undefined, "q", ''][0])) : number >this.voidIfAny([undefined, "q", ''][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, "q", ''][0] : string | undefined >[undefined, "q", ''] : (string | undefined)[] >undefined : undefined @@ -168,9 +168,9 @@ namespace EmptyTypes { >(this.voidIfAny([null, "q", ''][0])) : number >(this.voidIfAny([null, "q", ''][0])) : number >this.voidIfAny([null, "q", ''][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, "q", ''][0] : string | null >[null, "q", ''] : (string | null)[] >"q" : "q" @@ -181,9 +181,9 @@ namespace EmptyTypes { >(this.voidIfAny(["q", '', null][0])) : number >(this.voidIfAny(["q", '', null][0])) : number >this.voidIfAny(["q", '', null][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >["q", '', null][0] : string | null >["q", '', null] : (string | null)[] >"q" : "q" @@ -194,9 +194,9 @@ namespace EmptyTypes { >(this.voidIfAny([undefined, '', null][0])) : number >(this.voidIfAny([undefined, '', null][0])) : number >this.voidIfAny([undefined, '', null][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, '', null][0] : string | null | undefined >[undefined, '', null] : (string | null | undefined)[] >undefined : undefined @@ -207,9 +207,9 @@ namespace EmptyTypes { >(this.voidIfAny([[3, 4], [null]][0][0])) : number >(this.voidIfAny([[3, 4], [null]][0][0])) : number >this.voidIfAny([[3, 4], [null]][0][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[[3, 4], [null]][0][0] : number | null >[[3, 4], [null]][0] : null[] | number[] >[[3, 4], [null]] : (null[] | number[])[] @@ -406,22 +406,22 @@ namespace NonEmptyTypes { >f : f public voidIfAny(x: boolean, y?: boolean): number; ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : boolean >y : boolean | undefined public voidIfAny(x: string, y?: boolean): number; ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : string >y : boolean | undefined public voidIfAny(x: number, y?: boolean): number; ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : number >y : boolean | undefined public voidIfAny(x: any, y = false): any { return null; } ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : any >y : boolean >false : false @@ -433,9 +433,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([4, 2][0])) : number >(this.voidIfAny([4, 2][0])) : number >this.voidIfAny([4, 2][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2][0] : number >[4, 2] : number[] >4 : 4 @@ -446,9 +446,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([4, 2, undefined][0])) : number >(this.voidIfAny([4, 2, undefined][0])) : number >this.voidIfAny([4, 2, undefined][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2, undefined][0] : number | undefined >[4, 2, undefined] : (number | undefined)[] >4 : 4 @@ -460,9 +460,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([undefined, 2, 4][0])) : number >(this.voidIfAny([undefined, 2, 4][0])) : number >this.voidIfAny([undefined, 2, 4][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, 2, 4][0] : number | undefined >[undefined, 2, 4] : (number | undefined)[] >undefined : undefined @@ -474,9 +474,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([null, 2, 4][0])) : number >(this.voidIfAny([null, 2, 4][0])) : number >this.voidIfAny([null, 2, 4][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, 2, 4][0] : number | null >[null, 2, 4] : (number | null)[] >2 : 2 @@ -487,9 +487,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([2, 4, null][0])) : number >(this.voidIfAny([2, 4, null][0])) : number >this.voidIfAny([2, 4, null][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[2, 4, null][0] : number | null >[2, 4, null] : (number | null)[] >2 : 2 @@ -500,9 +500,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([undefined, 4, null][0])) : number >(this.voidIfAny([undefined, 4, null][0])) : number >this.voidIfAny([undefined, 4, null][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, 4, null][0] : number | null | undefined >[undefined, 4, null] : (number | null | undefined)[] >undefined : undefined @@ -513,9 +513,9 @@ namespace NonEmptyTypes { >(this.voidIfAny(['', "q"][0])) : number >(this.voidIfAny(['', "q"][0])) : number >this.voidIfAny(['', "q"][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q"][0] : string >['', "q"] : string[] >'' : "" @@ -526,9 +526,9 @@ namespace NonEmptyTypes { >(this.voidIfAny(['', "q", undefined][0])) : number >(this.voidIfAny(['', "q", undefined][0])) : number >this.voidIfAny(['', "q", undefined][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q", undefined][0] : string | undefined >['', "q", undefined] : (string | undefined)[] >'' : "" @@ -540,9 +540,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([undefined, "q", ''][0])) : number >(this.voidIfAny([undefined, "q", ''][0])) : number >this.voidIfAny([undefined, "q", ''][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, "q", ''][0] : string | undefined >[undefined, "q", ''] : (string | undefined)[] >undefined : undefined @@ -554,9 +554,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([null, "q", ''][0])) : number >(this.voidIfAny([null, "q", ''][0])) : number >this.voidIfAny([null, "q", ''][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, "q", ''][0] : string | null >[null, "q", ''] : (string | null)[] >"q" : "q" @@ -567,9 +567,9 @@ namespace NonEmptyTypes { >(this.voidIfAny(["q", '', null][0])) : number >(this.voidIfAny(["q", '', null][0])) : number >this.voidIfAny(["q", '', null][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >["q", '', null][0] : string | null >["q", '', null] : (string | null)[] >"q" : "q" @@ -580,9 +580,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([undefined, '', null][0])) : number >(this.voidIfAny([undefined, '', null][0])) : number >this.voidIfAny([undefined, '', null][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[undefined, '', null][0] : string | null | undefined >[undefined, '', null] : (string | null | undefined)[] >undefined : undefined @@ -593,9 +593,9 @@ namespace NonEmptyTypes { >(this.voidIfAny([[3, 4], [null]][0][0])) : number >(this.voidIfAny([[3, 4], [null]][0][0])) : number >this.voidIfAny([[3, 4], [null]][0][0]) : number ->this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >this : this ->voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } +>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[[3, 4], [null]][0][0] : number | null >[[3, 4], [null]][0] : null[] | number[] >[[3, 4], [null]] : (null[] | number[])[] diff --git a/testdata/baselines/reference/submodule/compiler/arrayBestCommonTypes.types.diff b/testdata/baselines/reference/submodule/compiler/arrayBestCommonTypes.types.diff deleted file mode 100644 index 6abb13ed0da..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayBestCommonTypes.types.diff +++ /dev/null @@ -1,368 +0,0 @@ ---- old.arrayBestCommonTypes.types -+++ new.arrayBestCommonTypes.types -@@= skipped -19, +19 lines =@@ - >f : f - - public voidIfAny(x: boolean, y?: boolean): number; -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >x : boolean - >y : boolean | undefined - - public voidIfAny(x: string, y?: boolean): number; -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >x : string - >y : boolean | undefined - - public voidIfAny(x: number, y?: boolean): number; -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >x : number - >y : boolean | undefined - - public voidIfAny(x: any, y = false): any { return null; } -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >x : any - >y : boolean - >false : false -@@= skipped -27, +27 lines =@@ - >(this.voidIfAny([4, 2][0])) : number - >(this.voidIfAny([4, 2][0])) : number - >this.voidIfAny([4, 2][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[4, 2][0] : number - >[4, 2] : number[] - >4 : 4 -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([4, 2, undefined][0])) : number - >(this.voidIfAny([4, 2, undefined][0])) : number - >this.voidIfAny([4, 2, undefined][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[4, 2, undefined][0] : number | undefined - >[4, 2, undefined] : (number | undefined)[] - >4 : 4 -@@= skipped -14, +14 lines =@@ - >(this.voidIfAny([undefined, 2, 4][0])) : number - >(this.voidIfAny([undefined, 2, 4][0])) : number - >this.voidIfAny([undefined, 2, 4][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[undefined, 2, 4][0] : number | undefined - >[undefined, 2, 4] : (number | undefined)[] - >undefined : undefined -@@= skipped -14, +14 lines =@@ - >(this.voidIfAny([null, 2, 4][0])) : number - >(this.voidIfAny([null, 2, 4][0])) : number - >this.voidIfAny([null, 2, 4][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[null, 2, 4][0] : number | null - >[null, 2, 4] : (number | null)[] - >2 : 2 -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([2, 4, null][0])) : number - >(this.voidIfAny([2, 4, null][0])) : number - >this.voidIfAny([2, 4, null][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[2, 4, null][0] : number | null - >[2, 4, null] : (number | null)[] - >2 : 2 -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([undefined, 4, null][0])) : number - >(this.voidIfAny([undefined, 4, null][0])) : number - >this.voidIfAny([undefined, 4, null][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[undefined, 4, null][0] : number | null | undefined - >[undefined, 4, null] : (number | null | undefined)[] - >undefined : undefined -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny(['', "q"][0])) : number - >(this.voidIfAny(['', "q"][0])) : number - >this.voidIfAny(['', "q"][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >['', "q"][0] : string - >['', "q"] : string[] - >'' : "" -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny(['', "q", undefined][0])) : number - >(this.voidIfAny(['', "q", undefined][0])) : number - >this.voidIfAny(['', "q", undefined][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >['', "q", undefined][0] : string | undefined - >['', "q", undefined] : (string | undefined)[] - >'' : "" -@@= skipped -14, +14 lines =@@ - >(this.voidIfAny([undefined, "q", ''][0])) : number - >(this.voidIfAny([undefined, "q", ''][0])) : number - >this.voidIfAny([undefined, "q", ''][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[undefined, "q", ''][0] : string | undefined - >[undefined, "q", ''] : (string | undefined)[] - >undefined : undefined -@@= skipped -14, +14 lines =@@ - >(this.voidIfAny([null, "q", ''][0])) : number - >(this.voidIfAny([null, "q", ''][0])) : number - >this.voidIfAny([null, "q", ''][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[null, "q", ''][0] : string | null - >[null, "q", ''] : (string | null)[] - >"q" : "q" -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny(["q", '', null][0])) : number - >(this.voidIfAny(["q", '', null][0])) : number - >this.voidIfAny(["q", '', null][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >["q", '', null][0] : string | null - >["q", '', null] : (string | null)[] - >"q" : "q" -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([undefined, '', null][0])) : number - >(this.voidIfAny([undefined, '', null][0])) : number - >this.voidIfAny([undefined, '', null][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[undefined, '', null][0] : string | null | undefined - >[undefined, '', null] : (string | null | undefined)[] - >undefined : undefined -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([[3, 4], [null]][0][0])) : number - >(this.voidIfAny([[3, 4], [null]][0][0])) : number - >this.voidIfAny([[3, 4], [null]][0][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[[3, 4], [null]][0][0] : number | null - >[[3, 4], [null]][0] : null[] | number[] - >[[3, 4], [null]] : (null[] | number[])[] -@@= skipped -199, +199 lines =@@ - >f : f - - public voidIfAny(x: boolean, y?: boolean): number; -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >x : boolean - >y : boolean | undefined - - public voidIfAny(x: string, y?: boolean): number; -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >x : string - >y : boolean | undefined - - public voidIfAny(x: number, y?: boolean): number; -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >x : number - >y : boolean | undefined - - public voidIfAny(x: any, y = false): any { return null; } -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >x : any - >y : boolean - >false : false -@@= skipped -27, +27 lines =@@ - >(this.voidIfAny([4, 2][0])) : number - >(this.voidIfAny([4, 2][0])) : number - >this.voidIfAny([4, 2][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[4, 2][0] : number - >[4, 2] : number[] - >4 : 4 -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([4, 2, undefined][0])) : number - >(this.voidIfAny([4, 2, undefined][0])) : number - >this.voidIfAny([4, 2, undefined][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[4, 2, undefined][0] : number | undefined - >[4, 2, undefined] : (number | undefined)[] - >4 : 4 -@@= skipped -14, +14 lines =@@ - >(this.voidIfAny([undefined, 2, 4][0])) : number - >(this.voidIfAny([undefined, 2, 4][0])) : number - >this.voidIfAny([undefined, 2, 4][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[undefined, 2, 4][0] : number | undefined - >[undefined, 2, 4] : (number | undefined)[] - >undefined : undefined -@@= skipped -14, +14 lines =@@ - >(this.voidIfAny([null, 2, 4][0])) : number - >(this.voidIfAny([null, 2, 4][0])) : number - >this.voidIfAny([null, 2, 4][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[null, 2, 4][0] : number | null - >[null, 2, 4] : (number | null)[] - >2 : 2 -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([2, 4, null][0])) : number - >(this.voidIfAny([2, 4, null][0])) : number - >this.voidIfAny([2, 4, null][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[2, 4, null][0] : number | null - >[2, 4, null] : (number | null)[] - >2 : 2 -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([undefined, 4, null][0])) : number - >(this.voidIfAny([undefined, 4, null][0])) : number - >this.voidIfAny([undefined, 4, null][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[undefined, 4, null][0] : number | null | undefined - >[undefined, 4, null] : (number | null | undefined)[] - >undefined : undefined -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny(['', "q"][0])) : number - >(this.voidIfAny(['', "q"][0])) : number - >this.voidIfAny(['', "q"][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >['', "q"][0] : string - >['', "q"] : string[] - >'' : "" -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny(['', "q", undefined][0])) : number - >(this.voidIfAny(['', "q", undefined][0])) : number - >this.voidIfAny(['', "q", undefined][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >['', "q", undefined][0] : string | undefined - >['', "q", undefined] : (string | undefined)[] - >'' : "" -@@= skipped -14, +14 lines =@@ - >(this.voidIfAny([undefined, "q", ''][0])) : number - >(this.voidIfAny([undefined, "q", ''][0])) : number - >this.voidIfAny([undefined, "q", ''][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[undefined, "q", ''][0] : string | undefined - >[undefined, "q", ''] : (string | undefined)[] - >undefined : undefined -@@= skipped -14, +14 lines =@@ - >(this.voidIfAny([null, "q", ''][0])) : number - >(this.voidIfAny([null, "q", ''][0])) : number - >this.voidIfAny([null, "q", ''][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[null, "q", ''][0] : string | null - >[null, "q", ''] : (string | null)[] - >"q" : "q" -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny(["q", '', null][0])) : number - >(this.voidIfAny(["q", '', null][0])) : number - >this.voidIfAny(["q", '', null][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >["q", '', null][0] : string | null - >["q", '', null] : (string | null)[] - >"q" : "q" -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([undefined, '', null][0])) : number - >(this.voidIfAny([undefined, '', null][0])) : number - >this.voidIfAny([undefined, '', null][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[undefined, '', null][0] : string | null | undefined - >[undefined, '', null] : (string | null | undefined)[] - >undefined : undefined -@@= skipped -13, +13 lines =@@ - >(this.voidIfAny([[3, 4], [null]][0][0])) : number - >(this.voidIfAny([[3, 4], [null]][0][0])) : number - >this.voidIfAny([[3, 4], [null]][0][0]) : number -->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>this.voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >this : this -->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -+>voidIfAny : { (x: boolean, y?: boolean | undefined): number; (x: string, y?: boolean | undefined): number; (x: number, y?: boolean | undefined): number; } - >[[3, 4], [null]][0][0] : number | null - >[[3, 4], [null]][0] : null[] | number[] - >[[3, 4], [null]] : (null[] | number[])[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arrayConcat3.types b/testdata/baselines/reference/submodule/compiler/arrayConcat3.types index b98372dcdd3..d9bbe523140 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayConcat3.types +++ b/testdata/baselines/reference/submodule/compiler/arrayConcat3.types @@ -7,7 +7,7 @@ type Fn = (subj: U) => U >subj : U function doStuff(a: Array>, b: Array>) { ->doStuff : (a: Fn[], b: Fn[]) => void +>doStuff : (a: Array>, b: Array>) => void >a : Fn[] >b : Fn[] diff --git a/testdata/baselines/reference/submodule/compiler/arrayConcat3.types.diff b/testdata/baselines/reference/submodule/compiler/arrayConcat3.types.diff deleted file mode 100644 index 2d82657c95c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayConcat3.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.arrayConcat3.types -+++ new.arrayConcat3.types -@@= skipped -6, +6 lines =@@ - >subj : U - - function doStuff(a: Array>, b: Array>) { -->doStuff : (a: Array>, b: Array>) => void -+>doStuff : (a: Fn[], b: Fn[]) => void - >a : Fn[] - >b : Fn[] diff --git a/testdata/baselines/reference/submodule/compiler/arrayEvery.types b/testdata/baselines/reference/submodule/compiler/arrayEvery.types index 3e70f4510fa..eabec6c0843 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayEvery.types +++ b/testdata/baselines/reference/submodule/compiler/arrayEvery.types @@ -24,11 +24,11 @@ if (foo.every(isString)) { foo[0].slice(0); >foo[0].slice(0) : string ->foo[0].slice : (start?: number | undefined, end?: number | undefined) => string +>foo[0].slice : (start?: number, end?: number) => string >foo[0] : string >foo : string[] >0 : 0 ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string >0 : 0 } diff --git a/testdata/baselines/reference/submodule/compiler/arrayEvery.types.diff b/testdata/baselines/reference/submodule/compiler/arrayEvery.types.diff deleted file mode 100644 index 890e5f869c8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayEvery.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.arrayEvery.types -+++ new.arrayEvery.types -@@= skipped -23, +23 lines =@@ - - foo[0].slice(0); - >foo[0].slice(0) : string -->foo[0].slice : (start?: number, end?: number) => string -+>foo[0].slice : (start?: number | undefined, end?: number | undefined) => string - >foo[0] : string - >foo : string[] - >0 : 0 -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - >0 : 0 - } diff --git a/testdata/baselines/reference/submodule/compiler/arrayFakeFlatNoCrashInferenceDeclarations.types b/testdata/baselines/reference/submodule/compiler/arrayFakeFlatNoCrashInferenceDeclarations.types index c3310c58577..246b66ecfa4 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayFakeFlatNoCrashInferenceDeclarations.types +++ b/testdata/baselines/reference/submodule/compiler/arrayFakeFlatNoCrashInferenceDeclarations.types @@ -2,8 +2,8 @@ === arrayFakeFlatNoCrashInferenceDeclarations.ts === type BadFlatArray = {obj: { ->BadFlatArray : { done: Arr; 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)[] ? 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; }[Depth extends -1 ? "done" : "recur"] ->obj : { done: Arr; 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)[] ? 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; }[Depth extends -1 ? "done" : "recur"] +>BadFlatArray : { done: Arr; recur: Arr extends ReadonlyArray ? BadFlatArray : Arr; }[Depth extends -1 ? "done" : "recur"] +>obj : { done: Arr; recur: Arr extends ReadonlyArray ? BadFlatArray : Arr; }[Depth extends -1 ? "done" : "recur"] "done": Arr, >"done" : Arr @@ -21,7 +21,7 @@ type BadFlatArray = {obj: { >1 : 1 declare function flat( ->flat : (arr: A, depth?: D | undefined) => { done: A; recur: A 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)[] ? 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][D]]]]]]]]]]] 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][D]]]]]]]]]]] ? 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][D]]]]]]]]]] 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][D]]]]]]]]]] ? 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][D]]]]]]]]] 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][D]]]]]]]]] ? 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][D]]]]]]]] 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][D]]]]]]]] ? 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][D]]]]]]] 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][D]]]]]]] ? 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][D]]]]]] 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][D]]]]]] ? 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][D]]]]] 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][D]]]]] ? 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][D]]]] 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][D]]]] ? 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][D]]] 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][D]]] ? 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][D]] 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][D]] ? 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][D] 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][D] ? T_10 extends -1 ? "done" : "recur" : never : never] : A; }[D extends -1 ? "done" : "recur"][] +>flat : (arr: A, depth?: D) => BadFlatArray[] arr: A, >arr : A @@ -38,7 +38,7 @@ function foo(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 | undefined) => { done: A; recur: A 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)[] ? 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][D]]]]]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]] ? T_10 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][D] extends infer T_11 ? T_11 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D] ? T_11 extends -1 ? "done" : "recur" : never : never] : A; }[D extends -1 ? "done" : "recur"][] +>flat : (arr: A, depth?: D) => BadFlatArray[] >arr : T[] >depth : number } diff --git a/testdata/baselines/reference/submodule/compiler/arrayFakeFlatNoCrashInferenceDeclarations.types.diff b/testdata/baselines/reference/submodule/compiler/arrayFakeFlatNoCrashInferenceDeclarations.types.diff index 51f68f12056..13b25c2141c 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayFakeFlatNoCrashInferenceDeclarations.types.diff +++ b/testdata/baselines/reference/submodule/compiler/arrayFakeFlatNoCrashInferenceDeclarations.types.diff @@ -6,26 +6,8 @@ type BadFlatArray = {obj: { ->BadFlatArray : { done: Arr; recur: Arr extends ReadonlyArray ? BadFlatArray : Arr; }[Depth extends -1 ? "done" : "recur"] ->obj : { done: Arr; recur: Arr extends ReadonlyArray ? BadFlatArray : Arr; }[Depth extends -1 ? "done" : "recur"] -+>BadFlatArray : { done: Arr; 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)[] ? 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; }[Depth extends -1 ? "done" : "recur"] -+>obj : { done: Arr; 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)[] ? 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; }[Depth extends -1 ? "done" : "recur"] ++>BadFlatArray : { done: Arr; recur: Arr extends ReadonlyArray ? BadFlatArray : Arr; }[Depth extends -1 ? "done" : "recur"] ++>obj : { done: Arr; recur: Arr extends ReadonlyArray ? BadFlatArray : Arr; }[Depth extends -1 ? "done" : "recur"] "done": Arr, - >"done" : Arr -@@= skipped -19, +19 lines =@@ - >1 : 1 - - declare function flat( -->flat : (arr: A, depth?: D) => BadFlatArray[] -+>flat : (arr: A, depth?: D | undefined) => { done: A; recur: A 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)[] ? 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][D]]]]]]]]]]] 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][D]]]]]]]]]]] ? 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][D]]]]]]]]]] 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][D]]]]]]]]]] ? 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][D]]]]]]]]] 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][D]]]]]]]]] ? 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][D]]]]]]]] 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][D]]]]]]]] ? 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][D]]]]]]] 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][D]]]]]]] ? 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][D]]]]]] 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][D]]]]]] ? 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][D]]]]] 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][D]]]]] ? 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][D]]]] 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][D]]]] ? 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][D]]] 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][D]]] ? 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][D]] 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][D]] ? 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][D] 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][D] ? T_10 extends -1 ? "done" : "recur" : never : never] : A; }[D extends -1 ? "done" : "recur"][] - - arr: A, - >arr : A -@@= skipped -17, +17 lines =@@ - - 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: A, depth?: D | undefined) => { done: A; recur: A 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)[] ? 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][D]]]]]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]] ? 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]] 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][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]] ? T_10 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][D] extends infer T_11 ? T_11 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D] ? T_11 extends -1 ? "done" : "recur" : never : never] : A; }[D extends -1 ? "done" : "recur"][] - >arr : T[] - >depth : number - } \ No newline at end of file + >"done" : Arr \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arrayFlatMap.types b/testdata/baselines/reference/submodule/compiler/arrayFlatMap.types index 213ac6d03ff..4b64eefaf57 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayFlatMap.types +++ b/testdata/baselines/reference/submodule/compiler/arrayFlatMap.types @@ -14,7 +14,7 @@ array.flatMap((): ReadonlyArray => []); // ok >array.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] >array : number[] >flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] ->(): ReadonlyArray => [] : () => readonly number[] +>(): ReadonlyArray => [] : () => ReadonlyArray >[] : never[] readonlyArray.flatMap((): ReadonlyArray => []); // ok @@ -22,6 +22,6 @@ readonlyArray.flatMap((): ReadonlyArray => []); // ok >readonlyArray.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] >readonlyArray : readonly number[] >flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] ->(): ReadonlyArray => [] : () => readonly number[] +>(): ReadonlyArray => [] : () => ReadonlyArray >[] : never[] diff --git a/testdata/baselines/reference/submodule/compiler/arrayFlatMap.types.diff b/testdata/baselines/reference/submodule/compiler/arrayFlatMap.types.diff deleted file mode 100644 index 5d1b28c1591..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayFlatMap.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.arrayFlatMap.types -+++ new.arrayFlatMap.types -@@= skipped -13, +13 lines =@@ - >array.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] - >array : number[] - >flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] -->(): ReadonlyArray => [] : () => ReadonlyArray -+>(): ReadonlyArray => [] : () => readonly number[] - >[] : never[] - - readonlyArray.flatMap((): ReadonlyArray => []); // ok -@@= skipped -8, +8 lines =@@ - >readonlyArray.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] - >readonlyArray : readonly number[] - >flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] -->(): ReadonlyArray => [] : () => ReadonlyArray -+>(): ReadonlyArray => [] : () => readonly number[] - >[] : never[] diff --git a/testdata/baselines/reference/submodule/compiler/arrayFrom.types b/testdata/baselines/reference/submodule/compiler/arrayFrom.types index 057b454b3ad..a1c28053c33 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayFrom.types +++ b/testdata/baselines/reference/submodule/compiler/arrayFrom.types @@ -43,17 +43,17 @@ const inputASet = new Set(); const result1: A[] = Array.from(inputA); >result1 : A[] >Array.from(inputA) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputA : A[] const result2: A[] = Array.from(inputA.values()); >result2 : A[] >Array.from(inputA.values()) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputA.values() : ArrayIterator >inputA.values : () => ArrayIterator >inputA : A[] @@ -62,9 +62,9 @@ const result2: A[] = Array.from(inputA.values()); const result3: B[] = Array.from(inputA.values()); // expect error >result3 : B[] >Array.from(inputA.values()) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputA.values() : ArrayIterator >inputA.values : () => ArrayIterator >inputA : A[] @@ -73,9 +73,9 @@ const result3: B[] = Array.from(inputA.values()); // expect error const result4: A[] = Array.from(inputB, ({ b }): A => ({ a: b })); >result4 : A[] >Array.from(inputB, ({ b }): A => ({ a: b })) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputB : B[] >({ b }): A => ({ a: b }) : ({ b }: B) => A >b : string @@ -87,25 +87,25 @@ const result4: A[] = Array.from(inputB, ({ b }): A => ({ a: b })); const result5: A[] = Array.from(inputALike); >result5 : A[] >Array.from(inputALike) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputALike : ArrayLike const result6: B[] = Array.from(inputALike); // expect error >result6 : B[] >Array.from(inputALike) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputALike : ArrayLike const result7: B[] = Array.from(inputALike, ({ a }): B => ({ b: a })); >result7 : B[] >Array.from(inputALike, ({ a }): B => ({ b: a })) : B[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputALike : ArrayLike >({ a }): B => ({ b: a }) : ({ a }: A) => B >a : string @@ -117,17 +117,17 @@ const result7: B[] = Array.from(inputALike, ({ a }): B => ({ b: a })); const result8: A[] = Array.from(inputARand); >result8 : A[] >Array.from(inputARand) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputARand : ArrayLike | Iterable const result9: B[] = Array.from(inputARand, ({ a }): B => ({ b: a })); >result9 : B[] >Array.from(inputARand, ({ a }): B => ({ b: a })) : B[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputARand : ArrayLike | Iterable >({ a }): B => ({ b: a }) : ({ a }: A) => B >a : string @@ -139,18 +139,18 @@ const result9: B[] = Array.from(inputARand, ({ a }): B => ({ b: a })); const result10: A[] = Array.from(new Set()); >result10 : A[] >Array.from(new Set()) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >new Set() : Set >Set : SetConstructor const result11: B[] = Array.from(inputASet, ({ a }): B => ({ b: a })); >result11 : B[] >Array.from(inputASet, ({ a }): B => ({ b: a })) : B[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >inputASet : Set >({ a }): B => ({ b: a }) : ({ a }: A) => B >a : string diff --git a/testdata/baselines/reference/submodule/compiler/arrayFrom.types.diff b/testdata/baselines/reference/submodule/compiler/arrayFrom.types.diff deleted file mode 100644 index c265232681b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayFrom.types.diff +++ /dev/null @@ -1,125 +0,0 @@ ---- old.arrayFrom.types -+++ new.arrayFrom.types -@@= skipped -42, +42 lines =@@ - const result1: A[] = Array.from(inputA); - >result1 : A[] - >Array.from(inputA) : 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputA : A[] - - const result2: A[] = Array.from(inputA.values()); - >result2 : A[] - >Array.from(inputA.values()) : 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputA.values() : ArrayIterator - >inputA.values : () => ArrayIterator - >inputA : A[] -@@= skipped -19, +19 lines =@@ - const result3: B[] = Array.from(inputA.values()); // expect error - >result3 : B[] - >Array.from(inputA.values()) : 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputA.values() : ArrayIterator - >inputA.values : () => ArrayIterator - >inputA : A[] -@@= skipped -11, +11 lines =@@ - const result4: A[] = Array.from(inputB, ({ b }): A => ({ a: b })); - >result4 : A[] - >Array.from(inputB, ({ b }): A => ({ a: 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputB : B[] - >({ b }): A => ({ a: b }) : ({ b }: B) => A - >b : string -@@= skipped -14, +14 lines =@@ - const result5: A[] = Array.from(inputALike); - >result5 : A[] - >Array.from(inputALike) : 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputALike : ArrayLike - - const result6: B[] = Array.from(inputALike); // expect error - >result6 : B[] - >Array.from(inputALike) : 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputALike : ArrayLike - - const result7: B[] = Array.from(inputALike, ({ a }): B => ({ b: a })); - >result7 : B[] - >Array.from(inputALike, ({ a }): B => ({ b: a })) : B[] -->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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputALike : ArrayLike - >({ a }): B => ({ b: a }) : ({ a }: A) => B - >a : string -@@= skipped -30, +30 lines =@@ - const result8: A[] = Array.from(inputARand); - >result8 : A[] - >Array.from(inputARand) : 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputARand : ArrayLike | Iterable - - const result9: B[] = Array.from(inputARand, ({ a }): B => ({ b: a })); - >result9 : B[] - >Array.from(inputARand, ({ a }): B => ({ b: a })) : B[] -->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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputARand : ArrayLike | Iterable - >({ a }): B => ({ b: a }) : ({ a }: A) => B - >a : string -@@= skipped -22, +22 lines =@@ - const result10: A[] = Array.from(new Set()); - >result10 : A[] - >Array.from(new Set()) : 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >new Set() : Set - >Set : SetConstructor - - const result11: B[] = Array.from(inputASet, ({ a }): B => ({ b: a })); - >result11 : B[] - >Array.from(inputASet, ({ a }): B => ({ b: a })) : B[] -->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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >inputASet : Set - >({ a }): B => ({ b: a }) : ({ a }: A) => B - >a : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arrayFromAsync.types b/testdata/baselines/reference/submodule/compiler/arrayFromAsync.types index ab614676216..198529b28bc 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayFromAsync.types +++ b/testdata/baselines/reference/submodule/compiler/arrayFromAsync.types @@ -110,18 +110,18 @@ const sameArr1 = await Array.fromAsync(arrLike); >sameArr1 : number[] >await Array.fromAsync(arrLike) : number[] >Array.fromAsync(arrLike) : Promise ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >arrLike : { 0: Promise; 1: Promise; 2: Promise; 3: Promise; length: number; } const sameArr2 = await Array.fromAsync([Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)]); >sameArr2 : number[] >await Array.fromAsync([Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)]) : number[] >Array.fromAsync([Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)]) : Promise ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >[Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)] : Promise[] >Promise.resolve(0) : Promise >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } @@ -148,9 +148,9 @@ const sameArr3 = await Array.fromAsync(genPromises(4)); >sameArr3 : number[] >await Array.fromAsync(genPromises(4)) : number[] >Array.fromAsync(genPromises(4)) : Promise ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >genPromises(4) : Generator, void, unknown> >genPromises : (n: any) => Generator, void, unknown> >4 : 4 @@ -159,33 +159,33 @@ const sameArr4 = await Array.fromAsync(asyncGen(4)); >sameArr4 : number[] >await Array.fromAsync(asyncGen(4)) : number[] >Array.fromAsync(asyncGen(4)) : Promise ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >asyncGen(4) : AsyncGenerator >asyncGen : (n: any) => AsyncGenerator >4 : 4 function Data (n) {} ->Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } +>Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } >n : any Data.fromAsync = Array.fromAsync; ->Data.fromAsync = Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } ->Data.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } ->Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Data.fromAsync = Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Data.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } const sameArr5 = await Data.fromAsync(asyncGen(4)); >sameArr5 : number[] >await Data.fromAsync(asyncGen(4)) : number[] >Data.fromAsync(asyncGen(4)) : Promise ->Data.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } ->Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Data.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >asyncGen(4) : AsyncGenerator >asyncGen : (n: any) => AsyncGenerator >4 : 4 @@ -194,9 +194,9 @@ const mapArr1 = await Array.fromAsync(asyncGen(4), v => v ** 2); >mapArr1 : number[] >await Array.fromAsync(asyncGen(4), v => v ** 2) : number[] >Array.fromAsync(asyncGen(4), v => v ** 2) : Promise ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >asyncGen(4) : AsyncGenerator >asyncGen : (n: any) => AsyncGenerator >4 : 4 @@ -210,9 +210,9 @@ const mapArr2 = await Array.fromAsync([0,2,4,6], v => Promise.resolve(v ** 2)); >mapArr2 : number[] >await Array.fromAsync([0,2,4,6], v => Promise.resolve(v ** 2)) : number[] >Array.fromAsync([0,2,4,6], v => Promise.resolve(v ** 2)) : Promise ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >[0,2,4,6] : number[] >0 : 0 >2 : 2 @@ -232,9 +232,9 @@ const mapArr3 = await Array.fromAsync([0,2,4,6], v => v ** 2); >mapArr3 : number[] >await Array.fromAsync([0,2,4,6], v => v ** 2) : number[] >Array.fromAsync([0,2,4,6], v => v ** 2) : Promise ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >[0,2,4,6] : number[] >0 : 0 >2 : 2 @@ -265,18 +265,18 @@ const badArray = await Array.fromAsync(badIterable); >badArray : unknown[] >await Array.fromAsync(badIterable) : unknown[] >Array.fromAsync(badIterable) : Promise ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >badIterable : { [Symbol.iterator](): never; } const withIndexResult = await Array.fromAsync(["a", "b"], (str, index) => ({ index, str })); >withIndexResult : { index: number; str: string; }[] >await Array.fromAsync(["a", "b"], (str, index) => ({ index, str })) : { index: number; str: string; }[] >Array.fromAsync(["a", "b"], (str, index) => ({ index, str })) : Promise<{ index: number; str: string; }[]> ->Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor ->fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } +>fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >["a", "b"] : string[] >"a" : "a" >"b" : "b" diff --git a/testdata/baselines/reference/submodule/compiler/arrayFromAsync.types.diff b/testdata/baselines/reference/submodule/compiler/arrayFromAsync.types.diff index 67157f94f26..3b91e64d501 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayFromAsync.types.diff +++ b/testdata/baselines/reference/submodule/compiler/arrayFromAsync.types.diff @@ -1,142 +1,27 @@ --- old.arrayFromAsync.types +++ new.arrayFromAsync.types -@@= skipped -109, +109 lines =@@ - >sameArr1 : number[] - >await Array.fromAsync(arrLike) : number[] - >Array.fromAsync(arrLike) : Promise -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >arrLike : { 0: Promise; 1: Promise; 2: Promise; 3: Promise; length: number; } - - const sameArr2 = await Array.fromAsync([Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)]); - >sameArr2 : number[] - >await Array.fromAsync([Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)]) : number[] - >Array.fromAsync([Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)]) : Promise -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >[Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)] : Promise[] - >Promise.resolve(0) : Promise - >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -@@= skipped -38, +38 lines =@@ - >sameArr3 : number[] - >await Array.fromAsync(genPromises(4)) : number[] - >Array.fromAsync(genPromises(4)) : Promise -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >genPromises(4) : Generator, void, unknown> - >genPromises : (n: any) => Generator, void, unknown> - >4 : 4 -@@= skipped -11, +11 lines =@@ - >sameArr4 : number[] - >await Array.fromAsync(asyncGen(4)) : number[] - >Array.fromAsync(asyncGen(4)) : Promise -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >asyncGen(4) : AsyncGenerator - >asyncGen : (n: any) => AsyncGenerator +@@= skipped -166, +166 lines =@@ >4 : 4 function Data (n) {} ->Data : typeof Data -+>Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } ++>Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } >n : any Data.fromAsync = Array.fromAsync; -->Data.fromAsync = Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -->Data.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } + >Data.fromAsync = Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } + >Data.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } ->Data : typeof Data -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Data.fromAsync = Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Data.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } ++>Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } + >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } + >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - - const sameArr5 = await Data.fromAsync(asyncGen(4)); - >sameArr5 : number[] +@@= skipped -17, +17 lines =@@ >await Data.fromAsync(asyncGen(4)) : number[] >Data.fromAsync(asyncGen(4)) : Promise -->Data.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } + >Data.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } ->Data : typeof Data -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Data.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } ++>Data : { (n: any): void; fromAsync: { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; }; } + >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } >asyncGen(4) : AsyncGenerator - >asyncGen : (n: any) => AsyncGenerator - >4 : 4 -@@= skipped -35, +35 lines =@@ - >mapArr1 : number[] - >await Array.fromAsync(asyncGen(4), v => v ** 2) : number[] - >Array.fromAsync(asyncGen(4), v => v ** 2) : Promise -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >asyncGen(4) : AsyncGenerator - >asyncGen : (n: any) => AsyncGenerator - >4 : 4 -@@= skipped -16, +16 lines =@@ - >mapArr2 : number[] - >await Array.fromAsync([0,2,4,6], v => Promise.resolve(v ** 2)) : number[] - >Array.fromAsync([0,2,4,6], v => Promise.resolve(v ** 2)) : Promise -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >[0,2,4,6] : number[] - >0 : 0 - >2 : 2 -@@= skipped -22, +22 lines =@@ - >mapArr3 : number[] - >await Array.fromAsync([0,2,4,6], v => v ** 2) : number[] - >Array.fromAsync([0,2,4,6], v => v ** 2) : Promise -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >[0,2,4,6] : number[] - >0 : 0 - >2 : 2 -@@= skipped -33, +33 lines =@@ - >badArray : unknown[] - >await Array.fromAsync(badIterable) : unknown[] - >Array.fromAsync(badIterable) : Promise -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >badIterable : { [Symbol.iterator](): never; } - - const withIndexResult = await Array.fromAsync(["a", "b"], (str, index) => ({ index, str })); - >withIndexResult : { index: number; str: string; }[] - >await Array.fromAsync(["a", "b"], (str, index) => ({ index, str })) : { index: number; str: string; }[] - >Array.fromAsync(["a", "b"], (str, index) => ({ index, str })) : Promise<{ index: number; str: string; }[]> -->Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>Array.fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >Array : ArrayConstructor -->fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } -+>fromAsync : { (iterableOrArrayLike: ArrayLike> | AsyncIterable | Iterable>): Promise; (iterableOrArrayLike: ArrayLike | AsyncIterable | Iterable, mapFn: (value: Awaited, index: number) => U, thisArg?: any): Promise[]>; } - >["a", "b"] : string[] - >"a" : "a" - >"b" : "b" \ No newline at end of file + >asyncGen : (n: any) => AsyncGenerator \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arrayReferenceWithoutTypeArgs.types b/testdata/baselines/reference/submodule/compiler/arrayReferenceWithoutTypeArgs.types index 614cb4d8f33..81fd2968644 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayReferenceWithoutTypeArgs.types +++ b/testdata/baselines/reference/submodule/compiler/arrayReferenceWithoutTypeArgs.types @@ -5,6 +5,6 @@ class X { >X : X public f(a: Array) { } ->f : (a: any) => void +>f : (a: Array) => void >a : any } diff --git a/testdata/baselines/reference/submodule/compiler/arrayReferenceWithoutTypeArgs.types.diff b/testdata/baselines/reference/submodule/compiler/arrayReferenceWithoutTypeArgs.types.diff deleted file mode 100644 index 7b19de14841..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayReferenceWithoutTypeArgs.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.arrayReferenceWithoutTypeArgs.types -+++ new.arrayReferenceWithoutTypeArgs.types -@@= skipped -4, +4 lines =@@ - >X : X - - public f(a: Array) { } -->f : (a: Array) => void -+>f : (a: any) => void - >a : any - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arraySlice.types b/testdata/baselines/reference/submodule/compiler/arraySlice.types index f8f05613d18..c66e2d7da37 100644 --- a/testdata/baselines/reference/submodule/compiler/arraySlice.types +++ b/testdata/baselines/reference/submodule/compiler/arraySlice.types @@ -6,9 +6,9 @@ var arr: string[] | number[]; arr.splice(1, 1); >arr.splice(1, 1) : string[] | number[] ->arr.splice : { (start: number, deleteCount?: number | undefined): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } +>arr.splice : { (start: number, deleteCount?: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } >arr : string[] | number[] ->splice : { (start: number, deleteCount?: number | undefined): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } +>splice : { (start: number, deleteCount?: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } >1 : 1 >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/arraySlice.types.diff b/testdata/baselines/reference/submodule/compiler/arraySlice.types.diff deleted file mode 100644 index 955be822881..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arraySlice.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.arraySlice.types -+++ new.arraySlice.types -@@= skipped -5, +5 lines =@@ - - arr.splice(1, 1); - >arr.splice(1, 1) : string[] | number[] -->arr.splice : { (start: number, deleteCount?: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } -+>arr.splice : { (start: number, deleteCount?: number | undefined): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } - >arr : string[] | number[] -->splice : { (start: number, deleteCount?: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } -+>splice : { (start: number, deleteCount?: number | undefined): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } - >1 : 1 - >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2015.types b/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2015.types index 6ee22bc974c..ee86c346949 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2015.types +++ b/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2015.types @@ -15,26 +15,26 @@ str = arr.toLocaleString(); // OK >str = arr.toLocaleString() : string >str : string >arr.toLocaleString() : string ->arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >arr : number[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } str = arr.toLocaleString('en-US'); // OK >str = arr.toLocaleString('en-US') : string >str : string >arr.toLocaleString('en-US') : string ->arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >arr : number[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'en-US' : "en-US" str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >arr : number[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -54,26 +54,26 @@ str = dates.toLocaleString(); // OK >str = dates.toLocaleString() : string >str : string >dates.toLocaleString() : string ->dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >dates : readonly Date[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } str = dates.toLocaleString('fr'); // OK >str = dates.toLocaleString('fr') : string >str : string >dates.toLocaleString('fr') : string ->dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >dates : readonly Date[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'fr' : "fr" str = dates.toLocaleString('fr', { timeZone: 'UTC' }); // OK >str = dates.toLocaleString('fr', { timeZone: 'UTC' }) : string >str : string >dates.toLocaleString('fr', { timeZone: 'UTC' }) : string ->dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >dates : readonly Date[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'fr' : "fr" >{ timeZone: 'UTC' } : { timeZone: string; } >timeZone : string @@ -93,26 +93,26 @@ str = mixed.toLocaleString(); // OK >str = mixed.toLocaleString() : string >str : string >mixed.toLocaleString() : string ->mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >mixed : (number | Date)[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } str = mixed.toLocaleString('fr'); // OK >str = mixed.toLocaleString('fr') : string >str : string >mixed.toLocaleString('fr') : string ->mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >mixed : (number | Date)[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'fr' : "fr" str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }); // OK >str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string >str : string >mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string ->mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >mixed : (number | Date)[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'de' : "de" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -124,11 +124,11 @@ str = (mixed as ReadonlyArray).toLocaleString('de', { currency: ' >str = (mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string >str : string >(mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string ->(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >(mixed as ReadonlyArray) : readonly (number | Date)[] >mixed as ReadonlyArray : readonly (number | Date)[] >mixed : (number | Date)[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'de' : "de" >{ currency: 'EUR', style: 'currency', timeZone: 'UTC' } : { currency: string; style: "currency"; timeZone: string; } >currency : string @@ -148,26 +148,26 @@ str = int8Array.toLocaleString(); // OK >str = int8Array.toLocaleString() : string >str : string >int8Array.toLocaleString() : string ->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int8Array : Int8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = int8Array.toLocaleString('en-US'); // OK >str = int8Array.toLocaleString('en-US') : string >str : string >int8Array.toLocaleString('en-US') : string ->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int8Array : Int8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int8Array : Int8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -185,26 +185,26 @@ str = uint8Array.toLocaleString(); // OK >str = uint8Array.toLocaleString() : string >str : string >uint8Array.toLocaleString() : string ->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8Array : Uint8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint8Array.toLocaleString('en-US'); // OK >str = uint8Array.toLocaleString('en-US') : string >str : string >uint8Array.toLocaleString('en-US') : string ->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8Array : Uint8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8Array : Uint8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -222,26 +222,26 @@ str = uint8ClampedArray.toLocaleString(); // OK >str = uint8ClampedArray.toLocaleString() : string >str : string >uint8ClampedArray.toLocaleString() : string ->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8ClampedArray : Uint8ClampedArray ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint8ClampedArray.toLocaleString('en-US'); // OK >str = uint8ClampedArray.toLocaleString('en-US') : string >str : string >uint8ClampedArray.toLocaleString('en-US') : string ->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8ClampedArray : Uint8ClampedArray ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8ClampedArray : Uint8ClampedArray ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -259,26 +259,26 @@ str = int16Array.toLocaleString(); // OK >str = int16Array.toLocaleString() : string >str : string >int16Array.toLocaleString() : string ->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int16Array : Int16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = int16Array.toLocaleString('en-US'); // OK >str = int16Array.toLocaleString('en-US') : string >str : string >int16Array.toLocaleString('en-US') : string ->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int16Array : Int16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int16Array : Int16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -296,26 +296,26 @@ str = uint16Array.toLocaleString(); // OK >str = uint16Array.toLocaleString() : string >str : string >uint16Array.toLocaleString() : string ->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint16Array : Uint16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint16Array.toLocaleString('en-US'); // OK >str = uint16Array.toLocaleString('en-US') : string >str : string >uint16Array.toLocaleString('en-US') : string ->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint16Array : Uint16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint16Array : Uint16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -333,26 +333,26 @@ str = int32Array.toLocaleString(); // OK >str = int32Array.toLocaleString() : string >str : string >int32Array.toLocaleString() : string ->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int32Array : Int32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = int32Array.toLocaleString('en-US'); // OK >str = int32Array.toLocaleString('en-US') : string >str : string >int32Array.toLocaleString('en-US') : string ->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int32Array : Int32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int32Array : Int32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -370,26 +370,26 @@ str = uint32Array.toLocaleString(); // OK >str = uint32Array.toLocaleString() : string >str : string >uint32Array.toLocaleString() : string ->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint32Array : Uint32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint32Array.toLocaleString('en-US'); // OK >str = uint32Array.toLocaleString('en-US') : string >str : string >uint32Array.toLocaleString('en-US') : string ->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint32Array : Uint32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint32Array : Uint32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -407,26 +407,26 @@ str = float32Array.toLocaleString(); // OK >str = float32Array.toLocaleString() : string >str : string >float32Array.toLocaleString() : string ->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float32Array : Float32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = float32Array.toLocaleString('en-US'); // OK >str = float32Array.toLocaleString('en-US') : string >str : string >float32Array.toLocaleString('en-US') : string ->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float32Array : Float32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float32Array : Float32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -444,26 +444,26 @@ str = float64Array.toLocaleString(); // OK >str = float64Array.toLocaleString() : string >str : string >float64Array.toLocaleString() : string ->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float64Array : Float64Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = float64Array.toLocaleString('en-US'); // OK >str = float64Array.toLocaleString('en-US') : string >str : string >float64Array.toLocaleString('en-US') : string ->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float64Array : Float64Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float64Array : Float64Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" diff --git a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2015.types.diff b/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2015.types.diff deleted file mode 100644 index 7606146f97a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2015.types.diff +++ /dev/null @@ -1,412 +0,0 @@ ---- old.arrayToLocaleStringES2015.types -+++ new.arrayToLocaleStringES2015.types -@@= skipped -14, +14 lines =@@ - >str = arr.toLocaleString() : string - >str : string - >arr.toLocaleString() : string -->arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >arr : number[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - - str = arr.toLocaleString('en-US'); // OK - >str = arr.toLocaleString('en-US') : string - >str : string - >arr.toLocaleString('en-US') : string -->arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >arr : number[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'en-US' : "en-US" - - str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >arr : number[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -39, +39 lines =@@ - >str = dates.toLocaleString() : string - >str : string - >dates.toLocaleString() : string -->dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >dates : readonly Date[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - - str = dates.toLocaleString('fr'); // OK - >str = dates.toLocaleString('fr') : string - >str : string - >dates.toLocaleString('fr') : string -->dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >dates : readonly Date[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'fr' : "fr" - - str = dates.toLocaleString('fr', { timeZone: 'UTC' }); // OK - >str = dates.toLocaleString('fr', { timeZone: 'UTC' }) : string - >str : string - >dates.toLocaleString('fr', { timeZone: 'UTC' }) : string -->dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >dates : readonly Date[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'fr' : "fr" - >{ timeZone: 'UTC' } : { timeZone: string; } - >timeZone : string -@@= skipped -39, +39 lines =@@ - >str = mixed.toLocaleString() : string - >str : string - >mixed.toLocaleString() : string -->mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >mixed : (number | Date)[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - - str = mixed.toLocaleString('fr'); // OK - >str = mixed.toLocaleString('fr') : string - >str : string - >mixed.toLocaleString('fr') : string -->mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >mixed : (number | Date)[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'fr' : "fr" - - str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }); // OK - >str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string - >str : string - >mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string -->mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >mixed : (number | Date)[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'de' : "de" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -31, +31 lines =@@ - >str = (mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string - >str : string - >(mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string -->(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >(mixed as ReadonlyArray) : readonly (number | Date)[] - >mixed as ReadonlyArray : readonly (number | Date)[] - >mixed : (number | Date)[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'de' : "de" - >{ currency: 'EUR', style: 'currency', timeZone: 'UTC' } : { currency: string; style: "currency"; timeZone: string; } - >currency : string -@@= skipped -24, +24 lines =@@ - >str = int8Array.toLocaleString() : string - >str : string - >int8Array.toLocaleString() : string -->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int8Array : Int8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = int8Array.toLocaleString('en-US'); // OK - >str = int8Array.toLocaleString('en-US') : string - >str : string - >int8Array.toLocaleString('en-US') : string -->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int8Array : Int8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int8Array : Int8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint8Array.toLocaleString() : string - >str : string - >uint8Array.toLocaleString() : string -->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8Array : Uint8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint8Array.toLocaleString('en-US'); // OK - >str = uint8Array.toLocaleString('en-US') : string - >str : string - >uint8Array.toLocaleString('en-US') : string -->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8Array : Uint8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8Array : Uint8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint8ClampedArray.toLocaleString() : string - >str : string - >uint8ClampedArray.toLocaleString() : string -->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8ClampedArray : Uint8ClampedArray -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint8ClampedArray.toLocaleString('en-US'); // OK - >str = uint8ClampedArray.toLocaleString('en-US') : string - >str : string - >uint8ClampedArray.toLocaleString('en-US') : string -->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8ClampedArray : Uint8ClampedArray -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8ClampedArray : Uint8ClampedArray -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = int16Array.toLocaleString() : string - >str : string - >int16Array.toLocaleString() : string -->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int16Array : Int16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = int16Array.toLocaleString('en-US'); // OK - >str = int16Array.toLocaleString('en-US') : string - >str : string - >int16Array.toLocaleString('en-US') : string -->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int16Array : Int16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int16Array : Int16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint16Array.toLocaleString() : string - >str : string - >uint16Array.toLocaleString() : string -->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint16Array : Uint16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint16Array.toLocaleString('en-US'); // OK - >str = uint16Array.toLocaleString('en-US') : string - >str : string - >uint16Array.toLocaleString('en-US') : string -->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint16Array : Uint16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint16Array : Uint16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = int32Array.toLocaleString() : string - >str : string - >int32Array.toLocaleString() : string -->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int32Array : Int32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = int32Array.toLocaleString('en-US'); // OK - >str = int32Array.toLocaleString('en-US') : string - >str : string - >int32Array.toLocaleString('en-US') : string -->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int32Array : Int32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int32Array : Int32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint32Array.toLocaleString() : string - >str : string - >uint32Array.toLocaleString() : string -->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint32Array : Uint32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint32Array.toLocaleString('en-US'); // OK - >str = uint32Array.toLocaleString('en-US') : string - >str : string - >uint32Array.toLocaleString('en-US') : string -->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint32Array : Uint32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint32Array : Uint32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = float32Array.toLocaleString() : string - >str : string - >float32Array.toLocaleString() : string -->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float32Array : Float32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = float32Array.toLocaleString('en-US'); // OK - >str = float32Array.toLocaleString('en-US') : string - >str : string - >float32Array.toLocaleString('en-US') : string -->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float32Array : Float32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float32Array : Float32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = float64Array.toLocaleString() : string - >str : string - >float64Array.toLocaleString() : string -->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float64Array : Float64Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = float64Array.toLocaleString('en-US'); // OK - >str = float64Array.toLocaleString('en-US') : string - >str : string - >float64Array.toLocaleString('en-US') : string -->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float64Array : Float64Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float64Array : Float64Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2020.types b/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2020.types index b77552331bf..7fce4fb7250 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2020.types +++ b/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2020.types @@ -15,26 +15,26 @@ str = arr.toLocaleString(); // OK >str = arr.toLocaleString() : string >str : string >arr.toLocaleString() : string ->arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >arr : number[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } str = arr.toLocaleString('en-US'); // OK >str = arr.toLocaleString('en-US') : string >str : string >arr.toLocaleString('en-US') : string ->arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >arr : number[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'en-US' : "en-US" str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >arr : number[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -54,26 +54,26 @@ str = dates.toLocaleString(); // OK >str = dates.toLocaleString() : string >str : string >dates.toLocaleString() : string ->dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >dates : readonly Date[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } str = dates.toLocaleString('fr'); // OK >str = dates.toLocaleString('fr') : string >str : string >dates.toLocaleString('fr') : string ->dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >dates : readonly Date[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'fr' : "fr" str = dates.toLocaleString('fr', { timeZone: 'UTC' }); // OK >str = dates.toLocaleString('fr', { timeZone: 'UTC' }) : string >str : string >dates.toLocaleString('fr', { timeZone: 'UTC' }) : string ->dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >dates : readonly Date[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'fr' : "fr" >{ timeZone: 'UTC' } : { timeZone: string; } >timeZone : string @@ -93,17 +93,17 @@ str = mixed.toLocaleString(); // OK >str = mixed.toLocaleString() : string >str : string >mixed.toLocaleString() : string ->mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >mixed : (number | Date)[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }); // OK >str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string >str : string >mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string ->mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >mixed : (number | Date)[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'de' : "de" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -115,11 +115,11 @@ str = (mixed as ReadonlyArray).toLocaleString('de', { currency: ' >str = (mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string >str : string >(mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string ->(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >(mixed as ReadonlyArray) : readonly (number | Date)[] >mixed as ReadonlyArray : readonly (number | Date)[] >mixed : (number | Date)[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'de' : "de" >{ currency: 'EUR', style: 'currency', timeZone: 'UTC' } : { currency: string; style: "currency"; timeZone: string; } >currency : string @@ -146,26 +146,26 @@ str = bigInts.toLocaleString(); // OK >str = bigInts.toLocaleString() : string >str : string >bigInts.toLocaleString() : string ->bigInts.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>bigInts.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >bigInts : bigint[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } str = bigInts.toLocaleString('en-US'); // OK >str = bigInts.toLocaleString('en-US') : string >str : string >bigInts.toLocaleString('en-US') : string ->bigInts.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>bigInts.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >bigInts : bigint[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'en-US' : "en-US" str = bigInts.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = bigInts.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >bigInts.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->bigInts.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>bigInts.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >bigInts : bigint[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -183,26 +183,26 @@ str = int8Array.toLocaleString(); // OK >str = int8Array.toLocaleString() : string >str : string >int8Array.toLocaleString() : string ->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int8Array : Int8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = int8Array.toLocaleString('en-US'); // OK >str = int8Array.toLocaleString('en-US') : string >str : string >int8Array.toLocaleString('en-US') : string ->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int8Array : Int8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int8Array : Int8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -220,26 +220,26 @@ str = uint8Array.toLocaleString(); // OK >str = uint8Array.toLocaleString() : string >str : string >uint8Array.toLocaleString() : string ->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8Array : Uint8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint8Array.toLocaleString('en-US'); // OK >str = uint8Array.toLocaleString('en-US') : string >str : string >uint8Array.toLocaleString('en-US') : string ->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8Array : Uint8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8Array : Uint8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -257,26 +257,26 @@ str = uint8ClampedArray.toLocaleString(); // OK >str = uint8ClampedArray.toLocaleString() : string >str : string >uint8ClampedArray.toLocaleString() : string ->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8ClampedArray : Uint8ClampedArray ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint8ClampedArray.toLocaleString('en-US'); // OK >str = uint8ClampedArray.toLocaleString('en-US') : string >str : string >uint8ClampedArray.toLocaleString('en-US') : string ->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8ClampedArray : Uint8ClampedArray ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8ClampedArray : Uint8ClampedArray ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -294,26 +294,26 @@ str = int16Array.toLocaleString(); // OK >str = int16Array.toLocaleString() : string >str : string >int16Array.toLocaleString() : string ->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int16Array : Int16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = int16Array.toLocaleString('en-US'); // OK >str = int16Array.toLocaleString('en-US') : string >str : string >int16Array.toLocaleString('en-US') : string ->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int16Array : Int16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int16Array : Int16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -331,26 +331,26 @@ str = uint16Array.toLocaleString(); // OK >str = uint16Array.toLocaleString() : string >str : string >uint16Array.toLocaleString() : string ->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint16Array : Uint16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint16Array.toLocaleString('en-US'); // OK >str = uint16Array.toLocaleString('en-US') : string >str : string >uint16Array.toLocaleString('en-US') : string ->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint16Array : Uint16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint16Array : Uint16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -368,26 +368,26 @@ str = int32Array.toLocaleString(); // OK >str = int32Array.toLocaleString() : string >str : string >int32Array.toLocaleString() : string ->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int32Array : Int32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = int32Array.toLocaleString('en-US'); // OK >str = int32Array.toLocaleString('en-US') : string >str : string >int32Array.toLocaleString('en-US') : string ->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int32Array : Int32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int32Array : Int32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -405,26 +405,26 @@ str = uint32Array.toLocaleString(); // OK >str = uint32Array.toLocaleString() : string >str : string >uint32Array.toLocaleString() : string ->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint32Array : Uint32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint32Array.toLocaleString('en-US'); // OK >str = uint32Array.toLocaleString('en-US') : string >str : string >uint32Array.toLocaleString('en-US') : string ->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint32Array : Uint32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint32Array : Uint32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -442,26 +442,26 @@ str = float32Array.toLocaleString(); // OK >str = float32Array.toLocaleString() : string >str : string >float32Array.toLocaleString() : string ->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float32Array : Float32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = float32Array.toLocaleString('en-US'); // OK >str = float32Array.toLocaleString('en-US') : string >str : string >float32Array.toLocaleString('en-US') : string ->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float32Array : Float32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float32Array : Float32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -479,26 +479,26 @@ str = float64Array.toLocaleString(); // OK >str = float64Array.toLocaleString() : string >str : string >float64Array.toLocaleString() : string ->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float64Array : Float64Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = float64Array.toLocaleString('en-US'); // OK >str = float64Array.toLocaleString('en-US') : string >str : string >float64Array.toLocaleString('en-US') : string ->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float64Array : Float64Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float64Array : Float64Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -516,26 +516,26 @@ str = bigInt64Array.toLocaleString(); // OK >str = bigInt64Array.toLocaleString() : string >str : string >bigInt64Array.toLocaleString() : string ->bigInt64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>bigInt64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >bigInt64Array : BigInt64Array ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string str = bigInt64Array.toLocaleString('en-US'); // OK >str = bigInt64Array.toLocaleString('en-US') : string >str : string >bigInt64Array.toLocaleString('en-US') : string ->bigInt64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>bigInt64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >bigInt64Array : BigInt64Array ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >'en-US' : "en-US" str = bigInt64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = bigInt64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >bigInt64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->bigInt64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>bigInt64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >bigInt64Array : BigInt64Array ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -553,26 +553,26 @@ str = bigIntUint64Array.toLocaleString(); // OK >str = bigIntUint64Array.toLocaleString() : string >str : string >bigIntUint64Array.toLocaleString() : string ->bigIntUint64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>bigIntUint64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >bigIntUint64Array : BigUint64Array ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string str = bigIntUint64Array.toLocaleString('en-US'); // OK >str = bigIntUint64Array.toLocaleString('en-US') : string >str : string >bigIntUint64Array.toLocaleString('en-US') : string ->bigIntUint64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>bigIntUint64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >bigIntUint64Array : BigUint64Array ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >'en-US' : "en-US" str = bigIntUint64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >str = bigIntUint64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >bigIntUint64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->bigIntUint64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>bigIntUint64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >bigIntUint64Array : BigUint64Array ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" diff --git a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2020.types.diff b/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2020.types.diff deleted file mode 100644 index 79a76e1b166..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES2020.types.diff +++ /dev/null @@ -1,500 +0,0 @@ ---- old.arrayToLocaleStringES2020.types -+++ new.arrayToLocaleStringES2020.types -@@= skipped -14, +14 lines =@@ - >str = arr.toLocaleString() : string - >str : string - >arr.toLocaleString() : string -->arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >arr : number[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - - str = arr.toLocaleString('en-US'); // OK - >str = arr.toLocaleString('en-US') : string - >str : string - >arr.toLocaleString('en-US') : string -->arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >arr : number[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'en-US' : "en-US" - - str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >arr : number[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -39, +39 lines =@@ - >str = dates.toLocaleString() : string - >str : string - >dates.toLocaleString() : string -->dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >dates : readonly Date[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - - str = dates.toLocaleString('fr'); // OK - >str = dates.toLocaleString('fr') : string - >str : string - >dates.toLocaleString('fr') : string -->dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >dates : readonly Date[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'fr' : "fr" - - str = dates.toLocaleString('fr', { timeZone: 'UTC' }); // OK - >str = dates.toLocaleString('fr', { timeZone: 'UTC' }) : string - >str : string - >dates.toLocaleString('fr', { timeZone: 'UTC' }) : string -->dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >dates : readonly Date[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'fr' : "fr" - >{ timeZone: 'UTC' } : { timeZone: string; } - >timeZone : string -@@= skipped -39, +39 lines =@@ - >str = mixed.toLocaleString() : string - >str : string - >mixed.toLocaleString() : string -->mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >mixed : (number | Date)[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - - str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }); // OK - >str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string - >str : string - >mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string -->mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>mixed.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >mixed : (number | Date)[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'de' : "de" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -22, +22 lines =@@ - >str = (mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string - >str : string - >(mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string -->(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >(mixed as ReadonlyArray) : readonly (number | Date)[] - >mixed as ReadonlyArray : readonly (number | Date)[] - >mixed : (number | Date)[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'de' : "de" - >{ currency: 'EUR', style: 'currency', timeZone: 'UTC' } : { currency: string; style: "currency"; timeZone: string; } - >currency : string -@@= skipped -31, +31 lines =@@ - >str = bigInts.toLocaleString() : string - >str : string - >bigInts.toLocaleString() : string -->bigInts.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>bigInts.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >bigInts : bigint[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - - str = bigInts.toLocaleString('en-US'); // OK - >str = bigInts.toLocaleString('en-US') : string - >str : string - >bigInts.toLocaleString('en-US') : string -->bigInts.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>bigInts.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >bigInts : bigint[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'en-US' : "en-US" - - str = bigInts.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = bigInts.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >bigInts.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->bigInts.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>bigInts.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >bigInts : bigint[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = int8Array.toLocaleString() : string - >str : string - >int8Array.toLocaleString() : string -->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int8Array : Int8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = int8Array.toLocaleString('en-US'); // OK - >str = int8Array.toLocaleString('en-US') : string - >str : string - >int8Array.toLocaleString('en-US') : string -->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int8Array : Int8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int8Array : Int8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint8Array.toLocaleString() : string - >str : string - >uint8Array.toLocaleString() : string -->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8Array : Uint8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint8Array.toLocaleString('en-US'); // OK - >str = uint8Array.toLocaleString('en-US') : string - >str : string - >uint8Array.toLocaleString('en-US') : string -->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8Array : Uint8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8Array : Uint8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint8ClampedArray.toLocaleString() : string - >str : string - >uint8ClampedArray.toLocaleString() : string -->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8ClampedArray : Uint8ClampedArray -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint8ClampedArray.toLocaleString('en-US'); // OK - >str = uint8ClampedArray.toLocaleString('en-US') : string - >str : string - >uint8ClampedArray.toLocaleString('en-US') : string -->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8ClampedArray : Uint8ClampedArray -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8ClampedArray : Uint8ClampedArray -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = int16Array.toLocaleString() : string - >str : string - >int16Array.toLocaleString() : string -->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int16Array : Int16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = int16Array.toLocaleString('en-US'); // OK - >str = int16Array.toLocaleString('en-US') : string - >str : string - >int16Array.toLocaleString('en-US') : string -->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int16Array : Int16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int16Array : Int16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint16Array.toLocaleString() : string - >str : string - >uint16Array.toLocaleString() : string -->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint16Array : Uint16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint16Array.toLocaleString('en-US'); // OK - >str = uint16Array.toLocaleString('en-US') : string - >str : string - >uint16Array.toLocaleString('en-US') : string -->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint16Array : Uint16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint16Array : Uint16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = int32Array.toLocaleString() : string - >str : string - >int32Array.toLocaleString() : string -->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int32Array : Int32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = int32Array.toLocaleString('en-US'); // OK - >str = int32Array.toLocaleString('en-US') : string - >str : string - >int32Array.toLocaleString('en-US') : string -->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int32Array : Int32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int32Array : Int32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint32Array.toLocaleString() : string - >str : string - >uint32Array.toLocaleString() : string -->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint32Array : Uint32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint32Array.toLocaleString('en-US'); // OK - >str = uint32Array.toLocaleString('en-US') : string - >str : string - >uint32Array.toLocaleString('en-US') : string -->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint32Array : Uint32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint32Array : Uint32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = float32Array.toLocaleString() : string - >str : string - >float32Array.toLocaleString() : string -->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float32Array : Float32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = float32Array.toLocaleString('en-US'); // OK - >str = float32Array.toLocaleString('en-US') : string - >str : string - >float32Array.toLocaleString('en-US') : string -->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float32Array : Float32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float32Array : Float32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = float64Array.toLocaleString() : string - >str : string - >float64Array.toLocaleString() : string -->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float64Array : Float64Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = float64Array.toLocaleString('en-US'); // OK - >str = float64Array.toLocaleString('en-US') : string - >str : string - >float64Array.toLocaleString('en-US') : string -->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float64Array : Float64Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float64Array : Float64Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = bigInt64Array.toLocaleString() : string - >str : string - >bigInt64Array.toLocaleString() : string -->bigInt64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>bigInt64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >bigInt64Array : BigInt64Array -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - - str = bigInt64Array.toLocaleString('en-US'); // OK - >str = bigInt64Array.toLocaleString('en-US') : string - >str : string - >bigInt64Array.toLocaleString('en-US') : string -->bigInt64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>bigInt64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >bigInt64Array : BigInt64Array -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >'en-US' : "en-US" - - str = bigInt64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = bigInt64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >bigInt64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->bigInt64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>bigInt64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >bigInt64Array : BigInt64Array -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = bigIntUint64Array.toLocaleString() : string - >str : string - >bigIntUint64Array.toLocaleString() : string -->bigIntUint64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>bigIntUint64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >bigIntUint64Array : BigUint64Array -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - - str = bigIntUint64Array.toLocaleString('en-US'); // OK - >str = bigIntUint64Array.toLocaleString('en-US') : string - >str : string - >bigIntUint64Array.toLocaleString('en-US') : string -->bigIntUint64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>bigIntUint64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >bigIntUint64Array : BigUint64Array -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >'en-US' : "en-US" - - str = bigIntUint64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK - >str = bigIntUint64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >bigIntUint64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->bigIntUint64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>bigIntUint64Array.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >bigIntUint64Array : BigUint64Array -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES5(target=es2015).types b/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES5(target=es2015).types index 90d42f497fd..8e752ec3172 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES5(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES5(target=es2015).types @@ -15,26 +15,26 @@ str = arr.toLocaleString(); // OK >str = arr.toLocaleString() : string >str : string >arr.toLocaleString() : string ->arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >arr : number[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } str = arr.toLocaleString('en-US'); // should be error >str = arr.toLocaleString('en-US') : string >str : string >arr.toLocaleString('en-US') : string ->arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >arr : number[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'en-US' : "en-US" str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >arr : number[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -54,26 +54,26 @@ str = dates.toLocaleString(); // OK >str = dates.toLocaleString() : string >str : string >dates.toLocaleString() : string ->dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >dates : readonly Date[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } str = dates.toLocaleString('fr'); // should be error >str = dates.toLocaleString('fr') : string >str : string >dates.toLocaleString('fr') : string ->dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >dates : readonly Date[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'fr' : "fr" str = dates.toLocaleString('fr', { timeZone: 'UTC' }); // should be error >str = dates.toLocaleString('fr', { timeZone: 'UTC' }) : string >str : string >dates.toLocaleString('fr', { timeZone: 'UTC' }) : string ->dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >dates : readonly Date[] ->toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } >'fr' : "fr" >{ timeZone: 'UTC' } : { timeZone: string; } >timeZone : string @@ -89,26 +89,26 @@ str = int8Array.toLocaleString(); // OK >str = int8Array.toLocaleString() : string >str : string >int8Array.toLocaleString() : string ->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int8Array : Int8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = int8Array.toLocaleString('en-US'); // should be error >str = int8Array.toLocaleString('en-US') : string >str : string >int8Array.toLocaleString('en-US') : string ->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int8Array : Int8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int8Array : Int8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -126,26 +126,26 @@ str = uint8Array.toLocaleString(); // OK >str = uint8Array.toLocaleString() : string >str : string >uint8Array.toLocaleString() : string ->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8Array : Uint8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint8Array.toLocaleString('en-US'); // should be error >str = uint8Array.toLocaleString('en-US') : string >str : string >uint8Array.toLocaleString('en-US') : string ->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8Array : Uint8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8Array : Uint8Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -163,26 +163,26 @@ str = uint8ClampedArray.toLocaleString(); // OK >str = uint8ClampedArray.toLocaleString() : string >str : string >uint8ClampedArray.toLocaleString() : string ->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8ClampedArray : Uint8ClampedArray ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint8ClampedArray.toLocaleString('en-US'); // should be error >str = uint8ClampedArray.toLocaleString('en-US') : string >str : string >uint8ClampedArray.toLocaleString('en-US') : string ->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8ClampedArray : Uint8ClampedArray ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint8ClampedArray : Uint8ClampedArray ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -200,26 +200,26 @@ str = int16Array.toLocaleString(); // OK >str = int16Array.toLocaleString() : string >str : string >int16Array.toLocaleString() : string ->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int16Array : Int16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = int16Array.toLocaleString('en-US'); // should be error >str = int16Array.toLocaleString('en-US') : string >str : string >int16Array.toLocaleString('en-US') : string ->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int16Array : Int16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int16Array : Int16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -237,26 +237,26 @@ str = uint16Array.toLocaleString(); // OK >str = uint16Array.toLocaleString() : string >str : string >uint16Array.toLocaleString() : string ->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint16Array : Uint16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint16Array.toLocaleString('en-US'); // should be error >str = uint16Array.toLocaleString('en-US') : string >str : string >uint16Array.toLocaleString('en-US') : string ->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint16Array : Uint16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint16Array : Uint16Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -274,26 +274,26 @@ str = int32Array.toLocaleString(); // OK >str = int32Array.toLocaleString() : string >str : string >int32Array.toLocaleString() : string ->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int32Array : Int32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = int32Array.toLocaleString('en-US'); // should be error >str = int32Array.toLocaleString('en-US') : string >str : string >int32Array.toLocaleString('en-US') : string ->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int32Array : Int32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >int32Array : Int32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -311,26 +311,26 @@ str = uint32Array.toLocaleString(); // OK >str = uint32Array.toLocaleString() : string >str : string >uint32Array.toLocaleString() : string ->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint32Array : Uint32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = uint32Array.toLocaleString('en-US'); // should be error >str = uint32Array.toLocaleString('en-US') : string >str : string >uint32Array.toLocaleString('en-US') : string ->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint32Array : Uint32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >uint32Array : Uint32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -348,26 +348,26 @@ str = float32Array.toLocaleString(); // OK >str = float32Array.toLocaleString() : string >str : string >float32Array.toLocaleString() : string ->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float32Array : Float32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = float32Array.toLocaleString('en-US'); // should be error >str = float32Array.toLocaleString('en-US') : string >str : string >float32Array.toLocaleString('en-US') : string ->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float32Array : Float32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float32Array : Float32Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" @@ -385,26 +385,26 @@ str = float64Array.toLocaleString(); // OK >str = float64Array.toLocaleString() : string >str : string >float64Array.toLocaleString() : string ->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float64Array : Float64Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } str = float64Array.toLocaleString('en-US'); // should be error >str = float64Array.toLocaleString('en-US') : string >str : string >float64Array.toLocaleString('en-US') : string ->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float64Array : Float64Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error >str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string >str : string >float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string ->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >float64Array : Float64Array ->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } >'en-US' : "en-US" >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } >style : "currency" diff --git a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES5(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES5(target=es2015).types.diff deleted file mode 100644 index 63edc66b506..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayToLocaleStringES5(target=es2015).types.diff +++ /dev/null @@ -1,365 +0,0 @@ ---- old.arrayToLocaleStringES5(target=es2015).types -+++ new.arrayToLocaleStringES5(target=es2015).types -@@= skipped -14, +14 lines =@@ - >str = arr.toLocaleString() : string - >str : string - >arr.toLocaleString() : string -->arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >arr : number[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - - str = arr.toLocaleString('en-US'); // should be error - >str = arr.toLocaleString('en-US') : string - >str : string - >arr.toLocaleString('en-US') : string -->arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >arr : number[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'en-US' : "en-US" - - str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>arr.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >arr : number[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -39, +39 lines =@@ - >str = dates.toLocaleString() : string - >str : string - >dates.toLocaleString() : string -->dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >dates : readonly Date[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - - str = dates.toLocaleString('fr'); // should be error - >str = dates.toLocaleString('fr') : string - >str : string - >dates.toLocaleString('fr') : string -->dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >dates : readonly Date[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'fr' : "fr" - - str = dates.toLocaleString('fr', { timeZone: 'UTC' }); // should be error - >str = dates.toLocaleString('fr', { timeZone: 'UTC' }) : string - >str : string - >dates.toLocaleString('fr', { timeZone: 'UTC' }) : string -->dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>dates.toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >dates : readonly Date[] -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; } - >'fr' : "fr" - >{ timeZone: 'UTC' } : { timeZone: string; } - >timeZone : string -@@= skipped -35, +35 lines =@@ - >str = int8Array.toLocaleString() : string - >str : string - >int8Array.toLocaleString() : string -->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int8Array : Int8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = int8Array.toLocaleString('en-US'); // should be error - >str = int8Array.toLocaleString('en-US') : string - >str : string - >int8Array.toLocaleString('en-US') : string -->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int8Array : Int8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int8Array : Int8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint8Array.toLocaleString() : string - >str : string - >uint8Array.toLocaleString() : string -->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8Array : Uint8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint8Array.toLocaleString('en-US'); // should be error - >str = uint8Array.toLocaleString('en-US') : string - >str : string - >uint8Array.toLocaleString('en-US') : string -->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8Array : Uint8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8Array : Uint8Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint8ClampedArray.toLocaleString() : string - >str : string - >uint8ClampedArray.toLocaleString() : string -->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8ClampedArray : Uint8ClampedArray -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint8ClampedArray.toLocaleString('en-US'); // should be error - >str = uint8ClampedArray.toLocaleString('en-US') : string - >str : string - >uint8ClampedArray.toLocaleString('en-US') : string -->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8ClampedArray : Uint8ClampedArray -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint8ClampedArray : Uint8ClampedArray -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = int16Array.toLocaleString() : string - >str : string - >int16Array.toLocaleString() : string -->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int16Array : Int16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = int16Array.toLocaleString('en-US'); // should be error - >str = int16Array.toLocaleString('en-US') : string - >str : string - >int16Array.toLocaleString('en-US') : string -->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int16Array : Int16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int16Array : Int16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint16Array.toLocaleString() : string - >str : string - >uint16Array.toLocaleString() : string -->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint16Array : Uint16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint16Array.toLocaleString('en-US'); // should be error - >str = uint16Array.toLocaleString('en-US') : string - >str : string - >uint16Array.toLocaleString('en-US') : string -->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint16Array : Uint16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint16Array : Uint16Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = int32Array.toLocaleString() : string - >str : string - >int32Array.toLocaleString() : string -->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int32Array : Int32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = int32Array.toLocaleString('en-US'); // should be error - >str = int32Array.toLocaleString('en-US') : string - >str : string - >int32Array.toLocaleString('en-US') : string -->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int32Array : Int32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >int32Array : Int32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = uint32Array.toLocaleString() : string - >str : string - >uint32Array.toLocaleString() : string -->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint32Array : Uint32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = uint32Array.toLocaleString('en-US'); // should be error - >str = uint32Array.toLocaleString('en-US') : string - >str : string - >uint32Array.toLocaleString('en-US') : string -->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint32Array : Uint32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >uint32Array : Uint32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = float32Array.toLocaleString() : string - >str : string - >float32Array.toLocaleString() : string -->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float32Array : Float32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = float32Array.toLocaleString('en-US'); // should be error - >str = float32Array.toLocaleString('en-US') : string - >str : string - >float32Array.toLocaleString('en-US') : string -->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float32Array : Float32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float32Array : Float32Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" -@@= skipped -37, +37 lines =@@ - >str = float64Array.toLocaleString() : string - >str : string - >float64Array.toLocaleString() : string -->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float64Array : Float64Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - - str = float64Array.toLocaleString('en-US'); // should be error - >str = float64Array.toLocaleString('en-US') : string - >str : string - >float64Array.toLocaleString('en-US') : string -->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float64Array : Float64Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - - str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // should be error - >str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string - >str : string - >float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string -->float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >float64Array : Float64Array -->toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string; } - >'en-US' : "en-US" - >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } - >style : "currency" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/arrayTypeInSignatureOfInterfaceAndClass.types b/testdata/baselines/reference/submodule/compiler/arrayTypeInSignatureOfInterfaceAndClass.types index ef14a44ec0a..74f7ade927e 100644 --- a/testdata/baselines/reference/submodule/compiler/arrayTypeInSignatureOfInterfaceAndClass.types +++ b/testdata/baselines/reference/submodule/compiler/arrayTypeInSignatureOfInterfaceAndClass.types @@ -8,7 +8,7 @@ declare namespace WinJS { >Promise : Promise then(success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : (success?: ((value: T) => Promise) | undefined, error?: ((error: any) => Promise) | undefined, progress?: ((progress: any) => void) | undefined) => Promise +>then : (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void) => Promise >success : ((value: T) => Promise) | undefined >value : T >error : ((error: any) => Promise) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/arrayTypeInSignatureOfInterfaceAndClass.types.diff b/testdata/baselines/reference/submodule/compiler/arrayTypeInSignatureOfInterfaceAndClass.types.diff deleted file mode 100644 index c8191122092..00000000000 --- a/testdata/baselines/reference/submodule/compiler/arrayTypeInSignatureOfInterfaceAndClass.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.arrayTypeInSignatureOfInterfaceAndClass.types -+++ new.arrayTypeInSignatureOfInterfaceAndClass.types -@@= skipped -7, +7 lines =@@ - >Promise : Promise - - then(success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; -->then : (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void) => Promise -+>then : (success?: ((value: T) => Promise) | undefined, error?: ((error: any) => Promise) | undefined, progress?: ((progress: any) => void) | undefined) => Promise - >success : ((value: T) => Promise) | undefined - >value : T - >error : ((error: any) => Promise) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.errors.txt b/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.errors.txt index 90f4c8c2e26..3c05b4f9174 100644 --- a/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.errors.txt @@ -1,9 +1,9 @@ assignmentCompatBug2.ts(1,27): error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{ b: number; }'. assignmentCompatBug2.ts(3,8): error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{ b: number; }'. assignmentCompatBug2.ts(5,13): error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{ b: number; }'. -assignmentCompatBug2.ts(15,1): error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. -assignmentCompatBug2.ts(20,1): error TS2741: Property 'g' is missing in type '{ f: (n: number) => number; m: number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. -assignmentCompatBug2.ts(33,1): error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. +assignmentCompatBug2.ts(15,1): error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. +assignmentCompatBug2.ts(20,1): error TS2741: Property 'g' is missing in type '{ f: (n: number) => number; m: number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. +assignmentCompatBug2.ts(33,1): error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. ==== assignmentCompatBug2.ts (6 errors) ==== @@ -29,7 +29,7 @@ assignmentCompatBug2.ts(33,1): error TS2741: Property 'm' is missing in type '{ b3 = { ~~ -!!! error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. +!!! error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. !!! related TS2728 assignmentCompatBug2.ts:7:55: 'm' is declared here. f: (n) => { return 0; }, g: (s) => { return 0; }, @@ -37,7 +37,7 @@ assignmentCompatBug2.ts(33,1): error TS2741: Property 'm' is missing in type '{ b3 = { ~~ -!!! error TS2741: Property 'g' is missing in type '{ f: (n: number) => number; m: number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. +!!! error TS2741: Property 'g' is missing in type '{ f: (n: number) => number; m: number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. !!! related TS2728 assignmentCompatBug2.ts:7:33: 'g' is declared here. f: (n) => { return 0; }, m: 0, @@ -53,7 +53,7 @@ assignmentCompatBug2.ts(33,1): error TS2741: Property 'm' is missing in type '{ b3 = { ~~ -!!! error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. +!!! error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. !!! related TS2728 assignmentCompatBug2.ts:7:55: 'm' is declared here. f: (n) => { return 0; }, g: (s) => { return 0; }, diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.errors.txt.diff new file mode 100644 index 00000000000..2c9b20b3644 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.errors.txt.diff @@ -0,0 +1,42 @@ +--- old.assignmentCompatBug2.errors.txt ++++ new.assignmentCompatBug2.errors.txt +@@= skipped -0, +0 lines =@@ + assignmentCompatBug2.ts(1,27): error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{ b: number; }'. + assignmentCompatBug2.ts(3,8): error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{ b: number; }'. + assignmentCompatBug2.ts(5,13): error TS2353: Object literal may only specify known properties, and 'a' does not exist in type '{ b: number; }'. +-assignmentCompatBug2.ts(15,1): error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. +-assignmentCompatBug2.ts(20,1): error TS2741: Property 'g' is missing in type '{ f: (n: number) => number; m: number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. +-assignmentCompatBug2.ts(33,1): error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. ++assignmentCompatBug2.ts(15,1): error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. ++assignmentCompatBug2.ts(20,1): error TS2741: Property 'g' is missing in type '{ f: (n: number) => number; m: number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. ++assignmentCompatBug2.ts(33,1): error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. + + + ==== assignmentCompatBug2.ts (6 errors) ==== +@@= skipped -28, +28 lines =@@ + + b3 = { + ~~ +-!!! error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. ++!!! error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. + !!! related TS2728 assignmentCompatBug2.ts:7:55: 'm' is declared here. + f: (n) => { return 0; }, + g: (s) => { return 0; }, +@@= skipped -8, +8 lines =@@ + + b3 = { + ~~ +-!!! error TS2741: Property 'g' is missing in type '{ f: (n: number) => number; m: number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. ++!!! error TS2741: Property 'g' is missing in type '{ f: (n: number) => number; m: number; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. + !!! related TS2728 assignmentCompatBug2.ts:7:33: 'g' is declared here. + f: (n) => { return 0; }, + m: 0, +@@= skipped -16, +16 lines =@@ + + b3 = { + ~~ +-!!! error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; }'. ++!!! error TS2741: Property 'm' is missing in type '{ f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; }' but required in type '{ f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }'. + !!! related TS2728 assignmentCompatBug2.ts:7:55: 'm' is declared here. + f: (n) => { return 0; }, + g: (s) => { return 0; }, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.types b/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.types index 8b470993169..3568e25036f 100644 --- a/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.types +++ b/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.types @@ -25,7 +25,7 @@ b2 = {b: 0, a: 0 }; >0 : 0 var b3: { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }; ->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } +>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } >f : (n: number) => number >n : number >g : (s: string) => number @@ -37,7 +37,7 @@ var b3: { f(n: number): number; g(s: string): number; m: number; n?: number; k?( b3 = { >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0,} : { f: (n: number) => number; g: (s: string) => number; m: number; } ->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } +>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } >{ f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0,} : { f: (n: number) => number; g: (s: string) => number; m: number; } f: (n) => { return 0; }, @@ -60,7 +60,7 @@ b3 = { b3 = { >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; },} : { f: (n: number) => number; g: (s: string) => number; } ->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } +>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } >{ f: (n) => { return 0; }, g: (s) => { return 0; },} : { f: (n: number) => number; g: (s: string) => number; } f: (n) => { return 0; }, @@ -79,7 +79,7 @@ b3 = { b3 = { >b3 = { f: (n) => { return 0; }, m: 0,} : { f: (n: number) => number; m: number; } ->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } +>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } >{ f: (n) => { return 0; }, m: 0,} : { f: (n: number) => number; m: number; } f: (n) => { return 0; }, @@ -96,7 +96,7 @@ b3 = { b3 = { >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; m: number; n: number; k: (a: any) => null; } ->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } +>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } >{ f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; m: number; n: number; k: (a: any) => null; } f: (n) => { return 0; }, @@ -128,7 +128,7 @@ b3 = { b3 = { >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; }, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; } ->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } +>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } >{ f: (n) => { return 0; }, g: (s) => { return 0; }, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; } f: (n) => { return 0; }, diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.types.diff b/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.types.diff deleted file mode 100644 index 8a64d71d129..00000000000 --- a/testdata/baselines/reference/submodule/compiler/assignmentCompatBug2.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.assignmentCompatBug2.types -+++ new.assignmentCompatBug2.types -@@= skipped -24, +24 lines =@@ - >0 : 0 - - var b3: { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }; -->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -+>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } - >f : (n: number) => number - >n : number - >g : (s: string) => number -@@= skipped -12, +12 lines =@@ - - b3 = { - >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0,} : { f: (n: number) => number; g: (s: string) => number; m: number; } -->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -+>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } - >{ f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0,} : { f: (n: number) => number; g: (s: string) => number; m: number; } - - f: (n) => { return 0; }, -@@= skipped -23, +23 lines =@@ - - b3 = { - >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; },} : { f: (n: number) => number; g: (s: string) => number; } -->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -+>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } - >{ f: (n) => { return 0; }, g: (s) => { return 0; },} : { f: (n: number) => number; g: (s: string) => number; } - - f: (n) => { return 0; }, -@@= skipped -19, +19 lines =@@ - - b3 = { - >b3 = { f: (n) => { return 0; }, m: 0,} : { f: (n: number) => number; m: number; } -->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -+>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } - >{ f: (n) => { return 0; }, m: 0,} : { f: (n: number) => number; m: number; } - - f: (n) => { return 0; }, -@@= skipped -17, +17 lines =@@ - - b3 = { - >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; m: number; n: number; k: (a: any) => null; } -->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -+>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } - >{ f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; m: number; n: number; k: (a: any) => null; } - - f: (n) => { return 0; }, -@@= skipped -32, +32 lines =@@ - - b3 = { - >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; }, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; } -->b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -+>b3 : { f(n: number): number; g(s: string): number; m: number; n?: number | undefined; k?(a: any): any; } - >{ f: (n) => { return 0; }, g: (s) => { return 0; }, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => null; } - - f: (n) => { return 0; }, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.errors.txt b/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.errors.txt index c438a7ca362..1cf0254a847 100644 --- a/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.errors.txt @@ -1,6 +1,6 @@ assignmentCompatFunctionsWithOptionalArgs.ts(1,10): error TS2391: Function implementation is missing or not immediately following the declaration. assignmentCompatFunctionsWithOptionalArgs.ts(4,17): error TS2322: Type 'boolean' is not assignable to type 'string'. -assignmentCompatFunctionsWithOptionalArgs.ts(5,5): error TS2741: Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string | undefined; }'. +assignmentCompatFunctionsWithOptionalArgs.ts(5,5): error TS2741: Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string; }'. ==== assignmentCompatFunctionsWithOptionalArgs.ts (3 errors) ==== @@ -12,8 +12,8 @@ assignmentCompatFunctionsWithOptionalArgs.ts(5,5): error TS2741: Property 'id' i foo({ id: 1234, name: false }); // Error, name of wrong type ~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'string'. -!!! related TS6500 assignmentCompatFunctionsWithOptionalArgs.ts:1:31: The expected type comes from property 'name' which is declared here on type '{ id: number; name?: string | undefined; }' +!!! related TS6500 assignmentCompatFunctionsWithOptionalArgs.ts:1:31: The expected type comes from property 'name' which is declared here on type '{ id: number; name?: string; }' foo({ name: "hello" }); // Error, id required but missing ~~~~~~~~~~~~~~~~~ -!!! error TS2741: Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string | undefined; }'. +!!! error TS2741: Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string; }'. !!! related TS2728 assignmentCompatFunctionsWithOptionalArgs.ts:1:19: 'id' is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.errors.txt.diff index 2590fee04e9..028d4311ef6 100644 --- a/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.errors.txt.diff @@ -5,15 +5,19 @@ assignmentCompatFunctionsWithOptionalArgs.ts(4,17): error TS2322: Type 'boolean' is not assignable to type 'string'. -assignmentCompatFunctionsWithOptionalArgs.ts(5,5): error TS2345: Argument of type '{ name: string; }' is not assignable to parameter of type '{ id: number; name?: string | undefined; }'. - Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string | undefined; }'. -+assignmentCompatFunctionsWithOptionalArgs.ts(5,5): error TS2741: Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string | undefined; }'. ++assignmentCompatFunctionsWithOptionalArgs.ts(5,5): error TS2741: Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string; }'. ==== assignmentCompatFunctionsWithOptionalArgs.ts (3 errors) ==== -@@= skipped -15, +14 lines =@@ - !!! related TS6500 assignmentCompatFunctionsWithOptionalArgs.ts:1:31: The expected type comes from property 'name' which is declared here on type '{ id: number; name?: string | undefined; }' +@@= skipped -12, +11 lines =@@ + foo({ id: 1234, name: false }); // Error, name of wrong type + ~~~~ + !!! error TS2322: Type 'boolean' is not assignable to type 'string'. +-!!! related TS6500 assignmentCompatFunctionsWithOptionalArgs.ts:1:31: The expected type comes from property 'name' which is declared here on type '{ id: number; name?: string | undefined; }' ++!!! related TS6500 assignmentCompatFunctionsWithOptionalArgs.ts:1:31: The expected type comes from property 'name' which is declared here on type '{ id: number; name?: string; }' foo({ name: "hello" }); // Error, id required but missing ~~~~~~~~~~~~~~~~~ -!!! error TS2345: Argument of type '{ name: string; }' is not assignable to parameter of type '{ id: number; name?: string | undefined; }'. -!!! error TS2345: Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string | undefined; }'. -+!!! error TS2741: Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string | undefined; }'. ++!!! error TS2741: Property 'id' is missing in type '{ name: string; }' but required in type '{ id: number; name?: string; }'. !!! related TS2728 assignmentCompatFunctionsWithOptionalArgs.ts:1:19: 'id' is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.types b/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.types index e48bbe770dc..9982c565399 100644 --- a/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.types +++ b/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.types @@ -2,21 +2,21 @@ === assignmentCompatFunctionsWithOptionalArgs.ts === function foo(x: { id: number; name?: string; }): void; ->foo : (x: { id: number; name?: string | undefined; }) => void ->x : { id: number; name?: string | undefined; } +>foo : (x: { id: number; name?: string; }) => void +>x : { id: number; name?: string; } >id : number >name : string | undefined foo({ id: 1234 }); // Ok >foo({ id: 1234 }) : void ->foo : (x: { id: number; name?: string | undefined; }) => void +>foo : (x: { id: number; name?: string; }) => void >{ id: 1234 } : { id: number; } >id : number >1234 : 1234 foo({ id: 1234, name: "hello" }); // Ok >foo({ id: 1234, name: "hello" }) : void ->foo : (x: { id: number; name?: string | undefined; }) => void +>foo : (x: { id: number; name?: string; }) => void >{ id: 1234, name: "hello" } : { id: number; name: string; } >id : number >1234 : 1234 @@ -25,7 +25,7 @@ foo({ id: 1234, name: "hello" }); // Ok foo({ id: 1234, name: false }); // Error, name of wrong type >foo({ id: 1234, name: false }) : void ->foo : (x: { id: number; name?: string | undefined; }) => void +>foo : (x: { id: number; name?: string; }) => void >{ id: 1234, name: false } : { id: number; name: boolean; } >id : number >1234 : 1234 @@ -34,7 +34,7 @@ foo({ id: 1234, name: false }); // Error, name of wrong type foo({ name: "hello" }); // Error, id required but missing >foo({ name: "hello" }) : void ->foo : (x: { id: number; name?: string | undefined; }) => void +>foo : (x: { id: number; name?: string; }) => void >{ name: "hello" } : { name: string; } >name : string >"hello" : "hello" diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.types.diff b/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.types.diff deleted file mode 100644 index 1836f1b64f1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/assignmentCompatFunctionsWithOptionalArgs.types.diff +++ /dev/null @@ -1,46 +0,0 @@ ---- old.assignmentCompatFunctionsWithOptionalArgs.types -+++ new.assignmentCompatFunctionsWithOptionalArgs.types -@@= skipped -1, +1 lines =@@ - - === assignmentCompatFunctionsWithOptionalArgs.ts === - function foo(x: { id: number; name?: string; }): void; -->foo : (x: { id: number; name?: string; }) => void -->x : { id: number; name?: string; } -+>foo : (x: { id: number; name?: string | undefined; }) => void -+>x : { id: number; name?: string | undefined; } - >id : number - >name : string | undefined - - foo({ id: 1234 }); // Ok - >foo({ id: 1234 }) : void -->foo : (x: { id: number; name?: string; }) => void -+>foo : (x: { id: number; name?: string | undefined; }) => void - >{ id: 1234 } : { id: number; } - >id : number - >1234 : 1234 - - foo({ id: 1234, name: "hello" }); // Ok - >foo({ id: 1234, name: "hello" }) : void -->foo : (x: { id: number; name?: string; }) => void -+>foo : (x: { id: number; name?: string | undefined; }) => void - >{ id: 1234, name: "hello" } : { id: number; name: string; } - >id : number - >1234 : 1234 -@@= skipped -23, +23 lines =@@ - - foo({ id: 1234, name: false }); // Error, name of wrong type - >foo({ id: 1234, name: false }) : void -->foo : (x: { id: number; name?: string; }) => void -+>foo : (x: { id: number; name?: string | undefined; }) => void - >{ id: 1234, name: false } : { id: number; name: boolean; } - >id : number - >1234 : 1234 -@@= skipped -9, +9 lines =@@ - - foo({ name: "hello" }); // Error, id required but missing - >foo({ name: "hello" }) : void -->foo : (x: { id: number; name?: string; }) => void -+>foo : (x: { id: number; name?: string | undefined; }) => void - >{ name: "hello" } : { name: string; } - >name : string - >"hello" : "hello" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatOnNew.types b/testdata/baselines/reference/submodule/compiler/assignmentCompatOnNew.types index d55d72e86a6..3342304f4b5 100644 --- a/testdata/baselines/reference/submodule/compiler/assignmentCompatOnNew.types +++ b/testdata/baselines/reference/submodule/compiler/assignmentCompatOnNew.types @@ -5,11 +5,11 @@ class Foo{}; >Foo : Foo function bar(x: {new(): Foo;}){} ->bar : (x: new () => Foo) => void +>bar : (x: { new (): Foo; }) => void >x : new () => Foo bar(Foo); // Error, but should be allowed >bar(Foo) : void ->bar : (x: new () => Foo) => void +>bar : (x: { new (): Foo; }) => void >Foo : typeof Foo diff --git a/testdata/baselines/reference/submodule/compiler/assignmentCompatOnNew.types.diff b/testdata/baselines/reference/submodule/compiler/assignmentCompatOnNew.types.diff deleted file mode 100644 index 8d3f98096a0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/assignmentCompatOnNew.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.assignmentCompatOnNew.types -+++ new.assignmentCompatOnNew.types -@@= skipped -4, +4 lines =@@ - >Foo : Foo - - function bar(x: {new(): Foo;}){} -->bar : (x: { new (): Foo; }) => void -+>bar : (x: new () => Foo) => void - >x : new () => Foo - - bar(Foo); // Error, but should be allowed - >bar(Foo) : void -->bar : (x: { new (): Foo; }) => void -+>bar : (x: new () => Foo) => void - >Foo : typeof Foo diff --git a/testdata/baselines/reference/submodule/compiler/assignmentToConditionalBrandedStringTemplateOrMapping.types b/testdata/baselines/reference/submodule/compiler/assignmentToConditionalBrandedStringTemplateOrMapping.types index 24500c2847a..5e0dabf1752 100644 --- a/testdata/baselines/reference/submodule/compiler/assignmentToConditionalBrandedStringTemplateOrMapping.types +++ b/testdata/baselines/reference/submodule/compiler/assignmentToConditionalBrandedStringTemplateOrMapping.types @@ -2,32 +2,32 @@ === assignmentToConditionalBrandedStringTemplateOrMapping.ts === let a: (() => T extends `${'a' & { a: 1 }}` ? 1 : 2) = null!; ->a : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 +>a : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 >a : 1 >null! : never let b: (() => T extends `${'a' & { a: 1 }}` ? 1 : 2) = null!; ->b : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 +>b : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 >a : 1 >null! : never a = b; ->a = b : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 ->a : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 ->b : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 +>a = b : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 +>a : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 +>b : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 let c: (() => T extends Uppercase<'a' & { a: 1 }> ? 1 : 2) = null!; ->c : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 +>c : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 >a : 1 >null! : never let d: (() => T extends Uppercase<'a' & { a: 1 }> ? 1 : 2) = null!; ->d : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 +>d : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 >a : 1 >null! : never c = d; ->c = d : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 ->c : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 ->d : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 +>c = d : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 +>c : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 +>d : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/assignmentToConditionalBrandedStringTemplateOrMapping.types.diff b/testdata/baselines/reference/submodule/compiler/assignmentToConditionalBrandedStringTemplateOrMapping.types.diff index a04c80c7e36..e9cc6a03626 100644 --- a/testdata/baselines/reference/submodule/compiler/assignmentToConditionalBrandedStringTemplateOrMapping.types.diff +++ b/testdata/baselines/reference/submodule/compiler/assignmentToConditionalBrandedStringTemplateOrMapping.types.diff @@ -1,17 +1,37 @@ --- old.assignmentToConditionalBrandedStringTemplateOrMapping.types +++ new.assignmentToConditionalBrandedStringTemplateOrMapping.types -@@= skipped -16, +16 lines =@@ - >b : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 +@@= skipped -1, +1 lines =@@ + + === assignmentToConditionalBrandedStringTemplateOrMapping.ts === + let a: (() => T extends `${'a' & { a: 1 }}` ? 1 : 2) = null!; +->a : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 ++>a : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 + >a : 1 + >null! : never + + let b: (() => T extends `${'a' & { a: 1 }}` ? 1 : 2) = null!; +->b : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 ++>b : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 + >a : 1 + >null! : never + + a = b; +->a = b : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 +->a : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 +->b : () => T extends `${"a" & { a: 1; }}` ? 1 : 2 ++>a = b : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 ++>a : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 ++>b : () => T extends `${'a' & { a: 1; }}` ? 1 : 2 let c: (() => T extends Uppercase<'a' & { a: 1 }> ? 1 : 2) = null!; ->c : () => T extends Uppercase<"a" & { a: 1; }> ? 1 : 2 -+>c : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 ++>c : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 >a : 1 >null! : never let d: (() => T extends Uppercase<'a' & { a: 1 }> ? 1 : 2) = null!; ->d : () => T extends Uppercase<"a" & { a: 1; }> ? 1 : 2 -+>d : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 ++>d : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 >a : 1 >null! : never @@ -19,6 +39,6 @@ ->c = d : () => T extends Uppercase<"a" & { a: 1; }> ? 1 : 2 ->c : () => T extends Uppercase<"a" & { a: 1; }> ? 1 : 2 ->d : () => T extends Uppercase<"a" & { a: 1; }> ? 1 : 2 -+>c = d : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 -+>c : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 -+>d : () => T extends Uppercase<`${"a" & { a: 1; }}`> ? 1 : 2 ++>c = d : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 ++>c : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 ++>d : () => T extends Uppercase<'a' & { a: 1; }> ? 1 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/assignmentToInstantiationExpression.types b/testdata/baselines/reference/submodule/compiler/assignmentToInstantiationExpression.types index c88e063e886..9b69aa168dc 100644 --- a/testdata/baselines/reference/submodule/compiler/assignmentToInstantiationExpression.types +++ b/testdata/baselines/reference/submodule/compiler/assignmentToInstantiationExpression.types @@ -2,7 +2,7 @@ === assignmentToInstantiationExpression.ts === let obj: { fn?: () => T } = {}; ->obj : { fn?: (() => T) | undefined; } +>obj : { fn?: () => T; } >fn : (() => T) | undefined >{} : {} @@ -10,7 +10,7 @@ obj.fn = () => 1234; >obj.fn = () => 1234 : () => number >obj.fn : (() => number) | undefined >obj.fn : (() => T) | undefined ->obj : { fn?: (() => T) | undefined; } +>obj : { fn?: () => T; } >fn : (() => T) | undefined >() => 1234 : () => number >1234 : 1234 diff --git a/testdata/baselines/reference/submodule/compiler/assignmentToInstantiationExpression.types.diff b/testdata/baselines/reference/submodule/compiler/assignmentToInstantiationExpression.types.diff deleted file mode 100644 index ec3b6e6bdda..00000000000 --- a/testdata/baselines/reference/submodule/compiler/assignmentToInstantiationExpression.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.assignmentToInstantiationExpression.types -+++ new.assignmentToInstantiationExpression.types -@@= skipped -1, +1 lines =@@ - - === assignmentToInstantiationExpression.ts === - let obj: { fn?: () => T } = {}; -->obj : { fn?: () => T; } -+>obj : { fn?: (() => T) | undefined; } - >fn : (() => T) | undefined - >{} : {} - -@@= skipped -8, +8 lines =@@ - >obj.fn = () => 1234 : () => number - >obj.fn : (() => number) | undefined - >obj.fn : (() => T) | undefined -->obj : { fn?: () => T; } -+>obj : { fn?: (() => T) | undefined; } - >fn : (() => T) | undefined - >() => 1234 : () => number - >1234 : 1234 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/asyncFunctionContextuallyTypedReturns.types b/testdata/baselines/reference/submodule/compiler/asyncFunctionContextuallyTypedReturns.types index 08b9f1a1124..00e43f0e06a 100644 --- a/testdata/baselines/reference/submodule/compiler/asyncFunctionContextuallyTypedReturns.types +++ b/testdata/baselines/reference/submodule/compiler/asyncFunctionContextuallyTypedReturns.types @@ -2,13 +2,13 @@ === asyncFunctionContextuallyTypedReturns.ts === declare function f(cb: (v: boolean) => [0] | PromiseLike<[0]>): void; ->f : (cb: (v: boolean) => PromiseLike<[0]> | [0]) => void ->cb : (v: boolean) => PromiseLike<[0]> | [0] +>f : (cb: (v: boolean) => [0] | PromiseLike<[0]>) => void +>cb : (v: boolean) => [0] | PromiseLike<[0]> >v : boolean f(v => v ? [0] : Promise.reject()); >f(v => v ? [0] : Promise.reject()) : void ->f : (cb: (v: boolean) => PromiseLike<[0]> | [0]) => void +>f : (cb: (v: boolean) => [0] | PromiseLike<[0]>) => void >v => v ? [0] : Promise.reject() : (v: boolean) => Promise<[0]> | [0] >v : boolean >v ? [0] : Promise.reject() : Promise<[0]> | [0] @@ -22,7 +22,7 @@ f(v => v ? [0] : Promise.reject()); f(async v => v ? [0] : Promise.reject()); >f(async v => v ? [0] : Promise.reject()) : void ->f : (cb: (v: boolean) => PromiseLike<[0]> | [0]) => void +>f : (cb: (v: boolean) => [0] | PromiseLike<[0]>) => void >async v => v ? [0] : Promise.reject() : (v: boolean) => Promise<[0]> >v : boolean >v ? [0] : Promise.reject() : Promise<[0]> | [0] @@ -104,7 +104,7 @@ h(async v => v ? (def) => { } : Promise.reject()); // repro from #29196 const increment: ( ->increment : (num: number, str: string) => string | Promise any)> +>increment : (num: number, str: string) => Promise<((s: string) => any) | string> | string num: number, >num : number @@ -130,7 +130,7 @@ const increment: ( } const increment2: ( ->increment2 : (num: number, str: string) => Promise any)> +>increment2 : (num: number, str: string) => Promise<((s: string) => any) | string> num: number, >num : number diff --git a/testdata/baselines/reference/submodule/compiler/asyncFunctionContextuallyTypedReturns.types.diff b/testdata/baselines/reference/submodule/compiler/asyncFunctionContextuallyTypedReturns.types.diff deleted file mode 100644 index e6400fbc449..00000000000 --- a/testdata/baselines/reference/submodule/compiler/asyncFunctionContextuallyTypedReturns.types.diff +++ /dev/null @@ -1,46 +0,0 @@ ---- old.asyncFunctionContextuallyTypedReturns.types -+++ new.asyncFunctionContextuallyTypedReturns.types -@@= skipped -1, +1 lines =@@ - - === asyncFunctionContextuallyTypedReturns.ts === - declare function f(cb: (v: boolean) => [0] | PromiseLike<[0]>): void; -->f : (cb: (v: boolean) => [0] | PromiseLike<[0]>) => void -->cb : (v: boolean) => [0] | PromiseLike<[0]> -+>f : (cb: (v: boolean) => PromiseLike<[0]> | [0]) => void -+>cb : (v: boolean) => PromiseLike<[0]> | [0] - >v : boolean - - f(v => v ? [0] : Promise.reject()); - >f(v => v ? [0] : Promise.reject()) : void -->f : (cb: (v: boolean) => [0] | PromiseLike<[0]>) => void -+>f : (cb: (v: boolean) => PromiseLike<[0]> | [0]) => void - >v => v ? [0] : Promise.reject() : (v: boolean) => Promise<[0]> | [0] - >v : boolean - >v ? [0] : Promise.reject() : Promise<[0]> | [0] -@@= skipped -20, +20 lines =@@ - - f(async v => v ? [0] : Promise.reject()); - >f(async v => v ? [0] : Promise.reject()) : void -->f : (cb: (v: boolean) => [0] | PromiseLike<[0]>) => void -+>f : (cb: (v: boolean) => PromiseLike<[0]> | [0]) => void - >async v => v ? [0] : Promise.reject() : (v: boolean) => Promise<[0]> - >v : boolean - >v ? [0] : Promise.reject() : Promise<[0]> | [0] -@@= skipped -82, +82 lines =@@ - - // repro from #29196 - const increment: ( -->increment : (num: number, str: string) => Promise<((s: string) => any) | string> | string -+>increment : (num: number, str: string) => string | Promise any)> - - num: number, - >num : number -@@= skipped -26, +26 lines =@@ - } - - const increment2: ( -->increment2 : (num: number, str: string) => Promise<((s: string) => any) | string> -+>increment2 : (num: number, str: string) => Promise any)> - - num: number, - >num : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/asyncFunctionReturnType.types b/testdata/baselines/reference/submodule/compiler/asyncFunctionReturnType.types index 48e57a10122..36f64a7111f 100644 --- a/testdata/baselines/reference/submodule/compiler/asyncFunctionReturnType.types +++ b/testdata/baselines/reference/submodule/compiler/asyncFunctionReturnType.types @@ -31,7 +31,7 @@ interface Obj { } async function fIndexedTypeForStringProp(obj: Obj): Promise { ->fIndexedTypeForStringProp : (obj: Obj) => Promise +>fIndexedTypeForStringProp : (obj: Obj) => Promise >obj : Obj return obj.stringProp; @@ -41,7 +41,7 @@ async function fIndexedTypeForStringProp(obj: Obj): Promise { } async function fIndexedTypeForPromiseOfStringProp(obj: Obj): Promise { ->fIndexedTypeForPromiseOfStringProp : (obj: Obj) => Promise +>fIndexedTypeForPromiseOfStringProp : (obj: Obj) => Promise >obj : Obj return Promise.resolve(obj.stringProp); @@ -55,7 +55,7 @@ async function fIndexedTypeForPromiseOfStringProp(obj: Obj): Promise { ->fIndexedTypeForExplicitPromiseOfStringProp : (obj: Obj) => Promise +>fIndexedTypeForExplicitPromiseOfStringProp : (obj: Obj) => Promise >obj : Obj return Promise.resolve(obj.stringProp); @@ -69,7 +69,7 @@ async function fIndexedTypeForExplicitPromiseOfStringProp(obj: Obj): Promise { ->fIndexedTypeForAnyProp : (obj: Obj) => Promise +>fIndexedTypeForAnyProp : (obj: Obj) => Promise >obj : Obj return obj.anyProp; @@ -79,7 +79,7 @@ async function fIndexedTypeForAnyProp(obj: Obj): Promise { } async function fIndexedTypeForPromiseOfAnyProp(obj: Obj): Promise { ->fIndexedTypeForPromiseOfAnyProp : (obj: Obj) => Promise +>fIndexedTypeForPromiseOfAnyProp : (obj: Obj) => Promise >obj : Obj return Promise.resolve(obj.anyProp); @@ -93,7 +93,7 @@ async function fIndexedTypeForPromiseOfAnyProp(obj: Obj): Promise { ->fIndexedTypeForExplicitPromiseOfAnyProp : (obj: Obj) => Promise +>fIndexedTypeForExplicitPromiseOfAnyProp : (obj: Obj) => Promise >obj : Obj return Promise.resolve(obj.anyProp); diff --git a/testdata/baselines/reference/submodule/compiler/asyncFunctionReturnType.types.diff b/testdata/baselines/reference/submodule/compiler/asyncFunctionReturnType.types.diff deleted file mode 100644 index ce137541cf1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/asyncFunctionReturnType.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.asyncFunctionReturnType.types -+++ new.asyncFunctionReturnType.types -@@= skipped -30, +30 lines =@@ - } - - async function fIndexedTypeForStringProp(obj: Obj): Promise { -->fIndexedTypeForStringProp : (obj: Obj) => Promise -+>fIndexedTypeForStringProp : (obj: Obj) => Promise - >obj : Obj - - return obj.stringProp; -@@= skipped -10, +10 lines =@@ - } - - async function fIndexedTypeForPromiseOfStringProp(obj: Obj): Promise { -->fIndexedTypeForPromiseOfStringProp : (obj: Obj) => Promise -+>fIndexedTypeForPromiseOfStringProp : (obj: Obj) => Promise - >obj : Obj - - return Promise.resolve(obj.stringProp); -@@= skipped -14, +14 lines =@@ - } - - async function fIndexedTypeForExplicitPromiseOfStringProp(obj: Obj): Promise { -->fIndexedTypeForExplicitPromiseOfStringProp : (obj: Obj) => Promise -+>fIndexedTypeForExplicitPromiseOfStringProp : (obj: Obj) => Promise - >obj : Obj - - return Promise.resolve(obj.stringProp); -@@= skipped -14, +14 lines =@@ - } - - async function fIndexedTypeForAnyProp(obj: Obj): Promise { -->fIndexedTypeForAnyProp : (obj: Obj) => Promise -+>fIndexedTypeForAnyProp : (obj: Obj) => Promise - >obj : Obj - - return obj.anyProp; -@@= skipped -10, +10 lines =@@ - } - - async function fIndexedTypeForPromiseOfAnyProp(obj: Obj): Promise { -->fIndexedTypeForPromiseOfAnyProp : (obj: Obj) => Promise -+>fIndexedTypeForPromiseOfAnyProp : (obj: Obj) => Promise - >obj : Obj - - return Promise.resolve(obj.anyProp); -@@= skipped -14, +14 lines =@@ - } - - async function fIndexedTypeForExplicitPromiseOfAnyProp(obj: Obj): Promise { -->fIndexedTypeForExplicitPromiseOfAnyProp : (obj: Obj) => Promise -+>fIndexedTypeForExplicitPromiseOfAnyProp : (obj: Obj) => Promise - >obj : Obj - - return Promise.resolve(obj.anyProp); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/asyncFunctionsAndStrictNullChecks.types b/testdata/baselines/reference/submodule/compiler/asyncFunctionsAndStrictNullChecks.types index 49523fe343b..b42bfe12a99 100644 --- a/testdata/baselines/reference/submodule/compiler/asyncFunctionsAndStrictNullChecks.types +++ b/testdata/baselines/reference/submodule/compiler/asyncFunctionsAndStrictNullChecks.types @@ -4,7 +4,7 @@ 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) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): 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, 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) => IPromise) | undefined >value : TResult >error : ((error: any) => IPromise) | undefined @@ -13,7 +13,7 @@ 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) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): 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, 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) => IPromise) | undefined >value : TResult >error : ((error: any) => U) | undefined @@ -22,7 +22,7 @@ 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) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): 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, 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 >error : ((error: any) => IPromise) | undefined @@ -31,7 +31,7 @@ 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) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): 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, 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 >error : ((error: any) => U) | undefined @@ -40,7 +40,7 @@ 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) | undefined, error?: ((error: any) => any) | undefined, progress?: ((progress: any) => void) | undefined) => void +>done : (success?: (value: TResult) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void >success : ((value: TResult) => any) | undefined >value : TResult >error : ((error: any) => any) | undefined @@ -77,7 +77,7 @@ declare function resolve2(value: T): Windows.Foundation.IPromise; >Foundation : any async function sample2(x?: number) { ->sample2 : (x?: number | undefined) => Promise +>sample2 : (x?: number) => Promise >x : number | undefined let x1 = await resolve1(x); diff --git a/testdata/baselines/reference/submodule/compiler/asyncFunctionsAndStrictNullChecks.types.diff b/testdata/baselines/reference/submodule/compiler/asyncFunctionsAndStrictNullChecks.types.diff index 6b30e7b10fb..29d4c3e8b9c 100644 --- a/testdata/baselines/reference/submodule/compiler/asyncFunctionsAndStrictNullChecks.types.diff +++ b/testdata/baselines/reference/submodule/compiler/asyncFunctionsAndStrictNullChecks.types.diff @@ -5,7 +5,7 @@ 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) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): 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, 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) => IPromise) | undefined >value : TResult >error : ((error: any) => IPromise) | undefined @@ -14,7 +14,7 @@ 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) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): 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, 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) => IPromise) | undefined >value : TResult >error : ((error: any) => U) | undefined @@ -23,7 +23,7 @@ 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) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): 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, 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 >error : ((error: any) => IPromise) | undefined @@ -32,25 +32,7 @@ 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) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): 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, 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 - >error : ((error: any) => U) | undefined -@@= skipped -9, +9 lines =@@ - >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) | undefined, error?: ((error: any) => any) | undefined, progress?: ((progress: any) => void) | undefined) => void - >success : ((value: TResult) => any) | undefined - >value : TResult - >error : ((error: any) => any) | undefined -@@= skipped -37, +37 lines =@@ - >Foundation : any - - async function sample2(x?: number) { -->sample2 : (x?: number) => Promise -+>sample2 : (x?: number | undefined) => Promise - >x : number | undefined - - let x1 = await resolve1(x); \ No newline at end of file + >error : ((error: any) => U) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/autolift3.types b/testdata/baselines/reference/submodule/compiler/autolift3.types index f2ab0df9858..53ede39bc24 100644 --- a/testdata/baselines/reference/submodule/compiler/autolift3.types +++ b/testdata/baselines/reference/submodule/compiler/autolift3.types @@ -42,9 +42,9 @@ class B { return fso.toString(); >fso.toString() : string ->fso.toString : (radix?: number | undefined) => string +>fso.toString : (radix?: number) => string >fso : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } } })(); diff --git a/testdata/baselines/reference/submodule/compiler/autolift3.types.diff b/testdata/baselines/reference/submodule/compiler/autolift3.types.diff deleted file mode 100644 index ca08325d443..00000000000 --- a/testdata/baselines/reference/submodule/compiler/autolift3.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.autolift3.types -+++ new.autolift3.types -@@= skipped -41, +41 lines =@@ - - return fso.toString(); - >fso.toString() : string -->fso.toString : (radix?: number) => string -+>fso.toString : (radix?: number | undefined) => string - >fso : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - } - })(); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types b/testdata/baselines/reference/submodule/compiler/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types index 24155c1a020..cb0f09c52d7 100644 --- a/testdata/baselines/reference/submodule/compiler/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types +++ b/testdata/baselines/reference/submodule/compiler/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types @@ -5,14 +5,14 @@ declare const foo: ["a", string, number] | ["b", string, boolean]; >foo : ["a", string, number] | ["b", string, boolean] export function test(arg: { index?: number }) { ->test : (arg: { index?: number | undefined; }) => void ->arg : { index?: number | undefined; } +>test : (arg: { index?: number; }) => void +>arg : { index?: number; } >index : number | undefined const { index = 0 } = arg; >index : number >0 : 0 ->arg : { index?: number | undefined; } +>arg : { index?: number; } if (foo[index] === "a") { >foo[index] === "a" : boolean diff --git a/testdata/baselines/reference/submodule/compiler/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types.diff b/testdata/baselines/reference/submodule/compiler/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types.diff deleted file mode 100644 index 7418e2fc77c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types -+++ new.avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types -@@= skipped -4, +4 lines =@@ - >foo : ["a", string, number] | ["b", string, boolean] - - export function test(arg: { index?: number }) { -->test : (arg: { index?: number; }) => void -->arg : { index?: number; } -+>test : (arg: { index?: number | undefined; }) => void -+>arg : { index?: number | undefined; } - >index : number | undefined - - const { index = 0 } = arg; - >index : number - >0 : 0 -->arg : { index?: number; } -+>arg : { index?: number | undefined; } - - if (foo[index] === "a") { - >foo[index] === "a" : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/awaitedTypeJQuery.types b/testdata/baselines/reference/submodule/compiler/awaitedTypeJQuery.types index ae7d1ad5616..bbff3688e51 100644 --- a/testdata/baselines/reference/submodule/compiler/awaitedTypeJQuery.types +++ b/testdata/baselines/reference/submodule/compiler/awaitedTypeJQuery.types @@ -11,7 +11,7 @@ interface PromiseBase { thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRD = never, BJD = never, BND = never, CRD = never, CJD = never, CND = never, @@ -25,7 +25,7 @@ interface PromiseBase( doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBasedoneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable +>doneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD >t : TR >u : UR >v : VR @@ -35,7 +35,7 @@ interface PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable +>failFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF >t : TJ >u : UJ >v : VJ @@ -45,7 +45,7 @@ interface PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBaseprogressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable +>progressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP >t : TN >u : UN >v : VN @@ -58,7 +58,7 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, @@ -71,7 +71,7 @@ interface PromiseBasedoneFilter : null failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable +>failFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF >t : TJ >u : UJ >v : VJ @@ -81,7 +81,7 @@ interface PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBaseprogressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable +>progressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP >t : TN >u : UN >v : VN @@ -94,7 +94,7 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, @@ -106,7 +106,7 @@ interface PromiseBasefailFilter : null progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBaseprogressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable +>progressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP >t : TN >u : UN >v : VN @@ -119,7 +119,7 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRD = never, BJD = never, BND = never, CRD = never, CJD = never, CND = never, @@ -129,7 +129,7 @@ interface PromiseBase( doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBasedoneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable +>doneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD >t : TR >u : UR >v : VR @@ -139,7 +139,7 @@ interface PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable +>failFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF >t : TJ >u : UJ >v : VJ @@ -155,7 +155,7 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, @@ -164,7 +164,7 @@ interface PromiseBasedoneFilter : null failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable +>failFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF >t : TJ >u : UJ >v : VJ @@ -180,13 +180,13 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRD = never, BJD = never, BND = never, CRD = never, CJD = never, CND = never, RRD = never, RJD = never, RND = never>( doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBasedoneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable +>doneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD >t : TR >u : UR >v : VR diff --git a/testdata/baselines/reference/submodule/compiler/awaitedTypeJQuery.types.diff b/testdata/baselines/reference/submodule/compiler/awaitedTypeJQuery.types.diff index 92c657a659a..84b82fba6e8 100644 --- a/testdata/baselines/reference/submodule/compiler/awaitedTypeJQuery.types.diff +++ b/testdata/baselines/reference/submodule/compiler/awaitedTypeJQuery.types.diff @@ -5,140 +5,52 @@ SR, SJ, SN> { thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter?: null, progressFilter?: null): PromiseBase; } -+>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } ++>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRD = never, BJD = never, BND = never, CRD = never, CJD = never, CND = never, -@@= skipped -14, +14 lines =@@ - CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never>( - doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBasedoneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD -+>doneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable - >t : TR - >u : UR - >v : VR -@@= skipped -10, +10 lines =@@ - CRD, CJD, CND, - RRD, RJD, RND> | Thenable | ARD, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF -+>failFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable - >t : TJ - >u : UJ - >v : VJ -@@= skipped -10, +10 lines =@@ - CRF, CJF, CNF, - RRF, RJF, RNF> | Thenable | ARF, - progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBaseprogressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP -+>progressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable - >t : TN - >u : UN - >v : VN -@@= skipped -13, +13 lines =@@ +@@= skipped -47, +47 lines =@@ CRD | CRF | CRP, CJD | CJF | CJP, CND | CNF | CNP, RRD | RRF | RRP, RJD | RJF | RJP, RND | RNF | RNP>; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } -+>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } ++>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, -@@= skipped -13, +13 lines =@@ - >doneFilter : null - - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF -+>failFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable - >t : TJ - >u : UJ - >v : VJ -@@= skipped -10, +10 lines =@@ - CRF, CJF, CNF, - RRF, RJF, RNF> | Thenable | ARF, - progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBaseprogressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP -+>progressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable - >t : TN - >u : UN - >v : VN -@@= skipped -13, +13 lines =@@ +@@= skipped -36, +36 lines =@@ CRF | CRP, CJF | CJP, CNF | CNP, RRF | RRP, RJF | RJP, RNF | RNP>; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } -+>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } ++>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, -@@= skipped -12, +12 lines =@@ - >failFilter : null - - progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBaseprogressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP -+>progressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable - >t : TN - >u : UN - >v : VN -@@= skipped -13, +13 lines =@@ +@@= skipped -25, +25 lines =@@ CRP, CJP, CNP, RRP, RJP, RNP>; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter?: null, progressFilter?: null): PromiseBase; } -+>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } ++>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRD = never, BJD = never, BND = never, CRD = never, CJD = never, CND = never, -@@= skipped -10, +10 lines =@@ - CRF = never, CJF = never, CNF = never, - RRF = never, RJF = never, RNF = never>( - doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBasedoneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD -+>doneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable - >t : TR - >u : UR - >v : VR -@@= skipped -10, +10 lines =@@ - CRD, CJD, CND, - RRD, RJD, RND> | Thenable | ARD, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF -+>failFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable - >t : TJ - >u : UJ - >v : VJ -@@= skipped -16, +16 lines =@@ +@@= skipped -36, +36 lines =@@ CRD | CRF, CJD | CJF, CND | CNF, RRD | RRF, RJD | RJF, RND | RNF>; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } -+>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } ++>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, -@@= skipped -9, +9 lines =@@ - >doneFilter : null - - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF -+>failFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable - >t : TJ - >u : UJ - >v : VJ -@@= skipped -16, +16 lines =@@ +@@= skipped -25, +25 lines =@@ CRF, CJF, CNF, RRF, RJF, RNF>; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } -+>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } ++>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } BRD = never, BJD = never, BND = never, - CRD = never, CJD = never, CND = never, - RRD = never, RJD = never, RND = never>( - doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBasedoneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD -+>doneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable - >t : TR - >u : UR - >v : VR \ No newline at end of file + CRD = never, CJD = never, CND = never, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/awaitedTypeNoLib.types b/testdata/baselines/reference/submodule/compiler/awaitedTypeNoLib.types index 5e749a0d8ea..d9b9c33652a 100644 --- a/testdata/baselines/reference/submodule/compiler/awaitedTypeNoLib.types +++ b/testdata/baselines/reference/submodule/compiler/awaitedTypeNoLib.types @@ -21,7 +21,7 @@ class Thenable { >a : Receiver private handleResolve( ->handleResolve : (result: Thenable> | NotPromise, resolve: Receiver) => void +>handleResolve : (result: NotPromise | Thenable>, resolve: Receiver) => void result: NotPromise | Thenable>, >result : Thenable> | NotPromise diff --git a/testdata/baselines/reference/submodule/compiler/awaitedTypeNoLib.types.diff b/testdata/baselines/reference/submodule/compiler/awaitedTypeNoLib.types.diff deleted file mode 100644 index 09dd1f45f84..00000000000 --- a/testdata/baselines/reference/submodule/compiler/awaitedTypeNoLib.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.awaitedTypeNoLib.types -+++ new.awaitedTypeNoLib.types -@@= skipped -20, +20 lines =@@ - >a : Receiver - - private handleResolve( -->handleResolve : (result: NotPromise | Thenable>, resolve: Receiver) => void -+>handleResolve : (result: Thenable> | NotPromise, resolve: Receiver) => void - - result: NotPromise | Thenable>, - >result : Thenable> | NotPromise \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.errors.txt b/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.errors.txt index ae3b18795eb..afdb3bd3582 100644 --- a/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.errors.txt @@ -8,7 +8,7 @@ baseClassImprovedMismatchErrors.ts(8,5): error TS2416: Property 'n' in type 'Der Type 'string' is not assignable to type 'number'. baseClassImprovedMismatchErrors.ts(8,5): error TS2564: Property 'n' has no initializer and is not definitely assigned in the constructor. baseClassImprovedMismatchErrors.ts(9,5): error TS2416: Property 'fn' in type 'Derived' is not assignable to the same property in base type 'Base'. - Type '() => string | number' is not assignable to type '() => number'. + Type '() => number | string' is not assignable to type '() => number'. Type 'string | number' is not assignable to type 'number'. Type 'string' is not assignable to type 'number'. baseClassImprovedMismatchErrors.ts(14,5): error TS2416: Property 'n' in type 'DerivedInterface' is not assignable to the same property in base type 'Base'. @@ -20,7 +20,7 @@ baseClassImprovedMismatchErrors.ts(14,5): error TS2416: Property 'n' in type 'De Type 'string' is not assignable to type 'number'. baseClassImprovedMismatchErrors.ts(14,5): error TS2564: Property 'n' has no initializer and is not definitely assigned in the constructor. baseClassImprovedMismatchErrors.ts(15,5): error TS2416: Property 'fn' in type 'DerivedInterface' is not assignable to the same property in base type 'Base'. - Type '() => string | number' is not assignable to type '() => number'. + Type '() => number | string' is not assignable to type '() => number'. Type 'string | number' is not assignable to type 'number'. Type 'string' is not assignable to type 'number'. @@ -49,7 +49,7 @@ baseClassImprovedMismatchErrors.ts(15,5): error TS2416: Property 'fn' in type 'D fn() { ~~ !!! error TS2416: Property 'fn' in type 'Derived' is not assignable to the same property in base type 'Base'. -!!! error TS2416: Type '() => string | number' is not assignable to type '() => number'. +!!! error TS2416: Type '() => number | string' is not assignable to type '() => number'. !!! error TS2416: Type 'string | number' is not assignable to type 'number'. !!! error TS2416: Type 'string' is not assignable to type 'number'. return 10 as number | string; @@ -70,7 +70,7 @@ baseClassImprovedMismatchErrors.ts(15,5): error TS2416: Property 'fn' in type 'D fn() { ~~ !!! error TS2416: Property 'fn' in type 'DerivedInterface' is not assignable to the same property in base type 'Base'. -!!! error TS2416: Type '() => string | number' is not assignable to type '() => number'. +!!! error TS2416: Type '() => number | string' is not assignable to type '() => number'. !!! error TS2416: Type 'string | number' is not assignable to type 'number'. !!! error TS2416: Type 'string' is not assignable to type 'number'. return 10 as number | string; diff --git a/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.errors.txt.diff deleted file mode 100644 index 0e53215a88b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.errors.txt.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.baseClassImprovedMismatchErrors.errors.txt -+++ new.baseClassImprovedMismatchErrors.errors.txt -@@= skipped -7, +7 lines =@@ - Type 'string' is not assignable to type 'number'. - baseClassImprovedMismatchErrors.ts(8,5): error TS2564: Property 'n' has no initializer and is not definitely assigned in the constructor. - baseClassImprovedMismatchErrors.ts(9,5): error TS2416: Property 'fn' in type 'Derived' is not assignable to the same property in base type 'Base'. -- Type '() => number | string' is not assignable to type '() => number'. -+ Type '() => string | number' is not assignable to type '() => number'. - Type 'string | number' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. - baseClassImprovedMismatchErrors.ts(14,5): error TS2416: Property 'n' in type 'DerivedInterface' is not assignable to the same property in base type 'Base'. -@@= skipped -12, +12 lines =@@ - Type 'string' is not assignable to type 'number'. - baseClassImprovedMismatchErrors.ts(14,5): error TS2564: Property 'n' has no initializer and is not definitely assigned in the constructor. - baseClassImprovedMismatchErrors.ts(15,5): error TS2416: Property 'fn' in type 'DerivedInterface' is not assignable to the same property in base type 'Base'. -- Type '() => number | string' is not assignable to type '() => number'. -+ Type '() => string | number' is not assignable to type '() => number'. - Type 'string | number' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. - -@@= skipped -29, +29 lines =@@ - fn() { - ~~ - !!! error TS2416: Property 'fn' in type 'Derived' is not assignable to the same property in base type 'Base'. --!!! error TS2416: Type '() => number | string' is not assignable to type '() => number'. -+!!! error TS2416: Type '() => string | number' is not assignable to type '() => number'. - !!! error TS2416: Type 'string | number' is not assignable to type 'number'. - !!! error TS2416: Type 'string' is not assignable to type 'number'. - return 10 as number | string; -@@= skipped -21, +21 lines =@@ - fn() { - ~~ - !!! error TS2416: Property 'fn' in type 'DerivedInterface' is not assignable to the same property in base type 'Base'. --!!! error TS2416: Type '() => number | string' is not assignable to type '() => number'. -+!!! error TS2416: Type '() => string | number' is not assignable to type '() => number'. - !!! error TS2416: Type 'string | number' is not assignable to type 'number'. - !!! error TS2416: Type 'string' is not assignable to type 'number'. - return 10 as number | string; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.types b/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.types index 815fe4a8c2d..07d86fd88c4 100644 --- a/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.types +++ b/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.types @@ -22,7 +22,7 @@ class Derived extends Base { >n : string | Derived fn() { ->fn : () => string | number +>fn : () => number | string return 10 as number | string; >10 as number | string : string | number @@ -36,7 +36,7 @@ class DerivedInterface implements Base { >n : string | DerivedInterface fn() { ->fn : () => string | number +>fn : () => number | string return 10 as number | string; >10 as number | string : string | number diff --git a/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.types.diff b/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.types.diff deleted file mode 100644 index b906d9c49fc..00000000000 --- a/testdata/baselines/reference/submodule/compiler/baseClassImprovedMismatchErrors.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.baseClassImprovedMismatchErrors.types -+++ new.baseClassImprovedMismatchErrors.types -@@= skipped -21, +21 lines =@@ - >n : string | Derived - - fn() { -->fn : () => number | string -+>fn : () => string | number - - return 10 as number | string; - >10 as number | string : string | number -@@= skipped -14, +14 lines =@@ - >n : string | DerivedInterface - - fn() { -->fn : () => number | string -+>fn : () => string | number - - return 10 as number | string; - >10 as number | string : string | number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/bestCommonTypeReturnStatement.types b/testdata/baselines/reference/submodule/compiler/bestCommonTypeReturnStatement.types index 49dc832d6e3..53e0e9865cf 100644 --- a/testdata/baselines/reference/submodule/compiler/bestCommonTypeReturnStatement.types +++ b/testdata/baselines/reference/submodule/compiler/bestCommonTypeReturnStatement.types @@ -3,7 +3,7 @@ === bestCommonTypeReturnStatement.ts === interface IPromise { then(successCallback: (promiseValue: T) => any, errorCallback?: (reason: any) => any): IPromise; ->then : (successCallback: (promiseValue: T) => any, errorCallback?: ((reason: any) => any) | undefined) => IPromise +>then : (successCallback: (promiseValue: T) => any, errorCallback?: (reason: any) => any) => IPromise >successCallback : (promiseValue: T) => any >promiseValue : T >errorCallback : ((reason: any) => any) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/bestCommonTypeReturnStatement.types.diff b/testdata/baselines/reference/submodule/compiler/bestCommonTypeReturnStatement.types.diff deleted file mode 100644 index 73fca93542f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/bestCommonTypeReturnStatement.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.bestCommonTypeReturnStatement.types -+++ new.bestCommonTypeReturnStatement.types -@@= skipped -2, +2 lines =@@ - === bestCommonTypeReturnStatement.ts === - interface IPromise { - then(successCallback: (promiseValue: T) => any, errorCallback?: (reason: any) => any): IPromise; -->then : (successCallback: (promiseValue: T) => any, errorCallback?: (reason: any) => any) => IPromise -+>then : (successCallback: (promiseValue: T) => any, errorCallback?: ((reason: any) => any) | undefined) => IPromise - >successCallback : (promiseValue: T) => any - >promiseValue : T - >errorCallback : ((reason: any) => any) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/bigint64ArraySubarray.types b/testdata/baselines/reference/submodule/compiler/bigint64ArraySubarray.types index 0c681395db4..15ef73ca5ef 100644 --- a/testdata/baselines/reference/submodule/compiler/bigint64ArraySubarray.types +++ b/testdata/baselines/reference/submodule/compiler/bigint64ArraySubarray.types @@ -12,22 +12,22 @@ function bigInt64ArraySubarray() { arr.subarray(); >arr.subarray() : BigInt64Array ->arr.subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array +>arr.subarray : (begin?: number, end?: number) => BigInt64Array >arr : BigInt64Array ->subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array +>subarray : (begin?: number, end?: number) => BigInt64Array arr.subarray(0); >arr.subarray(0) : BigInt64Array ->arr.subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array +>arr.subarray : (begin?: number, end?: number) => BigInt64Array >arr : BigInt64Array ->subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array +>subarray : (begin?: number, end?: number) => BigInt64Array >0 : 0 arr.subarray(0, 10); >arr.subarray(0, 10) : BigInt64Array ->arr.subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array +>arr.subarray : (begin?: number, end?: number) => BigInt64Array >arr : BigInt64Array ->subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array +>subarray : (begin?: number, end?: number) => BigInt64Array >0 : 0 >10 : 10 } diff --git a/testdata/baselines/reference/submodule/compiler/bigint64ArraySubarray.types.diff b/testdata/baselines/reference/submodule/compiler/bigint64ArraySubarray.types.diff deleted file mode 100644 index ba837c15650..00000000000 --- a/testdata/baselines/reference/submodule/compiler/bigint64ArraySubarray.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.bigint64ArraySubarray.types -+++ new.bigint64ArraySubarray.types -@@= skipped -11, +11 lines =@@ - - arr.subarray(); - >arr.subarray() : BigInt64Array -->arr.subarray : (begin?: number, end?: number) => BigInt64Array -+>arr.subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array - >arr : BigInt64Array -->subarray : (begin?: number, end?: number) => BigInt64Array -+>subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array - - arr.subarray(0); - >arr.subarray(0) : BigInt64Array -->arr.subarray : (begin?: number, end?: number) => BigInt64Array -+>arr.subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array - >arr : BigInt64Array -->subarray : (begin?: number, end?: number) => BigInt64Array -+>subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array - >0 : 0 - - arr.subarray(0, 10); - >arr.subarray(0, 10) : BigInt64Array -->arr.subarray : (begin?: number, end?: number) => BigInt64Array -+>arr.subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array - >arr : BigInt64Array -->subarray : (begin?: number, end?: number) => BigInt64Array -+>subarray : (begin?: number | undefined, end?: number | undefined) => BigInt64Array - >0 : 0 - >10 : 10 - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/bindingPatternCannotBeOnlyInferenceSource.types b/testdata/baselines/reference/submodule/compiler/bindingPatternCannotBeOnlyInferenceSource.types index 9f518a22fe5..632b763d248 100644 --- a/testdata/baselines/reference/submodule/compiler/bindingPatternCannotBeOnlyInferenceSource.types +++ b/testdata/baselines/reference/submodule/compiler/bindingPatternCannotBeOnlyInferenceSource.types @@ -72,12 +72,12 @@ type TFuncs1 = typeof funcs1; >funcs1 : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } declare function useReduxDispatch1>(destructuring: Destructuring): T; ->useReduxDispatch1 : void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }>>(destructuring: Destructuring<{ funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }, T>) => T +>useReduxDispatch1 : >(destructuring: Destructuring) => T >destructuring : Destructuring<{ funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }, T> const {} = useReduxDispatch1( >useReduxDispatch1( (d, f) => ({ funcA: (...p) => d(f.funcA(...p)), // p should be inferrable funcB: (...p) => d(f.funcB(...p)), funcC: (...p) => d(f.funcC(...p)), })) : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } ->useReduxDispatch1 : void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }>>(destructuring: Destructuring<{ funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }, T>) => T +>useReduxDispatch1 : >(destructuring: Destructuring) => T (d, f) => ({ >(d, f) => ({ funcA: (...p) => d(f.funcA(...p)), // p should be inferrable funcB: (...p) => d(f.funcB(...p)), funcC: (...p) => d(f.funcC(...p)), }) : (d: Dispatch, f: { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }) => { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } diff --git a/testdata/baselines/reference/submodule/compiler/bindingPatternCannotBeOnlyInferenceSource.types.diff b/testdata/baselines/reference/submodule/compiler/bindingPatternCannotBeOnlyInferenceSource.types.diff deleted file mode 100644 index 627beafad62..00000000000 --- a/testdata/baselines/reference/submodule/compiler/bindingPatternCannotBeOnlyInferenceSource.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.bindingPatternCannotBeOnlyInferenceSource.types -+++ new.bindingPatternCannotBeOnlyInferenceSource.types -@@= skipped -71, +71 lines =@@ - >funcs1 : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } - - declare function useReduxDispatch1>(destructuring: Destructuring): T; -->useReduxDispatch1 : >(destructuring: Destructuring) => T -+>useReduxDispatch1 : void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }>>(destructuring: Destructuring<{ funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }, T>) => T - >destructuring : Destructuring<{ funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }, T> - - const {} = useReduxDispatch1( - >useReduxDispatch1( (d, f) => ({ funcA: (...p) => d(f.funcA(...p)), // p should be inferrable funcB: (...p) => d(f.funcB(...p)), funcC: (...p) => d(f.funcC(...p)), })) : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -->useReduxDispatch1 : >(destructuring: Destructuring) => T -+>useReduxDispatch1 : void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }>>(destructuring: Destructuring<{ funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }, T>) => T - - (d, f) => ({ - >(d, f) => ({ funcA: (...p) => d(f.funcA(...p)), // p should be inferrable funcB: (...p) => d(f.funcB(...p)), funcC: (...p) => d(f.funcC(...p)), }) : (d: Dispatch, f: { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }) => { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/bindingPatternContextualTypeDoesNotCauseWidening.types b/testdata/baselines/reference/submodule/compiler/bindingPatternContextualTypeDoesNotCauseWidening.types index 6eaf4529cad..1f249d54df4 100644 --- a/testdata/baselines/reference/submodule/compiler/bindingPatternContextualTypeDoesNotCauseWidening.types +++ b/testdata/baselines/reference/submodule/compiler/bindingPatternContextualTypeDoesNotCauseWidening.types @@ -2,14 +2,14 @@ === bindingPatternContextualTypeDoesNotCauseWidening.ts === declare function pick(keys: T[], obj?: O): Pick; ->pick : (keys: T[], obj?: O | undefined) => Pick +>pick : (keys: T[], obj?: O) => Pick >keys : T[] >obj : O | undefined const _ = pick(['b'], { a: 'a', b: 'b' }); // T: "b" >_ : Pick<{ a: string; b: string; }, "b"> >pick(['b'], { a: 'a', b: 'b' }) : Pick<{ a: string; b: string; }, "b"> ->pick : (keys: T[], obj?: O | undefined) => Pick +>pick : (keys: T[], obj?: O) => Pick >['b'] : "b"[] >'b' : "b" >{ a: 'a', b: 'b' } : { a: string; b: string; } @@ -20,7 +20,7 @@ const _ = pick(['b'], { a: 'a', b: 'b' }); // T: "b" const { } = pick(['b'], { a: 'a', b: 'b' }); // T: "b" | "a" ??? (before fix) >pick(['b'], { a: 'a', b: 'b' }) : Pick<{ a: string; b: string; }, "b"> ->pick : (keys: T[], obj?: O | undefined) => Pick +>pick : (keys: T[], obj?: O) => Pick >['b'] : "b"[] >'b' : "b" >{ a: 'a', b: 'b' } : { a: string; b: string; } diff --git a/testdata/baselines/reference/submodule/compiler/bindingPatternContextualTypeDoesNotCauseWidening.types.diff b/testdata/baselines/reference/submodule/compiler/bindingPatternContextualTypeDoesNotCauseWidening.types.diff deleted file mode 100644 index 088031bf635..00000000000 --- a/testdata/baselines/reference/submodule/compiler/bindingPatternContextualTypeDoesNotCauseWidening.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.bindingPatternContextualTypeDoesNotCauseWidening.types -+++ new.bindingPatternContextualTypeDoesNotCauseWidening.types -@@= skipped -1, +1 lines =@@ - - === bindingPatternContextualTypeDoesNotCauseWidening.ts === - declare function pick(keys: T[], obj?: O): Pick; -->pick : (keys: T[], obj?: O) => Pick -+>pick : (keys: T[], obj?: O | undefined) => Pick - >keys : T[] - >obj : O | undefined - - const _ = pick(['b'], { a: 'a', b: 'b' }); // T: "b" - >_ : Pick<{ a: string; b: string; }, "b"> - >pick(['b'], { a: 'a', b: 'b' }) : Pick<{ a: string; b: string; }, "b"> -->pick : (keys: T[], obj?: O) => Pick -+>pick : (keys: T[], obj?: O | undefined) => Pick - >['b'] : "b"[] - >'b' : "b" - >{ a: 'a', b: 'b' } : { a: string; b: string; } -@@= skipped -18, +18 lines =@@ - - const { } = pick(['b'], { a: 'a', b: 'b' }); // T: "b" | "a" ??? (before fix) - >pick(['b'], { a: 'a', b: 'b' }) : Pick<{ a: string; b: string; }, "b"> -->pick : (keys: T[], obj?: O) => Pick -+>pick : (keys: T[], obj?: O | undefined) => Pick - >['b'] : "b"[] - >'b' : "b" - >{ a: 'a', b: 'b' } : { a: string; b: string; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/bluebirdStaticThis.types b/testdata/baselines/reference/submodule/compiler/bluebirdStaticThis.types index ba89473311e..5a8360f56d2 100644 --- a/testdata/baselines/reference/submodule/compiler/bluebirdStaticThis.types +++ b/testdata/baselines/reference/submodule/compiler/bluebirdStaticThis.types @@ -18,7 +18,7 @@ export declare class Promise implements Promise.Thenable { >error : any static try(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; ->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >dit : typeof Promise >Promise : typeof Promise >fn : () => Promise.Thenable @@ -27,7 +27,7 @@ export declare class Promise implements Promise.Thenable { >ctx : any static try(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; ->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >dit : typeof Promise >Promise : typeof Promise >fn : () => R @@ -35,7 +35,7 @@ export declare class Promise implements Promise.Thenable { >ctx : any static attempt(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; ->attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >dit : typeof Promise >Promise : typeof Promise >fn : () => Promise.Thenable @@ -44,7 +44,7 @@ export declare class Promise implements Promise.Thenable { >ctx : any static attempt(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; ->attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >dit : typeof Promise >Promise : typeof Promise >fn : () => R @@ -448,7 +448,7 @@ export declare class Promise implements Promise.Thenable { >arrayLength : number static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } +>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable[]> @@ -463,7 +463,7 @@ export declare class Promise implements Promise.Thenable { >initialValue : U | undefined static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } +>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable[]> @@ -477,7 +477,7 @@ export declare class Promise implements Promise.Thenable { >initialValue : U | undefined static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } +>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable @@ -491,7 +491,7 @@ export declare class Promise implements Promise.Thenable { >initialValue : U | undefined static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } +>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable @@ -504,7 +504,7 @@ export declare class Promise implements Promise.Thenable { >initialValue : U | undefined static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } +>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable[] @@ -518,7 +518,7 @@ export declare class Promise implements Promise.Thenable { >initialValue : U | undefined static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } +>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable[] @@ -531,7 +531,7 @@ export declare class Promise implements Promise.Thenable { >initialValue : U | undefined static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } +>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : R[] @@ -544,7 +544,7 @@ export declare class Promise implements Promise.Thenable { >initialValue : U | undefined static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } +>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : R[] @@ -651,28 +651,28 @@ export declare class Promise implements Promise.Thenable { export declare namespace Promise { export interface Thenable { then(onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; ->then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: ((error: any) => U) | undefined): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: ((value: R) => U) | undefined, onRejected?: ((error: any) => U) | undefined): Thenable; } +>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } >onFulfilled : (value: R) => Thenable >value : R >onRejected : (error: any) => Thenable >error : any then(onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; ->then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: ((error: any) => U) | undefined): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: ((value: R) => U) | undefined, onRejected?: ((error: any) => U) | undefined): Thenable; } +>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } >onFulfilled : (value: R) => Thenable >value : R >onRejected : ((error: any) => U) | undefined >error : any then(onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; ->then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: ((error: any) => U) | undefined): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: ((value: R) => U) | undefined, onRejected?: ((error: any) => U) | undefined): Thenable; } +>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } >onFulfilled : (value: R) => U >value : R >onRejected : (error: any) => Thenable >error : any then(onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; ->then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: ((error: any) => U) | undefined): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: ((value: R) => U) | undefined, onRejected?: ((error: any) => U) | undefined): Thenable; } +>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } >onFulfilled : ((value: R) => U) | undefined >value : R >onRejected : ((error: any) => U) | undefined @@ -704,9 +704,9 @@ fooProm = Promise.try(Promise, () => { >fooProm = Promise.try(Promise, () => { return foo;}) : Promise >fooProm : Promise >Promise.try(Promise, () => { return foo;}) : Promise ->Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >Promise : typeof Promise ->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >Promise : typeof Promise >() => { return foo;} : () => Foo @@ -718,9 +718,9 @@ fooProm = Promise.try(Promise, () => { >fooProm = Promise.try(Promise, () => { return foo;}, arr) : Promise >fooProm : Promise >Promise.try(Promise, () => { return foo;}, arr) : Promise ->Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >Promise : typeof Promise ->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >Promise : typeof Promise >() => { return foo;} : () => Foo @@ -734,9 +734,9 @@ fooProm = Promise.try(Promise, () => { >fooProm = Promise.try(Promise, () => { return foo;}, arr, x) : Promise >fooProm : Promise >Promise.try(Promise, () => { return foo;}, arr, x) : Promise ->Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >Promise : typeof Promise ->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } +>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >Promise : typeof Promise >() => { return foo;} : () => Foo diff --git a/testdata/baselines/reference/submodule/compiler/bluebirdStaticThis.types.diff b/testdata/baselines/reference/submodule/compiler/bluebirdStaticThis.types.diff index 9c26855ed3f..b23e2eefb86 100644 --- a/testdata/baselines/reference/submodule/compiler/bluebirdStaticThis.types.diff +++ b/testdata/baselines/reference/submodule/compiler/bluebirdStaticThis.types.diff @@ -5,7 +5,7 @@ static try(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; ->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -+>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } ++>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >dit : typeof Promise >Promise : typeof Promise >fn : () => Promise.Thenable @@ -14,7 +14,7 @@ static try(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; ->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -+>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } ++>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >dit : typeof Promise >Promise : typeof Promise >fn : () => R @@ -23,7 +23,7 @@ static attempt(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; ->attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -+>attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } ++>attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >dit : typeof Promise >Promise : typeof Promise >fn : () => Promise.Thenable @@ -32,7 +32,7 @@ static attempt(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; ->attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -+>attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } ++>attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } >dit : typeof Promise >Promise : typeof Promise >fn : () => R @@ -348,7 +348,7 @@ static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; } -+>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } ++>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable[]> @@ -357,7 +357,7 @@ static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; } -+>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } ++>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable[]> @@ -366,7 +366,7 @@ static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; } -+>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } ++>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable @@ -375,7 +375,7 @@ static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; } -+>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } ++>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable @@ -384,7 +384,7 @@ static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; } -+>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } ++>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable[] @@ -393,7 +393,7 @@ static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; } -+>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } ++>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : Promise.Thenable[] @@ -402,7 +402,7 @@ static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; } -+>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } ++>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : R[] @@ -411,7 +411,7 @@ static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; ->reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: R_1[], reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } -+>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U | undefined): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U | undefined): Promise; } ++>reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } >dit : typeof Promise >Promise : typeof Promise >values : R[] @@ -492,7 +492,7 @@ export interface Thenable { then(onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; ->then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U_1): Thenable; (onFulfilled: (value: R) => U_1, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U_1, onRejected?: (error: any) => U_1): Thenable; } -+>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: ((error: any) => U) | undefined): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: ((value: R) => U) | undefined, onRejected?: ((error: any) => U) | undefined): Thenable; } ++>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } >onFulfilled : (value: R) => Thenable >value : R >onRejected : (error: any) => Thenable @@ -500,7 +500,7 @@ then(onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; ->then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U_1, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U_1, onRejected?: (error: any) => U_1): Thenable; } -+>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: ((error: any) => U) | undefined): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: ((value: R) => U) | undefined, onRejected?: ((error: any) => U) | undefined): Thenable; } ++>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } >onFulfilled : (value: R) => Thenable >value : R >onRejected : ((error: any) => U) | undefined @@ -508,7 +508,7 @@ then(onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; ->then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U_1): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U_1, onRejected?: (error: any) => U_1): Thenable; } -+>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: ((error: any) => U) | undefined): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: ((value: R) => U) | undefined, onRejected?: ((error: any) => U) | undefined): Thenable; } ++>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } >onFulfilled : (value: R) => U >value : R >onRejected : (error: any) => Thenable @@ -516,42 +516,7 @@ then(onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; ->then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U_1): Thenable; (onFulfilled: (value: R) => U_1, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } -+>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: ((error: any) => U) | undefined): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: ((value: R) => U) | undefined, onRejected?: ((error: any) => U) | undefined): Thenable; } ++>then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } >onFulfilled : ((value: R) => U) | undefined >value : R - >onRejected : ((error: any) => U) | undefined -@@= skipped -53, +53 lines =@@ - >fooProm = Promise.try(Promise, () => { return foo;}) : Promise - >fooProm : Promise - >Promise.try(Promise, () => { return foo;}) : Promise -->Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -+>Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } - >Promise : typeof Promise -->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -+>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } - >Promise : typeof Promise - >() => { return foo;} : () => Foo - -@@= skipped -14, +14 lines =@@ - >fooProm = Promise.try(Promise, () => { return foo;}, arr) : Promise - >fooProm : Promise - >Promise.try(Promise, () => { return foo;}, arr) : Promise -->Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -+>Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } - >Promise : typeof Promise -->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -+>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } - >Promise : typeof Promise - >() => { return foo;} : () => Foo - -@@= skipped -16, +16 lines =@@ - >fooProm = Promise.try(Promise, () => { return foo;}, arr, x) : Promise - >fooProm : Promise - >Promise.try(Promise, () => { return foo;}, arr, x) : Promise -->Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -+>Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } - >Promise : typeof Promise -->try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -+>try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[] | undefined, ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[] | undefined, ctx?: any): Promise; } - >Promise : typeof Promise - >() => { return foo;} : () => Foo + >onRejected : ((error: any) => U) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/builtinIterator.types b/testdata/baselines/reference/submodule/compiler/builtinIterator.types index 30a71077c28..36094697ac1 100644 --- a/testdata/baselines/reference/submodule/compiler/builtinIterator.types +++ b/testdata/baselines/reference/submodule/compiler/builtinIterator.types @@ -4,9 +4,9 @@ const iterator = Iterator.from([0, 1, 2]); >iterator : IteratorObject >Iterator.from([0, 1, 2]) : IteratorObject ->Iterator.from : (value: Iterable | Iterator) => IteratorObject +>Iterator.from : (value: Iterator | Iterable) => IteratorObject >Iterator : IteratorConstructor ->from : (value: Iterable | Iterator) => IteratorObject +>from : (value: Iterator | Iterable) => IteratorObject >[0, 1, 2] : number[] >0 : 0 >1 : 1 @@ -52,9 +52,9 @@ const zero = iterator.filter(isZero); const iteratorFromBare = Iterator.from({ >iteratorFromBare : IteratorObject >Iterator.from({ next() { return { done: Math.random() < .5, value: "a string", }; },}) : IteratorObject ->Iterator.from : (value: Iterable | Iterator) => IteratorObject +>Iterator.from : (value: Iterator | Iterable) => IteratorObject >Iterator : IteratorConstructor ->from : (value: Iterable | Iterator) => IteratorObject +>from : (value: Iterator | Iterable) => IteratorObject >{ next() { return { done: Math.random() < .5, value: "a string", }; },} : { next(): { done: boolean; value: string; }; } next() { @@ -244,9 +244,9 @@ declare const g1: Generator; const iter1 = Iterator.from(g1); >iter1 : IteratorObject >Iterator.from(g1) : IteratorObject ->Iterator.from : (value: Iterable | Iterator) => IteratorObject +>Iterator.from : (value: Iterator | Iterable) => IteratorObject >Iterator : IteratorConstructor ->from : (value: Iterable | Iterator) => IteratorObject +>from : (value: Iterator | Iterable) => IteratorObject >g1 : Generator declare const iter2: IteratorObject; diff --git a/testdata/baselines/reference/submodule/compiler/builtinIterator.types.diff b/testdata/baselines/reference/submodule/compiler/builtinIterator.types.diff deleted file mode 100644 index 7bc1f0d12f9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/builtinIterator.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.builtinIterator.types -+++ new.builtinIterator.types -@@= skipped -3, +3 lines =@@ - const iterator = Iterator.from([0, 1, 2]); - >iterator : IteratorObject - >Iterator.from([0, 1, 2]) : IteratorObject -->Iterator.from : (value: Iterator | Iterable) => IteratorObject -+>Iterator.from : (value: Iterable | Iterator) => IteratorObject - >Iterator : IteratorConstructor -->from : (value: Iterator | Iterable) => IteratorObject -+>from : (value: Iterable | Iterator) => IteratorObject - >[0, 1, 2] : number[] - >0 : 0 - >1 : 1 -@@= skipped -48, +48 lines =@@ - const iteratorFromBare = Iterator.from({ - >iteratorFromBare : IteratorObject - >Iterator.from({ next() { return { done: Math.random() < .5, value: "a string", }; },}) : IteratorObject -->Iterator.from : (value: Iterator | Iterable) => IteratorObject -+>Iterator.from : (value: Iterable | Iterator) => IteratorObject - >Iterator : IteratorConstructor -->from : (value: Iterator | Iterable) => IteratorObject -+>from : (value: Iterable | Iterator) => IteratorObject - >{ next() { return { done: Math.random() < .5, value: "a string", }; },} : { next(): { done: boolean; value: string; }; } - - next() { -@@= skipped -192, +192 lines =@@ - const iter1 = Iterator.from(g1); - >iter1 : IteratorObject - >Iterator.from(g1) : IteratorObject -->Iterator.from : (value: Iterator | Iterable) => IteratorObject -+>Iterator.from : (value: Iterable | Iterator) => IteratorObject - >Iterator : IteratorConstructor -->from : (value: Iterator | Iterable) => IteratorObject -+>from : (value: Iterable | Iterator) => IteratorObject - >g1 : Generator - - declare const iter2: IteratorObject; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/callOfConditionalTypeWithConcreteBranches.types b/testdata/baselines/reference/submodule/compiler/callOfConditionalTypeWithConcreteBranches.types index e9612627a36..ac94cbdc0d7 100644 --- a/testdata/baselines/reference/submodule/compiler/callOfConditionalTypeWithConcreteBranches.types +++ b/testdata/baselines/reference/submodule/compiler/callOfConditionalTypeWithConcreteBranches.types @@ -23,9 +23,9 @@ fn(m => m.toFixed()); >m => m.toFixed() : (m: number) => string >m : number >m.toFixed() : string ->m.toFixed : (fractionDigits?: number | undefined) => string +>m.toFixed : (fractionDigits?: number) => string >m : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string fn(m => m.toFixed()); >fn(m => m.toFixed()) : void @@ -33,9 +33,9 @@ fn(m => m.toFixed()); >m => m.toFixed() : (m: number) => string >m : number >m.toFixed() : string ->m.toFixed : (fractionDigits?: number | undefined) => string +>m.toFixed : (fractionDigits?: number) => string >m : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string // Ensure the following real-world example that relies on substitution still works type ExtractParameters = "parameters" extends keyof T diff --git a/testdata/baselines/reference/submodule/compiler/callOfConditionalTypeWithConcreteBranches.types.diff b/testdata/baselines/reference/submodule/compiler/callOfConditionalTypeWithConcreteBranches.types.diff deleted file mode 100644 index 42b141579ca..00000000000 --- a/testdata/baselines/reference/submodule/compiler/callOfConditionalTypeWithConcreteBranches.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.callOfConditionalTypeWithConcreteBranches.types -+++ new.callOfConditionalTypeWithConcreteBranches.types -@@= skipped -22, +22 lines =@@ - >m => m.toFixed() : (m: number) => string - >m : number - >m.toFixed() : string -->m.toFixed : (fractionDigits?: number) => string -+>m.toFixed : (fractionDigits?: number | undefined) => string - >m : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - fn(m => m.toFixed()); - >fn(m => m.toFixed()) : void -@@= skipped -10, +10 lines =@@ - >m => m.toFixed() : (m: number) => string - >m : number - >m.toFixed() : string -->m.toFixed : (fractionDigits?: number) => string -+>m.toFixed : (fractionDigits?: number | undefined) => string - >m : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - // Ensure the following real-world example that relies on substitution still works - type ExtractParameters = "parameters" extends keyof T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/callSignatureFunctionOverload.types b/testdata/baselines/reference/submodule/compiler/callSignatureFunctionOverload.types index d7dc12ea579..81c83add8a6 100644 --- a/testdata/baselines/reference/submodule/compiler/callSignatureFunctionOverload.types +++ b/testdata/baselines/reference/submodule/compiler/callSignatureFunctionOverload.types @@ -2,7 +2,7 @@ === callSignatureFunctionOverload.ts === var foo: { ->foo : { (name: string): string; (name: "order"): string; (name: "content"): string; (name: "done"): string; } +>foo : { (name: string): string; (name: 'order'): string; (name: 'content'): string; (name: 'done'): string; } (name: string): string; >name : string @@ -18,7 +18,7 @@ var foo: { } var foo2: { ->foo2 : { (name: string): string; (name: "order"): string; (name: "order"): string; (name: "done"): string; } +>foo2 : { (name: string): string; (name: 'order'): string; (name: 'order'): string; (name: 'done'): string; } (name: string): string; >name : string diff --git a/testdata/baselines/reference/submodule/compiler/callSignatureFunctionOverload.types.diff b/testdata/baselines/reference/submodule/compiler/callSignatureFunctionOverload.types.diff new file mode 100644 index 00000000000..8000b3ba7c4 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/callSignatureFunctionOverload.types.diff @@ -0,0 +1,20 @@ +--- old.callSignatureFunctionOverload.types ++++ new.callSignatureFunctionOverload.types +@@= skipped -1, +1 lines =@@ + + === callSignatureFunctionOverload.ts === + var foo: { +->foo : { (name: string): string; (name: "order"): string; (name: "content"): string; (name: "done"): string; } ++>foo : { (name: string): string; (name: 'order'): string; (name: 'content'): string; (name: 'done'): string; } + + (name: string): string; + >name : string +@@= skipped -16, +16 lines =@@ + } + + var foo2: { +->foo2 : { (name: string): string; (name: "order"): string; (name: "order"): string; (name: "done"): string; } ++>foo2 : { (name: string): string; (name: 'order'): string; (name: 'order'): string; (name: 'done'): string; } + + (name: string): string; + >name : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/callbackArgsDifferByOptionality.types b/testdata/baselines/reference/submodule/compiler/callbackArgsDifferByOptionality.types index 0bc763aaa7d..2f511775b20 100644 --- a/testdata/baselines/reference/submodule/compiler/callbackArgsDifferByOptionality.types +++ b/testdata/baselines/reference/submodule/compiler/callbackArgsDifferByOptionality.types @@ -2,17 +2,17 @@ === callbackArgsDifferByOptionality.ts === function x3(callback: (x?: 'hi') => number); ->x3 : { (callback: (x?: "hi") => number): any; (callback: (x: string) => number): any; } ->callback : (x?: "hi") => number +>x3 : { (callback: (x?: 'hi') => number): any; (callback: (x: string) => number): any; } +>callback : (x?: 'hi') => number >x : "hi" function x3(callback: (x: string) => number); ->x3 : { (callback: (x?: "hi") => number): any; (callback: (x: string) => number): any; } +>x3 : { (callback: (x?: 'hi') => number): any; (callback: (x: string) => number): any; } >callback : (x: string) => number >x : string function x3(callback: (x: any) => number) { ->x3 : { (callback: (x?: "hi") => number): any; (callback: (x: string) => number): any; } +>x3 : { (callback: (x?: 'hi') => number): any; (callback: (x: string) => number): any; } >callback : (x: any) => number >x : any diff --git a/testdata/baselines/reference/submodule/compiler/callbackArgsDifferByOptionality.types.diff b/testdata/baselines/reference/submodule/compiler/callbackArgsDifferByOptionality.types.diff new file mode 100644 index 00000000000..c42d2cf70f2 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/callbackArgsDifferByOptionality.types.diff @@ -0,0 +1,23 @@ +--- old.callbackArgsDifferByOptionality.types ++++ new.callbackArgsDifferByOptionality.types +@@= skipped -1, +1 lines =@@ + + === callbackArgsDifferByOptionality.ts === + function x3(callback: (x?: 'hi') => number); +->x3 : { (callback: (x?: "hi") => number): any; (callback: (x: string) => number): any; } +->callback : (x?: "hi") => number ++>x3 : { (callback: (x?: 'hi') => number): any; (callback: (x: string) => number): any; } ++>callback : (x?: 'hi') => number + >x : "hi" + + function x3(callback: (x: string) => number); +->x3 : { (callback: (x?: "hi") => number): any; (callback: (x: string) => number): any; } ++>x3 : { (callback: (x?: 'hi') => number): any; (callback: (x: string) => number): any; } + >callback : (x: string) => number + >x : string + + function x3(callback: (x: any) => number) { +->x3 : { (callback: (x?: "hi") => number): any; (callback: (x: string) => number): any; } ++>x3 : { (callback: (x?: 'hi') => number): any; (callback: (x: string) => number): any; } + >callback : (x: any) => number + >x : any diff --git a/testdata/baselines/reference/submodule/compiler/callbacksDontShareTypes.types b/testdata/baselines/reference/submodule/compiler/callbacksDontShareTypes.types index d8e772445d7..addab089450 100644 --- a/testdata/baselines/reference/submodule/compiler/callbacksDontShareTypes.types +++ b/testdata/baselines/reference/submodule/compiler/callbacksDontShareTypes.types @@ -38,9 +38,9 @@ var rf1 = (x: number) => { return x.toFixed() }; >(x: number) => { return x.toFixed() } : (x: number) => string >x : number >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string var r1a = _.map(c2, (x) => { return x.toFixed() }); >r1a : Collection @@ -52,9 +52,9 @@ var r1a = _.map(c2, (x) => { return x.toFixed() }); >(x) => { return x.toFixed() } : (x: number) => string >x : number >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string var r1b = _.map(c2, rf1); // this line should not cause the following 2 to have errors >r1b : Collection @@ -75,9 +75,9 @@ var r5a = _.map(c2, (x) => { return x.toFixed() }); >(x) => { return x.toFixed() } : (x: number) => string >x : number >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string var r5b = _.map(c2, rf1); >r5b : Collection diff --git a/testdata/baselines/reference/submodule/compiler/callbacksDontShareTypes.types.diff b/testdata/baselines/reference/submodule/compiler/callbacksDontShareTypes.types.diff index 73e33c6978e..a7b7b7899ed 100644 --- a/testdata/baselines/reference/submodule/compiler/callbacksDontShareTypes.types.diff +++ b/testdata/baselines/reference/submodule/compiler/callbacksDontShareTypes.types.diff @@ -15,40 +15,4 @@ +>map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T) => any): Collection; } >c : Collection >f : (x: T) => any - >x : T -@@= skipped -23, +23 lines =@@ - >(x: number) => { return x.toFixed() } : (x: number) => string - >x : number - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - var r1a = _.map(c2, (x) => { return x.toFixed() }); - >r1a : Collection -@@= skipped -14, +14 lines =@@ - >(x) => { return x.toFixed() } : (x: number) => string - >x : number - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - var r1b = _.map(c2, rf1); // this line should not cause the following 2 to have errors - >r1b : Collection -@@= skipped -23, +23 lines =@@ - >(x) => { return x.toFixed() } : (x: number) => string - >x : number - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - var r5b = _.map(c2, rf1); - >r5b : Collection \ No newline at end of file + >x : T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/callsOnComplexSignatures.types b/testdata/baselines/reference/submodule/compiler/callsOnComplexSignatures.types index 7aad9db120c..60b68c08d82 100644 --- a/testdata/baselines/reference/submodule/compiler/callsOnComplexSignatures.types +++ b/testdata/baselines/reference/submodule/compiler/callsOnComplexSignatures.types @@ -77,8 +77,8 @@ function test2() { }; const test1 = (type: "foo" | "bar") => ->test1 : (type: "bar" | "foo") => string ->(type: "foo" | "bar") => messages[type]({ a: "A", b: 0 }) : (type: "bar" | "foo") => string +>test1 : (type: "foo" | "bar") => string +>(type: "foo" | "bar") => messages[type]({ a: "A", b: 0 }) : (type: "foo" | "bar") => string >type : "bar" | "foo" messages[type]({ a: "A", b: 0 }); @@ -112,7 +112,7 @@ function test3(items: string[] | number[]) { } function test4( ->test4 : (arg1: ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number), arg2: ((a: { x: number; }, b: object) => number) | ((a: object, b: { x: number; }) => number), arg3: ((a: { x: number; }, ...objs: { y: number; }[]) => number) | ((...objs: { x: number; }[]) => number), arg4: ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number), arg5: ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number), arg6: ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number)) => void +>test4 : (arg1: ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number), arg2: ((a: { x: number; }, b: object) => number) | ((a: object, b: { x: number; }) => number), arg3: ((a: { x: number; }, ...objs: { y: number; }[]) => number) | ((...objs: { x: number; }[]) => number), arg4: ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number), arg5: ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number), arg6: ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number)) => void arg1: ((...objs: {x: number}[]) => number) | ((...objs: {y: number}[]) => number), >arg1 : ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number) @@ -140,7 +140,7 @@ function test4( >x : number arg4: ((a?: {x: number}, b?: {x: number}) => number) | ((a?: {y: number}) => number), ->arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) +>arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) >a : { x: number; } | undefined >x : number >b : { x: number; } | undefined @@ -149,7 +149,7 @@ function test4( >y : number arg5: ((a?: {x: number}, ...b: {x: number}[]) => number) | ((a?: {y: number}) => number), ->arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) +>arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) >a : { x: number; } | undefined >x : number >b : { x: number; }[] @@ -158,7 +158,7 @@ function test4( >y : number arg6: ((a?: {x: number}, b?: {x: number}) => number) | ((...a: {y: number}[]) => number), ->arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) +>arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) >a : { x: number; } | undefined >x : number >b : { x: number; } | undefined @@ -242,11 +242,11 @@ function test4( arg4(); >arg4() : number ->arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) +>arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) arg4({x: 0, y: 0}); >arg4({x: 0, y: 0}) : number ->arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) +>arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) >{x: 0, y: 0} : { x: number; y: number; } >x : number >0 : 0 @@ -255,7 +255,7 @@ function test4( arg4({x: 0, y: 0}, {x: 0}); >arg4({x: 0, y: 0}, {x: 0}) : number ->arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) +>arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) >{x: 0, y: 0} : { x: number; y: number; } >x : number >0 : 0 @@ -267,11 +267,11 @@ function test4( arg5(); >arg5() : number ->arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) +>arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) arg5({x: 0, y: 0}); >arg5({x: 0, y: 0}) : number ->arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) +>arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) >{x: 0, y: 0} : { x: number; y: number; } >x : number >0 : 0 @@ -280,7 +280,7 @@ function test4( arg5({x: 0, y: 0}, {x: 0}); >arg5({x: 0, y: 0}, {x: 0}) : number ->arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) +>arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) >{x: 0, y: 0} : { x: number; y: number; } >x : number >0 : 0 @@ -292,11 +292,11 @@ function test4( arg6(); >arg6() : number ->arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) +>arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) arg6({x: 0, y: 0}); >arg6({x: 0, y: 0}) : number ->arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) +>arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) >{x: 0, y: 0} : { x: number; y: number; } >x : number >0 : 0 @@ -305,7 +305,7 @@ function test4( arg6({x: 0, y: 0}, {x: 0, y: 0}); >arg6({x: 0, y: 0}, {x: 0, y: 0}) : number ->arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) +>arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) >{x: 0, y: 0} : { x: number; y: number; } >x : number >0 : 0 @@ -319,7 +319,7 @@ function test4( arg6({x: 0, y: 0}, {x: 0, y: 0}, {y: 0}); >arg6({x: 0, y: 0}, {x: 0, y: 0}, {y: 0}) : number ->arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) +>arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) >{x: 0, y: 0} : { x: number; y: number; } >x : number >0 : 0 @@ -341,7 +341,7 @@ function test5() { // Pair of non-like intrinsics function render(url?: string): React.ReactNode { ->render : (url?: string | undefined) => React.ReactNode +>render : (url?: string) => React.ReactNode >url : string | undefined >React : any @@ -360,8 +360,8 @@ function test5() { // Union of all intrinsics and components of `any` function App(props: { component:React.ReactType }) { ->App : (props: { component: React.ReactType; }) => JSX.Element ->props : { component: React.ReactType; } +>App : (props: { component: React.ReactType; }) => JSX.Element +>props : { component: React.ReactType; } >component : React.ReactType >React : any @@ -369,7 +369,7 @@ function test5() { >Comp : React.ReactType >React : any >props.component : React.ReactType ->props : { component: React.ReactType; } +>props : { component: React.ReactType; } >component : React.ReactType return (); diff --git a/testdata/baselines/reference/submodule/compiler/callsOnComplexSignatures.types.diff b/testdata/baselines/reference/submodule/compiler/callsOnComplexSignatures.types.diff deleted file mode 100644 index 7302d17c4b0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/callsOnComplexSignatures.types.diff +++ /dev/null @@ -1,156 +0,0 @@ ---- old.callsOnComplexSignatures.types -+++ new.callsOnComplexSignatures.types -@@= skipped -76, +76 lines =@@ - }; - - const test1 = (type: "foo" | "bar") => -->test1 : (type: "foo" | "bar") => string -->(type: "foo" | "bar") => messages[type]({ a: "A", b: 0 }) : (type: "foo" | "bar") => string -+>test1 : (type: "bar" | "foo") => string -+>(type: "foo" | "bar") => messages[type]({ a: "A", b: 0 }) : (type: "bar" | "foo") => string - >type : "bar" | "foo" - - messages[type]({ a: "A", b: 0 }); -@@= skipped -35, +35 lines =@@ - } - - function test4( -->test4 : (arg1: ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number), arg2: ((a: { x: number; }, b: object) => number) | ((a: object, b: { x: number; }) => number), arg3: ((a: { x: number; }, ...objs: { y: number; }[]) => number) | ((...objs: { x: number; }[]) => number), arg4: ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number), arg5: ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number), arg6: ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number)) => void -+>test4 : (arg1: ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number), arg2: ((a: { x: number; }, b: object) => number) | ((a: object, b: { x: number; }) => number), arg3: ((a: { x: number; }, ...objs: { y: number; }[]) => number) | ((...objs: { x: number; }[]) => number), arg4: ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number), arg5: ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number), arg6: ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number)) => void - - arg1: ((...objs: {x: number}[]) => number) | ((...objs: {y: number}[]) => number), - >arg1 : ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number) -@@= skipped -28, +28 lines =@@ - >x : number - - arg4: ((a?: {x: number}, b?: {x: number}) => number) | ((a?: {y: number}) => number), -->arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) -+>arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) - >a : { x: number; } | undefined - >x : number - >b : { x: number; } | undefined -@@= skipped -9, +9 lines =@@ - >y : number - - arg5: ((a?: {x: number}, ...b: {x: number}[]) => number) | ((a?: {y: number}) => number), -->arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) -+>arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) - >a : { x: number; } | undefined - >x : number - >b : { x: number; }[] -@@= skipped -9, +9 lines =@@ - >y : number - - arg6: ((a?: {x: number}, b?: {x: number}) => number) | ((...a: {y: number}[]) => number), -->arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) -+>arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) - >a : { x: number; } | undefined - >x : number - >b : { x: number; } | undefined -@@= skipped -84, +84 lines =@@ - - arg4(); - >arg4() : number -->arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) -+>arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) - - arg4({x: 0, y: 0}); - >arg4({x: 0, y: 0}) : number -->arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) -+>arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) - >{x: 0, y: 0} : { x: number; y: number; } - >x : number - >0 : 0 -@@= skipped -13, +13 lines =@@ - - arg4({x: 0, y: 0}, {x: 0}); - >arg4({x: 0, y: 0}, {x: 0}) : number -->arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) -+>arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) - >{x: 0, y: 0} : { x: number; y: number; } - >x : number - >0 : 0 -@@= skipped -12, +12 lines =@@ - - arg5(); - >arg5() : number -->arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) -+>arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) - - arg5({x: 0, y: 0}); - >arg5({x: 0, y: 0}) : number -->arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) -+>arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) - >{x: 0, y: 0} : { x: number; y: number; } - >x : number - >0 : 0 -@@= skipped -13, +13 lines =@@ - - arg5({x: 0, y: 0}, {x: 0}); - >arg5({x: 0, y: 0}, {x: 0}) : number -->arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) -+>arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) - >{x: 0, y: 0} : { x: number; y: number; } - >x : number - >0 : 0 -@@= skipped -12, +12 lines =@@ - - arg6(); - >arg6() : number -->arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) -+>arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) - - arg6({x: 0, y: 0}); - >arg6({x: 0, y: 0}) : number -->arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) -+>arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) - >{x: 0, y: 0} : { x: number; y: number; } - >x : number - >0 : 0 -@@= skipped -13, +13 lines =@@ - - arg6({x: 0, y: 0}, {x: 0, y: 0}); - >arg6({x: 0, y: 0}, {x: 0, y: 0}) : number -->arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) -+>arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) - >{x: 0, y: 0} : { x: number; y: number; } - >x : number - >0 : 0 -@@= skipped -14, +14 lines =@@ - - arg6({x: 0, y: 0}, {x: 0, y: 0}, {y: 0}); - >arg6({x: 0, y: 0}, {x: 0, y: 0}, {y: 0}) : number -->arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) -+>arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) - >{x: 0, y: 0} : { x: number; y: number; } - >x : number - >0 : 0 -@@= skipped -22, +22 lines =@@ - - // Pair of non-like intrinsics - function render(url?: string): React.ReactNode { -->render : (url?: string) => React.ReactNode -+>render : (url?: string | undefined) => React.ReactNode - >url : string | undefined - >React : any - -@@= skipped -19, +19 lines =@@ - - // Union of all intrinsics and components of `any` - function App(props: { component:React.ReactType }) { -->App : (props: { component: React.ReactType; }) => JSX.Element -->props : { component: React.ReactType; } -+>App : (props: { component: React.ReactType; }) => JSX.Element -+>props : { component: React.ReactType; } - >component : React.ReactType - >React : any - -@@= skipped -9, +9 lines =@@ - >Comp : React.ReactType - >React : any - >props.component : React.ReactType -->props : { component: React.ReactType; } -+>props : { component: React.ReactType; } - >component : React.ReactType - - return (); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/cannotIndexGenericWritingError.types b/testdata/baselines/reference/submodule/compiler/cannotIndexGenericWritingError.types index 8701d605f6b..2fd66dba430 100644 --- a/testdata/baselines/reference/submodule/compiler/cannotIndexGenericWritingError.types +++ b/testdata/baselines/reference/submodule/compiler/cannotIndexGenericWritingError.types @@ -17,7 +17,7 @@ function foo>(target: T, p: string | symb } function foo2(target: T, p: string | number) { ->foo2 : (target: T, p: string | number) => void +>foo2 : (target: T, p: string | number) => void >s : string >target : T >p : string | number diff --git a/testdata/baselines/reference/submodule/compiler/cannotIndexGenericWritingError.types.diff b/testdata/baselines/reference/submodule/compiler/cannotIndexGenericWritingError.types.diff deleted file mode 100644 index 99f3e6878e7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/cannotIndexGenericWritingError.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.cannotIndexGenericWritingError.types -+++ new.cannotIndexGenericWritingError.types -@@= skipped -16, +16 lines =@@ - } - - function foo2(target: T, p: string | number) { -->foo2 : (target: T, p: string | number) => void -+>foo2 : (target: T, p: string | number) => void - >s : string - >target : T - >p : string | number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types b/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types index 43f8ee22820..7173e5cb9e5 100644 --- a/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types +++ b/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types @@ -20,9 +20,9 @@ function foo1(y = class {c = x}, x = 1) { // ok - used in file function foo2(y = function(x: typeof z) {}, z = 1) { ->foo2 : (y?: (x: number) => void, z?: number) => void ->y : (x: number) => void ->function(x: typeof z) {} : (x: number) => void +>foo2 : (y?: (x: typeof z) => void, z?: number) => void +>y : (x: typeof z) => void +>function(x: typeof z) {} : (x: typeof z) => void >x : number >z : number >z : number @@ -35,9 +35,9 @@ let a; >a : any function foo3(y = { x: a }, z = 1) { ->foo3 : (y?: { x: number; }, z?: number) => void ->y : { x: number; } ->{ x: a } : { x: number; } +>foo3 : (y?: { x: typeof z; }, z?: number) => void +>y : { x: typeof z; } +>{ x: a } : { x: typeof z; } >x : number >a : number >z : number diff --git a/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types.diff b/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types.diff index 6f96a330a22..9bcb3edb4dc 100644 --- a/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types.diff +++ b/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types.diff @@ -1,32 +1,6 @@ --- old.capturedParametersInInitializers1.types +++ new.capturedParametersInInitializers1.types -@@= skipped -19, +19 lines =@@ - - // ok - used in file - function foo2(y = function(x: typeof z) {}, z = 1) { -->foo2 : (y?: (x: typeof z) => void, z?: number) => void -->y : (x: typeof z) => void -->function(x: typeof z) {} : (x: typeof z) => void -+>foo2 : (y?: (x: number) => void, z?: number) => void -+>y : (x: number) => void -+>function(x: typeof z) {} : (x: number) => void - >x : number - >z : number - >z : number -@@= skipped -15, +15 lines =@@ - >a : any - - function foo3(y = { x: a }, z = 1) { -->foo3 : (y?: { x: typeof z; }, z?: number) => void -->y : { x: typeof z; } -->{ x: a } : { x: typeof z; } -+>foo3 : (y?: { x: number; }, z?: number) => void -+>y : { x: number; } -+>{ x: a } : { x: number; } - >x : number - >a : number - >z : number -@@= skipped -74, +74 lines =@@ +@@= skipped -108, +108 lines =@@ // error - used as computed name of method function foo9(y = {[z]() { return z; }}, z = 1) { diff --git a/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types b/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types index e44d4a478f0..9ee51c2924b 100644 --- a/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types +++ b/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types @@ -24,11 +24,11 @@ const numericIndex = { [n]: 1 }; numericIndex[n].toFixed(); >numericIndex[n].toFixed() : string ->numericIndex[n].toFixed : (fractionDigits?: number | undefined) => string +>numericIndex[n].toFixed : (fractionDigits?: number) => string >numericIndex[n] : number >numericIndex : { [x: number]: number; } >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string const stringIndex = { [s]: 1 }; >stringIndex : { [x: string]: number; } @@ -39,10 +39,10 @@ const stringIndex = { [s]: 1 }; stringIndex[s].toFixed(); >stringIndex[s].toFixed() : string ->stringIndex[s].toFixed : (fractionDigits?: number | undefined) => string +>stringIndex[s].toFixed : (fractionDigits?: number) => string >stringIndex[s] : number >stringIndex : { [x: string]: number; } >s : string ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types.diff b/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types.diff index d7e43e3c564..5fbc51d0f9b 100644 --- a/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types.diff +++ b/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types.diff @@ -11,17 +11,14 @@ >[n] : number >n : number >1 : 1 - - numericIndex[n].toFixed(); +@@= skipped -10, +10 lines =@@ >numericIndex[n].toFixed() : string -->numericIndex[n].toFixed : (fractionDigits?: number) => string -+>numericIndex[n].toFixed : (fractionDigits?: number | undefined) => string + >numericIndex[n].toFixed : (fractionDigits?: number) => string >numericIndex[n] : number ->numericIndex : { [n]: number; } +>numericIndex : { [x: number]: number; } >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string + >toFixed : (fractionDigits?: number) => string const stringIndex = { [s]: 1 }; ->stringIndex : { [s]: number; } @@ -31,15 +28,11 @@ >[s] : number >s : string >1 : 1 - - stringIndex[s].toFixed(); +@@= skipped -15, +15 lines =@@ >stringIndex[s].toFixed() : string -->stringIndex[s].toFixed : (fractionDigits?: number) => string -+>stringIndex[s].toFixed : (fractionDigits?: number | undefined) => string + >stringIndex[s].toFixed : (fractionDigits?: number) => string >stringIndex[s] : number ->stringIndex : { [s]: number; } +>stringIndex : { [x: string]: number; } >s : string -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - + >toFixed : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/checkSwitchStatementIfCaseTypeIsString.types b/testdata/baselines/reference/submodule/compiler/checkSwitchStatementIfCaseTypeIsString.types index d9944bccef9..2609fddfb05 100644 --- a/testdata/baselines/reference/submodule/compiler/checkSwitchStatementIfCaseTypeIsString.types +++ b/testdata/baselines/reference/submodule/compiler/checkSwitchStatementIfCaseTypeIsString.types @@ -9,7 +9,7 @@ class A { >A : A doIt(x: Array): void { ->doIt : (x: string[]) => void +>doIt : (x: Array) => void >x : string[] x.forEach((v) => { diff --git a/testdata/baselines/reference/submodule/compiler/checkSwitchStatementIfCaseTypeIsString.types.diff b/testdata/baselines/reference/submodule/compiler/checkSwitchStatementIfCaseTypeIsString.types.diff deleted file mode 100644 index 593a5183a86..00000000000 --- a/testdata/baselines/reference/submodule/compiler/checkSwitchStatementIfCaseTypeIsString.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.checkSwitchStatementIfCaseTypeIsString.types -+++ new.checkSwitchStatementIfCaseTypeIsString.types -@@= skipped -8, +8 lines =@@ - >A : A - - doIt(x: Array): void { -->doIt : (x: Array) => void -+>doIt : (x: string[]) => void - >x : string[] - - x.forEach((v) => { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/circularAccessorAnnotations.types b/testdata/baselines/reference/submodule/compiler/circularAccessorAnnotations.types index e6b4d1fca90..2b01358a33d 100644 --- a/testdata/baselines/reference/submodule/compiler/circularAccessorAnnotations.types +++ b/testdata/baselines/reference/submodule/compiler/circularAccessorAnnotations.types @@ -2,23 +2,23 @@ === circularAccessorAnnotations.ts === declare const c1: { ->c1 : { readonly foo: any; } +>c1 : { readonly foo: typeof c1.foo; } get foo(): typeof c1.foo; >foo : any >c1.foo : any ->c1 : { readonly foo: any; } +>c1 : { readonly foo: typeof c1.foo; } >foo : any } declare const c2: { ->c2 : { foo: any; } +>c2 : { foo: typeof c2.foo; } set foo(value: typeof c2.foo); >foo : any >value : any >c2.foo : any ->c2 : { foo: any; } +>c2 : { foo: typeof c2.foo; } >foo : any } diff --git a/testdata/baselines/reference/submodule/compiler/circularAccessorAnnotations.types.diff b/testdata/baselines/reference/submodule/compiler/circularAccessorAnnotations.types.diff deleted file mode 100644 index bb02c9b06ea..00000000000 --- a/testdata/baselines/reference/submodule/compiler/circularAccessorAnnotations.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.circularAccessorAnnotations.types -+++ new.circularAccessorAnnotations.types -@@= skipped -1, +1 lines =@@ - - === circularAccessorAnnotations.ts === - declare const c1: { -->c1 : { readonly foo: typeof c1.foo; } -+>c1 : { readonly foo: any; } - - get foo(): typeof c1.foo; - >foo : any - >c1.foo : any -->c1 : { readonly foo: typeof c1.foo; } -+>c1 : { readonly foo: any; } - >foo : any - } - - declare const c2: { -->c2 : { foo: typeof c2.foo; } -+>c2 : { foo: any; } - - set foo(value: typeof c2.foo); - >foo : any - >value : any - >c2.foo : any -->c2 : { foo: typeof c2.foo; } -+>c2 : { foo: any; } - >foo : any - } diff --git a/testdata/baselines/reference/submodule/compiler/circularBaseTypes.types b/testdata/baselines/reference/submodule/compiler/circularBaseTypes.types index 745b78fb31f..721d4a13d73 100644 --- a/testdata/baselines/reference/submodule/compiler/circularBaseTypes.types +++ b/testdata/baselines/reference/submodule/compiler/circularBaseTypes.types @@ -12,7 +12,7 @@ type M3 = M2[keyof M2]; // Error >M3 : any function f(m: M3) { ->f : (m: any) => any +>f : (m: M3) => any >m : any return m.value; diff --git a/testdata/baselines/reference/submodule/compiler/circularBaseTypes.types.diff b/testdata/baselines/reference/submodule/compiler/circularBaseTypes.types.diff deleted file mode 100644 index 4d3dbee6f4f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/circularBaseTypes.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.circularBaseTypes.types -+++ new.circularBaseTypes.types -@@= skipped -11, +11 lines =@@ - >M3 : any - - function f(m: M3) { -->f : (m: M3) => any -+>f : (m: any) => any - >m : any - - return m.value; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/circularConstructorWithReturn.types b/testdata/baselines/reference/submodule/compiler/circularConstructorWithReturn.types index d96beb1dbfe..a31484a78bd 100644 --- a/testdata/baselines/reference/submodule/compiler/circularConstructorWithReturn.types +++ b/testdata/baselines/reference/submodule/compiler/circularConstructorWithReturn.types @@ -27,7 +27,7 @@ export function getPrismaClient(options?: any) { >this : this >self : PrismaClient >applyModelsAndClientExtensions(this) : PrismaClient ->applyModelsAndClientExtensions : (client: PrismaClient) => PrismaClient +>applyModelsAndClientExtensions : (client: Client) => PrismaClient >this : this } } @@ -37,7 +37,7 @@ export function getPrismaClient(options?: any) { } export function applyModelsAndClientExtensions(client: Client) { ->applyModelsAndClientExtensions : (client: PrismaClient) => PrismaClient +>applyModelsAndClientExtensions : (client: Client) => PrismaClient >client : PrismaClient return client; diff --git a/testdata/baselines/reference/submodule/compiler/circularConstructorWithReturn.types.diff b/testdata/baselines/reference/submodule/compiler/circularConstructorWithReturn.types.diff deleted file mode 100644 index b17310350c0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/circularConstructorWithReturn.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.circularConstructorWithReturn.types -+++ new.circularConstructorWithReturn.types -@@= skipped -26, +26 lines =@@ - >this : this - >self : PrismaClient - >applyModelsAndClientExtensions(this) : PrismaClient -->applyModelsAndClientExtensions : (client: Client) => PrismaClient -+>applyModelsAndClientExtensions : (client: PrismaClient) => PrismaClient - >this : this - } - } -@@= skipped -10, +10 lines =@@ - } - - export function applyModelsAndClientExtensions(client: Client) { -->applyModelsAndClientExtensions : (client: Client) => PrismaClient -+>applyModelsAndClientExtensions : (client: PrismaClient) => PrismaClient - >client : PrismaClient - - return client; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/circularContextualReturnType.types b/testdata/baselines/reference/submodule/compiler/circularContextualReturnType.types index f922db27388..73117d7b728 100644 --- a/testdata/baselines/reference/submodule/compiler/circularContextualReturnType.types +++ b/testdata/baselines/reference/submodule/compiler/circularContextualReturnType.types @@ -5,9 +5,9 @@ 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; } foo() { @@ -15,9 +15,9 @@ 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/testdata/baselines/reference/submodule/compiler/circularContextualReturnType.types.diff b/testdata/baselines/reference/submodule/compiler/circularContextualReturnType.types.diff deleted file mode 100644 index d4cae7c8f53..00000000000 --- a/testdata/baselines/reference/submodule/compiler/circularContextualReturnType.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.circularContextualReturnType.types -+++ new.circularContextualReturnType.types -@@= skipped -4, +4 lines =@@ - - 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; } - - foo() { -@@= skipped -10, +10 lines =@@ - - 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" - - }, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/circularInstantiationExpression.types b/testdata/baselines/reference/submodule/compiler/circularInstantiationExpression.types index 265ac07145e..65430d609db 100644 --- a/testdata/baselines/reference/submodule/compiler/circularInstantiationExpression.types +++ b/testdata/baselines/reference/submodule/compiler/circularInstantiationExpression.types @@ -2,12 +2,12 @@ === circularInstantiationExpression.ts === declare function foo(t: T): typeof foo; ->foo : (t: T) => (t: T) => any +>foo : (t: T) => typeof foo >t : T ->foo : (t: T) => (t: T) => any +>foo : (t: T) => typeof foo foo(""); >foo("") : (t: string) => any ->foo : (t: T) => (t: T) => any +>foo : (t: T) => typeof foo >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/circularInstantiationExpression.types.diff b/testdata/baselines/reference/submodule/compiler/circularInstantiationExpression.types.diff deleted file mode 100644 index d055a18e647..00000000000 --- a/testdata/baselines/reference/submodule/compiler/circularInstantiationExpression.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.circularInstantiationExpression.types -+++ new.circularInstantiationExpression.types -@@= skipped -1, +1 lines =@@ - - === circularInstantiationExpression.ts === - declare function foo(t: T): typeof foo; -->foo : (t: T) => typeof foo -+>foo : (t: T) => (t: T) => any - >t : T -->foo : (t: T) => typeof foo -+>foo : (t: T) => (t: T) => any - - foo(""); - >foo("") : (t: string) => any -->foo : (t: T) => typeof foo -+>foo : (t: T) => (t: T) => any - >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/circularObjectLiteralAccessors(target=es2015).types b/testdata/baselines/reference/submodule/compiler/circularObjectLiteralAccessors(target=es2015).types index 0c42d054034..50c712bce86 100644 --- a/testdata/baselines/reference/submodule/compiler/circularObjectLiteralAccessors(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/circularObjectLiteralAccessors(target=es2015).types @@ -4,7 +4,7 @@ // Repro from #6000 const a = { ->a : { b: { foo: string; }; foo: string; } +>a : { b: { get foo(): string; set foo(value: string); }; foo: string; } >{ b: { get foo(): string { return a.foo; }, set foo(value: string) { a.foo = value; } }, foo: ''} : { b: { foo: string; }; foo: string; } b: { @@ -16,7 +16,7 @@ const a = { return a.foo; >a.foo : string ->a : { b: { foo: string; }; foo: string; } +>a : { b: { get foo(): string; set foo(value: string); }; foo: string; } >foo : string }, @@ -27,7 +27,7 @@ const a = { a.foo = value; >a.foo = value : string >a.foo : string ->a : { b: { foo: string; }; foo: string; } +>a : { b: { get foo(): string; set foo(value: string); }; foo: string; } >foo : string >value : string } diff --git a/testdata/baselines/reference/submodule/compiler/circularObjectLiteralAccessors(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/circularObjectLiteralAccessors(target=es2015).types.diff new file mode 100644 index 00000000000..b7c5f28b80d --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/circularObjectLiteralAccessors(target=es2015).types.diff @@ -0,0 +1,29 @@ +--- old.circularObjectLiteralAccessors(target=es2015).types ++++ new.circularObjectLiteralAccessors(target=es2015).types +@@= skipped -3, +3 lines =@@ + // Repro from #6000 + + const a = { +->a : { b: { foo: string; }; foo: string; } ++>a : { b: { get foo(): string; set foo(value: string); }; foo: string; } + >{ b: { get foo(): string { return a.foo; }, set foo(value: string) { a.foo = value; } }, foo: ''} : { b: { foo: string; }; foo: string; } + + b: { +@@= skipped -12, +12 lines =@@ + + return a.foo; + >a.foo : string +->a : { b: { foo: string; }; foo: string; } ++>a : { b: { get foo(): string; set foo(value: string); }; foo: string; } + >foo : string + + }, +@@= skipped -11, +11 lines =@@ + a.foo = value; + >a.foo = value : string + >a.foo : string +->a : { b: { foo: string; }; foo: string; } ++>a : { b: { get foo(): string; set foo(value: string); }; foo: string; } + >foo : string + >value : string + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/circularOptionalityRemoval.types b/testdata/baselines/reference/submodule/compiler/circularOptionalityRemoval.types index 6c8d485254d..42b6de402ac 100644 --- a/testdata/baselines/reference/submodule/compiler/circularOptionalityRemoval.types +++ b/testdata/baselines/reference/submodule/compiler/circularOptionalityRemoval.types @@ -14,7 +14,7 @@ function fn1(x: number | undefined = x > 0 ? x : 0) { } // Report from user function fn2(x?: string = someCondition ? 'value1' : x) { } ->fn2 : (x?: string | undefined) => void +>fn2 : (x?: string) => void >x : string | undefined >someCondition ? 'value1' : x : string | undefined >someCondition : any diff --git a/testdata/baselines/reference/submodule/compiler/circularOptionalityRemoval.types.diff b/testdata/baselines/reference/submodule/compiler/circularOptionalityRemoval.types.diff deleted file mode 100644 index bbd364227e1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/circularOptionalityRemoval.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.circularOptionalityRemoval.types -+++ new.circularOptionalityRemoval.types -@@= skipped -13, +13 lines =@@ - - // Report from user - function fn2(x?: string = someCondition ? 'value1' : x) { } -->fn2 : (x?: string) => void -+>fn2 : (x?: string | undefined) => void - >x : string | undefined - >someCondition ? 'value1' : x : string | undefined - >someCondition : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/circularReferenceInReturnType.types b/testdata/baselines/reference/submodule/compiler/circularReferenceInReturnType.types index dd466151eb3..50917f3f393 100644 --- a/testdata/baselines/reference/submodule/compiler/circularReferenceInReturnType.types +++ b/testdata/baselines/reference/submodule/compiler/circularReferenceInReturnType.types @@ -43,7 +43,7 @@ const res3 = fn3()(() => res3); // https://github.com/microsoft/TypeScript/issues/58616 function foo(arg: Parameters[0]) { ->foo : (arg: string) => string +>foo : (arg: Parameters[0]) => string >arg : string >bar : (arg: string) => string @@ -57,7 +57,7 @@ function bar(arg: string) { return foo(arg); >foo(arg) : string ->foo : (arg: string) => string +>foo : (arg: Parameters[0]) => string >arg : string } diff --git a/testdata/baselines/reference/submodule/compiler/circularReferenceInReturnType.types.diff b/testdata/baselines/reference/submodule/compiler/circularReferenceInReturnType.types.diff deleted file mode 100644 index 297682c1a5d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/circularReferenceInReturnType.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.circularReferenceInReturnType.types -+++ new.circularReferenceInReturnType.types -@@= skipped -42, +42 lines =@@ - // https://github.com/microsoft/TypeScript/issues/58616 - - function foo(arg: Parameters[0]) { -->foo : (arg: Parameters[0]) => string -+>foo : (arg: string) => string - >arg : string - >bar : (arg: string) => string - -@@= skipped -14, +14 lines =@@ - - return foo(arg); - >foo(arg) : string -->foo : (arg: Parameters[0]) => string -+>foo : (arg: string) => string - >arg : string - } diff --git a/testdata/baselines/reference/submodule/compiler/circularResolvedSignature.types b/testdata/baselines/reference/submodule/compiler/circularResolvedSignature.types index 43fe1724722..7c1b45434c5 100644 --- a/testdata/baselines/reference/submodule/compiler/circularResolvedSignature.types +++ b/testdata/baselines/reference/submodule/compiler/circularResolvedSignature.types @@ -2,7 +2,7 @@ === circularResolvedSignature.ts === declare function useState(initialState: (() => S)): [S, (s: S) => void]; ->useState : (initialState: () => S) => [S, (s: S) => void] +>useState : (initialState: (() => S)) => [S, (s: S) => void] >initialState : () => S >s : S @@ -29,7 +29,7 @@ export function Component() { >state : Readonly<{ value: number; foo: (arg: any) => void; bar: (arg: any) => void; }> >setState : (s: Readonly<{ value: number; foo: (arg: any) => void; bar: (arg: any) => void; }>) => void >useState(() => ({ value: "string", // this should be a number foo: (arg) => setState(arg), bar: (arg) => setState(arg), })) : [Readonly<{ value: number; foo: (arg: any) => void; bar: (arg: any) => void; }>, (s: Readonly<{ value: number; foo: (arg: any) => void; bar: (arg: any) => void; }>) => void] ->useState : (initialState: () => S) => [S, (s: S) => void] +>useState : (initialState: (() => S)) => [S, (s: S) => void] >() => ({ value: "string", // this should be a number foo: (arg) => setState(arg), bar: (arg) => setState(arg), }) : () => { value: string; foo: (arg: any) => void; bar: (arg: any) => void; } >({ value: "string", // this should be a number foo: (arg) => setState(arg), bar: (arg) => setState(arg), }) : { value: string; foo: (arg: any) => void; bar: (arg: any) => void; } >{ value: "string", // this should be a number foo: (arg) => setState(arg), bar: (arg) => setState(arg), } : { value: string; foo: (arg: any) => void; bar: (arg: any) => void; } diff --git a/testdata/baselines/reference/submodule/compiler/circularResolvedSignature.types.diff b/testdata/baselines/reference/submodule/compiler/circularResolvedSignature.types.diff deleted file mode 100644 index 53b64e3a3e8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/circularResolvedSignature.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.circularResolvedSignature.types -+++ new.circularResolvedSignature.types -@@= skipped -1, +1 lines =@@ - - === circularResolvedSignature.ts === - declare function useState(initialState: (() => S)): [S, (s: S) => void]; -->useState : (initialState: (() => S)) => [S, (s: S) => void] -+>useState : (initialState: () => S) => [S, (s: S) => void] - >initialState : () => S - >s : S - -@@= skipped -27, +27 lines =@@ - >state : Readonly<{ value: number; foo: (arg: any) => void; bar: (arg: any) => void; }> - >setState : (s: Readonly<{ value: number; foo: (arg: any) => void; bar: (arg: any) => void; }>) => void - >useState(() => ({ value: "string", // this should be a number foo: (arg) => setState(arg), bar: (arg) => setState(arg), })) : [Readonly<{ value: number; foo: (arg: any) => void; bar: (arg: any) => void; }>, (s: Readonly<{ value: number; foo: (arg: any) => void; bar: (arg: any) => void; }>) => void] -->useState : (initialState: (() => S)) => [S, (s: S) => void] -+>useState : (initialState: () => S) => [S, (s: S) => void] - >() => ({ value: "string", // this should be a number foo: (arg) => setState(arg), bar: (arg) => setState(arg), }) : () => { value: string; foo: (arg: any) => void; bar: (arg: any) => void; } - >({ value: "string", // this should be a number foo: (arg) => setState(arg), bar: (arg) => setState(arg), }) : { value: string; foo: (arg: any) => void; bar: (arg: any) => void; } - >{ value: "string", // this should be a number foo: (arg) => setState(arg), bar: (arg) => setState(arg), } : { value: string; foo: (arg: any) => void; bar: (arg: any) => void; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types b/testdata/baselines/reference/submodule/compiler/circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types index 490b940ed64..d9c67726071 100644 --- a/testdata/baselines/reference/submodule/compiler/circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types +++ b/testdata/baselines/reference/submodule/compiler/circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types @@ -12,7 +12,7 @@ declare class Component

{ >context : any readonly props: Readonly

& Readonly<{ children?: {} }>; ->props : Readonly

& Readonly<{ children?: {} | undefined; }> +>props : Readonly

& Readonly<{ children?: {}; }> >children : {} | undefined } interface ComponentClass

{ @@ -31,7 +31,7 @@ interface ComponentClass

{ } interface FunctionComponent

{ (props: P & { children?: {} }, context?: any): {} | null; ->props : P & { children?: {} | undefined; } +>props : P & { children?: {}; } >children : {} | undefined >context : any diff --git a/testdata/baselines/reference/submodule/compiler/circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types.diff b/testdata/baselines/reference/submodule/compiler/circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types.diff deleted file mode 100644 index 952b66ccfc6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types -+++ new.circularlyConstrainedMappedTypeContainingConditionalNoInfiniteInstantiationDepth.types -@@= skipped -11, +11 lines =@@ - >context : any - - readonly props: Readonly

& Readonly<{ children?: {} }>; -->props : Readonly

& Readonly<{ children?: {}; }> -+>props : Readonly

& Readonly<{ children?: {} | undefined; }> - >children : {} | undefined - } - interface ComponentClass

{ -@@= skipped -19, +19 lines =@@ - } - interface FunctionComponent

{ - (props: P & { children?: {} }, context?: any): {} | null; -->props : P & { children?: {}; } -+>props : P & { children?: {} | undefined; } - >children : {} | undefined - >context : any diff --git a/testdata/baselines/reference/submodule/compiler/classExtendsInterfaceInExpression.types b/testdata/baselines/reference/submodule/compiler/classExtendsInterfaceInExpression.types index 931e3ea43cd..d86b79389f3 100644 --- a/testdata/baselines/reference/submodule/compiler/classExtendsInterfaceInExpression.types +++ b/testdata/baselines/reference/submodule/compiler/classExtendsInterfaceInExpression.types @@ -4,7 +4,7 @@ interface A {} function factory(a: any): {new(): Object} { ->factory : (a: any) => new () => Object +>factory : (a: any) => { new (): Object; } >a : any return null; @@ -13,6 +13,6 @@ function factory(a: any): {new(): Object} { class C extends factory(A) {} >C : C >factory(A) : Object ->factory : (a: any) => new () => Object +>factory : (a: any) => { new (): Object; } >A : any diff --git a/testdata/baselines/reference/submodule/compiler/classExtendsInterfaceInExpression.types.diff b/testdata/baselines/reference/submodule/compiler/classExtendsInterfaceInExpression.types.diff deleted file mode 100644 index 286249e3431..00000000000 --- a/testdata/baselines/reference/submodule/compiler/classExtendsInterfaceInExpression.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.classExtendsInterfaceInExpression.types -+++ new.classExtendsInterfaceInExpression.types -@@= skipped -3, +3 lines =@@ - interface A {} - - function factory(a: any): {new(): Object} { -->factory : (a: any) => { new (): Object; } -+>factory : (a: any) => new () => Object - >a : any - - return null; -@@= skipped -9, +9 lines =@@ - class C extends factory(A) {} - >C : C - >factory(A) : Object -->factory : (a: any) => { new (): Object; } -+>factory : (a: any) => new () => Object - >A : any diff --git a/testdata/baselines/reference/submodule/compiler/classImplementsMethodWIthTupleArgs.types b/testdata/baselines/reference/submodule/compiler/classImplementsMethodWIthTupleArgs.types index 321945a9833..3db4682b448 100644 --- a/testdata/baselines/reference/submodule/compiler/classImplementsMethodWIthTupleArgs.types +++ b/testdata/baselines/reference/submodule/compiler/classImplementsMethodWIthTupleArgs.types @@ -16,7 +16,7 @@ declare class MySettable implements Settable { interface Settable { set(...args: [option: Record] | [name: string, value: unknown] | [name: string]): void; ->set : (...args: [name: string] | [option: Record] | [name: string, value: unknown]) => void +>set : (...args: [option: Record] | [name: string, value: unknown] | [name: string]) => void >args : [name: string] | [option: Record] | [name: string, value: unknown] } diff --git a/testdata/baselines/reference/submodule/compiler/classImplementsMethodWIthTupleArgs.types.diff b/testdata/baselines/reference/submodule/compiler/classImplementsMethodWIthTupleArgs.types.diff deleted file mode 100644 index 0536bde5bc6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/classImplementsMethodWIthTupleArgs.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.classImplementsMethodWIthTupleArgs.types -+++ new.classImplementsMethodWIthTupleArgs.types -@@= skipped -15, +15 lines =@@ - - interface Settable { - set(...args: [option: Record] | [name: string, value: unknown] | [name: string]): void; -->set : (...args: [option: Record] | [name: string, value: unknown] | [name: string]) => void -+>set : (...args: [name: string] | [option: Record] | [name: string, value: unknown]) => void - >args : [name: string] | [option: Record] | [name: string, value: unknown] - } diff --git a/testdata/baselines/reference/submodule/compiler/classReferencedInContextualParameterWithinItsOwnBaseExpression.types b/testdata/baselines/reference/submodule/compiler/classReferencedInContextualParameterWithinItsOwnBaseExpression.types index 6b24b7347eb..524b288e1ba 100644 --- a/testdata/baselines/reference/submodule/compiler/classReferencedInContextualParameterWithinItsOwnBaseExpression.types +++ b/testdata/baselines/reference/submodule/compiler/classReferencedInContextualParameterWithinItsOwnBaseExpression.types @@ -16,7 +16,7 @@ interface Class { } declare const Class: ( ->Class : (identifier: string) => (fields: Fields, annotations?: Schema | undefined) => Class> +>Class : (identifier: string) => (fields: Fields, annotations?: Schema) => Class> identifier: string, >identifier : string @@ -53,7 +53,7 @@ export class A extends Class("A")( >A : 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 | undefined) => Class> +>Class : (identifier: string) => (fields: Fields, annotations?: Schema) => Class> >"A" : "A" { a: string }, @@ -68,9 +68,9 @@ export class A extends Class("A")( >(a) => JSON.stringify(a) : (a: A) => string >a : A >JSON.stringify(a) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >a : A }, diff --git a/testdata/baselines/reference/submodule/compiler/classReferencedInContextualParameterWithinItsOwnBaseExpression.types.diff b/testdata/baselines/reference/submodule/compiler/classReferencedInContextualParameterWithinItsOwnBaseExpression.types.diff deleted file mode 100644 index 382967b2409..00000000000 --- a/testdata/baselines/reference/submodule/compiler/classReferencedInContextualParameterWithinItsOwnBaseExpression.types.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- old.classReferencedInContextualParameterWithinItsOwnBaseExpression.types -+++ new.classReferencedInContextualParameterWithinItsOwnBaseExpression.types -@@= skipped -15, +15 lines =@@ - } - - declare const Class: ( -->Class : (identifier: string) => (fields: Fields, annotations?: Schema) => Class> -+>Class : (identifier: string) => (fields: Fields, annotations?: Schema | undefined) => Class> - - identifier: string, - >identifier : string -@@= skipped -37, +37 lines =@@ - >A : 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 : (identifier: string) => (fields: Fields, annotations?: Schema | undefined) => Class> - >"A" : "A" - - { a: string }, -@@= skipped -15, +15 lines =@@ - >(a) => JSON.stringify(a) : (a: A) => string - >a : A - >JSON.stringify(a) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >a : A - - }, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.js b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.js index 0b9a8f66411..1253b1478bc 100644 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.js +++ b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.js @@ -70,7 +70,7 @@ interface Action { name: TName; payload: TPayload; } -declare const actionA: Action<"ACTION_A", string>; -declare const actionB: Action<"ACTION_B", boolean>; +declare const actionA: Action<'ACTION_A', string>; +declare const actionB: Action<'ACTION_B', boolean>; declare function call(action: Action, fn: (action: Action) => any): void; -declare const printFn: (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void; +declare const printFn: (action: typeof actionA | typeof actionB) => void; diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.js.diff b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.js.diff index 8c094847aec..c28009e8815 100644 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.js.diff +++ b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.js.diff @@ -1,8 +1,12 @@ --- old.coAndContraVariantInferences.js +++ new.coAndContraVariantInferences.js -@@= skipped -72, +72 lines =@@ - declare const actionA: Action<"ACTION_A", string>; - declare const actionB: Action<"ACTION_B", boolean>; +@@= skipped -69, +69 lines =@@ + name: TName; + payload: TPayload; + } +-declare const actionA: Action<"ACTION_A", string>; +-declare const actionB: Action<"ACTION_B", boolean>; ++declare const actionA: Action<'ACTION_A', string>; ++declare const actionB: Action<'ACTION_B', boolean>; declare function call(action: Action, fn: (action: Action) => any): void; --declare const printFn: (action: typeof actionA | typeof actionB) => void; -+declare const printFn: (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void; \ No newline at end of file + declare const printFn: (action: typeof actionA | typeof actionB) => void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.types b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.types index 171e1bd77b4..bb5676eb603 100644 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.types +++ b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.types @@ -81,8 +81,8 @@ function call( } const printFn = (action: typeof actionA | typeof actionB)=> console.log(action); ->printFn : (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void ->(action: typeof actionA | typeof actionB)=> console.log(action) : (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void +>printFn : (action: typeof actionA | typeof actionB) => void +>(action: typeof actionA | typeof actionB)=> console.log(action) : (action: typeof actionA | typeof actionB) => void >action : Action<"ACTION_A", string> | Action<"ACTION_B", boolean> >actionA : Action<"ACTION_A", string> >actionB : Action<"ACTION_B", boolean> @@ -96,11 +96,11 @@ call(actionA, printFn); >call(actionA, printFn) : void >call : (action: Action, fn: (action: Action) => any) => void >actionA : Action<"ACTION_A", string> ->printFn : (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void +>printFn : (action: typeof actionA | typeof actionB) => void call(actionB, printFn); >call(actionB, printFn) : void >call : (action: Action, fn: (action: Action) => any) => void >actionB : Action<"ACTION_B", boolean> ->printFn : (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void +>printFn : (action: typeof actionA | typeof actionB) => void diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.types.diff b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.types.diff deleted file mode 100644 index 03d048be8b7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.coAndContraVariantInferences.types -+++ new.coAndContraVariantInferences.types -@@= skipped -80, +80 lines =@@ - } - - const printFn = (action: typeof actionA | typeof actionB)=> console.log(action); -->printFn : (action: typeof actionA | typeof actionB) => void -->(action: typeof actionA | typeof actionB)=> console.log(action) : (action: typeof actionA | typeof actionB) => void -+>printFn : (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void -+>(action: typeof actionA | typeof actionB)=> console.log(action) : (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void - >action : Action<"ACTION_A", string> | Action<"ACTION_B", boolean> - >actionA : Action<"ACTION_A", string> - >actionB : Action<"ACTION_B", boolean> -@@= skipped -15, +15 lines =@@ - >call(actionA, printFn) : void - >call : (action: Action, fn: (action: Action) => any) => void - >actionA : Action<"ACTION_A", string> -->printFn : (action: typeof actionA | typeof actionB) => void -+>printFn : (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void - - call(actionB, printFn); - >call(actionB, printFn) : void - >call : (action: Action, fn: (action: Action) => any) => void - >actionB : Action<"ACTION_B", boolean> -->printFn : (action: typeof actionA | typeof actionB) => void -+>printFn : (action: Action<"ACTION_A", string> | Action<"ACTION_B", boolean>) => void diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences2.types b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences2.types index 8144411a3a3..c6b21b22b0e 100644 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences2.types +++ b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences2.types @@ -176,7 +176,7 @@ declare function assertNode(node: Node | undefined, test: ((node: Node) => boole >node : Node function foo(node: FunctionDeclaration | CaseClause) { ->foo : (node: CaseClause | FunctionDeclaration) => void +>foo : (node: FunctionDeclaration | CaseClause) => void >node : CaseClause | FunctionDeclaration assertNode(node, canHaveLocals); // assertNode @@ -200,7 +200,7 @@ declare function tryCast(value: TIn | undefined, te >value : TIn function bar(node: Identifier | FunctionDeclaration) { ->bar : (node: FunctionDeclaration | Identifier) => void +>bar : (node: Identifier | FunctionDeclaration) => void >node : FunctionDeclaration | Identifier const a = tryCast(node, isExpression); // tryCast diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences2.types.diff b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences2.types.diff deleted file mode 100644 index 89d73090ba2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences2.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.coAndContraVariantInferences2.types -+++ new.coAndContraVariantInferences2.types -@@= skipped -175, +175 lines =@@ - >node : Node - - function foo(node: FunctionDeclaration | CaseClause) { -->foo : (node: FunctionDeclaration | CaseClause) => void -+>foo : (node: CaseClause | FunctionDeclaration) => void - >node : CaseClause | FunctionDeclaration - - assertNode(node, canHaveLocals); // assertNode -@@= skipped -24, +24 lines =@@ - >value : TIn - - function bar(node: Identifier | FunctionDeclaration) { -->bar : (node: Identifier | FunctionDeclaration) => void -+>bar : (node: FunctionDeclaration | Identifier) => void - >node : FunctionDeclaration | Identifier - - const a = tryCast(node, isExpression); // tryCast \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences3.types b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences3.types index 383e4ba0124..c8e927db626 100644 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences3.types +++ b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences3.types @@ -42,7 +42,7 @@ type OverloadDeprecations = { [P in OverloadKeys< >OverloadDeprecations : OverloadDeprecations declare function createOverload(name: string, overloads: T, binder: OverloadBinders, deprecations?: OverloadDeprecations): UnionToIntersection; ->createOverload : (name: string, overloads: T, binder: OverloadBinders, deprecations?: OverloadDeprecations | undefined) => UnionToIntersection +>createOverload : (name: string, overloads: T, binder: OverloadBinders, deprecations?: OverloadDeprecations) => UnionToIntersection >name : string >overloads : T >binder : OverloadBinders @@ -67,7 +67,7 @@ interface BindableOverloadBuilder { interface FinishableOverloadBuilder { finish(): OverloadFunction; ->finish : () => UnionToIntersection +>finish : () => OverloadFunction } interface BoundOverloadBuilder extends FinishableOverloadBuilder { diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences3.types.diff b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences3.types.diff index 9f548d79875..1ca165eff97 100644 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences3.types.diff +++ b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences3.types.diff @@ -1,24 +1,6 @@ --- old.coAndContraVariantInferences3.types +++ new.coAndContraVariantInferences3.types -@@= skipped -41, +41 lines =@@ - >OverloadDeprecations : OverloadDeprecations - - declare function createOverload(name: string, overloads: T, binder: OverloadBinders, deprecations?: OverloadDeprecations): UnionToIntersection; -->createOverload : (name: string, overloads: T, binder: OverloadBinders, deprecations?: OverloadDeprecations) => UnionToIntersection -+>createOverload : (name: string, overloads: T, binder: OverloadBinders, deprecations?: OverloadDeprecations | undefined) => UnionToIntersection - >name : string - >overloads : T - >binder : OverloadBinders -@@= skipped -25, +25 lines =@@ - - interface FinishableOverloadBuilder { - finish(): OverloadFunction; -->finish : () => OverloadFunction -+>finish : () => UnionToIntersection - } - - interface BoundOverloadBuilder extends FinishableOverloadBuilder { -@@= skipped -106, +106 lines =@@ +@@= skipped -172, +172 lines =@@ } declare function every(array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences6.types b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences6.types index cbda9fb158f..8b414f35c55 100644 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences6.types +++ b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences6.types @@ -41,7 +41,7 @@ type JSXElementConstructor

= >props : P declare function createElementIsolated

( ->createElementIsolated :

(type: string | ComponentClass

| FunctionComponent

, props?: P | null | undefined) => void +>createElementIsolated :

(type: FunctionComponent

| ComponentClass

| string, props?: P | null) => void type: FunctionComponent

| ComponentClass

| string, >type : string | ComponentClass

| FunctionComponent

@@ -56,7 +56,7 @@ declare let WrapperIsolated: JSXElementConstructor; createElementIsolated(WrapperIsolated, { value: "C" }); >createElementIsolated(WrapperIsolated, { value: "C" }) : void ->createElementIsolated :

(type: string | ComponentClass

| FunctionComponent

, props?: P | null | undefined) => void +>createElementIsolated :

(type: FunctionComponent

| ComponentClass

| string, props?: P | null) => void >WrapperIsolated : JSXElementConstructor >{ value: "C" } : { value: "C"; } >value : "C" diff --git a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences6.types.diff b/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences6.types.diff deleted file mode 100644 index 1172b98d288..00000000000 --- a/testdata/baselines/reference/submodule/compiler/coAndContraVariantInferences6.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.coAndContraVariantInferences6.types -+++ new.coAndContraVariantInferences6.types -@@= skipped -40, +40 lines =@@ - >props : P - - declare function createElementIsolated

( -->createElementIsolated :

(type: FunctionComponent

| ComponentClass

| string, props?: P | null) => void -+>createElementIsolated :

(type: string | ComponentClass

| FunctionComponent

, props?: P | null | undefined) => void - - type: FunctionComponent

| ComponentClass

| string, - >type : string | ComponentClass

| FunctionComponent

-@@= skipped -15, +15 lines =@@ - - createElementIsolated(WrapperIsolated, { value: "C" }); - >createElementIsolated(WrapperIsolated, { value: "C" }) : void -->createElementIsolated :

(type: FunctionComponent

| ComponentClass

| string, props?: P | null) => void -+>createElementIsolated :

(type: string | ComponentClass

| FunctionComponent

, props?: P | null | undefined) => void - >WrapperIsolated : JSXElementConstructor - >{ value: "C" } : { value: "C"; } - >value : "C" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/collisionArgumentsInType(alwaysstrict=true).types b/testdata/baselines/reference/submodule/compiler/collisionArgumentsInType(alwaysstrict=true).types index 044a9cbf3cb..c698d5e4f7f 100644 --- a/testdata/baselines/reference/submodule/compiler/collisionArgumentsInType(alwaysstrict=true).types +++ b/testdata/baselines/reference/submodule/compiler/collisionArgumentsInType(alwaysstrict=true).types @@ -12,7 +12,7 @@ var v12: (arguments: number, ...restParameters) => void; // no error - no code g >restParameters : any[] var v2: { ->v2 : { (arguments: number, ...restParameters: any[]): any; new (arguments: number, ...restParameters: any[]): any; foo(arguments: number, ...restParameters: any[]): any; prop: (arguments: number, ...restParameters: any[]) => void; } +>v2 : { (arguments: number, ...restParameters: any[]): any; new (arguments: number, ...restParameters: any[]): any; foo(arguments: number, ...restParameters: any[]): any; prop: (arguments: number, ...restParameters: any) => void; } (arguments: number, ...restParameters); // no error - no code gen >arguments : number @@ -33,7 +33,7 @@ var v2: { >restParameters : any[] } var v21: { ->v21 : { (i: number, ...arguments: any[]): any; new (i: number, ...arguments: any[]): any; foo(i: number, ...arguments: any[]): any; prop: (i: number, ...arguments: any[]) => void; } +>v21 : { (i: number, ...arguments: any[]): any; new (i: number, ...arguments: any[]): any; foo(i: number, ...arguments: any[]): any; prop: (i: number, ...arguments: any) => void; } (i: number, ...arguments); // no error - no code gen >i : number diff --git a/testdata/baselines/reference/submodule/compiler/collisionArgumentsInType(alwaysstrict=true).types.diff b/testdata/baselines/reference/submodule/compiler/collisionArgumentsInType(alwaysstrict=true).types.diff deleted file mode 100644 index 5c27f0cd5ba..00000000000 --- a/testdata/baselines/reference/submodule/compiler/collisionArgumentsInType(alwaysstrict=true).types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.collisionArgumentsInType(alwaysstrict=true).types -+++ new.collisionArgumentsInType(alwaysstrict=true).types -@@= skipped -11, +11 lines =@@ - >restParameters : any[] - - var v2: { -->v2 : { (arguments: number, ...restParameters: any[]): any; new (arguments: number, ...restParameters: any[]): any; foo(arguments: number, ...restParameters: any[]): any; prop: (arguments: number, ...restParameters: any) => void; } -+>v2 : { (arguments: number, ...restParameters: any[]): any; new (arguments: number, ...restParameters: any[]): any; foo(arguments: number, ...restParameters: any[]): any; prop: (arguments: number, ...restParameters: any[]) => void; } - - (arguments: number, ...restParameters); // no error - no code gen - >arguments : number -@@= skipped -21, +21 lines =@@ - >restParameters : any[] - } - var v21: { -->v21 : { (i: number, ...arguments: any[]): any; new (i: number, ...arguments: any[]): any; foo(i: number, ...arguments: any[]): any; prop: (i: number, ...arguments: any) => void; } -+>v21 : { (i: number, ...arguments: any[]): any; new (i: number, ...arguments: any[]): any; foo(i: number, ...arguments: any[]): any; prop: (i: number, ...arguments: any[]) => void; } - - (i: number, ...arguments); // no error - no code gen - >i : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/collisionRestParameterInType.types b/testdata/baselines/reference/submodule/compiler/collisionRestParameterInType.types index 11322dca660..9095b3a48df 100644 --- a/testdata/baselines/reference/submodule/compiler/collisionRestParameterInType.types +++ b/testdata/baselines/reference/submodule/compiler/collisionRestParameterInType.types @@ -7,7 +7,7 @@ var v1: (_i: number, ...restParameters) => void; // no error - no code gen >restParameters : any[] var v2: { ->v2 : { (_i: number, ...restParameters: any[]): any; new (_i: number, ...restParameters: any[]): any; foo(_i: number, ...restParameters: any[]): any; prop: (_i: number, ...restParameters: any[]) => void; } +>v2 : { (_i: number, ...restParameters: any[]): any; new (_i: number, ...restParameters: any[]): any; foo(_i: number, ...restParameters: any[]): any; prop: (_i: number, ...restParameters: any) => void; } (_i: number, ...restParameters); // no error - no code gen >_i : number diff --git a/testdata/baselines/reference/submodule/compiler/collisionRestParameterInType.types.diff b/testdata/baselines/reference/submodule/compiler/collisionRestParameterInType.types.diff deleted file mode 100644 index 189aca823be..00000000000 --- a/testdata/baselines/reference/submodule/compiler/collisionRestParameterInType.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.collisionRestParameterInType.types -+++ new.collisionRestParameterInType.types -@@= skipped -6, +6 lines =@@ - >restParameters : any[] - - var v2: { -->v2 : { (_i: number, ...restParameters: any[]): any; new (_i: number, ...restParameters: any[]): any; foo(_i: number, ...restParameters: any[]): any; prop: (_i: number, ...restParameters: any) => void; } -+>v2 : { (_i: number, ...restParameters: any[]): any; new (_i: number, ...restParameters: any[]): any; foo(_i: number, ...restParameters: any[]): any; prop: (_i: number, ...restParameters: any[]) => void; } - - (_i: number, ...restParameters); // no error - no code gen - >_i : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/collisionRestParameterUnderscoreIUsage.types b/testdata/baselines/reference/submodule/compiler/collisionRestParameterUnderscoreIUsage.types index 640b0198360..f831b7c50a1 100644 --- a/testdata/baselines/reference/submodule/compiler/collisionRestParameterUnderscoreIUsage.types +++ b/testdata/baselines/reference/submodule/compiler/collisionRestParameterUnderscoreIUsage.types @@ -2,8 +2,8 @@ === collisionRestParameterUnderscoreIUsage.ts === declare var console: { log(msg?: string): void; }; ->console : { log(msg?: string | undefined): void; } ->log : (msg?: string | undefined) => void +>console : { log(msg?: string): void; } +>log : (msg?: string) => void >msg : string | undefined var _i = "This is what I'd expect to see"; @@ -18,9 +18,9 @@ class Foo { console.log(_i); // This should result in error >console.log(_i) : void ->console.log : (msg?: string | undefined) => void ->console : { log(msg?: string | undefined): void; } ->log : (msg?: string | undefined) => void +>console.log : (msg?: string) => void +>console : { log(msg?: string): void; } +>log : (msg?: string) => void >_i : string } } diff --git a/testdata/baselines/reference/submodule/compiler/collisionRestParameterUnderscoreIUsage.types.diff b/testdata/baselines/reference/submodule/compiler/collisionRestParameterUnderscoreIUsage.types.diff deleted file mode 100644 index f07c4094c6f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/collisionRestParameterUnderscoreIUsage.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.collisionRestParameterUnderscoreIUsage.types -+++ new.collisionRestParameterUnderscoreIUsage.types -@@= skipped -1, +1 lines =@@ - - === collisionRestParameterUnderscoreIUsage.ts === - declare var console: { log(msg?: string): void; }; -->console : { log(msg?: string): void; } -->log : (msg?: string) => void -+>console : { log(msg?: string | undefined): void; } -+>log : (msg?: string | undefined) => void - >msg : string | undefined - - var _i = "This is what I'd expect to see"; -@@= skipped -16, +16 lines =@@ - - console.log(_i); // This should result in error - >console.log(_i) : void -->console.log : (msg?: string) => void -->console : { log(msg?: string): void; } -->log : (msg?: string) => void -+>console.log : (msg?: string | undefined) => void -+>console : { log(msg?: string | undefined): void; } -+>log : (msg?: string | undefined) => void - >_i : string - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/commentOnAmbientfunction.types b/testdata/baselines/reference/submodule/compiler/commentOnAmbientfunction.types index cf473cece55..22daa2ecfcf 100644 --- a/testdata/baselines/reference/submodule/compiler/commentOnAmbientfunction.types +++ b/testdata/baselines/reference/submodule/compiler/commentOnAmbientfunction.types @@ -3,7 +3,7 @@ === b.ts === /// declare function foobar(a: typeof foo): typeof bar; ->foobar : (a: () => any) => () => any +>foobar : (a: typeof foo) => typeof bar >a : () => any >foo : () => any >bar : () => any diff --git a/testdata/baselines/reference/submodule/compiler/commentOnAmbientfunction.types.diff b/testdata/baselines/reference/submodule/compiler/commentOnAmbientfunction.types.diff deleted file mode 100644 index 3ad1471d502..00000000000 --- a/testdata/baselines/reference/submodule/compiler/commentOnAmbientfunction.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.commentOnAmbientfunction.types -+++ new.commentOnAmbientfunction.types -@@= skipped -2, +2 lines =@@ - === b.ts === - /// - declare function foobar(a: typeof foo): typeof bar; -->foobar : (a: typeof foo) => typeof bar -+>foobar : (a: () => any) => () => any - >a : () => any - >foo : () => any - >bar : () => any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/comparabilityTypeParametersRelatedByUnion.types b/testdata/baselines/reference/submodule/compiler/comparabilityTypeParametersRelatedByUnion.types index e7acf78cad2..733ef0de630 100644 --- a/testdata/baselines/reference/submodule/compiler/comparabilityTypeParametersRelatedByUnion.types +++ b/testdata/baselines/reference/submodule/compiler/comparabilityTypeParametersRelatedByUnion.types @@ -20,7 +20,7 @@ class C { } bad(y: U) { ->bad : (y: U) => void +>bad : (y: U) => void >y : U if (y === this.x) {} diff --git a/testdata/baselines/reference/submodule/compiler/comparabilityTypeParametersRelatedByUnion.types.diff b/testdata/baselines/reference/submodule/compiler/comparabilityTypeParametersRelatedByUnion.types.diff deleted file mode 100644 index 04ea50a7b3f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/comparabilityTypeParametersRelatedByUnion.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.comparabilityTypeParametersRelatedByUnion.types -+++ new.comparabilityTypeParametersRelatedByUnion.types -@@= skipped -19, +19 lines =@@ - } - - bad(y: U) { -->bad : (y: U) => void -+>bad : (y: U) => void - >y : U - - if (y === this.x) {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/complexRecursiveCollections.types b/testdata/baselines/reference/submodule/compiler/complexRecursiveCollections.types index 099060eaf88..ea9dcdde54c 100644 --- a/testdata/baselines/reference/submodule/compiler/complexRecursiveCollections.types +++ b/testdata/baselines/reference/submodule/compiler/complexRecursiveCollections.types @@ -22,7 +22,7 @@ interface Collection { // these seem necessary to push it over the top for memory usage reduce(reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; ->reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } +>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: R, value: V, key: K, iter: this) => R >reduction : R >value : V @@ -32,8 +32,8 @@ interface Collection { >context : any reduce(reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; ->reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } ->reducer : (reduction: R | V, value: V, key: K, iter: this) => R +>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } +>reducer : (reduction: V | R, value: V, key: K, iter: this) => R >reduction : R | V >value : V >key : K @@ -87,9 +87,9 @@ declare namespace Immutable { >Immutable : typeof Immutable export function fromJS(jsValue: any, reviver?: (key: string | number, sequence: Collection.Keyed | Collection.Indexed, path?: Array) => any): any; ->fromJS : (jsValue: any, reviver?: ((key: string | number, sequence: Collection.Indexed | Collection.Keyed, path?: (string | number)[] | undefined) => any) | undefined) => any +>fromJS : (jsValue: any, reviver?: (key: string | number, sequence: Collection.Keyed | Collection.Indexed, path?: Array) => any) => any >jsValue : any ->reviver : ((key: string | number, sequence: Collection.Indexed | Collection.Keyed, path?: (string | number)[] | undefined) => any) | undefined +>reviver : ((key: string | number, sequence: Collection.Keyed | Collection.Indexed, path?: Array) => any) | undefined >key : string | number >sequence : Collection.Indexed | Collection.Keyed >Collection : any @@ -153,7 +153,7 @@ declare namespace Immutable { >maybeList : any function of(...values: Array): List; ->of : (...values: T[]) => List +>of : (...values: Array) => List >values : T[] } export function List(): List; @@ -192,14 +192,14 @@ declare namespace Immutable { >clear : () => List push(...values: Array): List; ->push : (...values: T[]) => List +>push : (...values: Array) => List >values : T[] pop(): List; >pop : () => List unshift(...values: Array): List; ->unshift : (...values: T[]) => List +>unshift : (...values: Array) => List >values : T[] shift(): List; @@ -224,12 +224,12 @@ declare namespace Immutable { >value : this merge(...collections: Array | Array>): this; ->merge : (...collections: (T[] | Collection.Indexed)[]) => this +>merge : (...collections: Array | Array>) => this >collections : (T[] | Collection.Indexed)[] >Collection : any mergeWith(merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>): this; ->mergeWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: (T[] | Collection.Indexed)[]) => this +>mergeWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>) => this >merger : (oldVal: T, newVal: T, key: number) => T >oldVal : T >newVal : T @@ -238,12 +238,12 @@ declare namespace Immutable { >Collection : any mergeDeep(...collections: Array | Array>): this; ->mergeDeep : (...collections: (T[] | Collection.Indexed)[]) => this +>mergeDeep : (...collections: Array | Array>) => this >collections : (T[] | Collection.Indexed)[] >Collection : any mergeDeepWith(merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>): this; ->mergeDeepWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: (T[] | Collection.Indexed)[]) => this +>mergeDeepWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>) => this >merger : (oldVal: T, newVal: T, key: number) => T >oldVal : T >newVal : T @@ -283,12 +283,12 @@ declare namespace Immutable { >value : any mergeIn(keyPath: Iterable, ...collections: Array): this; ->mergeIn : (keyPath: Iterable, ...collections: any[]) => this +>mergeIn : (keyPath: Iterable, ...collections: Array) => this >keyPath : Iterable >collections : any[] mergeDeepIn(keyPath: Iterable, ...collections: Array): this; ->mergeDeepIn : (keyPath: Iterable, ...collections: any[]) => this +>mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this >keyPath : Iterable >collections : any[] @@ -306,7 +306,7 @@ declare namespace Immutable { // Sequence algorithms concat(...valuesOrCollections: Array | C>): List; ->concat : (...valuesOrCollections: (C | Iterable)[]) => List +>concat : (...valuesOrCollections: Array | C>) => List >valuesOrCollections : (C | Iterable)[] map(mapper: (value: T, key: number, iter: this) => M, context?: any): List; @@ -349,7 +349,7 @@ declare namespace Immutable { >maybeMap : any function of(...keyValues: Array): Map; ->of : (...keyValues: any[]) => Map +>of : (...keyValues: Array) => Map >keyValues : any[] } export function Map(collection: Iterable<[K, V]>): Map; @@ -418,12 +418,12 @@ declare namespace Immutable { >value : this merge(...collections: Array | {[key: string]: V}>): this; ->merge : (...collections: (Collection | { [key: string]: V; })[]) => this +>merge : (...collections: Array | { [key: string]: V; }>) => this >collections : (Collection | { [key: string]: V; })[] >key : string mergeWith(merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | {[key: string]: V}>): this; ->mergeWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: (Collection | { [key: string]: V; })[]) => this +>mergeWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | { [key: string]: V; }>) => this >merger : (oldVal: V, newVal: V, key: K) => V >oldVal : V >newVal : V @@ -432,12 +432,12 @@ declare namespace Immutable { >key : string mergeDeep(...collections: Array | {[key: string]: V}>): this; ->mergeDeep : (...collections: (Collection | { [key: string]: V; })[]) => this +>mergeDeep : (...collections: Array | { [key: string]: V; }>) => this >collections : (Collection | { [key: string]: V; })[] >key : string mergeDeepWith(merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | {[key: string]: V}>): this; ->mergeDeepWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: (Collection | { [key: string]: V; })[]) => this +>mergeDeepWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | { [key: string]: V; }>) => this >merger : (oldVal: V, newVal: V, key: K) => V >oldVal : V >newVal : V @@ -473,12 +473,12 @@ declare namespace Immutable { >value : any mergeIn(keyPath: Iterable, ...collections: Array): this; ->mergeIn : (keyPath: Iterable, ...collections: any[]) => this +>mergeIn : (keyPath: Iterable, ...collections: Array) => this >keyPath : Iterable >collections : any[] mergeDeepIn(keyPath: Iterable, ...collections: Array): this; ->mergeDeepIn : (keyPath: Iterable, ...collections: any[]) => this +>mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this >keyPath : Iterable >collections : any[] @@ -496,11 +496,11 @@ declare namespace Immutable { // Sequence algorithms concat(...collections: Array>): Map; ->concat : { (...collections: Iterable<[KC, VC]>[]): Map; (...collections: { [key: string]: C; }[]): Map; } +>concat : { (...collections: Array>): Map; (...collections: Array<{ [key: string]: C; }>): Map; } >collections : Iterable<[KC, VC]>[] concat(...collections: Array<{[key: string]: C}>): Map; ->concat : { (...collections: Iterable<[KC, VC]>[]): Map; (...collections: { [key: string]: C; }[]): Map; } +>concat : { (...collections: Array>): Map; (...collections: Array<{ [key: string]: C; }>): Map; } >collections : { [key: string]: C; }[] >key : string @@ -581,11 +581,11 @@ declare namespace Immutable { export interface OrderedMap extends Map { // Sequence algorithms concat(...collections: Array>): OrderedMap; ->concat : { (...collections: Iterable<[KC, VC]>[]): OrderedMap; (...collections: { [key: string]: C; }[]): OrderedMap; } +>concat : { (...collections: Array>): OrderedMap; (...collections: Array<{ [key: string]: C; }>): OrderedMap; } >collections : Iterable<[KC, VC]>[] concat(...collections: Array<{[key: string]: C}>): OrderedMap; ->concat : { (...collections: Iterable<[KC, VC]>[]): OrderedMap; (...collections: { [key: string]: C; }[]): OrderedMap; } +>concat : { (...collections: Array>): OrderedMap; (...collections: Array<{ [key: string]: C; }>): OrderedMap; } >collections : { [key: string]: C; }[] >key : string @@ -645,7 +645,7 @@ declare namespace Immutable { >maybeSet : any function of(...values: Array): Set; ->of : (...values: T[]) => Set +>of : (...values: Array) => Set >values : T[] function fromKeys(iter: Collection): Set; @@ -695,19 +695,19 @@ declare namespace Immutable { >clear : () => this union(...collections: Array | Array>): this; ->union : (...collections: (T[] | Collection)[]) => this +>union : (...collections: Array | Array>) => this >collections : (T[] | Collection)[] merge(...collections: Array | Array>): this; ->merge : (...collections: (T[] | Collection)[]) => this +>merge : (...collections: Array | Array>) => this >collections : (T[] | Collection)[] intersect(...collections: Array | Array>): this; ->intersect : (...collections: (T[] | Collection)[]) => this +>intersect : (...collections: Array | Array>) => this >collections : (T[] | Collection)[] subtract(...collections: Array | Array>): this; ->subtract : (...collections: (T[] | Collection)[]) => this +>subtract : (...collections: Array | Array>) => this >collections : (T[] | Collection)[] // Transient changes @@ -724,7 +724,7 @@ declare namespace Immutable { // Sequence algorithms concat(...valuesOrCollections: Array | C>): Set; ->concat : (...valuesOrCollections: (C | Iterable)[]) => Set +>concat : (...valuesOrCollections: Array | C>) => Set >valuesOrCollections : (C | Iterable)[] map(mapper: (value: T, key: never, iter: this) => M, context?: any): Set; @@ -767,7 +767,7 @@ declare namespace Immutable { >maybeOrderedSet : any function of(...values: Array): OrderedSet; ->of : (...values: T[]) => OrderedSet +>of : (...values: Array) => OrderedSet >values : T[] function fromKeys(iter: Collection): OrderedSet; @@ -792,7 +792,7 @@ declare namespace Immutable { export interface OrderedSet extends Set { // Sequence algorithms concat(...valuesOrCollections: Array | C>): OrderedSet; ->concat : (...valuesOrCollections: (C | Iterable)[]) => OrderedSet +>concat : (...valuesOrCollections: Array | C>) => OrderedSet >valuesOrCollections : (C | Iterable)[] map(mapper: (value: T, key: never, iter: this) => M, context?: any): OrderedSet; @@ -828,18 +828,18 @@ declare namespace Immutable { >context : any zip(...collections: Array>): OrderedSet; ->zip : (...collections: Collection[]) => OrderedSet +>zip : (...collections: Array>) => OrderedSet >collections : Collection[] zipWith(zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; ->zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: any[]) => Z, ...collections: Collection[]): OrderedSet; } +>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; } >zipper : (value: T, otherValue: U) => Z >value : T >otherValue : U >otherCollection : Collection zipWith(zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; ->zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: any[]) => Z, ...collections: Collection[]): OrderedSet; } +>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; } >zipper : (value: T, otherValue: U, thirdValue: V) => Z >value : T >otherValue : U @@ -848,8 +848,8 @@ declare namespace Immutable { >thirdCollection : Collection zipWith(zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; ->zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: any[]) => Z, ...collections: Collection[]): OrderedSet; } ->zipper : (...any: any[]) => Z +>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; } +>zipper : (...any: Array) => Z >any : any[] >collections : Collection[] } @@ -861,7 +861,7 @@ declare namespace Immutable { >maybeStack : any function of(...values: Array): Stack; ->of : (...values: T[]) => Stack +>of : (...values: Array) => Stack >values : T[] } export function Stack(): Stack; @@ -886,7 +886,7 @@ declare namespace Immutable { >clear : () => Stack unshift(...values: Array): Stack; ->unshift : (...values: T[]) => Stack +>unshift : (...values: Array) => Stack >values : T[] unshiftAll(iter: Iterable): Stack; @@ -897,7 +897,7 @@ declare namespace Immutable { >shift : () => Stack push(...values: Array): Stack; ->push : (...values: T[]) => Stack +>push : (...values: Array) => Stack >values : T[] pushAll(iter: Iterable): Stack; @@ -921,7 +921,7 @@ declare namespace Immutable { // Sequence algorithms concat(...valuesOrCollections: Array | C>): Stack; ->concat : (...valuesOrCollections: (C | Iterable)[]) => Stack +>concat : (...valuesOrCollections: Array | C>) => Stack >valuesOrCollections : (C | Iterable)[] map(mapper: (value: T, key: number, iter: this) => M, context?: any): Stack; @@ -957,14 +957,14 @@ declare namespace Immutable { >context : any } export function Range(start?: number, end?: number, step?: number): Seq.Indexed; ->Range : (start?: number | undefined, end?: number | undefined, step?: number | undefined) => Seq.Indexed +>Range : (start?: number, end?: number, step?: number) => Seq.Indexed >start : number | undefined >end : number | undefined >step : number | undefined >Seq : any export function Repeat(value: T, times?: number): Seq.Indexed; ->Repeat : (value: T, times?: number | undefined) => Seq.Indexed +>Repeat : (value: T, times?: number) => Seq.Indexed >value : T >times : number | undefined >Seq : any @@ -1031,15 +1031,15 @@ declare namespace Immutable { >value : T[K] merge(...collections: Array | Iterable<[string, any]>>): this; ->merge : (...collections: (Iterable<[string, any]> | Partial)[]) => this +>merge : (...collections: Array | Iterable<[string, any]>>) => this >collections : (Iterable<[string, any]> | Partial)[] mergeDeep(...collections: Array | Iterable<[string, any]>>): this; ->mergeDeep : (...collections: (Iterable<[string, any]> | Partial)[]) => this +>mergeDeep : (...collections: Array | Iterable<[string, any]>>) => this >collections : (Iterable<[string, any]> | Partial)[] mergeWith(merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: Array | Iterable<[string, any]>>): this; ->mergeWith : (merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: (Iterable<[string, any]> | Partial)[]) => this +>mergeWith : (merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: Array | Iterable<[string, any]>>) => this >merger : (oldVal: any, newVal: any, key: keyof T) => any >oldVal : any >newVal : any @@ -1047,7 +1047,7 @@ declare namespace Immutable { >collections : (Iterable<[string, any]> | Partial)[] mergeDeepWith(merger: (oldVal: any, newVal: any, key: any) => any, ...collections: Array | Iterable<[string, any]>>): this; ->mergeDeepWith : (merger: (oldVal: any, newVal: any, key: any) => any, ...collections: (Iterable<[string, any]> | Partial)[]) => this +>mergeDeepWith : (merger: (oldVal: any, newVal: any, key: any) => any, ...collections: Array | Iterable<[string, any]>>) => this >merger : (oldVal: any, newVal: any, key: any) => any >oldVal : any >newVal : any @@ -1078,12 +1078,12 @@ declare namespace Immutable { >value : any mergeIn(keyPath: Iterable, ...collections: Array): this; ->mergeIn : (keyPath: Iterable, ...collections: any[]) => this +>mergeIn : (keyPath: Iterable, ...collections: Array) => this >keyPath : Iterable >collections : any[] mergeDeepIn(keyPath: Iterable, ...collections: Array): this; ->mergeDeepIn : (keyPath: Iterable, ...collections: any[]) => this +>mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this >keyPath : Iterable >collections : any[] @@ -1145,28 +1145,28 @@ declare namespace Immutable { >Seq : any function of(...values: Array): Seq.Indexed; ->of : (...values: T[]) => Indexed +>of : (...values: Array) => Seq.Indexed >values : T[] >Seq : any export namespace Keyed {} export function Keyed(collection: Iterable<[K, V]>): Seq.Keyed; ->Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } +>Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } >collection : Iterable<[K, V]> >Seq : any export function Keyed(obj: {[key: string]: V}): Seq.Keyed; ->Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } +>Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } >obj : { [key: string]: V; } >key : string >Seq : any export function Keyed(): Seq.Keyed; ->Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } +>Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } >Seq : any export function Keyed(): Seq.Keyed; ->Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } +>Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } >Seq : any export interface Keyed extends Seq, Collection.Keyed { @@ -1183,18 +1183,18 @@ declare namespace Immutable { >toSeq : () => this concat(...collections: Array>): Seq.Keyed; ->concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } +>concat : { (...collections: Array>): Seq.Keyed; (...collections: Array<{ [key: string]: C; }>): Seq.Keyed; } >collections : Iterable<[KC, VC]>[] >Seq : any concat(...collections: Array<{[key: string]: C}>): Seq.Keyed; ->concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } +>concat : { (...collections: Array>): Seq.Keyed; (...collections: Array<{ [key: string]: C; }>): Seq.Keyed; } >collections : { [key: string]: C; }[] >key : string >Seq : any map(mapper: (value: V, key: K, iter: this) => M, context?: any): Seq.Keyed; ->map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Keyed +>map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Seq.Keyed >mapper : (value: V, key: K, iter: this) => M >value : V >key : K @@ -1203,7 +1203,7 @@ declare namespace Immutable { >Seq : any mapKeys(mapper: (key: K, value: V, iter: this) => M, context?: any): Seq.Keyed; ->mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Keyed +>mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Seq.Keyed >mapper : (key: K, value: V, iter: this) => M >key : K >value : V @@ -1212,7 +1212,7 @@ declare namespace Immutable { >Seq : any mapEntries(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any): Seq.Keyed; ->mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Keyed +>mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Seq.Keyed >mapper : (entry: [K, V], index: number, iter: this) => [KM, VM] >entry : [K, V] >index : number @@ -1221,7 +1221,7 @@ declare namespace Immutable { >Seq : any flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Seq.Keyed; ->flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Keyed +>flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Seq.Keyed >mapper : (value: V, key: K, iter: this) => Iterable >value : V >key : K @@ -1230,7 +1230,7 @@ declare namespace Immutable { >Seq : any filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq.Keyed; ->filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq.Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => value is F >value : V >key : K @@ -1239,7 +1239,7 @@ declare namespace Immutable { >Seq : any filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; ->filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq.Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => any >value : V >key : K @@ -1250,7 +1250,7 @@ declare namespace Immutable { >Indexed : typeof Indexed function of(...values: Array): Seq.Indexed; ->of : (...values: T[]) => Indexed +>of : (...values: Array) => Seq.Indexed >values : T[] >Seq : any } @@ -1271,21 +1271,21 @@ declare namespace Immutable { >Collection : typeof Collection toJS(): Array; ->toJS : () => any[] +>toJS : () => Array toJSON(): Array; ->toJSON : () => T[] +>toJSON : () => Array toSeq(): this; >toSeq : () => this concat(...valuesOrCollections: Array | C>): Seq.Indexed; ->concat : (...valuesOrCollections: (C | Iterable)[]) => Indexed +>concat : (...valuesOrCollections: Array | C>) => Seq.Indexed >valuesOrCollections : (C | Iterable)[] >Seq : any map(mapper: (value: T, key: number, iter: this) => M, context?: any): Seq.Indexed; ->map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Indexed +>map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Seq.Indexed >mapper : (value: T, key: number, iter: this) => M >value : T >key : number @@ -1294,7 +1294,7 @@ declare namespace Immutable { >Seq : any flatMap(mapper: (value: T, key: number, iter: this) => Iterable, context?: any): Seq.Indexed; ->flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Indexed +>flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Seq.Indexed >mapper : (value: T, key: number, iter: this) => Iterable >value : T >key : number @@ -1303,7 +1303,7 @@ declare namespace Immutable { >Seq : any filter(predicate: (value: T, index: number, iter: this) => value is F, context?: any): Seq.Indexed; ->filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Seq.Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => value is F >value : T >index : number @@ -1312,7 +1312,7 @@ declare namespace Immutable { >Seq : any filter(predicate: (value: T, index: number, iter: this) => any, context?: any): this; ->filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Seq.Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => any >value : T >index : number @@ -1323,7 +1323,7 @@ declare namespace Immutable { >Set : typeof Set function of(...values: Array): Seq.Set; ->of : (...values: T[]) => Set +>of : (...values: Array) => Seq.Set >values : T[] >Seq : any } @@ -1344,21 +1344,21 @@ declare namespace Immutable { >Collection : typeof Collection toJS(): Array; ->toJS : () => any[] +>toJS : () => Array toJSON(): Array; ->toJSON : () => T[] +>toJSON : () => Array toSeq(): this; >toSeq : () => this concat(...valuesOrCollections: Array | C>): Seq.Set; ->concat : (...valuesOrCollections: (C | Iterable)[]) => Set +>concat : (...valuesOrCollections: Array | C>) => Seq.Set >valuesOrCollections : (C | Iterable)[] >Seq : any map(mapper: (value: T, key: never, iter: this) => M, context?: any): Seq.Set; ->map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Set +>map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Seq.Set >mapper : (value: T, key: never, iter: this) => M >value : T >key : never @@ -1367,7 +1367,7 @@ declare namespace Immutable { >Seq : any flatMap(mapper: (value: T, key: never, iter: this) => Iterable, context?: any): Seq.Set; ->flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Set +>flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Seq.Set >mapper : (value: T, key: never, iter: this) => Iterable >value : T >key : never @@ -1376,7 +1376,7 @@ declare namespace Immutable { >Seq : any filter(predicate: (value: T, key: never, iter: this) => value is F, context?: any): Seq.Set; ->filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Seq.Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => value is F >value : T >key : never @@ -1385,7 +1385,7 @@ declare namespace Immutable { >Seq : any filter(predicate: (value: T, key: never, iter: this) => any, context?: any): this; ->filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Seq.Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => any >value : T >key : never @@ -1495,12 +1495,12 @@ declare namespace Immutable { export namespace Keyed {} export function Keyed(collection: Iterable<[K, V]>): Collection.Keyed; ->Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; } +>Keyed : { (collection: Iterable<[K, V]>): Collection.Keyed; (obj: { [key: string]: V; }): Collection.Keyed; } >collection : Iterable<[K, V]> >Collection : any export function Keyed(obj: {[key: string]: V}): Collection.Keyed; ->Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; } +>Keyed : { (collection: Iterable<[K, V]>): Collection.Keyed; (obj: { [key: string]: V; }): Collection.Keyed; } >obj : { [key: string]: V; } >key : string >Collection : any @@ -1522,18 +1522,18 @@ declare namespace Immutable { >flip : () => this concat(...collections: Array>): Collection.Keyed; ->concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } +>concat : { (...collections: Array>): Collection.Keyed; (...collections: Array<{ [key: string]: C; }>): Collection.Keyed; } >collections : Iterable<[KC, VC]>[] >Collection : any concat(...collections: Array<{[key: string]: C}>): Collection.Keyed; ->concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } +>concat : { (...collections: Array>): Collection.Keyed; (...collections: Array<{ [key: string]: C; }>): Collection.Keyed; } >collections : { [key: string]: C; }[] >key : string >Collection : any map(mapper: (value: V, key: K, iter: this) => M, context?: any): Collection.Keyed; ->map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Keyed +>map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Collection.Keyed >mapper : (value: V, key: K, iter: this) => M >value : V >key : K @@ -1542,7 +1542,7 @@ declare namespace Immutable { >Collection : any mapKeys(mapper: (key: K, value: V, iter: this) => M, context?: any): Collection.Keyed; ->mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Keyed +>mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Collection.Keyed >mapper : (key: K, value: V, iter: this) => M >key : K >value : V @@ -1551,7 +1551,7 @@ declare namespace Immutable { >Collection : any mapEntries(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any): Collection.Keyed; ->mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Keyed +>mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Collection.Keyed >mapper : (entry: [K, V], index: number, iter: this) => [KM, VM] >entry : [K, V] >index : number @@ -1560,7 +1560,7 @@ declare namespace Immutable { >Collection : any flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Collection.Keyed; ->flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Keyed +>flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Collection.Keyed >mapper : (value: V, key: K, iter: this) => Iterable >value : V >key : K @@ -1569,7 +1569,7 @@ declare namespace Immutable { >Collection : any filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection.Keyed; ->filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection.Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => value is F >value : V >key : K @@ -1578,7 +1578,7 @@ declare namespace Immutable { >Collection : any filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; ->filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection.Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => any >value : V >key : K @@ -1593,25 +1593,25 @@ declare namespace Immutable { } export namespace Indexed {} export function Indexed(collection: Iterable): Collection.Indexed; ->Indexed : (collection: Iterable) => Indexed +>Indexed : (collection: Iterable) => Collection.Indexed >collection : Iterable >Collection : any export interface Indexed extends Collection { toJS(): Array; ->toJS : () => any[] +>toJS : () => Array toJSON(): Array; ->toJSON : () => T[] +>toJSON : () => Array // Reading values get(index: number, notSetValue: NSV): T | NSV; ->get : { (index: number, notSetValue: NSV): NSV | T; (index: number): T | undefined; } +>get : { (index: number, notSetValue: NSV): T | NSV; (index: number): T | undefined; } >index : number >notSetValue : NSV get(index: number): T | undefined; ->get : { (index: number, notSetValue: NSV): NSV | T; (index: number): T | undefined; } +>get : { (index: number, notSetValue: NSV): T | NSV; (index: number): T | undefined; } >index : number // Conversion to Seq @@ -1629,22 +1629,22 @@ declare namespace Immutable { >separator : T interleave(...collections: Array>): this; ->interleave : (...collections: Collection[]) => this +>interleave : (...collections: Array>) => this >collections : Collection[] splice(index: number, removeNum: number, ...values: Array): this; ->splice : (index: number, removeNum: number, ...values: T[]) => this +>splice : (index: number, removeNum: number, ...values: Array) => this >index : number >removeNum : number >values : T[] zip(...collections: Array>): Collection.Indexed; ->zip : (...collections: Collection[]) => Indexed +>zip : (...collections: Array>) => Collection.Indexed >collections : Collection[] >Collection : any zipWith(zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; ->zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Indexed; (zipper: (...any: any[]) => Z, ...collections: Collection[]): Indexed; } +>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; (zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; } >zipper : (value: T, otherValue: U) => Z >value : T >otherValue : U @@ -1652,7 +1652,7 @@ declare namespace Immutable { >Collection : any zipWith(zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; ->zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Indexed; (zipper: (...any: any[]) => Z, ...collections: Collection[]): Indexed; } +>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; (zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; } >zipper : (value: T, otherValue: U, thirdValue: V) => Z >value : T >otherValue : U @@ -1662,8 +1662,8 @@ declare namespace Immutable { >Collection : any zipWith(zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; ->zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Indexed; (zipper: (...any: any[]) => Z, ...collections: Collection[]): Indexed; } ->zipper : (...any: any[]) => Z +>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; (zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; } +>zipper : (...any: Array) => Z >any : any[] >collections : Collection[] >Collection : any @@ -1695,12 +1695,12 @@ declare namespace Immutable { // Sequence algorithms concat(...valuesOrCollections: Array | C>): Collection.Indexed; ->concat : (...valuesOrCollections: (C | Iterable)[]) => Indexed +>concat : (...valuesOrCollections: Array | C>) => Collection.Indexed >valuesOrCollections : (C | Iterable)[] >Collection : any map(mapper: (value: T, key: number, iter: this) => M, context?: any): Collection.Indexed; ->map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Indexed +>map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Collection.Indexed >mapper : (value: T, key: number, iter: this) => M >value : T >key : number @@ -1709,7 +1709,7 @@ declare namespace Immutable { >Collection : any flatMap(mapper: (value: T, key: number, iter: this) => Iterable, context?: any): Collection.Indexed; ->flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Indexed +>flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Collection.Indexed >mapper : (value: T, key: number, iter: this) => Iterable >value : T >key : number @@ -1718,7 +1718,7 @@ declare namespace Immutable { >Collection : any filter(predicate: (value: T, index: number, iter: this) => value is F, context?: any): Collection.Indexed; ->filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Collection.Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => value is F >value : T >index : number @@ -1727,7 +1727,7 @@ declare namespace Immutable { >Collection : any filter(predicate: (value: T, index: number, iter: this) => any, context?: any): this; ->filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Collection.Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => any >value : T >index : number @@ -1742,16 +1742,16 @@ declare namespace Immutable { } export namespace Set {} export function Set(collection: Iterable): Collection.Set; ->Set : (collection: Iterable) => Set +>Set : (collection: Iterable) => Collection.Set >collection : Iterable >Collection : any export interface Set extends Collection { toJS(): Array; ->toJS : () => any[] +>toJS : () => Array toJSON(): Array; ->toJSON : () => T[] +>toJSON : () => Array toSeq(): Seq.Set; >toSeq : () => Seq.Set @@ -1759,12 +1759,12 @@ declare namespace Immutable { // Sequence algorithms concat(...valuesOrCollections: Array | C>): Collection.Set; ->concat : (...valuesOrCollections: (C | Iterable)[]) => Set +>concat : (...valuesOrCollections: Array | C>) => Collection.Set >valuesOrCollections : (C | Iterable)[] >Collection : any map(mapper: (value: T, key: never, iter: this) => M, context?: any): Collection.Set; ->map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Set +>map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Collection.Set >mapper : (value: T, key: never, iter: this) => M >value : T >key : never @@ -1773,7 +1773,7 @@ declare namespace Immutable { >Collection : any flatMap(mapper: (value: T, key: never, iter: this) => Iterable, context?: any): Collection.Set; ->flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Set +>flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Collection.Set >mapper : (value: T, key: never, iter: this) => Iterable >value : T >key : never @@ -1782,7 +1782,7 @@ declare namespace Immutable { >Collection : any filter(predicate: (value: T, key: never, iter: this) => value is F, context?: any): Collection.Set; ->filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Collection.Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => value is F >value : T >key : never @@ -1791,7 +1791,7 @@ declare namespace Immutable { >Collection : any filter(predicate: (value: T, key: never, iter: this) => any, context?: any): this; ->filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } +>filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Collection.Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => any >value : T >key : never @@ -1831,12 +1831,12 @@ declare namespace Immutable { // Reading values get(key: K, notSetValue: NSV): V | NSV; ->get : { (key: K, notSetValue: NSV): NSV | V; (key: K): V | undefined; } +>get : { (key: K, notSetValue: NSV): V | NSV; (key: K): V | undefined; } >key : K >notSetValue : NSV get(key: K): V | undefined; ->get : { (key: K, notSetValue: NSV): NSV | V; (key: K): V | undefined; } +>get : { (key: K, notSetValue: NSV): V | NSV; (key: K): V | undefined; } >key : K has(key: K): boolean; @@ -1875,15 +1875,15 @@ declare namespace Immutable { // Conversion to JavaScript types toJS(): Array | { [key: string]: any }; ->toJS : () => any[] | { [key: string]: any; } +>toJS : () => Array | { [key: string]: any; } >key : string toJSON(): Array | { [key: string]: V }; ->toJSON : () => V[] | { [key: string]: V; } +>toJSON : () => Array | { [key: string]: V; } >key : string toArray(): Array; ->toArray : () => V[] +>toArray : () => Array toObject(): { [key: string]: V }; >toObject : () => { [key: string]: V; } @@ -1984,13 +1984,13 @@ declare namespace Immutable { >reverse : () => this sort(comparator?: (valueA: V, valueB: V) => number): this; ->sort : (comparator?: ((valueA: V, valueB: V) => number) | undefined) => this +>sort : (comparator?: (valueA: V, valueB: V) => number) => this >comparator : ((valueA: V, valueB: V) => number) | undefined >valueA : V >valueB : V sortBy(comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number): this; ->sortBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: ((valueA: C, valueB: C) => number) | undefined) => this +>sortBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number) => this >comparatorValueMapper : (value: V, key: K, iter: this) => C >value : V >key : K @@ -2019,7 +2019,7 @@ declare namespace Immutable { // Creating subsets slice(begin?: number, end?: number): this; ->slice : (begin?: number | undefined, end?: number | undefined) => this +>slice : (begin?: number, end?: number) => this >begin : number | undefined >end : number | undefined @@ -2079,15 +2079,15 @@ declare namespace Immutable { // Combination concat(...valuesOrCollections: Array): Collection; ->concat : (...valuesOrCollections: any[]) => Collection +>concat : (...valuesOrCollections: Array) => Collection >valuesOrCollections : any[] flatten(depth?: number): Collection; ->flatten : { (depth?: number | undefined): Collection; (shallow?: boolean | undefined): Collection; } +>flatten : { (depth?: number): Collection; (shallow?: boolean): Collection; } >depth : number | undefined flatten(shallow?: boolean): Collection; ->flatten : { (depth?: number | undefined): Collection; (shallow?: boolean | undefined): Collection; } +>flatten : { (depth?: number): Collection; (shallow?: boolean): Collection; } >shallow : boolean | undefined flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Collection; @@ -2100,7 +2100,7 @@ declare namespace Immutable { // Reducing a value reduce(reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; ->reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } +>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: R, value: V, key: K, iter: this) => R >reduction : R >value : V @@ -2110,15 +2110,15 @@ declare namespace Immutable { >context : any reduce(reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; ->reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } ->reducer : (reduction: R | V, value: V, key: K, iter: this) => R +>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } +>reducer : (reduction: V | R, value: V, key: K, iter: this) => R >reduction : R | V >value : V >key : K >iter : this reduceRight(reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; ->reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } +>reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: R, value: V, key: K, iter: this) => R >reduction : R >value : V @@ -2128,8 +2128,8 @@ declare namespace Immutable { >context : any reduceRight(reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; ->reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } ->reducer : (reduction: R | V, value: V, key: K, iter: this) => R +>reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } +>reducer : (reduction: V | R, value: V, key: K, iter: this) => R >reduction : R | V >value : V >key : K @@ -2152,7 +2152,7 @@ declare namespace Immutable { >context : any join(separator?: string): string; ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >separator : string | undefined isEmpty(): boolean; @@ -2179,7 +2179,7 @@ declare namespace Immutable { // Search for value find(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): V | undefined; ->find : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V | undefined) => V | undefined +>find : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => V | undefined >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K @@ -2188,7 +2188,7 @@ declare namespace Immutable { >notSetValue : V | undefined findLast(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): V | undefined; ->findLast : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V | undefined) => V | undefined +>findLast : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => V | undefined >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K @@ -2197,7 +2197,7 @@ declare namespace Immutable { >notSetValue : V | undefined findEntry(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): [K, V] | undefined; ->findEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V | undefined) => [K, V] | undefined +>findEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => [K, V] | undefined >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K @@ -2206,7 +2206,7 @@ declare namespace Immutable { >notSetValue : V | undefined findLastEntry(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): [K, V] | undefined; ->findLastEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V | undefined) => [K, V] | undefined +>findLastEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => [K, V] | undefined >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K @@ -2239,13 +2239,13 @@ declare namespace Immutable { >searchValue : V max(comparator?: (valueA: V, valueB: V) => number): V | undefined; ->max : (comparator?: ((valueA: V, valueB: V) => number) | undefined) => V | undefined +>max : (comparator?: (valueA: V, valueB: V) => number) => V | undefined >comparator : ((valueA: V, valueB: V) => number) | undefined >valueA : V >valueB : V maxBy(comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number): V | undefined; ->maxBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: ((valueA: C, valueB: C) => number) | undefined) => V | undefined +>maxBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number) => V | undefined >comparatorValueMapper : (value: V, key: K, iter: this) => C >value : V >key : K @@ -2255,13 +2255,13 @@ declare namespace Immutable { >valueB : C min(comparator?: (valueA: V, valueB: V) => number): V | undefined; ->min : (comparator?: ((valueA: V, valueB: V) => number) | undefined) => V | undefined +>min : (comparator?: (valueA: V, valueB: V) => number) => V | undefined >comparator : ((valueA: V, valueB: V) => number) | undefined >valueA : V >valueB : V minBy(comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number): V | undefined; ->minBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: ((valueA: C, valueB: C) => number) | undefined) => V | undefined +>minBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number) => V | undefined >comparatorValueMapper : (value: V, key: K, iter: this) => C >value : V >key : K diff --git a/testdata/baselines/reference/submodule/compiler/complexRecursiveCollections.types.diff b/testdata/baselines/reference/submodule/compiler/complexRecursiveCollections.types.diff index 8938d1d4c42..5836332bcbe 100644 --- a/testdata/baselines/reference/submodule/compiler/complexRecursiveCollections.types.diff +++ b/testdata/baselines/reference/submodule/compiler/complexRecursiveCollections.types.diff @@ -5,7 +5,7 @@ // these seem necessary to push it over the top for memory usage reduce(reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; ->reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R_1, value: V, key: K, iter: this) => R_1): R_1; } -+>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } ++>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: R, value: V, key: K, iter: this) => R >reduction : R >value : V @@ -14,25 +14,11 @@ reduce(reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; ->reduce : { (reducer: (reduction: R_1, value: V, key: K, iter: this) => R_1, initialReduction: R_1, context?: any): R_1; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } -->reducer : (reduction: V | R, value: V, key: K, iter: this) => R -+>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } -+>reducer : (reduction: R | V, value: V, key: K, iter: this) => R ++>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } + >reducer : (reduction: V | R, value: V, key: K, iter: this) => R >reduction : R | V >value : V - >key : K -@@= skipped -55, +55 lines =@@ - >Immutable : typeof Immutable - - export function fromJS(jsValue: any, reviver?: (key: string | number, sequence: Collection.Keyed | Collection.Indexed, path?: Array) => any): any; -->fromJS : (jsValue: any, reviver?: (key: string | number, sequence: Collection.Keyed | Collection.Indexed, path?: Array) => any) => any -+>fromJS : (jsValue: any, reviver?: ((key: string | number, sequence: Collection.Indexed | Collection.Keyed, path?: (string | number)[] | undefined) => any) | undefined) => any - >jsValue : any -->reviver : ((key: string | number, sequence: Collection.Keyed | Collection.Indexed, path?: Array) => any) | undefined -+>reviver : ((key: string | number, sequence: Collection.Indexed | Collection.Keyed, path?: (string | number)[] | undefined) => any) | undefined - >key : string | number - >sequence : Collection.Indexed | Collection.Keyed - >Collection : any -@@= skipped -37, +37 lines =@@ +@@= skipped -92, +92 lines =@@ >Collection : any export function isAssociative(maybeAssociative: any): maybeAssociative is Collection.Keyed | Collection.Indexed; @@ -41,239 +27,12 @@ >maybeAssociative : any >Collection : any >Collection : any -@@= skipped -29, +29 lines =@@ - >maybeList : any - - function of(...values: Array): List; -->of : (...values: Array) => List -+>of : (...values: T[]) => List - >values : T[] - } - export function List(): List; -@@= skipped -39, +39 lines =@@ - >clear : () => List - - push(...values: Array): List; -->push : (...values: Array) => List -+>push : (...values: T[]) => List - >values : T[] - - pop(): List; - >pop : () => List - - unshift(...values: Array): List; -->unshift : (...values: Array) => List -+>unshift : (...values: T[]) => List - >values : T[] - - shift(): List; -@@= skipped -32, +32 lines =@@ - >value : this - - merge(...collections: Array | Array>): this; -->merge : (...collections: Array | Array>) => this -+>merge : (...collections: (T[] | Collection.Indexed)[]) => this - >collections : (T[] | Collection.Indexed)[] - >Collection : any - - mergeWith(merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>): this; -->mergeWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>) => this -+>mergeWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: (T[] | Collection.Indexed)[]) => this - >merger : (oldVal: T, newVal: T, key: number) => T - >oldVal : T - >newVal : T -@@= skipped -14, +14 lines =@@ - >Collection : any - - mergeDeep(...collections: Array | Array>): this; -->mergeDeep : (...collections: Array | Array>) => this -+>mergeDeep : (...collections: (T[] | Collection.Indexed)[]) => this - >collections : (T[] | Collection.Indexed)[] - >Collection : any - - mergeDeepWith(merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>): this; -->mergeDeepWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>) => this -+>mergeDeepWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: (T[] | Collection.Indexed)[]) => this - >merger : (oldVal: T, newVal: T, key: number) => T - >oldVal : T - >newVal : T -@@= skipped -45, +45 lines =@@ - >value : any - - mergeIn(keyPath: Iterable, ...collections: Array): this; -->mergeIn : (keyPath: Iterable, ...collections: Array) => this -+>mergeIn : (keyPath: Iterable, ...collections: any[]) => this - >keyPath : Iterable - >collections : any[] - - mergeDeepIn(keyPath: Iterable, ...collections: Array): this; -->mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this -+>mergeDeepIn : (keyPath: Iterable, ...collections: any[]) => this - >keyPath : Iterable - >collections : any[] - -@@= skipped -23, +23 lines =@@ - - // Sequence algorithms - concat(...valuesOrCollections: Array | C>): List; -->concat : (...valuesOrCollections: Array | C>) => List -+>concat : (...valuesOrCollections: (C | Iterable)[]) => List - >valuesOrCollections : (C | Iterable)[] - - map(mapper: (value: T, key: number, iter: this) => M, context?: any): List; -@@= skipped -43, +43 lines =@@ - >maybeMap : any - - function of(...keyValues: Array): Map; -->of : (...keyValues: Array) => Map -+>of : (...keyValues: any[]) => Map - >keyValues : any[] - } - export function Map(collection: Iterable<[K, V]>): Map; -@@= skipped -69, +69 lines =@@ - >value : this - - merge(...collections: Array | {[key: string]: V}>): this; -->merge : (...collections: Array | { [key: string]: V; }>) => this -+>merge : (...collections: (Collection | { [key: string]: V; })[]) => this - >collections : (Collection | { [key: string]: V; })[] - >key : string - - mergeWith(merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | {[key: string]: V}>): this; -->mergeWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | { [key: string]: V; }>) => this -+>mergeWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: (Collection | { [key: string]: V; })[]) => this - >merger : (oldVal: V, newVal: V, key: K) => V - >oldVal : V - >newVal : V -@@= skipped -14, +14 lines =@@ - >key : string - - mergeDeep(...collections: Array | {[key: string]: V}>): this; -->mergeDeep : (...collections: Array | { [key: string]: V; }>) => this -+>mergeDeep : (...collections: (Collection | { [key: string]: V; })[]) => this - >collections : (Collection | { [key: string]: V; })[] - >key : string - - mergeDeepWith(merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | {[key: string]: V}>): this; -->mergeDeepWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | { [key: string]: V; }>) => this -+>mergeDeepWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: (Collection | { [key: string]: V; })[]) => this - >merger : (oldVal: V, newVal: V, key: K) => V - >oldVal : V - >newVal : V -@@= skipped -41, +41 lines =@@ - >value : any - - mergeIn(keyPath: Iterable, ...collections: Array): this; -->mergeIn : (keyPath: Iterable, ...collections: Array) => this -+>mergeIn : (keyPath: Iterable, ...collections: any[]) => this - >keyPath : Iterable - >collections : any[] - - mergeDeepIn(keyPath: Iterable, ...collections: Array): this; -->mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this -+>mergeDeepIn : (keyPath: Iterable, ...collections: any[]) => this - >keyPath : Iterable - >collections : any[] - -@@= skipped -23, +23 lines =@@ - - // Sequence algorithms - concat(...collections: Array>): Map; -->concat : { (...collections: Array>): Map; (...collections: Array<{ [key: string]: C; }>): Map; } -+>concat : { (...collections: Iterable<[KC, VC]>[]): Map; (...collections: { [key: string]: C; }[]): Map; } - >collections : Iterable<[KC, VC]>[] - - concat(...collections: Array<{[key: string]: C}>): Map; -->concat : { (...collections: Array>): Map; (...collections: Array<{ [key: string]: C; }>): Map; } -+>concat : { (...collections: Iterable<[KC, VC]>[]): Map; (...collections: { [key: string]: C; }[]): Map; } - >collections : { [key: string]: C; }[] - >key : string - -@@= skipped -85, +85 lines =@@ - export interface OrderedMap extends Map { - // Sequence algorithms - concat(...collections: Array>): OrderedMap; -->concat : { (...collections: Array>): OrderedMap; (...collections: Array<{ [key: string]: C; }>): OrderedMap; } -+>concat : { (...collections: Iterable<[KC, VC]>[]): OrderedMap; (...collections: { [key: string]: C; }[]): OrderedMap; } - >collections : Iterable<[KC, VC]>[] - - concat(...collections: Array<{[key: string]: C}>): OrderedMap; -->concat : { (...collections: Array>): OrderedMap; (...collections: Array<{ [key: string]: C; }>): OrderedMap; } -+>concat : { (...collections: Iterable<[KC, VC]>[]): OrderedMap; (...collections: { [key: string]: C; }[]): OrderedMap; } - >collections : { [key: string]: C; }[] - >key : string - -@@= skipped -64, +64 lines =@@ - >maybeSet : any - - function of(...values: Array): Set; -->of : (...values: Array) => Set -+>of : (...values: T[]) => Set - >values : T[] - - function fromKeys(iter: Collection): Set; -@@= skipped -50, +50 lines =@@ - >clear : () => this - - union(...collections: Array | Array>): this; -->union : (...collections: Array | Array>) => this -+>union : (...collections: (T[] | Collection)[]) => this - >collections : (T[] | Collection)[] - - merge(...collections: Array | Array>): this; -->merge : (...collections: Array | Array>) => this -+>merge : (...collections: (T[] | Collection)[]) => this - >collections : (T[] | Collection)[] - - intersect(...collections: Array | Array>): this; -->intersect : (...collections: Array | Array>) => this -+>intersect : (...collections: (T[] | Collection)[]) => this - >collections : (T[] | Collection)[] - - subtract(...collections: Array | Array>): this; -->subtract : (...collections: Array | Array>) => this -+>subtract : (...collections: (T[] | Collection)[]) => this - >collections : (T[] | Collection)[] - - // Transient changes -@@= skipped -29, +29 lines =@@ - - // Sequence algorithms - concat(...valuesOrCollections: Array | C>): Set; -->concat : (...valuesOrCollections: Array | C>) => Set -+>concat : (...valuesOrCollections: (C | Iterable)[]) => Set - >valuesOrCollections : (C | Iterable)[] - - map(mapper: (value: T, key: never, iter: this) => M, context?: any): Set; -@@= skipped -43, +43 lines =@@ - >maybeOrderedSet : any - - function of(...values: Array): OrderedSet; -->of : (...values: Array) => OrderedSet -+>of : (...values: T[]) => OrderedSet - >values : T[] - - function fromKeys(iter: Collection): OrderedSet; -@@= skipped -25, +25 lines =@@ - export interface OrderedSet extends Set { - // Sequence algorithms - concat(...valuesOrCollections: Array | C>): OrderedSet; -->concat : (...valuesOrCollections: Array | C>) => OrderedSet -+>concat : (...valuesOrCollections: (C | Iterable)[]) => OrderedSet - >valuesOrCollections : (C | Iterable)[] - - map(mapper: (value: T, key: never, iter: this) => M, context?: any): OrderedSet; -@@= skipped -36, +36 lines =@@ - >context : any - - zip(...collections: Array>): OrderedSet; -->zip : (...collections: Array>) => OrderedSet -+>zip : (...collections: Collection[]) => OrderedSet +@@= skipped -708, +708 lines =@@ >collections : Collection[] zipWith(zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; ->zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U_1, thirdValue: V) => Z_1, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: Array) => Z_1, ...collections: Array>): OrderedSet; } -+>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: any[]) => Z, ...collections: Collection[]): OrderedSet; } ++>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; } >zipper : (value: T, otherValue: U) => Z >value : T >otherValue : U @@ -281,75 +40,20 @@ zipWith(zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; ->zipWith : { (zipper: (value: T, otherValue: U_1) => Z_1, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: Array) => Z_1, ...collections: Array>): OrderedSet; } -+>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: any[]) => Z, ...collections: Collection[]): OrderedSet; } ++>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; } >zipper : (value: T, otherValue: U, thirdValue: V) => Z >value : T >otherValue : U -@@= skipped -20, +20 lines =@@ +@@= skipped -16, +16 lines =@@ >thirdCollection : Collection zipWith(zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; ->zipWith : { (zipper: (value: T, otherValue: U) => Z_1, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z_1, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; } -->zipper : (...any: Array) => Z -+>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: any[]) => Z, ...collections: Collection[]): OrderedSet; } -+>zipper : (...any: any[]) => Z ++>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; } + >zipper : (...any: Array) => Z >any : any[] >collections : Collection[] - } -@@= skipped -13, +13 lines =@@ - >maybeStack : any - - function of(...values: Array): Stack; -->of : (...values: Array) => Stack -+>of : (...values: T[]) => Stack - >values : T[] - } - export function Stack(): Stack; -@@= skipped -25, +25 lines =@@ - >clear : () => Stack - - unshift(...values: Array): Stack; -->unshift : (...values: Array) => Stack -+>unshift : (...values: T[]) => Stack - >values : T[] - - unshiftAll(iter: Iterable): Stack; -@@= skipped -11, +11 lines =@@ - >shift : () => Stack - - push(...values: Array): Stack; -->push : (...values: Array) => Stack -+>push : (...values: T[]) => Stack - >values : T[] - - pushAll(iter: Iterable): Stack; -@@= skipped -24, +24 lines =@@ - - // Sequence algorithms - concat(...valuesOrCollections: Array | C>): Stack; -->concat : (...valuesOrCollections: Array | C>) => Stack -+>concat : (...valuesOrCollections: (C | Iterable)[]) => Stack - >valuesOrCollections : (C | Iterable)[] - - map(mapper: (value: T, key: number, iter: this) => M, context?: any): Stack; -@@= skipped -36, +36 lines =@@ - >context : any - } - export function Range(start?: number, end?: number, step?: number): Seq.Indexed; -->Range : (start?: number, end?: number, step?: number) => Seq.Indexed -+>Range : (start?: number | undefined, end?: number | undefined, step?: number | undefined) => Seq.Indexed - >start : number | undefined - >end : number | undefined - >step : number | undefined - >Seq : any - - export function Repeat(value: T, times?: number): Seq.Indexed; -->Repeat : (value: T, times?: number) => Seq.Indexed -+>Repeat : (value: T, times?: number | undefined) => Seq.Indexed - >value : T - >times : number | undefined - >Seq : any -@@= skipped -16, +16 lines =@@ +@@= skipped -125, +125 lines =@@ >Record : typeof Record export function isRecord(maybeRecord: any): maybeRecord is Record.Instance; @@ -358,50 +62,7 @@ >maybeRecord : any >Record : any -@@= skipped -58, +58 lines =@@ - >value : T[K] - - merge(...collections: Array | Iterable<[string, any]>>): this; -->merge : (...collections: Array | Iterable<[string, any]>>) => this -+>merge : (...collections: (Iterable<[string, any]> | Partial)[]) => this - >collections : (Iterable<[string, any]> | Partial)[] - - mergeDeep(...collections: Array | Iterable<[string, any]>>): this; -->mergeDeep : (...collections: Array | Iterable<[string, any]>>) => this -+>mergeDeep : (...collections: (Iterable<[string, any]> | Partial)[]) => this - >collections : (Iterable<[string, any]> | Partial)[] - - mergeWith(merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: Array | Iterable<[string, any]>>): this; -->mergeWith : (merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: Array | Iterable<[string, any]>>) => this -+>mergeWith : (merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: (Iterable<[string, any]> | Partial)[]) => this - >merger : (oldVal: any, newVal: any, key: keyof T) => any - >oldVal : any - >newVal : any -@@= skipped -16, +16 lines =@@ - >collections : (Iterable<[string, any]> | Partial)[] - - mergeDeepWith(merger: (oldVal: any, newVal: any, key: any) => any, ...collections: Array | Iterable<[string, any]>>): this; -->mergeDeepWith : (merger: (oldVal: any, newVal: any, key: any) => any, ...collections: Array | Iterable<[string, any]>>) => this -+>mergeDeepWith : (merger: (oldVal: any, newVal: any, key: any) => any, ...collections: (Iterable<[string, any]> | Partial)[]) => this - >merger : (oldVal: any, newVal: any, key: any) => any - >oldVal : any - >newVal : any -@@= skipped -31, +31 lines =@@ - >value : any - - mergeIn(keyPath: Iterable, ...collections: Array): this; -->mergeIn : (keyPath: Iterable, ...collections: Array) => this -+>mergeIn : (keyPath: Iterable, ...collections: any[]) => this - >keyPath : Iterable - >collections : any[] - - mergeDeepIn(keyPath: Iterable, ...collections: Array): this; -->mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this -+>mergeDeepIn : (keyPath: Iterable, ...collections: any[]) => this - >keyPath : Iterable - >collections : any[] - -@@= skipped -61, +61 lines =@@ +@@= skipped -166, +166 lines =@@ >Seq : typeof Seq function isSeq(maybeSeq: any): maybeSeq is Seq.Indexed | Seq.Keyed; @@ -410,230 +71,29 @@ >maybeSeq : any >Seq : any >Seq : any - - function of(...values: Array): Seq.Indexed; -->of : (...values: Array) => Seq.Indexed -+>of : (...values: T[]) => Indexed - >values : T[] - >Seq : any +@@= skipped -12, +12 lines =@@ export namespace Keyed {} export function Keyed(collection: Iterable<[K, V]>): Seq.Keyed; ->Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V_1; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } -+>Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } ++>Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } >collection : Iterable<[K, V]> >Seq : any export function Keyed(obj: {[key: string]: V}): Seq.Keyed; ->Keyed : { (collection: Iterable<[K, V_1]>): Seq.Keyed; (obj: { [key: string]: V; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } -+>Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } ++>Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } >obj : { [key: string]: V; } >key : string >Seq : any export function Keyed(): Seq.Keyed; ->Keyed : { (collection: Iterable<[K_1, V_1]>): Seq.Keyed; (obj: { [key: string]: V_1; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } -+>Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } ++>Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } >Seq : any export function Keyed(): Seq.Keyed; -->Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V; }): Seq.Keyed; (): Seq.Keyed; (): Seq.Keyed; } -+>Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } - >Seq : any - - export interface Keyed extends Seq, Collection.Keyed { -@@= skipped -44, +44 lines =@@ - >toSeq : () => this - - concat(...collections: Array>): Seq.Keyed; -->concat : { (...collections: Array>): Seq.Keyed; (...collections: Array<{ [key: string]: C; }>): Seq.Keyed; } -+>concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } - >collections : Iterable<[KC, VC]>[] - >Seq : any - - concat(...collections: Array<{[key: string]: C}>): Seq.Keyed; -->concat : { (...collections: Array>): Seq.Keyed; (...collections: Array<{ [key: string]: C; }>): Seq.Keyed; } -+>concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } - >collections : { [key: string]: C; }[] - >key : string - >Seq : any - - map(mapper: (value: V, key: K, iter: this) => M, context?: any): Seq.Keyed; -->map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Seq.Keyed -+>map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Keyed - >mapper : (value: V, key: K, iter: this) => M - >value : V - >key : K -@@= skipped -20, +20 lines =@@ - >Seq : any - - mapKeys(mapper: (key: K, value: V, iter: this) => M, context?: any): Seq.Keyed; -->mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Seq.Keyed -+>mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Keyed - >mapper : (key: K, value: V, iter: this) => M - >key : K - >value : V -@@= skipped -9, +9 lines =@@ - >Seq : any - - mapEntries(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any): Seq.Keyed; -->mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Seq.Keyed -+>mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Keyed - >mapper : (entry: [K, V], index: number, iter: this) => [KM, VM] - >entry : [K, V] - >index : number -@@= skipped -9, +9 lines =@@ - >Seq : any - - flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Seq.Keyed; -->flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Seq.Keyed -+>flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Keyed - >mapper : (value: V, key: K, iter: this) => Iterable - >value : V - >key : K -@@= skipped -9, +9 lines =@@ - >Seq : any - - filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq.Keyed; -->filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq.Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } - >predicate : (value: V, key: K, iter: this) => value is F - >value : V - >key : K -@@= skipped -9, +9 lines =@@ - >Seq : any - - filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; -->filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq.Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } - >predicate : (value: V, key: K, iter: this) => any - >value : V - >key : K -@@= skipped -11, +11 lines =@@ - >Indexed : typeof Indexed - - function of(...values: Array): Seq.Indexed; -->of : (...values: Array) => Seq.Indexed -+>of : (...values: T[]) => Indexed - >values : T[] - >Seq : any - } -@@= skipped -21, +21 lines =@@ - >Collection : typeof Collection - - toJS(): Array; -->toJS : () => Array -+>toJS : () => any[] - - toJSON(): Array; -->toJSON : () => Array -+>toJSON : () => T[] - - toSeq(): this; - >toSeq : () => this - - concat(...valuesOrCollections: Array | C>): Seq.Indexed; -->concat : (...valuesOrCollections: Array | C>) => Seq.Indexed -+>concat : (...valuesOrCollections: (C | Iterable)[]) => Indexed - >valuesOrCollections : (C | Iterable)[] - >Seq : any - - map(mapper: (value: T, key: number, iter: this) => M, context?: any): Seq.Indexed; -->map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Seq.Indexed -+>map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Indexed - >mapper : (value: T, key: number, iter: this) => M - >value : T - >key : number -@@= skipped -23, +23 lines =@@ - >Seq : any - - flatMap(mapper: (value: T, key: number, iter: this) => Iterable, context?: any): Seq.Indexed; -->flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Seq.Indexed -+>flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Indexed - >mapper : (value: T, key: number, iter: this) => Iterable - >value : T - >key : number -@@= skipped -9, +9 lines =@@ - >Seq : any - - filter(predicate: (value: T, index: number, iter: this) => value is F, context?: any): Seq.Indexed; -->filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Seq.Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } - >predicate : (value: T, index: number, iter: this) => value is F - >value : T - >index : number -@@= skipped -9, +9 lines =@@ - >Seq : any - - filter(predicate: (value: T, index: number, iter: this) => any, context?: any): this; -->filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Seq.Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } - >predicate : (value: T, index: number, iter: this) => any - >value : T - >index : number -@@= skipped -11, +11 lines =@@ - >Set : typeof Set - - function of(...values: Array): Seq.Set; -->of : (...values: Array) => Seq.Set -+>of : (...values: T[]) => Set - >values : T[] - >Seq : any - } -@@= skipped -21, +21 lines =@@ - >Collection : typeof Collection - - toJS(): Array; -->toJS : () => Array -+>toJS : () => any[] - - toJSON(): Array; -->toJSON : () => Array -+>toJSON : () => T[] - - toSeq(): this; - >toSeq : () => this - - concat(...valuesOrCollections: Array | C>): Seq.Set; -->concat : (...valuesOrCollections: Array | C>) => Seq.Set -+>concat : (...valuesOrCollections: (C | Iterable)[]) => Set - >valuesOrCollections : (C | Iterable)[] - >Seq : any - - map(mapper: (value: T, key: never, iter: this) => M, context?: any): Seq.Set; -->map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Seq.Set -+>map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Set - >mapper : (value: T, key: never, iter: this) => M - >value : T - >key : never -@@= skipped -23, +23 lines =@@ - >Seq : any - - flatMap(mapper: (value: T, key: never, iter: this) => Iterable, context?: any): Seq.Set; -->flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Seq.Set -+>flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Set - >mapper : (value: T, key: never, iter: this) => Iterable - >value : T - >key : never -@@= skipped -9, +9 lines =@@ - >Seq : any - - filter(predicate: (value: T, key: never, iter: this) => value is F, context?: any): Seq.Set; -->filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Seq.Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } - >predicate : (value: T, key: never, iter: this) => value is F - >value : T - >key : never -@@= skipped -9, +9 lines =@@ - >Seq : any - - filter(predicate: (value: T, key: never, iter: this) => any, context?: any): this; -->filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Seq.Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } - >predicate : (value: T, key: never, iter: this) => any - >value : T - >key : never -@@= skipped -89, +89 lines =@@ +@@= skipped -323, +323 lines =@@ >Collection : typeof Collection function isKeyed(maybeKeyed: any): maybeKeyed is Collection.Keyed; @@ -659,147 +119,31 @@ export namespace Keyed {} export function Keyed(collection: Iterable<[K, V]>): Collection.Keyed; ->Keyed : { (collection: Iterable<[K, V]>): Collection.Keyed; (obj: { [key: string]: V_1; }): Collection.Keyed; } -+>Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; } ++>Keyed : { (collection: Iterable<[K, V]>): Collection.Keyed; (obj: { [key: string]: V; }): Collection.Keyed; } >collection : Iterable<[K, V]> >Collection : any export function Keyed(obj: {[key: string]: V}): Collection.Keyed; ->Keyed : { (collection: Iterable<[K, V_1]>): Collection.Keyed; (obj: { [key: string]: V; }): Collection.Keyed; } -+>Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; } ++>Keyed : { (collection: Iterable<[K, V]>): Collection.Keyed; (obj: { [key: string]: V; }): Collection.Keyed; } >obj : { [key: string]: V; } >key : string >Collection : any -@@= skipped -27, +27 lines =@@ - >flip : () => this - - concat(...collections: Array>): Collection.Keyed; -->concat : { (...collections: Array>): Collection.Keyed; (...collections: Array<{ [key: string]: C; }>): Collection.Keyed; } -+>concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } - >collections : Iterable<[KC, VC]>[] - >Collection : any - - concat(...collections: Array<{[key: string]: C}>): Collection.Keyed; -->concat : { (...collections: Array>): Collection.Keyed; (...collections: Array<{ [key: string]: C; }>): Collection.Keyed; } -+>concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } - >collections : { [key: string]: C; }[] - >key : string - >Collection : any - - map(mapper: (value: V, key: K, iter: this) => M, context?: any): Collection.Keyed; -->map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Collection.Keyed -+>map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Keyed - >mapper : (value: V, key: K, iter: this) => M - >value : V - >key : K -@@= skipped -20, +20 lines =@@ - >Collection : any - - mapKeys(mapper: (key: K, value: V, iter: this) => M, context?: any): Collection.Keyed; -->mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Collection.Keyed -+>mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Keyed - >mapper : (key: K, value: V, iter: this) => M - >key : K - >value : V -@@= skipped -9, +9 lines =@@ - >Collection : any - - mapEntries(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any): Collection.Keyed; -->mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Collection.Keyed -+>mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Keyed - >mapper : (entry: [K, V], index: number, iter: this) => [KM, VM] - >entry : [K, V] - >index : number -@@= skipped -9, +9 lines =@@ - >Collection : any - - flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Collection.Keyed; -->flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Collection.Keyed -+>flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Keyed - >mapper : (value: V, key: K, iter: this) => Iterable - >value : V - >key : K -@@= skipped -9, +9 lines =@@ - >Collection : any - - filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection.Keyed; -->filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection.Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } - >predicate : (value: V, key: K, iter: this) => value is F - >value : V - >key : K -@@= skipped -9, +9 lines =@@ - >Collection : any - - filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; -->filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection.Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } - >predicate : (value: V, key: K, iter: this) => any - >value : V - >key : K -@@= skipped -15, +15 lines =@@ - } - export namespace Indexed {} - export function Indexed(collection: Iterable): Collection.Indexed; -->Indexed : (collection: Iterable) => Collection.Indexed -+>Indexed : (collection: Iterable) => Indexed - >collection : Iterable - >Collection : any - - export interface Indexed extends Collection { - toJS(): Array; -->toJS : () => Array -+>toJS : () => any[] - - toJSON(): Array; -->toJSON : () => Array -+>toJSON : () => T[] - - // Reading values - get(index: number, notSetValue: NSV): T | NSV; -->get : { (index: number, notSetValue: NSV): T | NSV; (index: number): T | undefined; } -+>get : { (index: number, notSetValue: NSV): NSV | T; (index: number): T | undefined; } - >index : number - >notSetValue : NSV - - get(index: number): T | undefined; -->get : { (index: number, notSetValue: NSV): T | NSV; (index: number): T | undefined; } -+>get : { (index: number, notSetValue: NSV): NSV | T; (index: number): T | undefined; } - >index : number - - // Conversion to Seq -@@= skipped -36, +36 lines =@@ - >separator : T - - interleave(...collections: Array>): this; -->interleave : (...collections: Array>) => this -+>interleave : (...collections: Collection[]) => this - >collections : Collection[] - - splice(index: number, removeNum: number, ...values: Array): this; -->splice : (index: number, removeNum: number, ...values: Array) => this -+>splice : (index: number, removeNum: number, ...values: T[]) => this - >index : number - >removeNum : number - >values : T[] - - zip(...collections: Array>): Collection.Indexed; -->zip : (...collections: Array>) => Collection.Indexed -+>zip : (...collections: Collection[]) => Indexed - >collections : Collection[] +@@= skipped -149, +149 lines =@@ >Collection : any zipWith(zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; ->zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; (zipper: (value: T, otherValue: U_1, thirdValue: V) => Z_1, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; (zipper: (...any: Array) => Z_1, ...collections: Array>): Collection.Indexed; } -+>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Indexed; (zipper: (...any: any[]) => Z, ...collections: Collection[]): Indexed; } ++>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; (zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; } >zipper : (value: T, otherValue: U) => Z >value : T >otherValue : U -@@= skipped -23, +23 lines =@@ +@@= skipped -8, +8 lines =@@ >Collection : any zipWith(zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; ->zipWith : { (zipper: (value: T, otherValue: U_1) => Z_1, otherCollection: Collection): Collection.Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; (zipper: (...any: Array) => Z_1, ...collections: Array>): Collection.Indexed; } -+>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Indexed; (zipper: (...any: any[]) => Z, ...collections: Collection[]): Indexed; } ++>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; (zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; } >zipper : (value: T, otherValue: U, thirdValue: V) => Z >value : T >otherValue : U @@ -808,200 +152,16 @@ zipWith(zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; ->zipWith : { (zipper: (value: T, otherValue: U) => Z_1, otherCollection: Collection): Collection.Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z_1, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; (zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; } -->zipper : (...any: Array) => Z -+>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Indexed; (zipper: (...any: any[]) => Z, ...collections: Collection[]): Indexed; } -+>zipper : (...any: any[]) => Z ++>zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; (zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; } + >zipper : (...any: Array) => Z >any : any[] >collections : Collection[] - >Collection : any -@@= skipped -33, +33 lines =@@ - - // Sequence algorithms - concat(...valuesOrCollections: Array | C>): Collection.Indexed; -->concat : (...valuesOrCollections: Array | C>) => Collection.Indexed -+>concat : (...valuesOrCollections: (C | Iterable)[]) => Indexed - >valuesOrCollections : (C | Iterable)[] - >Collection : any - - map(mapper: (value: T, key: number, iter: this) => M, context?: any): Collection.Indexed; -->map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Collection.Indexed -+>map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Indexed - >mapper : (value: T, key: number, iter: this) => M - >value : T - >key : number -@@= skipped -14, +14 lines =@@ - >Collection : any - - flatMap(mapper: (value: T, key: number, iter: this) => Iterable, context?: any): Collection.Indexed; -->flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Collection.Indexed -+>flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Indexed - >mapper : (value: T, key: number, iter: this) => Iterable - >value : T - >key : number -@@= skipped -9, +9 lines =@@ - >Collection : any - - filter(predicate: (value: T, index: number, iter: this) => value is F, context?: any): Collection.Indexed; -->filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Collection.Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } - >predicate : (value: T, index: number, iter: this) => value is F - >value : T - >index : number -@@= skipped -9, +9 lines =@@ - >Collection : any - - filter(predicate: (value: T, index: number, iter: this) => any, context?: any): this; -->filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Collection.Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } - >predicate : (value: T, index: number, iter: this) => any - >value : T - >index : number -@@= skipped -15, +15 lines =@@ - } - export namespace Set {} - export function Set(collection: Iterable): Collection.Set; -->Set : (collection: Iterable) => Collection.Set -+>Set : (collection: Iterable) => Set - >collection : Iterable - >Collection : any - - export interface Set extends Collection { - toJS(): Array; -->toJS : () => Array -+>toJS : () => any[] - - toJSON(): Array; -->toJSON : () => Array -+>toJSON : () => T[] - - toSeq(): Seq.Set; - >toSeq : () => Seq.Set -@@= skipped -17, +17 lines =@@ - - // Sequence algorithms - concat(...valuesOrCollections: Array | C>): Collection.Set; -->concat : (...valuesOrCollections: Array | C>) => Collection.Set -+>concat : (...valuesOrCollections: (C | Iterable)[]) => Set - >valuesOrCollections : (C | Iterable)[] - >Collection : any - - map(mapper: (value: T, key: never, iter: this) => M, context?: any): Collection.Set; -->map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Collection.Set -+>map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Set - >mapper : (value: T, key: never, iter: this) => M - >value : T - >key : never -@@= skipped -14, +14 lines =@@ - >Collection : any - - flatMap(mapper: (value: T, key: never, iter: this) => Iterable, context?: any): Collection.Set; -->flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Collection.Set -+>flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Set - >mapper : (value: T, key: never, iter: this) => Iterable - >value : T - >key : never -@@= skipped -9, +9 lines =@@ - >Collection : any - - filter(predicate: (value: T, key: never, iter: this) => value is F, context?: any): Collection.Set; -->filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Collection.Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } - >predicate : (value: T, key: never, iter: this) => value is F - >value : T - >key : never -@@= skipped -9, +9 lines =@@ - >Collection : any - - filter(predicate: (value: T, key: never, iter: this) => any, context?: any): this; -->filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Collection.Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } -+>filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } - >predicate : (value: T, key: never, iter: this) => any - >value : T - >key : never -@@= skipped -40, +40 lines =@@ - - // Reading values - get(key: K, notSetValue: NSV): V | NSV; -->get : { (key: K, notSetValue: NSV): V | NSV; (key: K): V | undefined; } -+>get : { (key: K, notSetValue: NSV): NSV | V; (key: K): V | undefined; } - >key : K - >notSetValue : NSV - - get(key: K): V | undefined; -->get : { (key: K, notSetValue: NSV): V | NSV; (key: K): V | undefined; } -+>get : { (key: K, notSetValue: NSV): NSV | V; (key: K): V | undefined; } - >key : K - - has(key: K): boolean; -@@= skipped -44, +44 lines =@@ - - // Conversion to JavaScript types - toJS(): Array | { [key: string]: any }; -->toJS : () => Array | { [key: string]: any; } -+>toJS : () => any[] | { [key: string]: any; } - >key : string - - toJSON(): Array | { [key: string]: V }; -->toJSON : () => Array | { [key: string]: V; } -+>toJSON : () => V[] | { [key: string]: V; } - >key : string - - toArray(): Array; -->toArray : () => Array -+>toArray : () => V[] - - toObject(): { [key: string]: V }; - >toObject : () => { [key: string]: V; } -@@= skipped -109, +109 lines =@@ - >reverse : () => this - - sort(comparator?: (valueA: V, valueB: V) => number): this; -->sort : (comparator?: (valueA: V, valueB: V) => number) => this -+>sort : (comparator?: ((valueA: V, valueB: V) => number) | undefined) => this - >comparator : ((valueA: V, valueB: V) => number) | undefined - >valueA : V - >valueB : V - - sortBy(comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number): this; -->sortBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number) => this -+>sortBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: ((valueA: C, valueB: C) => number) | undefined) => this - >comparatorValueMapper : (value: V, key: K, iter: this) => C - >value : V - >key : K -@@= skipped -35, +35 lines =@@ - - // Creating subsets - slice(begin?: number, end?: number): this; -->slice : (begin?: number, end?: number) => this -+>slice : (begin?: number | undefined, end?: number | undefined) => this - >begin : number | undefined - >end : number | undefined - -@@= skipped -60, +60 lines =@@ - - // Combination - concat(...valuesOrCollections: Array): Collection; -->concat : (...valuesOrCollections: Array) => Collection -+>concat : (...valuesOrCollections: any[]) => Collection - >valuesOrCollections : any[] - - flatten(depth?: number): Collection; -->flatten : { (depth?: number): Collection; (shallow?: boolean): Collection; } -+>flatten : { (depth?: number | undefined): Collection; (shallow?: boolean | undefined): Collection; } - >depth : number | undefined - - flatten(shallow?: boolean): Collection; -->flatten : { (depth?: number): Collection; (shallow?: boolean): Collection; } -+>flatten : { (depth?: number | undefined): Collection; (shallow?: boolean | undefined): Collection; } - >shallow : boolean | undefined - - flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Collection; -@@= skipped -21, +21 lines =@@ +@@= skipped -438, +438 lines =@@ // Reducing a value reduce(reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; ->reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R_1, value: V, key: K, iter: this) => R_1): R_1; } -+>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } ++>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: R, value: V, key: K, iter: this) => R >reduction : R >value : V @@ -1010,105 +170,25 @@ reduce(reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; ->reduce : { (reducer: (reduction: R_1, value: V, key: K, iter: this) => R_1, initialReduction: R_1, context?: any): R_1; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } -->reducer : (reduction: V | R, value: V, key: K, iter: this) => R -+>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } -+>reducer : (reduction: R | V, value: V, key: K, iter: this) => R ++>reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } + >reducer : (reduction: V | R, value: V, key: K, iter: this) => R >reduction : R | V >value : V - >key : K +@@= skipped -8, +8 lines =@@ >iter : this reduceRight(reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; ->reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R_1, value: V, key: K, iter: this) => R_1): R_1; } -+>reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } ++>reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: R, value: V, key: K, iter: this) => R >reduction : R >value : V -@@= skipped -18, +18 lines =@@ +@@= skipped -10, +10 lines =@@ >context : any reduceRight(reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; ->reduceRight : { (reducer: (reduction: R_1, value: V, key: K, iter: this) => R_1, initialReduction: R_1, context?: any): R_1; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } -->reducer : (reduction: V | R, value: V, key: K, iter: this) => R -+>reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: R | V, value: V, key: K, iter: this) => R): R; } -+>reducer : (reduction: R | V, value: V, key: K, iter: this) => R ++>reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } + >reducer : (reduction: V | R, value: V, key: K, iter: this) => R >reduction : R | V - >value : V - >key : K -@@= skipped -24, +24 lines =@@ - >context : any - - join(separator?: string): string; -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >separator : string | undefined - - isEmpty(): boolean; -@@= skipped -27, +27 lines =@@ - - // Search for value - find(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): V | undefined; -->find : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => V | undefined -+>find : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V | undefined) => V | undefined - >predicate : (value: V, key: K, iter: this) => boolean - >value : V - >key : K -@@= skipped -9, +9 lines =@@ - >notSetValue : V | undefined - - findLast(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): V | undefined; -->findLast : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => V | undefined -+>findLast : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V | undefined) => V | undefined - >predicate : (value: V, key: K, iter: this) => boolean - >value : V - >key : K -@@= skipped -9, +9 lines =@@ - >notSetValue : V | undefined - - findEntry(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): [K, V] | undefined; -->findEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => [K, V] | undefined -+>findEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V | undefined) => [K, V] | undefined - >predicate : (value: V, key: K, iter: this) => boolean - >value : V - >key : K -@@= skipped -9, +9 lines =@@ - >notSetValue : V | undefined - - findLastEntry(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): [K, V] | undefined; -->findLastEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => [K, V] | undefined -+>findLastEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V | undefined) => [K, V] | undefined - >predicate : (value: V, key: K, iter: this) => boolean - >value : V - >key : K -@@= skipped -33, +33 lines =@@ - >searchValue : V - - max(comparator?: (valueA: V, valueB: V) => number): V | undefined; -->max : (comparator?: (valueA: V, valueB: V) => number) => V | undefined -+>max : (comparator?: ((valueA: V, valueB: V) => number) | undefined) => V | undefined - >comparator : ((valueA: V, valueB: V) => number) | undefined - >valueA : V - >valueB : V - - maxBy(comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number): V | undefined; -->maxBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number) => V | undefined -+>maxBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: ((valueA: C, valueB: C) => number) | undefined) => V | undefined - >comparatorValueMapper : (value: V, key: K, iter: this) => C - >value : V - >key : K -@@= skipped -16, +16 lines =@@ - >valueB : C - - min(comparator?: (valueA: V, valueB: V) => number): V | undefined; -->min : (comparator?: (valueA: V, valueB: V) => number) => V | undefined -+>min : (comparator?: ((valueA: V, valueB: V) => number) | undefined) => V | undefined - >comparator : ((valueA: V, valueB: V) => number) | undefined - >valueA : V - >valueB : V - - minBy(comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number): V | undefined; -->minBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number) => V | undefined -+>minBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: ((valueA: C, valueB: C) => number) | undefined) => V | undefined - >comparatorValueMapper : (value: V, key: K, iter: this) => C - >value : V - >key : K \ No newline at end of file + >value : V \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types b/testdata/baselines/reference/submodule/compiler/complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types index 17d71b68f33..a755d623101 100644 --- a/testdata/baselines/reference/submodule/compiler/complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types +++ b/testdata/baselines/reference/submodule/compiler/complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types @@ -55,7 +55,7 @@ export type NewChannel = Pick & export function makeNewChannel(type: T): NewChannel> { ->makeNewChannel : (type: T) => NewChannel | ChannelOfType> +>makeNewChannel : (type: T) => NewChannel> >type : T const localChannelId = `blahblahblah`; @@ -71,7 +71,7 @@ export function makeNewChannel(type: T): NewChannelnewTextChannel : NewChannel >makeNewChannel('text') : NewChannel ->makeNewChannel : (type: T) => NewChannel | ChannelOfType> +>makeNewChannel : (type: T) => NewChannel> >'text' : "text" // This should work @@ -85,7 +85,7 @@ newTextChannel.phoneNumber = '613-555-1234'; const newTextChannel2 : NewChannel = makeNewChannel('text'); >newTextChannel2 : NewChannel >makeNewChannel('text') : NewChannel ->makeNewChannel : (type: T) => NewChannel | ChannelOfType> +>makeNewChannel : (type: T) => NewChannel> >'text' : "text" // Compare with this, which ofc works. diff --git a/testdata/baselines/reference/submodule/compiler/complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types.diff b/testdata/baselines/reference/submodule/compiler/complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types.diff deleted file mode 100644 index cd34a07b53f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types -+++ new.complicatedIndexedAccessKeyofReliesOnKeyofNeverUpperBound.types -@@= skipped -54, +54 lines =@@ - - - export function makeNewChannel(type: T): NewChannel> { -->makeNewChannel : (type: T) => NewChannel> -+>makeNewChannel : (type: T) => NewChannel | ChannelOfType> - >type : T - - const localChannelId = `blahblahblah`; -@@= skipped -16, +16 lines =@@ - const newTextChannel = makeNewChannel('text'); - >newTextChannel : NewChannel - >makeNewChannel('text') : NewChannel -->makeNewChannel : (type: T) => NewChannel> -+>makeNewChannel : (type: T) => NewChannel | ChannelOfType> - >'text' : "text" - - // This should work -@@= skipped -14, +14 lines =@@ - const newTextChannel2 : NewChannel = makeNewChannel('text'); - >newTextChannel2 : NewChannel - >makeNewChannel('text') : NewChannel -->makeNewChannel : (type: T) => NewChannel> -+>makeNewChannel : (type: T) => NewChannel | ChannelOfType> - >'text' : "text" - - // Compare with this, which ofc works. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/complicatedIndexesOfIntersectionsAreInferencable.types b/testdata/baselines/reference/submodule/compiler/complicatedIndexesOfIntersectionsAreInferencable.types index 0e3d2db65b2..cdb804d8c3e 100644 --- a/testdata/baselines/reference/submodule/compiler/complicatedIndexesOfIntersectionsAreInferencable.types +++ b/testdata/baselines/reference/submodule/compiler/complicatedIndexesOfIntersectionsAreInferencable.types @@ -14,7 +14,7 @@ interface FormikConfig { } declare function Func( ->Func : (x: string extends "initialValues" | "validate" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "initialValues" | "validate" | 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 "initialValues" | "validate" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "initialValues" | "validate" | Exclude> & Partial & ExtraProps>, "validateOnChange" | Extract>> @@ -26,7 +26,7 @@ declare function Func( Func({ >Func({ initialValues: { foo: "" }, validate: props => { props.foo; }}) : void ->Func : (x: string extends "initialValues" | "validate" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "initialValues" | "validate" | 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; } initialValues: { diff --git a/testdata/baselines/reference/submodule/compiler/complicatedIndexesOfIntersectionsAreInferencable.types.diff b/testdata/baselines/reference/submodule/compiler/complicatedIndexesOfIntersectionsAreInferencable.types.diff deleted file mode 100644 index c4edee470c3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/complicatedIndexesOfIntersectionsAreInferencable.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.complicatedIndexesOfIntersectionsAreInferencable.types -+++ new.complicatedIndexesOfIntersectionsAreInferencable.types -@@= skipped -13, +13 lines =@@ - } - - 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 "initialValues" | "validate" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "initialValues" | "validate" | Exclude> & Partial & ExtraProps>, "validateOnChange" | Extract>>) => void - - x: (string extends "validate" | "initialValues" | keyof ExtraProps - >x : string extends "initialValues" | "validate" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "initialValues" | "validate" | Exclude> & Partial & ExtraProps>, "validateOnChange" | Extract>> -@@= skipped -12, +12 lines =@@ - - 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 "initialValues" | "validate" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "initialValues" | "validate" | Exclude> & Partial & ExtraProps>, "validateOnChange" | Extract>>) => void - >{ initialValues: { foo: "" }, validate: props => { props.foo; }} : { initialValues: { foo: string; }; validate: (props: { foo: string; }) => void; } - - initialValues: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/complicatedPrivacy(target=es2015).types b/testdata/baselines/reference/submodule/compiler/complicatedPrivacy(target=es2015).types index 2faf2e838a9..77b4d4f3f5d 100644 --- a/testdata/baselines/reference/submodule/compiler/complicatedPrivacy(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/complicatedPrivacy(target=es2015).types @@ -52,7 +52,7 @@ namespace m1 { } export function f3(): { ->f3 : () => (a: number) => C1 +>f3 : () => { (a: number): C1; } (a: number) : C1; >a : number @@ -62,7 +62,7 @@ namespace m1 { } export function f4(arg1: ->f4 : (arg1: { [x: number]: C1; }) => void +>f4 : (arg1: { [number]: C1; }) => void >arg1 : { [x: number]: C1; } { [number]: C1; // Used to be indexer, now it is a computed property @@ -74,7 +74,7 @@ namespace m1 { export function f5(arg2: { ->f5 : (arg2: new (arg1: C1) => C1) => void +>f5 : (arg2: { new (arg1: C1): C1; }) => void >arg2 : new (arg1: C1) => C1 new (arg1: C1) : C1 diff --git a/testdata/baselines/reference/submodule/compiler/complicatedPrivacy(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/complicatedPrivacy(target=es2015).types.diff deleted file mode 100644 index a1bcff34f08..00000000000 --- a/testdata/baselines/reference/submodule/compiler/complicatedPrivacy(target=es2015).types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.complicatedPrivacy(target=es2015).types -+++ new.complicatedPrivacy(target=es2015).types -@@= skipped -51, +51 lines =@@ - } - - export function f3(): { -->f3 : () => { (a: number): C1; } -+>f3 : () => (a: number) => C1 - - (a: number) : C1; - >a : number -@@= skipped -10, +10 lines =@@ - } - - export function f4(arg1: -->f4 : (arg1: { [number]: C1; }) => void -+>f4 : (arg1: { [x: number]: C1; }) => void - >arg1 : { [x: number]: C1; } - { - [number]: C1; // Used to be indexer, now it is a computed property -@@= skipped -12, +12 lines =@@ - - - export function f5(arg2: { -->f5 : (arg2: { new (arg1: C1): C1; }) => void -+>f5 : (arg2: new (arg1: C1) => C1) => void - >arg2 : new (arg1: C1) => C1 - - new (arg1: C1) : C1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/compositeContextualSignature.types b/testdata/baselines/reference/submodule/compiler/compositeContextualSignature.types index a58ac8920c2..47e258a490c 100644 --- a/testdata/baselines/reference/submodule/compiler/compositeContextualSignature.types +++ b/testdata/baselines/reference/submodule/compiler/compositeContextualSignature.types @@ -4,12 +4,12 @@ // Repro from #55145 function f(v: ReadonlyArray) { } ->f : (v: readonly T[]) => void +>f : (v: ReadonlyArray) => void >v : readonly T[] f([ >f([ [ undefined, () => { }, ], [ 1, () => { console.log('Hello') }, ],]) : void ->f : (v: readonly T[]) => void +>f : (v: ReadonlyArray) => void >[ [ undefined, () => { }, ], [ 1, () => { console.log('Hello') }, ],] : (((() => void) | undefined)[] | (number | (() => void))[])[] [ diff --git a/testdata/baselines/reference/submodule/compiler/compositeContextualSignature.types.diff b/testdata/baselines/reference/submodule/compiler/compositeContextualSignature.types.diff deleted file mode 100644 index 829673ff118..00000000000 --- a/testdata/baselines/reference/submodule/compiler/compositeContextualSignature.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.compositeContextualSignature.types -+++ new.compositeContextualSignature.types -@@= skipped -3, +3 lines =@@ - // Repro from #55145 - - function f(v: ReadonlyArray) { } -->f : (v: ReadonlyArray) => void -+>f : (v: readonly T[]) => void - >v : readonly T[] - - f([ - >f([ [ undefined, () => { }, ], [ 1, () => { console.log('Hello') }, ],]) : void -->f : (v: ReadonlyArray) => void -+>f : (v: readonly T[]) => void - >[ [ undefined, () => { }, ], [ 1, () => { console.log('Hello') }, ],] : (((() => void) | undefined)[] | (number | (() => void))[])[] - - [ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.errors.txt b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.errors.txt new file mode 100644 index 00000000000..317bd46e115 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.errors.txt @@ -0,0 +1,88 @@ +computedPropertiesNarrowed.ts(4,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +computedPropertiesNarrowed.ts(10,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +computedPropertiesNarrowed.ts(18,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +computedPropertiesNarrowed.ts(21,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +computedPropertiesNarrowed.ts(25,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +computedPropertiesNarrowed.ts(30,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +computedPropertiesNarrowed.ts(36,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +computedPropertiesNarrowed.ts(41,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +computedPropertiesNarrowed.ts(46,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + + +==== computedPropertiesNarrowed.ts (9 errors) ==== + const x: 0 | 1 = Math.random()? 0: 1; + declare function assert(n: number): asserts n is 1; + assert(x); + export let o = { + ~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 computedPropertiesNarrowed.ts:4:12: Add a type annotation to the variable o. + [x]: 1 // error narrow type !== declared type + } + + + const y: 0 = 0 + export let o2 = { + ~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 computedPropertiesNarrowed.ts:10:12: Add a type annotation to the variable o2. + [y]: 1 // ok literal computed type + } + + // literals are ok + export let o3 = { [1]: 1 } + export let o31 = { [-1]: 1 } + + export let o32 = { [1-1]: 1 } // error number + ~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 computedPropertiesNarrowed.ts:18:12: Add a type annotation to the variable o32. + + let u = Symbol(); + export let o4 = { + ~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 computedPropertiesNarrowed.ts:21:12: Add a type annotation to the variable o4. + [u]: 1 // Should error, nut a unique symbol + } + + export let o5 ={ + ~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 computedPropertiesNarrowed.ts:25:12: Add a type annotation to the variable o5. + [Symbol()]: 1 // Should error + } + + const uu: unique symbol = Symbol(); + export let o6 = { + ~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 computedPropertiesNarrowed.ts:30:12: Add a type annotation to the variable o6. + [uu]: 1 // Should be ok + } + + + function foo (): 1 { return 1; } + export let o7 = { + ~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 computedPropertiesNarrowed.ts:36:12: Add a type annotation to the variable o7. + [foo()]: 1 // Should error + }; + + let E = { A: 1 } as const + export const o8 = { + ~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 computedPropertiesNarrowed.ts:41:14: Add a type annotation to the variable o8. + [E.A]: 1 // Fresh + } + + function ns() { return { v: 0 } as const } + export const o9 = { + ~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 computedPropertiesNarrowed.ts:46:14: Add a type annotation to the variable o9. + [ns().v]: 1 + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.errors.txt.diff index ec3036b8914..9655452d5a2 100644 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.errors.txt.diff @@ -14,83 +14,120 @@ - - -==== computedPropertiesNarrowed.ts (10 errors) ==== -- const x: 0 | 1 = Math.random()? 0: 1; -- declare function assert(n: number): asserts n is 1; -- assert(x); -- export let o = { ++computedPropertiesNarrowed.ts(4,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++computedPropertiesNarrowed.ts(10,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++computedPropertiesNarrowed.ts(18,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++computedPropertiesNarrowed.ts(21,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++computedPropertiesNarrowed.ts(25,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++computedPropertiesNarrowed.ts(30,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++computedPropertiesNarrowed.ts(36,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++computedPropertiesNarrowed.ts(41,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++computedPropertiesNarrowed.ts(46,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++ ++ ++==== computedPropertiesNarrowed.ts (9 errors) ==== + const x: 0 | 1 = Math.random()? 0: 1; + declare function assert(n: number): asserts n is 1; + assert(x); + export let o = { - [x]: 1 // error narrow type !== declared type - ~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --!!! related TS9027 computedPropertiesNarrowed.ts:4:12: Add a type annotation to the variable o. -- } -- -- -- const y: 0 = 0 -- export let o2 = { ++ ~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 computedPropertiesNarrowed.ts:4:12: Add a type annotation to the variable o. ++ [x]: 1 // error narrow type !== declared type + } + + + const y: 0 = 0 + export let o2 = { - [y]: 1 // ok literal computed type - ~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --!!! related TS9027 computedPropertiesNarrowed.ts:10:12: Add a type annotation to the variable o2. -- } -- -- // literals are ok -- export let o3 = { [1]: 1 } -- export let o31 = { [-1]: 1 } -- -- export let o32 = { [1-1]: 1 } // error number ++ ~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 computedPropertiesNarrowed.ts:10:12: Add a type annotation to the variable o2. ++ [y]: 1 // ok literal computed type + } + + // literals are ok +@@= skipped -34, +33 lines =@@ + export let o31 = { [-1]: 1 } + + export let o32 = { [1-1]: 1 } // error number - ~~~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --!!! related TS9027 computedPropertiesNarrowed.ts:18:12: Add a type annotation to the variable o32. -- -- let u = Symbol(); ++ ~~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 computedPropertiesNarrowed.ts:18:12: Add a type annotation to the variable o32. + + let u = Symbol(); - ~ -!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. -!!! related TS9027 computedPropertiesNarrowed.ts:20:5: Add a type annotation to the variable u. -- export let o4 = { + export let o4 = { - [u]: 1 // Should error, nut a unique symbol - ~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --!!! related TS9027 computedPropertiesNarrowed.ts:21:12: Add a type annotation to the variable o4. -- } -- -- export let o5 ={ ++ ~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 computedPropertiesNarrowed.ts:21:12: Add a type annotation to the variable o4. ++ [u]: 1 // Should error, nut a unique symbol + } + + export let o5 ={ - [Symbol()]: 1 // Should error - ~~~~~~~~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --!!! related TS9027 computedPropertiesNarrowed.ts:25:12: Add a type annotation to the variable o5. -- } -- -- const uu: unique symbol = Symbol(); -- export let o6 = { ++ ~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 computedPropertiesNarrowed.ts:25:12: Add a type annotation to the variable o5. ++ [Symbol()]: 1 // Should error + } + + const uu: unique symbol = Symbol(); + export let o6 = { - [uu]: 1 // Should be ok - ~~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --!!! related TS9027 computedPropertiesNarrowed.ts:30:12: Add a type annotation to the variable o6. -- } -- -- -- function foo (): 1 { return 1; } -- export let o7 = { ++ ~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 computedPropertiesNarrowed.ts:30:12: Add a type annotation to the variable o6. ++ [uu]: 1 // Should be ok + } + + + function foo (): 1 { return 1; } + export let o7 = { - [foo()]: 1 // Should error - ~~~~~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --!!! related TS9027 computedPropertiesNarrowed.ts:36:12: Add a type annotation to the variable o7. -- }; -- -- let E = { A: 1 } as const -- export const o8 = { ++ ~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 computedPropertiesNarrowed.ts:36:12: Add a type annotation to the variable o7. ++ [foo()]: 1 // Should error + }; + + let E = { A: 1 } as const + export const o8 = { - [E.A]: 1 // Fresh - ~~~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --!!! related TS9027 computedPropertiesNarrowed.ts:41:14: Add a type annotation to the variable o8. -- } -- -- function ns() { return { v: 0 } as const } -- export const o9 = { ++ ~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 computedPropertiesNarrowed.ts:41:14: Add a type annotation to the variable o8. ++ [E.A]: 1 // Fresh + } + + function ns() { return { v: 0 } as const } + export const o9 = { - [ns().v]: 1 - ~~~~~~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --!!! related TS9027 computedPropertiesNarrowed.ts:46:14: Add a type annotation to the variable o9. -- } -- -+ \ No newline at end of file ++ ~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 computedPropertiesNarrowed.ts:46:14: Add a type annotation to the variable o9. ++ [ns().v]: 1 + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js index 28529b6c67f..912eb4cbe2f 100644 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js +++ b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js @@ -98,7 +98,7 @@ export declare let o2: { 0: number; }; export declare let o3: { - 1: number; + [1]: number; }; export declare let o31: { [-1]: number; diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js.diff b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js.diff index 5e457eaae71..cc0a01b7c3a 100644 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js.diff +++ b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js.diff @@ -14,7 +14,7 @@ + 0: number; +}; +export declare let o3: { -+ 1: number; ++ [1]: number; +}; +export declare let o31: { + [-1]: number; diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertyBindingElementDeclarationNoCrash1.types b/testdata/baselines/reference/submodule/compiler/computedPropertyBindingElementDeclarationNoCrash1.types index e96a9917a07..0cd555929bd 100644 --- a/testdata/baselines/reference/submodule/compiler/computedPropertyBindingElementDeclarationNoCrash1.types +++ b/testdata/baselines/reference/submodule/compiler/computedPropertyBindingElementDeclarationNoCrash1.types @@ -30,9 +30,9 @@ export class Test { >key : string >value : unknown >Object.entries(e) : [string, unknown][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >e : any this.setState({ diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertyBindingElementDeclarationNoCrash1.types.diff b/testdata/baselines/reference/submodule/compiler/computedPropertyBindingElementDeclarationNoCrash1.types.diff deleted file mode 100644 index 8f401ccb2ba..00000000000 --- a/testdata/baselines/reference/submodule/compiler/computedPropertyBindingElementDeclarationNoCrash1.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.computedPropertyBindingElementDeclarationNoCrash1.types -+++ new.computedPropertyBindingElementDeclarationNoCrash1.types -@@= skipped -29, +29 lines =@@ - >key : string - >value : unknown - >Object.entries(e) : [string, unknown][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >e : any - - this.setState({ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/conditionalReturnExpression.types b/testdata/baselines/reference/submodule/compiler/conditionalReturnExpression.types index 488718d77ab..9c4f3cb6e10 100644 --- a/testdata/baselines/reference/submodule/compiler/conditionalReturnExpression.types +++ b/testdata/baselines/reference/submodule/compiler/conditionalReturnExpression.types @@ -24,9 +24,9 @@ function return2(x: string): string { return x.startsWith("a") ? getAny() : 1; >x.startsWith("a") ? getAny() : 1 : any >x.startsWith("a") : boolean ->x.startsWith : (searchString: string, position?: number | undefined) => boolean +>x.startsWith : (searchString: string, position?: number) => boolean >x : string ->startsWith : (searchString: string, position?: number | undefined) => boolean +>startsWith : (searchString: string, position?: number) => boolean >"a" : "a" >getAny() : any >getAny : () => any @@ -40,9 +40,9 @@ function return3(x: string): string { return x.startsWith("a") ? "a" : x; >x.startsWith("a") ? "a" : x : string >x.startsWith("a") : boolean ->x.startsWith : (searchString: string, position?: number | undefined) => boolean +>x.startsWith : (searchString: string, position?: number) => boolean >x : string ->startsWith : (searchString: string, position?: number | undefined) => boolean +>startsWith : (searchString: string, position?: number) => boolean >"a" : "a" >"a" : "a" >x : string @@ -57,9 +57,9 @@ function return4(x: string): string { >(x.startsWith("a") ? getAny() : 1) : any >x.startsWith("a") ? getAny() : 1 : any >x.startsWith("a") : boolean ->x.startsWith : (searchString: string, position?: number | undefined) => boolean +>x.startsWith : (searchString: string, position?: number) => boolean >x : string ->startsWith : (searchString: string, position?: number | undefined) => boolean +>startsWith : (searchString: string, position?: number) => boolean >"a" : "a" >getAny() : any >getAny : () => any @@ -72,9 +72,9 @@ const return5 = (x: string): string => x.startsWith("a") ? getAny() : 1; >x : string >x.startsWith("a") ? getAny() : 1 : any >x.startsWith("a") : boolean ->x.startsWith : (searchString: string, position?: number | undefined) => boolean +>x.startsWith : (searchString: string, position?: number) => boolean >x : string ->startsWith : (searchString: string, position?: number | undefined) => boolean +>startsWith : (searchString: string, position?: number) => boolean >"a" : "a" >getAny() : any >getAny : () => any @@ -88,9 +88,9 @@ const return6 = (x: string): string => (x.startsWith("a") ? getAny() : 1) as str >(x.startsWith("a") ? getAny() : 1) : any >x.startsWith("a") ? getAny() : 1 : any >x.startsWith("a") : boolean ->x.startsWith : (searchString: string, position?: number | undefined) => boolean +>x.startsWith : (searchString: string, position?: number) => boolean >x : string ->startsWith : (searchString: string, position?: number | undefined) => boolean +>startsWith : (searchString: string, position?: number) => boolean >"a" : "a" >getAny() : any >getAny : () => any diff --git a/testdata/baselines/reference/submodule/compiler/conditionalReturnExpression.types.diff b/testdata/baselines/reference/submodule/compiler/conditionalReturnExpression.types.diff deleted file mode 100644 index c13c9773b00..00000000000 --- a/testdata/baselines/reference/submodule/compiler/conditionalReturnExpression.types.diff +++ /dev/null @@ -1,62 +0,0 @@ ---- old.conditionalReturnExpression.types -+++ new.conditionalReturnExpression.types -@@= skipped -23, +23 lines =@@ - return x.startsWith("a") ? getAny() : 1; - >x.startsWith("a") ? getAny() : 1 : any - >x.startsWith("a") : boolean -->x.startsWith : (searchString: string, position?: number) => boolean -+>x.startsWith : (searchString: string, position?: number | undefined) => boolean - >x : string -->startsWith : (searchString: string, position?: number) => boolean -+>startsWith : (searchString: string, position?: number | undefined) => boolean - >"a" : "a" - >getAny() : any - >getAny : () => any -@@= skipped -16, +16 lines =@@ - return x.startsWith("a") ? "a" : x; - >x.startsWith("a") ? "a" : x : string - >x.startsWith("a") : boolean -->x.startsWith : (searchString: string, position?: number) => boolean -+>x.startsWith : (searchString: string, position?: number | undefined) => boolean - >x : string -->startsWith : (searchString: string, position?: number) => boolean -+>startsWith : (searchString: string, position?: number | undefined) => boolean - >"a" : "a" - >"a" : "a" - >x : string -@@= skipped -17, +17 lines =@@ - >(x.startsWith("a") ? getAny() : 1) : any - >x.startsWith("a") ? getAny() : 1 : any - >x.startsWith("a") : boolean -->x.startsWith : (searchString: string, position?: number) => boolean -+>x.startsWith : (searchString: string, position?: number | undefined) => boolean - >x : string -->startsWith : (searchString: string, position?: number) => boolean -+>startsWith : (searchString: string, position?: number | undefined) => boolean - >"a" : "a" - >getAny() : any - >getAny : () => any -@@= skipped -15, +15 lines =@@ - >x : string - >x.startsWith("a") ? getAny() : 1 : any - >x.startsWith("a") : boolean -->x.startsWith : (searchString: string, position?: number) => boolean -+>x.startsWith : (searchString: string, position?: number | undefined) => boolean - >x : string -->startsWith : (searchString: string, position?: number) => boolean -+>startsWith : (searchString: string, position?: number | undefined) => boolean - >"a" : "a" - >getAny() : any - >getAny : () => any -@@= skipped -16, +16 lines =@@ - >(x.startsWith("a") ? getAny() : 1) : any - >x.startsWith("a") ? getAny() : 1 : any - >x.startsWith("a") : boolean -->x.startsWith : (searchString: string, position?: number) => boolean -+>x.startsWith : (searchString: string, position?: number | undefined) => boolean - >x : string -->startsWith : (searchString: string, position?: number) => boolean -+>startsWith : (searchString: string, position?: number | undefined) => boolean - >"a" : "a" - >getAny() : any - >getAny : () => any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/conditionalTypeBasedContextualTypeReturnTypeWidening.types b/testdata/baselines/reference/submodule/compiler/conditionalTypeBasedContextualTypeReturnTypeWidening.types index 21e03a090b7..f34aa65f70b 100644 --- a/testdata/baselines/reference/submodule/compiler/conditionalTypeBasedContextualTypeReturnTypeWidening.types +++ b/testdata/baselines/reference/submodule/compiler/conditionalTypeBasedContextualTypeReturnTypeWidening.types @@ -2,18 +2,18 @@ === conditionalTypeBasedContextualTypeReturnTypeWidening.ts === declare function useState1(initialState: (S extends (() => any) ? never : S) | (() => S)): S; // No args ->useState1 : (initialState: (() => S) | (S extends () => any ? never : S)) => S +>useState1 : (initialState: (S extends (() => any) ? never : S) | (() => S)) => S >initialState : (() => S) | (S extends () => any ? never : S) declare function useState2(initialState: (S extends ((...args: any[]) => any) ? never : S) | (() => S)): S; // Any args ->useState2 : (initialState: (() => S) | (S extends (...args: any[]) => any ? never : S)) => S +>useState2 : (initialState: (S extends ((...args: any[]) => any) ? never : S) | (() => S)) => S >initialState : (() => S) | (S extends (...args: any[]) => any ? never : S) >args : any[] const func1 = useState1(() => () => 0); >func1 : () => 0 >useState1(() => () => 0) : () => 0 ->useState1 : (initialState: (() => S) | (S extends () => any ? never : S)) => S +>useState1 : (initialState: (S extends (() => any) ? never : S) | (() => S)) => S >() => () => 0 : () => () => 0 >() => 0 : () => 0 >0 : 0 @@ -21,24 +21,24 @@ const func1 = useState1(() => () => 0); const func2 = useState2(() => () => 0); >func2 : () => 0 >useState2(() => () => 0) : () => 0 ->useState2 : (initialState: (() => S) | (S extends (...args: any[]) => any ? never : S)) => S +>useState2 : (initialState: (S extends ((...args: any[]) => any) ? never : S) | (() => S)) => S >() => () => 0 : () => () => 0 >() => 0 : () => 0 >0 : 0 declare function useState3(initialState: (T extends (() => any) ? never : T) | (() => S)): S; // No args ->useState3 : (initialState: (() => S) | (T extends () => any ? never : T)) => S +>useState3 : (initialState: (T extends (() => any) ? never : T) | (() => S)) => S >initialState : (() => S) | (T extends () => any ? never : T) declare function useState4(initialState: (T extends ((...args: any[]) => any) ? never : T) | (() => S)): S; // Any args ->useState4 : (initialState: (() => S) | (T extends (...args: any[]) => any ? never : T)) => S +>useState4 : (initialState: (T extends ((...args: any[]) => any) ? never : T) | (() => S)) => S >initialState : (() => S) | (T extends (...args: any[]) => any ? never : T) >args : any[] const func3 = useState1(() => () => 0); >func3 : () => 0 >useState1(() => () => 0) : () => 0 ->useState1 : (initialState: (() => S) | (S extends () => any ? never : S)) => S +>useState1 : (initialState: (S extends (() => any) ? never : S) | (() => S)) => S >() => () => 0 : () => () => 0 >() => 0 : () => 0 >0 : 0 @@ -46,7 +46,7 @@ const func3 = useState1(() => () => 0); const func4 = useState2(() => () => 0); >func4 : () => 0 >useState2(() => () => 0) : () => 0 ->useState2 : (initialState: (() => S) | (S extends (...args: any[]) => any ? never : S)) => S +>useState2 : (initialState: (S extends ((...args: any[]) => any) ? never : S) | (() => S)) => S >() => () => 0 : () => () => 0 >() => 0 : () => 0 >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/conditionalTypeBasedContextualTypeReturnTypeWidening.types.diff b/testdata/baselines/reference/submodule/compiler/conditionalTypeBasedContextualTypeReturnTypeWidening.types.diff deleted file mode 100644 index ea8947681a6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/conditionalTypeBasedContextualTypeReturnTypeWidening.types.diff +++ /dev/null @@ -1,62 +0,0 @@ ---- old.conditionalTypeBasedContextualTypeReturnTypeWidening.types -+++ new.conditionalTypeBasedContextualTypeReturnTypeWidening.types -@@= skipped -1, +1 lines =@@ - - === conditionalTypeBasedContextualTypeReturnTypeWidening.ts === - declare function useState1(initialState: (S extends (() => any) ? never : S) | (() => S)): S; // No args -->useState1 : (initialState: (S extends (() => any) ? never : S) | (() => S)) => S -+>useState1 : (initialState: (() => S) | (S extends () => any ? never : S)) => S - >initialState : (() => S) | (S extends () => any ? never : S) - - declare function useState2(initialState: (S extends ((...args: any[]) => any) ? never : S) | (() => S)): S; // Any args -->useState2 : (initialState: (S extends ((...args: any[]) => any) ? never : S) | (() => S)) => S -+>useState2 : (initialState: (() => S) | (S extends (...args: any[]) => any ? never : S)) => S - >initialState : (() => S) | (S extends (...args: any[]) => any ? never : S) - >args : any[] - - const func1 = useState1(() => () => 0); - >func1 : () => 0 - >useState1(() => () => 0) : () => 0 -->useState1 : (initialState: (S extends (() => any) ? never : S) | (() => S)) => S -+>useState1 : (initialState: (() => S) | (S extends () => any ? never : S)) => S - >() => () => 0 : () => () => 0 - >() => 0 : () => 0 - >0 : 0 -@@= skipped -19, +19 lines =@@ - const func2 = useState2(() => () => 0); - >func2 : () => 0 - >useState2(() => () => 0) : () => 0 -->useState2 : (initialState: (S extends ((...args: any[]) => any) ? never : S) | (() => S)) => S -+>useState2 : (initialState: (() => S) | (S extends (...args: any[]) => any ? never : S)) => S - >() => () => 0 : () => () => 0 - >() => 0 : () => 0 - >0 : 0 - - declare function useState3(initialState: (T extends (() => any) ? never : T) | (() => S)): S; // No args -->useState3 : (initialState: (T extends (() => any) ? never : T) | (() => S)) => S -+>useState3 : (initialState: (() => S) | (T extends () => any ? never : T)) => S - >initialState : (() => S) | (T extends () => any ? never : T) - - declare function useState4(initialState: (T extends ((...args: any[]) => any) ? never : T) | (() => S)): S; // Any args -->useState4 : (initialState: (T extends ((...args: any[]) => any) ? never : T) | (() => S)) => S -+>useState4 : (initialState: (() => S) | (T extends (...args: any[]) => any ? never : T)) => S - >initialState : (() => S) | (T extends (...args: any[]) => any ? never : T) - >args : any[] - - const func3 = useState1(() => () => 0); - >func3 : () => 0 - >useState1(() => () => 0) : () => 0 -->useState1 : (initialState: (S extends (() => any) ? never : S) | (() => S)) => S -+>useState1 : (initialState: (() => S) | (S extends () => any ? never : S)) => S - >() => () => 0 : () => () => 0 - >() => 0 : () => 0 - >0 : 0 -@@= skipped -25, +25 lines =@@ - const func4 = useState2(() => () => 0); - >func4 : () => 0 - >useState2(() => () => 0) : () => 0 -->useState2 : (initialState: (S extends ((...args: any[]) => any) ? never : S) | (() => S)) => S -+>useState2 : (initialState: (() => S) | (S extends (...args: any[]) => any ? never : S)) => S - >() => () => 0 : () => () => 0 - >() => 0 : () => 0 - >0 : 0 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types b/testdata/baselines/reference/submodule/compiler/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types index e20bcf335a2..5159675780a 100644 --- a/testdata/baselines/reference/submodule/compiler/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types +++ b/testdata/baselines/reference/submodule/compiler/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types @@ -16014,7 +16014,7 @@ type ChildrenOf = T['children'][number]; >ChildrenOf : ChildrenOf export function makeThing( ->makeThing : (name: T, children?: ChildrenOf>[]) => void +>makeThing : (name: T, children?: ChildrenOf>[]) => void name: T, >name : T diff --git a/testdata/baselines/reference/submodule/compiler/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types.diff b/testdata/baselines/reference/submodule/compiler/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types.diff index 0c83de72494..5b32cc56aea 100644 --- a/testdata/baselines/reference/submodule/compiler/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types.diff +++ b/testdata/baselines/reference/submodule/compiler/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types.diff @@ -5,7 +5,7 @@ export function makeThing( ->makeThing : (name: T, children?: ChildrenOf>[]) => void -+>makeThing : (name: T, children?: ChildrenOf>[]) => void ++>makeThing : (name: T, children?: ChildrenOf>[]) => void name: T, >name : T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/conditionalTypeDoesntSpinForever.types b/testdata/baselines/reference/submodule/compiler/conditionalTypeDoesntSpinForever.types index 8d086a1c11e..9ec3885db2e 100644 --- a/testdata/baselines/reference/submodule/compiler/conditionalTypeDoesntSpinForever.types +++ b/testdata/baselines/reference/submodule/compiler/conditionalTypeDoesntSpinForever.types @@ -40,14 +40,14 @@ export enum PubSubRecordIsStoredInRedisAsA { >name : any name: (t?: TYPE) => BuildPubSubRecordType ->name : (t?: TYPE | undefined) => BuildPubSubRecordType +>name : (t?: TYPE) => BuildPubSubRecordType >t : TYPE | undefined >name : TYPE } const buildNameFieldConstructor = (soFar: SO_FAR) => ( ->buildNameFieldConstructor : (soFar: SO_FAR) => { name?: undefined; } | { name: (instance?: TYPE) => BuildPubSubRecordType; } ->(soFar: SO_FAR) => ( "name" in soFar ? {} : { name: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {name: instance as TYPE}) as SO_FAR & {name: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => { name?: undefined; } | { name: (instance?: TYPE) => BuildPubSubRecordType; } +>buildNameFieldConstructor : (soFar: SO_FAR) => {} | { name: (instance?: TYPE) => BuildPubSubRecordType; } +>(soFar: SO_FAR) => ( "name" in soFar ? {} : { name: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {name: instance as TYPE}) as SO_FAR & {name: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => {} | { name: (instance?: TYPE) => BuildPubSubRecordType; } >soFar : SO_FAR >( "name" in soFar ? {} : { name: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {name: instance as TYPE}) as SO_FAR & {name: TYPE}) as BuildPubSubRecordType } ) : {} | { name: (instance?: TYPE) => BuildPubSubRecordType; } @@ -103,8 +103,8 @@ export enum PubSubRecordIsStoredInRedisAsA { } const buildStoredAsConstructor = (soFar: SO_FAR) => ( ->buildStoredAsConstructor : (soFar: SO_FAR) => { storedAsJsonEncodedRedisString?: undefined; storedAsRedisHash?: undefined; } | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } ->(soFar: SO_FAR) => ( "storedAs" in soFar ? {} : { storedAsJsonEncodedRedisString: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.jsonEncodedRedisString})) as BuildPubSubRecordType, storedAsRedisHash: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.redisHash})) as BuildPubSubRecordType, } ) : (soFar: SO_FAR) => { storedAsJsonEncodedRedisString?: undefined; storedAsRedisHash?: undefined; } | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } +>buildStoredAsConstructor : (soFar: SO_FAR) => {} | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } +>(soFar: SO_FAR) => ( "storedAs" in soFar ? {} : { storedAsJsonEncodedRedisString: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.jsonEncodedRedisString})) as BuildPubSubRecordType, storedAsRedisHash: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.redisHash})) as BuildPubSubRecordType, } ) : (soFar: SO_FAR) => {} | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } >soFar : SO_FAR >( "storedAs" in soFar ? {} : { storedAsJsonEncodedRedisString: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.jsonEncodedRedisString})) as BuildPubSubRecordType, storedAsRedisHash: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.redisHash})) as BuildPubSubRecordType, } ) : {} | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } @@ -176,15 +176,15 @@ export enum PubSubRecordIsStoredInRedisAsA { >record : any identifier: >(t?: TYPE) => BuildPubSubRecordType ->identifier : >(t?: TYPE | undefined) => BuildPubSubRecordType +>identifier : >(t?: TYPE) => BuildPubSubRecordType >t : TYPE | undefined >identifier : TYPE } : {} const buildIdentifierFieldConstructor = (soFar: SO_FAR) => ( ->buildIdentifierFieldConstructor : (soFar: SO_FAR) => { identifier?: undefined; } | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } ->(soFar: SO_FAR) => ( "identifier" in soFar || (!("record" in soFar)) ? {} : { identifier: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {identifier: instance as TYPE}) as SO_FAR & {identifier: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => { identifier?: undefined; } | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } +>buildIdentifierFieldConstructor : (soFar: SO_FAR) => {} | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } +>(soFar: SO_FAR) => ( "identifier" in soFar || (!("record" in soFar)) ? {} : { identifier: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {identifier: instance as TYPE}) as SO_FAR & {identifier: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => {} | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } >soFar : SO_FAR >( "identifier" in soFar || (!("record" in soFar)) ? {} : { identifier: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {identifier: instance as TYPE}) as SO_FAR & {identifier: TYPE}) as BuildPubSubRecordType } ) : {} | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } @@ -236,14 +236,14 @@ export enum PubSubRecordIsStoredInRedisAsA { >record : any record: (t?: TYPE) => BuildPubSubRecordType ->record : (t?: TYPE | undefined) => BuildPubSubRecordType +>record : (t?: TYPE) => BuildPubSubRecordType >t : TYPE | undefined >record : TYPE } const buildRecordFieldConstructor = (soFar: SO_FAR) => ( ->buildRecordFieldConstructor : (soFar: SO_FAR) => { record?: undefined; } | { record: (instance?: TYPE) => BuildPubSubRecordType; } ->(soFar: SO_FAR) => ( "record" in soFar ? {} : { record: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {record: instance as TYPE}) as SO_FAR & {record: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => { record?: undefined; } | { record: (instance?: TYPE) => BuildPubSubRecordType; } +>buildRecordFieldConstructor : (soFar: SO_FAR) => {} | { record: (instance?: TYPE) => BuildPubSubRecordType; } +>(soFar: SO_FAR) => ( "record" in soFar ? {} : { record: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {record: instance as TYPE}) as SO_FAR & {record: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => {} | { record: (instance?: TYPE) => BuildPubSubRecordType; } >soFar : SO_FAR >( "record" in soFar ? {} : { record: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {record: instance as TYPE}) as SO_FAR & {record: TYPE}) as BuildPubSubRecordType } ) : {} | { record: (instance?: TYPE) => BuildPubSubRecordType; } @@ -376,8 +376,8 @@ export enum PubSubRecordIsStoredInRedisAsA { } : {} const buildType = (soFar: SO_FAR) => ( ->buildType : (soFar: SO_FAR) => { type?: undefined; fields?: undefined; hasField?: undefined; } | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } ->(soFar: SO_FAR) => ( "identifier" in soFar && "object" in soFar && "maxMsToWaitBeforePublishing" in soFar && "PubSubRecordIsStoredInRedisAsA" in soFar ? {} : { type: soFar, fields: () => new Set(Object.keys(soFar) as (keyof SO_FAR)[]), hasField: (fieldName: string | number | symbol) => fieldName in soFar } ) : (soFar: SO_FAR) => { type?: undefined; fields?: undefined; hasField?: undefined; } | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } +>buildType : (soFar: SO_FAR) => {} | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } +>(soFar: SO_FAR) => ( "identifier" in soFar && "object" in soFar && "maxMsToWaitBeforePublishing" in soFar && "PubSubRecordIsStoredInRedisAsA" in soFar ? {} : { type: soFar, fields: () => new Set(Object.keys(soFar) as (keyof SO_FAR)[]), hasField: (fieldName: string | number | symbol) => fieldName in soFar } ) : (soFar: SO_FAR) => {} | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } >soFar : SO_FAR >( "identifier" in soFar && "object" in soFar && "maxMsToWaitBeforePublishing" in soFar && "PubSubRecordIsStoredInRedisAsA" in soFar ? {} : { type: soFar, fields: () => new Set(Object.keys(soFar) as (keyof SO_FAR)[]), hasField: (fieldName: string | number | symbol) => fieldName in soFar } ) : {} | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } @@ -452,22 +452,22 @@ export enum PubSubRecordIsStoredInRedisAsA { buildNameFieldConstructor(soFar), >buildNameFieldConstructor(soFar) : { name?: undefined; } | { name: (instance?: TYPE) => BuildPubSubRecordType; } ->buildNameFieldConstructor : (soFar: SO_FAR_1) => { name?: undefined; } | { name: (instance?: TYPE) => BuildPubSubRecordType; } +>buildNameFieldConstructor : (soFar: SO_FAR_1) => {} | { name: (instance?: TYPE) => BuildPubSubRecordType; } >soFar : SO_FAR buildIdentifierFieldConstructor(soFar), >buildIdentifierFieldConstructor(soFar) : { identifier?: undefined; } | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } ->buildIdentifierFieldConstructor : (soFar: SO_FAR_1) => { identifier?: undefined; } | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } +>buildIdentifierFieldConstructor : (soFar: SO_FAR_1) => {} | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } >soFar : SO_FAR buildRecordFieldConstructor(soFar), >buildRecordFieldConstructor(soFar) : { record?: undefined; } | { record: (instance?: TYPE) => BuildPubSubRecordType; } ->buildRecordFieldConstructor : (soFar: SO_FAR_1) => { record?: undefined; } | { record: (instance?: TYPE) => BuildPubSubRecordType; } +>buildRecordFieldConstructor : (soFar: SO_FAR_1) => {} | { record: (instance?: TYPE) => BuildPubSubRecordType; } >soFar : SO_FAR buildStoredAsConstructor(soFar), >buildStoredAsConstructor(soFar) : { storedAsJsonEncodedRedisString?: undefined; storedAsRedisHash?: undefined; } | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } ->buildStoredAsConstructor : (soFar: SO_FAR_1) => { storedAsJsonEncodedRedisString?: undefined; storedAsRedisHash?: undefined; } | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } +>buildStoredAsConstructor : (soFar: SO_FAR_1) => {} | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } >soFar : SO_FAR buildMaxMsToWaitBeforePublishingFieldConstructor(soFar), @@ -477,7 +477,7 @@ export enum PubSubRecordIsStoredInRedisAsA { buildType(soFar) >buildType(soFar) : { type?: undefined; fields?: undefined; hasField?: undefined; } | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } ->buildType : (soFar: SO_FAR_1) => { type?: undefined; fields?: undefined; hasField?: undefined; } | { type: SO_FAR_1; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } +>buildType : (soFar: SO_FAR_1) => {} | { type: SO_FAR_1; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } >soFar : SO_FAR ) as BuildPubSubRecordType; diff --git a/testdata/baselines/reference/submodule/compiler/conditionalTypeDoesntSpinForever.types.diff b/testdata/baselines/reference/submodule/compiler/conditionalTypeDoesntSpinForever.types.diff index 087af433de0..f2e505b4c53 100644 --- a/testdata/baselines/reference/submodule/compiler/conditionalTypeDoesntSpinForever.types.diff +++ b/testdata/baselines/reference/submodule/compiler/conditionalTypeDoesntSpinForever.types.diff @@ -1,29 +1,93 @@ --- old.conditionalTypeDoesntSpinForever.types +++ new.conditionalTypeDoesntSpinForever.types -@@= skipped -39, +39 lines =@@ - >name : any - - name: (t?: TYPE) => BuildPubSubRecordType -->name : (t?: TYPE) => BuildPubSubRecordType -+>name : (t?: TYPE | undefined) => BuildPubSubRecordType - >t : TYPE | undefined - >name : TYPE +@@= skipped -45, +45 lines =@@ } -@@= skipped -136, +136 lines =@@ - >record : any - - identifier: >(t?: TYPE) => BuildPubSubRecordType -->identifier : >(t?: TYPE) => BuildPubSubRecordType -+>identifier : >(t?: TYPE | undefined) => BuildPubSubRecordType - >t : TYPE | undefined - >identifier : TYPE - -@@= skipped -60, +60 lines =@@ - >record : any - - record: (t?: TYPE) => BuildPubSubRecordType -->record : (t?: TYPE) => BuildPubSubRecordType -+>record : (t?: TYPE | undefined) => BuildPubSubRecordType - >t : TYPE | undefined - >record : TYPE - } \ No newline at end of file + + const buildNameFieldConstructor = (soFar: SO_FAR) => ( +->buildNameFieldConstructor : (soFar: SO_FAR) => { name?: undefined; } | { name: (instance?: TYPE) => BuildPubSubRecordType; } +->(soFar: SO_FAR) => ( "name" in soFar ? {} : { name: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {name: instance as TYPE}) as SO_FAR & {name: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => { name?: undefined; } | { name: (instance?: TYPE) => BuildPubSubRecordType; } ++>buildNameFieldConstructor : (soFar: SO_FAR) => {} | { name: (instance?: TYPE) => BuildPubSubRecordType; } ++>(soFar: SO_FAR) => ( "name" in soFar ? {} : { name: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {name: instance as TYPE}) as SO_FAR & {name: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => {} | { name: (instance?: TYPE) => BuildPubSubRecordType; } + >soFar : SO_FAR + >( "name" in soFar ? {} : { name: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {name: instance as TYPE}) as SO_FAR & {name: TYPE}) as BuildPubSubRecordType } ) : {} | { name: (instance?: TYPE) => BuildPubSubRecordType; } + +@@= skipped -57, +57 lines =@@ + } + + const buildStoredAsConstructor = (soFar: SO_FAR) => ( +->buildStoredAsConstructor : (soFar: SO_FAR) => { storedAsJsonEncodedRedisString?: undefined; storedAsRedisHash?: undefined; } | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } +->(soFar: SO_FAR) => ( "storedAs" in soFar ? {} : { storedAsJsonEncodedRedisString: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.jsonEncodedRedisString})) as BuildPubSubRecordType, storedAsRedisHash: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.redisHash})) as BuildPubSubRecordType, } ) : (soFar: SO_FAR) => { storedAsJsonEncodedRedisString?: undefined; storedAsRedisHash?: undefined; } | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } ++>buildStoredAsConstructor : (soFar: SO_FAR) => {} | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } ++>(soFar: SO_FAR) => ( "storedAs" in soFar ? {} : { storedAsJsonEncodedRedisString: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.jsonEncodedRedisString})) as BuildPubSubRecordType, storedAsRedisHash: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.redisHash})) as BuildPubSubRecordType, } ) : (soFar: SO_FAR) => {} | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } + >soFar : SO_FAR + >( "storedAs" in soFar ? {} : { storedAsJsonEncodedRedisString: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.jsonEncodedRedisString})) as BuildPubSubRecordType, storedAsRedisHash: () => buildPubSubRecordType(Object.assign({}, soFar, {storedAs: PubSubRecordIsStoredInRedisAsA.redisHash})) as BuildPubSubRecordType, } ) : {} | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } + +@@= skipped -80, +80 lines =@@ + } : {} + + const buildIdentifierFieldConstructor = (soFar: SO_FAR) => ( +->buildIdentifierFieldConstructor : (soFar: SO_FAR) => { identifier?: undefined; } | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } +->(soFar: SO_FAR) => ( "identifier" in soFar || (!("record" in soFar)) ? {} : { identifier: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {identifier: instance as TYPE}) as SO_FAR & {identifier: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => { identifier?: undefined; } | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } ++>buildIdentifierFieldConstructor : (soFar: SO_FAR) => {} | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } ++>(soFar: SO_FAR) => ( "identifier" in soFar || (!("record" in soFar)) ? {} : { identifier: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {identifier: instance as TYPE}) as SO_FAR & {identifier: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => {} | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } + >soFar : SO_FAR + >( "identifier" in soFar || (!("record" in soFar)) ? {} : { identifier: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {identifier: instance as TYPE}) as SO_FAR & {identifier: TYPE}) as BuildPubSubRecordType } ) : {} | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } + +@@= skipped -59, +59 lines =@@ + } + + const buildRecordFieldConstructor = (soFar: SO_FAR) => ( +->buildRecordFieldConstructor : (soFar: SO_FAR) => { record?: undefined; } | { record: (instance?: TYPE) => BuildPubSubRecordType; } +->(soFar: SO_FAR) => ( "record" in soFar ? {} : { record: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {record: instance as TYPE}) as SO_FAR & {record: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => { record?: undefined; } | { record: (instance?: TYPE) => BuildPubSubRecordType; } ++>buildRecordFieldConstructor : (soFar: SO_FAR) => {} | { record: (instance?: TYPE) => BuildPubSubRecordType; } ++>(soFar: SO_FAR) => ( "record" in soFar ? {} : { record: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {record: instance as TYPE}) as SO_FAR & {record: TYPE}) as BuildPubSubRecordType } ) : (soFar: SO_FAR) => {} | { record: (instance?: TYPE) => BuildPubSubRecordType; } + >soFar : SO_FAR + >( "record" in soFar ? {} : { record: (instance: TYPE = undefined) => buildPubSubRecordType(Object.assign({}, soFar, {record: instance as TYPE}) as SO_FAR & {record: TYPE}) as BuildPubSubRecordType } ) : {} | { record: (instance?: TYPE) => BuildPubSubRecordType; } + +@@= skipped -134, +134 lines =@@ + } : {} + + const buildType = (soFar: SO_FAR) => ( +->buildType : (soFar: SO_FAR) => { type?: undefined; fields?: undefined; hasField?: undefined; } | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } +->(soFar: SO_FAR) => ( "identifier" in soFar && "object" in soFar && "maxMsToWaitBeforePublishing" in soFar && "PubSubRecordIsStoredInRedisAsA" in soFar ? {} : { type: soFar, fields: () => new Set(Object.keys(soFar) as (keyof SO_FAR)[]), hasField: (fieldName: string | number | symbol) => fieldName in soFar } ) : (soFar: SO_FAR) => { type?: undefined; fields?: undefined; hasField?: undefined; } | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } ++>buildType : (soFar: SO_FAR) => {} | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } ++>(soFar: SO_FAR) => ( "identifier" in soFar && "object" in soFar && "maxMsToWaitBeforePublishing" in soFar && "PubSubRecordIsStoredInRedisAsA" in soFar ? {} : { type: soFar, fields: () => new Set(Object.keys(soFar) as (keyof SO_FAR)[]), hasField: (fieldName: string | number | symbol) => fieldName in soFar } ) : (soFar: SO_FAR) => {} | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } + >soFar : SO_FAR + >( "identifier" in soFar && "object" in soFar && "maxMsToWaitBeforePublishing" in soFar && "PubSubRecordIsStoredInRedisAsA" in soFar ? {} : { type: soFar, fields: () => new Set(Object.keys(soFar) as (keyof SO_FAR)[]), hasField: (fieldName: string | number | symbol) => fieldName in soFar } ) : {} | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } + +@@= skipped -76, +76 lines =@@ + + buildNameFieldConstructor(soFar), + >buildNameFieldConstructor(soFar) : { name?: undefined; } | { name: (instance?: TYPE) => BuildPubSubRecordType; } +->buildNameFieldConstructor : (soFar: SO_FAR_1) => { name?: undefined; } | { name: (instance?: TYPE) => BuildPubSubRecordType; } ++>buildNameFieldConstructor : (soFar: SO_FAR_1) => {} | { name: (instance?: TYPE) => BuildPubSubRecordType; } + >soFar : SO_FAR + + buildIdentifierFieldConstructor(soFar), + >buildIdentifierFieldConstructor(soFar) : { identifier?: undefined; } | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } +->buildIdentifierFieldConstructor : (soFar: SO_FAR_1) => { identifier?: undefined; } | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } ++>buildIdentifierFieldConstructor : (soFar: SO_FAR_1) => {} | { identifier: (instance?: TYPE) => BuildPubSubRecordType; } + >soFar : SO_FAR + + buildRecordFieldConstructor(soFar), + >buildRecordFieldConstructor(soFar) : { record?: undefined; } | { record: (instance?: TYPE) => BuildPubSubRecordType; } +->buildRecordFieldConstructor : (soFar: SO_FAR_1) => { record?: undefined; } | { record: (instance?: TYPE) => BuildPubSubRecordType; } ++>buildRecordFieldConstructor : (soFar: SO_FAR_1) => {} | { record: (instance?: TYPE) => BuildPubSubRecordType; } + >soFar : SO_FAR + + buildStoredAsConstructor(soFar), + >buildStoredAsConstructor(soFar) : { storedAsJsonEncodedRedisString?: undefined; storedAsRedisHash?: undefined; } | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } +->buildStoredAsConstructor : (soFar: SO_FAR_1) => { storedAsJsonEncodedRedisString?: undefined; storedAsRedisHash?: undefined; } | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } ++>buildStoredAsConstructor : (soFar: SO_FAR_1) => {} | { storedAsJsonEncodedRedisString: () => BuildPubSubRecordType; storedAsRedisHash: () => BuildPubSubRecordType; } + >soFar : SO_FAR + + buildMaxMsToWaitBeforePublishingFieldConstructor(soFar), +@@= skipped -25, +25 lines =@@ + + buildType(soFar) + >buildType(soFar) : { type?: undefined; fields?: undefined; hasField?: undefined; } | { type: SO_FAR; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } +->buildType : (soFar: SO_FAR_1) => { type?: undefined; fields?: undefined; hasField?: undefined; } | { type: SO_FAR_1; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } ++>buildType : (soFar: SO_FAR_1) => {} | { type: SO_FAR_1; fields: () => Set; hasField: (fieldName: string | number | symbol) => boolean; } + >soFar : SO_FAR + + ) as BuildPubSubRecordType; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/conditionalTypesSimplifyWhenTrivial.types b/testdata/baselines/reference/submodule/compiler/conditionalTypesSimplifyWhenTrivial.types index 80de7d9343d..2f27a38d71b 100644 --- a/testdata/baselines/reference/submodule/compiler/conditionalTypesSimplifyWhenTrivial.types +++ b/testdata/baselines/reference/submodule/compiler/conditionalTypesSimplifyWhenTrivial.types @@ -59,8 +59,8 @@ type ExcludeWithDefault = T extends U ? D : T; >ExcludeWithDefault : ExcludeWithDefault 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> @@ -69,7 +69,7 @@ const fn5 = ( >params : Pick> function fn6(x: ExcludeWithDefault) { ->fn6 : (x: ExcludeWithDefault) => void +>fn6 : (x: ExcludeWithDefault) => void >x : ExcludeWithDefault var y: T = x; @@ -83,8 +83,8 @@ 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> @@ -93,7 +93,7 @@ const fn7 = ( >params : Pick> function fn8(x: ExtractWithDefault) { ->fn8 : (x: ExtractWithDefault) => void +>fn8 : (x: ExtractWithDefault) => void >x : ExtractWithDefault var y: T = x; diff --git a/testdata/baselines/reference/submodule/compiler/conditionalTypesSimplifyWhenTrivial.types.diff b/testdata/baselines/reference/submodule/compiler/conditionalTypesSimplifyWhenTrivial.types.diff deleted file mode 100644 index 96acb61caab..00000000000 --- a/testdata/baselines/reference/submodule/compiler/conditionalTypesSimplifyWhenTrivial.types.diff +++ /dev/null @@ -1,42 +0,0 @@ ---- old.conditionalTypesSimplifyWhenTrivial.types -+++ new.conditionalTypesSimplifyWhenTrivial.types -@@= skipped -58, +58 lines =@@ - >ExcludeWithDefault : ExcludeWithDefault - - 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> -@@= skipped -10, +10 lines =@@ - >params : Pick> - - function fn6(x: ExcludeWithDefault) { -->fn6 : (x: ExcludeWithDefault) => void -+>fn6 : (x: ExcludeWithDefault) => void - >x : ExcludeWithDefault - - var y: T = x; -@@= skipped -14, +14 lines =@@ - } - - 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> -@@= skipped -10, +10 lines =@@ - >params : Pick> - - function fn8(x: ExtractWithDefault) { -->fn8 : (x: ExtractWithDefault) => void -+>fn8 : (x: ExtractWithDefault) => void - >x : ExtractWithDefault - - var y: T = x; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/conditionallyDuplicateOverloadsCausedByOverloadResolution.types b/testdata/baselines/reference/submodule/compiler/conditionallyDuplicateOverloadsCausedByOverloadResolution.types index 5cb9ee81712..1eb2649c9be 100644 --- a/testdata/baselines/reference/submodule/compiler/conditionallyDuplicateOverloadsCausedByOverloadResolution.types +++ b/testdata/baselines/reference/submodule/compiler/conditionallyDuplicateOverloadsCausedByOverloadResolution.types @@ -17,25 +17,25 @@ var out = foo((x, y) => { >out : boolean >foo((x, y) => { function bar(a: typeof x): void; function bar(b: typeof y): void; function bar() { } return bar;}) : boolean >foo : { (func: (x: string, y: string) => any): boolean; (func: (x: string, y: number) => any): string; } ->(x, y) => { function bar(a: typeof x): void; function bar(b: typeof y): void; function bar() { } return bar;} : (x: string, y: string) => { (a: string): void; (b: string): void; } +>(x, y) => { function bar(a: typeof x): void; function bar(b: typeof y): void; function bar() { } return bar;} : (x: string, y: string) => { (a: typeof x): void; (b: typeof y): void; } >x : string >y : string function bar(a: typeof x): void; ->bar : { (a: string): void; (b: string): void; } +>bar : { (a: typeof x): void; (b: typeof y): void; } >a : string >x : string function bar(b: typeof y): void; ->bar : { (a: string): void; (b: string): void; } +>bar : { (a: typeof x): void; (b: typeof y): void; } >b : string >y : string function bar() { } ->bar : { (a: string): void; (b: string): void; } +>bar : { (a: typeof x): void; (b: typeof y): void; } return bar; ->bar : { (a: string): void; (b: string): void; } +>bar : { (a: typeof x): void; (b: typeof y): void; } }); @@ -55,12 +55,12 @@ var out2 = foo2((x, y) => { >out2 : boolean >foo2((x, y) => { var bar: { (a: typeof x): void; (b: typeof y): void; }; return bar;}) : boolean >foo2 : { (func: (x: string, y: string) => any): boolean; (func: (x: string, y: number) => any): string; } ->(x, y) => { var bar: { (a: typeof x): void; (b: typeof y): void; }; return bar;} : (x: string, y: string) => { (a: string): void; (b: string): void; } +>(x, y) => { var bar: { (a: typeof x): void; (b: typeof y): void; }; return bar;} : (x: string, y: string) => { (a: typeof x): void; (b: typeof y): void; } >x : string >y : string var bar: { ->bar : { (a: string): void; (b: string): void; } +>bar : { (a: typeof x): void; (b: typeof y): void; } (a: typeof x): void; >a : string @@ -72,6 +72,6 @@ var out2 = foo2((x, y) => { }; return bar; ->bar : { (a: string): void; (b: string): void; } +>bar : { (a: typeof x): void; (b: typeof y): void; } }); diff --git a/testdata/baselines/reference/submodule/compiler/conditionallyDuplicateOverloadsCausedByOverloadResolution.types.diff b/testdata/baselines/reference/submodule/compiler/conditionallyDuplicateOverloadsCausedByOverloadResolution.types.diff deleted file mode 100644 index 8b679406268..00000000000 --- a/testdata/baselines/reference/submodule/compiler/conditionallyDuplicateOverloadsCausedByOverloadResolution.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.conditionallyDuplicateOverloadsCausedByOverloadResolution.types -+++ new.conditionallyDuplicateOverloadsCausedByOverloadResolution.types -@@= skipped -16, +16 lines =@@ - >out : boolean - >foo((x, y) => { function bar(a: typeof x): void; function bar(b: typeof y): void; function bar() { } return bar;}) : boolean - >foo : { (func: (x: string, y: string) => any): boolean; (func: (x: string, y: number) => any): string; } -->(x, y) => { function bar(a: typeof x): void; function bar(b: typeof y): void; function bar() { } return bar;} : (x: string, y: string) => { (a: typeof x): void; (b: typeof y): void; } -+>(x, y) => { function bar(a: typeof x): void; function bar(b: typeof y): void; function bar() { } return bar;} : (x: string, y: string) => { (a: string): void; (b: string): void; } - >x : string - >y : string - - function bar(a: typeof x): void; -->bar : { (a: typeof x): void; (b: typeof y): void; } -+>bar : { (a: string): void; (b: string): void; } - >a : string - >x : string - - function bar(b: typeof y): void; -->bar : { (a: typeof x): void; (b: typeof y): void; } -+>bar : { (a: string): void; (b: string): void; } - >b : string - >y : string - - function bar() { } -->bar : { (a: typeof x): void; (b: typeof y): void; } -+>bar : { (a: string): void; (b: string): void; } - - return bar; -->bar : { (a: typeof x): void; (b: typeof y): void; } -+>bar : { (a: string): void; (b: string): void; } - - }); - -@@= skipped -38, +38 lines =@@ - >out2 : boolean - >foo2((x, y) => { var bar: { (a: typeof x): void; (b: typeof y): void; }; return bar;}) : boolean - >foo2 : { (func: (x: string, y: string) => any): boolean; (func: (x: string, y: number) => any): string; } -->(x, y) => { var bar: { (a: typeof x): void; (b: typeof y): void; }; return bar;} : (x: string, y: string) => { (a: typeof x): void; (b: typeof y): void; } -+>(x, y) => { var bar: { (a: typeof x): void; (b: typeof y): void; }; return bar;} : (x: string, y: string) => { (a: string): void; (b: string): void; } - >x : string - >y : string - - var bar: { -->bar : { (a: typeof x): void; (b: typeof y): void; } -+>bar : { (a: string): void; (b: string): void; } - - (a: typeof x): void; - >a : string -@@= skipped -17, +17 lines =@@ - - }; - return bar; -->bar : { (a: typeof x): void; (b: typeof y): void; } -+>bar : { (a: string): void; (b: string): void; } - - }); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace1.types b/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace1.types index 9fad6ac0221..2beb4a9e139 100644 --- a/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace1.types +++ b/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace1.types @@ -9,7 +9,7 @@ declare module "./index" { interface LoDashStatic { pick( ->pick : (object: T, ...props: U[]) => Pick +>pick : (object: T, ...props: Array) => Pick object: T, >object : T @@ -23,10 +23,10 @@ declare module "./index" { === node_modules/@types/lodash/pick.d.ts === import { pick } from "./index"; ->pick : (object: T, ...props: U[]) => Pick +>pick : (object: T, ...props: Array) => Pick export = pick; ->pick : (object: T, ...props: U[]) => Pick +>pick : (object: T, ...props: Array) => Pick === node_modules/@types/lodash/index.d.ts === /// @@ -46,7 +46,7 @@ declare namespace _ { === index.ts === import * as pick from 'lodash/pick'; ->pick : { default: (object: T, ...props: U[]) => Pick; } +>pick : { default: (object: T, ...props: Array) => Pick; } export const pick = () => pick(); >pick : () => any diff --git a/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace1.types.diff b/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace1.types.diff index 0ecb07dd180..a5441cbbd05 100644 --- a/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace1.types.diff +++ b/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace1.types.diff @@ -1,33 +1,11 @@ --- old.conflictingDeclarationsImportFromNamespace1.types +++ new.conflictingDeclarationsImportFromNamespace1.types -@@= skipped -8, +8 lines =@@ - - interface LoDashStatic { - pick( -->pick : (object: T, ...props: Array) => Pick -+>pick : (object: T, ...props: U[]) => Pick - - object: T, - >object : T -@@= skipped -14, +14 lines =@@ - - === node_modules/@types/lodash/pick.d.ts === - import { pick } from "./index"; -->pick : (object: T, ...props: Array) => Pick -+>pick : (object: T, ...props: U[]) => Pick - - export = pick; -->pick : (object: T, ...props: Array) => Pick -+>pick : (object: T, ...props: U[]) => Pick - - === node_modules/@types/lodash/index.d.ts === - /// -@@= skipped -23, +23 lines =@@ +@@= skipped -45, +45 lines =@@ === index.ts === import * as pick from 'lodash/pick'; ->pick : (object: T, ...props: Array) => Pick -+>pick : { default: (object: T, ...props: U[]) => Pick; } ++>pick : { default: (object: T, ...props: Array) => Pick; } export const pick = () => pick(); >pick : () => any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace2.types b/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace2.types index 7a7f08d7a83..a4d8c8ec041 100644 --- a/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace2.types +++ b/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace2.types @@ -9,7 +9,7 @@ declare module "./index" { interface LoDashStatic { pick: ( ->pick : (object: T, ...props: U[]) => Pick +>pick : (object: T, ...props: Array) => Pick object: T, >object : T @@ -23,10 +23,10 @@ declare module "./index" { === node_modules/@types/lodash/pick.d.ts === import { pick } from "./index"; ->pick : (object: T, ...props: U[]) => Pick +>pick : (object: T, ...props: Array) => Pick export = pick; ->pick : (object: T, ...props: U[]) => Pick +>pick : (object: T, ...props: Array) => Pick === node_modules/@types/lodash/index.d.ts === /// @@ -46,7 +46,7 @@ declare namespace _ { === index.ts === import * as pick from 'lodash/pick'; ->pick : { default: (object: T, ...props: U[]) => Pick; } +>pick : { default: (object: T, ...props: Array) => Pick; } export const pick = () => pick(); >pick : () => any diff --git a/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace2.types.diff b/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace2.types.diff index e0ff03fdc56..918f6b143d8 100644 --- a/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/conflictingDeclarationsImportFromNamespace2.types.diff @@ -1,33 +1,11 @@ --- old.conflictingDeclarationsImportFromNamespace2.types +++ new.conflictingDeclarationsImportFromNamespace2.types -@@= skipped -8, +8 lines =@@ - - interface LoDashStatic { - pick: ( -->pick : (object: T, ...props: Array) => Pick -+>pick : (object: T, ...props: U[]) => Pick - - object: T, - >object : T -@@= skipped -14, +14 lines =@@ - - === node_modules/@types/lodash/pick.d.ts === - import { pick } from "./index"; -->pick : (object: T, ...props: Array) => Pick -+>pick : (object: T, ...props: U[]) => Pick - - export = pick; -->pick : (object: T, ...props: Array) => Pick -+>pick : (object: T, ...props: U[]) => Pick - - === node_modules/@types/lodash/index.d.ts === - /// -@@= skipped -23, +23 lines =@@ +@@= skipped -45, +45 lines =@@ === index.ts === import * as pick from 'lodash/pick'; ->pick : (object: T, ...props: Array) => Pick -+>pick : { default: (object: T, ...props: U[]) => Pick; } ++>pick : { default: (object: T, ...props: Array) => Pick; } export const pick = () => pick(); >pick : () => any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/consistentAliasVsNonAliasRecordBehavior.types b/testdata/baselines/reference/submodule/compiler/consistentAliasVsNonAliasRecordBehavior.types index 711e7258ea1..05cad220e22 100644 --- a/testdata/baselines/reference/submodule/compiler/consistentAliasVsNonAliasRecordBehavior.types +++ b/testdata/baselines/reference/submodule/compiler/consistentAliasVsNonAliasRecordBehavior.types @@ -12,7 +12,7 @@ type Record2 = { }; function defaultRecord(x: Record<'a', string>, y: Record) { ->defaultRecord : (x: Record<"a", string>, y: Record) => void +>defaultRecord : (x: Record<'a', string>, y: Record) => void >x : Record<"a", string> >y : Record @@ -23,7 +23,7 @@ function defaultRecord(x: Record<'a', string>, y: Record) { } function customRecord(x: Record2<'a', string>, y: Record2) { ->customRecord : (x: Record2<"a", string>, y: Record2) => void +>customRecord : (x: Record2<'a', string>, y: Record2) => void >x : Record2<"a", string> >y : Record2 @@ -34,7 +34,7 @@ function customRecord(x: Record2<'a', string>, y: Record2) { } function mixed1(x: Record2<'a', string>, y: Record) { ->mixed1 : (x: Record2<"a", string>, y: Record) => void +>mixed1 : (x: Record2<'a', string>, y: Record) => void >x : Record2<"a", string> >y : Record @@ -45,7 +45,7 @@ function mixed1(x: Record2<'a', string>, y: Record) { } function mixed2(x: Record<'a', string>, y: Record2) { ->mixed2 : (x: Record<"a", string>, y: Record2) => void +>mixed2 : (x: Record<'a', string>, y: Record2) => void >x : Record<"a", string> >y : Record2 @@ -56,7 +56,7 @@ function mixed2(x: Record<'a', string>, y: Record2) { } function defaultRecord2(x: Record<'a', T>, y: Record) { ->defaultRecord2 : (x: Record<"a", T>, y: Record) => void +>defaultRecord2 : (x: Record<'a', T>, y: Record) => void >x : Record<"a", T> >y : Record @@ -67,7 +67,7 @@ function defaultRecord2(x: Record<'a', T>, y: Record) { } function customRecord2(x: Record2<'a', T>, y: Record2) { ->customRecord2 : (x: Record2<"a", T>, y: Record2) => void +>customRecord2 : (x: Record2<'a', T>, y: Record2) => void >x : Record2<"a", T> >y : Record2 @@ -78,7 +78,7 @@ function customRecord2(x: Record2<'a', T>, y: Record2) { } function mixed3(x: Record2<'a', T>, y: Record) { ->mixed3 : (x: Record2<"a", T>, y: Record) => void +>mixed3 : (x: Record2<'a', T>, y: Record) => void >x : Record2<"a", T> >y : Record @@ -89,7 +89,7 @@ function mixed3(x: Record2<'a', T>, y: Record) { } function mixed4(x: Record<'a', T>, y: Record2) { ->mixed4 : (x: Record<"a", T>, y: Record2) => void +>mixed4 : (x: Record<'a', T>, y: Record2) => void >x : Record<"a", T> >y : Record2 diff --git a/testdata/baselines/reference/submodule/compiler/consistentAliasVsNonAliasRecordBehavior.types.diff b/testdata/baselines/reference/submodule/compiler/consistentAliasVsNonAliasRecordBehavior.types.diff new file mode 100644 index 00000000000..45ef2833ed8 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/consistentAliasVsNonAliasRecordBehavior.types.diff @@ -0,0 +1,73 @@ +--- old.consistentAliasVsNonAliasRecordBehavior.types ++++ new.consistentAliasVsNonAliasRecordBehavior.types +@@= skipped -11, +11 lines =@@ + }; + + function defaultRecord(x: Record<'a', string>, y: Record) { +->defaultRecord : (x: Record<"a", string>, y: Record) => void ++>defaultRecord : (x: Record<'a', string>, y: Record) => void + >x : Record<"a", string> + >y : Record + +@@= skipped -11, +11 lines =@@ + } + + function customRecord(x: Record2<'a', string>, y: Record2) { +->customRecord : (x: Record2<"a", string>, y: Record2) => void ++>customRecord : (x: Record2<'a', string>, y: Record2) => void + >x : Record2<"a", string> + >y : Record2 + +@@= skipped -11, +11 lines =@@ + } + + function mixed1(x: Record2<'a', string>, y: Record) { +->mixed1 : (x: Record2<"a", string>, y: Record) => void ++>mixed1 : (x: Record2<'a', string>, y: Record) => void + >x : Record2<"a", string> + >y : Record + +@@= skipped -11, +11 lines =@@ + } + + function mixed2(x: Record<'a', string>, y: Record2) { +->mixed2 : (x: Record<"a", string>, y: Record2) => void ++>mixed2 : (x: Record<'a', string>, y: Record2) => void + >x : Record<"a", string> + >y : Record2 + +@@= skipped -11, +11 lines =@@ + } + + function defaultRecord2(x: Record<'a', T>, y: Record) { +->defaultRecord2 : (x: Record<"a", T>, y: Record) => void ++>defaultRecord2 : (x: Record<'a', T>, y: Record) => void + >x : Record<"a", T> + >y : Record + +@@= skipped -11, +11 lines =@@ + } + + function customRecord2(x: Record2<'a', T>, y: Record2) { +->customRecord2 : (x: Record2<"a", T>, y: Record2) => void ++>customRecord2 : (x: Record2<'a', T>, y: Record2) => void + >x : Record2<"a", T> + >y : Record2 + +@@= skipped -11, +11 lines =@@ + } + + function mixed3(x: Record2<'a', T>, y: Record) { +->mixed3 : (x: Record2<"a", T>, y: Record) => void ++>mixed3 : (x: Record2<'a', T>, y: Record) => void + >x : Record2<"a", T> + >y : Record + +@@= skipped -11, +11 lines =@@ + } + + function mixed4(x: Record<'a', T>, y: Record2) { +->mixed4 : (x: Record<"a", T>, y: Record2) => void ++>mixed4 : (x: Record<'a', T>, y: Record2) => void + >x : Record<"a", T> + >y : Record2 diff --git a/testdata/baselines/reference/submodule/compiler/constEnumToStringNoComments.types b/testdata/baselines/reference/submodule/compiler/constEnumToStringNoComments.types index 3d32bb36e80..de2e26008ba 100644 --- a/testdata/baselines/reference/submodule/compiler/constEnumToStringNoComments.types +++ b/testdata/baselines/reference/submodule/compiler/constEnumToStringNoComments.types @@ -35,108 +35,108 @@ const enum Foo { let x0 = Foo.X.toString(); >x0 : string >Foo.X.toString() : string ->Foo.X.toString : (radix?: number | undefined) => string +>Foo.X.toString : (radix?: number) => string >Foo.X : Foo.X >Foo : typeof Foo >X : Foo.X ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let x1 = Foo["X"].toString(); >x1 : string >Foo["X"].toString() : string ->Foo["X"].toString : (radix?: number | undefined) => string +>Foo["X"].toString : (radix?: number) => string >Foo["X"] : Foo.X >Foo : typeof Foo >"X" : "X" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let y0 = Foo.Y.toString(); >y0 : string >Foo.Y.toString() : string ->Foo.Y.toString : (radix?: number | undefined) => string +>Foo.Y.toString : (radix?: number) => string >Foo.Y : Foo.Y >Foo : typeof Foo >Y : Foo.Y ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let y1 = Foo["Y"].toString(); >y1 : string >Foo["Y"].toString() : string ->Foo["Y"].toString : (radix?: number | undefined) => string +>Foo["Y"].toString : (radix?: number) => string >Foo["Y"] : Foo.Y >Foo : typeof Foo >"Y" : "Y" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let z0 = Foo.Z.toString(); >z0 : string >Foo.Z.toString() : string ->Foo.Z.toString : (radix?: number | undefined) => string +>Foo.Z.toString : (radix?: number) => string >Foo.Z : Foo.Z >Foo : typeof Foo >Z : Foo.Z ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let z1 = Foo["Z"].toString(); >z1 : string >Foo["Z"].toString() : string ->Foo["Z"].toString : (radix?: number | undefined) => string +>Foo["Z"].toString : (radix?: number) => string >Foo["Z"] : Foo.Z >Foo : typeof Foo >"Z" : "Z" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let a0 = Foo.A.toString(); >a0 : string >Foo.A.toString() : string ->Foo.A.toString : (radix?: number | undefined) => string +>Foo.A.toString : (radix?: number) => string >Foo.A : Foo.A >Foo : typeof Foo >A : Foo.A ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let a1 = Foo["A"].toString(); >a1 : string >Foo["A"].toString() : string ->Foo["A"].toString : (radix?: number | undefined) => string +>Foo["A"].toString : (radix?: number) => string >Foo["A"] : Foo.A >Foo : typeof Foo >"A" : "A" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let b0 = Foo.B.toString(); >b0 : string >Foo.B.toString() : string ->Foo.B.toString : (radix?: number | undefined) => string +>Foo.B.toString : (radix?: number) => string >Foo.B : Foo.B >Foo : typeof Foo >B : Foo.B ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let b1 = Foo["B"].toString(); >b1 : string >Foo["B"].toString() : string ->Foo["B"].toString : (radix?: number | undefined) => string +>Foo["B"].toString : (radix?: number) => string >Foo["B"] : Foo.B >Foo : typeof Foo >"B" : "B" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let c0 = Foo.C.toString(); >c0 : string >Foo.C.toString() : string ->Foo.C.toString : (radix?: number | undefined) => string +>Foo.C.toString : (radix?: number) => string >Foo.C : Foo.A >Foo : typeof Foo >C : Foo.A ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let c1 = Foo["C"].toString(); >c1 : string >Foo["C"].toString() : string ->Foo["C"].toString : (radix?: number | undefined) => string +>Foo["C"].toString : (radix?: number) => string >Foo["C"] : Foo.A >Foo : typeof Foo >"C" : "C" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/constEnumToStringNoComments.types.diff b/testdata/baselines/reference/submodule/compiler/constEnumToStringNoComments.types.diff deleted file mode 100644 index c9fa2750d0c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/constEnumToStringNoComments.types.diff +++ /dev/null @@ -1,134 +0,0 @@ ---- old.constEnumToStringNoComments.types -+++ new.constEnumToStringNoComments.types -@@= skipped -34, +34 lines =@@ - let x0 = Foo.X.toString(); - >x0 : string - >Foo.X.toString() : string -->Foo.X.toString : (radix?: number) => string -+>Foo.X.toString : (radix?: number | undefined) => string - >Foo.X : Foo.X - >Foo : typeof Foo - >X : Foo.X -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let x1 = Foo["X"].toString(); - >x1 : string - >Foo["X"].toString() : string -->Foo["X"].toString : (radix?: number) => string -+>Foo["X"].toString : (radix?: number | undefined) => string - >Foo["X"] : Foo.X - >Foo : typeof Foo - >"X" : "X" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let y0 = Foo.Y.toString(); - >y0 : string - >Foo.Y.toString() : string -->Foo.Y.toString : (radix?: number) => string -+>Foo.Y.toString : (radix?: number | undefined) => string - >Foo.Y : Foo.Y - >Foo : typeof Foo - >Y : Foo.Y -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let y1 = Foo["Y"].toString(); - >y1 : string - >Foo["Y"].toString() : string -->Foo["Y"].toString : (radix?: number) => string -+>Foo["Y"].toString : (radix?: number | undefined) => string - >Foo["Y"] : Foo.Y - >Foo : typeof Foo - >"Y" : "Y" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let z0 = Foo.Z.toString(); - >z0 : string - >Foo.Z.toString() : string -->Foo.Z.toString : (radix?: number) => string -+>Foo.Z.toString : (radix?: number | undefined) => string - >Foo.Z : Foo.Z - >Foo : typeof Foo - >Z : Foo.Z -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let z1 = Foo["Z"].toString(); - >z1 : string - >Foo["Z"].toString() : string -->Foo["Z"].toString : (radix?: number) => string -+>Foo["Z"].toString : (radix?: number | undefined) => string - >Foo["Z"] : Foo.Z - >Foo : typeof Foo - >"Z" : "Z" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let a0 = Foo.A.toString(); - >a0 : string - >Foo.A.toString() : string -->Foo.A.toString : (radix?: number) => string -+>Foo.A.toString : (radix?: number | undefined) => string - >Foo.A : Foo.A - >Foo : typeof Foo - >A : Foo.A -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let a1 = Foo["A"].toString(); - >a1 : string - >Foo["A"].toString() : string -->Foo["A"].toString : (radix?: number) => string -+>Foo["A"].toString : (radix?: number | undefined) => string - >Foo["A"] : Foo.A - >Foo : typeof Foo - >"A" : "A" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let b0 = Foo.B.toString(); - >b0 : string - >Foo.B.toString() : string -->Foo.B.toString : (radix?: number) => string -+>Foo.B.toString : (radix?: number | undefined) => string - >Foo.B : Foo.B - >Foo : typeof Foo - >B : Foo.B -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let b1 = Foo["B"].toString(); - >b1 : string - >Foo["B"].toString() : string -->Foo["B"].toString : (radix?: number) => string -+>Foo["B"].toString : (radix?: number | undefined) => string - >Foo["B"] : Foo.B - >Foo : typeof Foo - >"B" : "B" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let c0 = Foo.C.toString(); - >c0 : string - >Foo.C.toString() : string -->Foo.C.toString : (radix?: number) => string -+>Foo.C.toString : (radix?: number | undefined) => string - >Foo.C : Foo.A - >Foo : typeof Foo - >C : Foo.A -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let c1 = Foo["C"].toString(); - >c1 : string - >Foo["C"].toString() : string -->Foo["C"].toString : (radix?: number) => string -+>Foo["C"].toString : (radix?: number | undefined) => string - >Foo["C"] : Foo.A - >Foo : typeof Foo - >"C" : "C" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/constEnumToStringWithComments.types b/testdata/baselines/reference/submodule/compiler/constEnumToStringWithComments.types index d050464d25a..41a781f4fdf 100644 --- a/testdata/baselines/reference/submodule/compiler/constEnumToStringWithComments.types +++ b/testdata/baselines/reference/submodule/compiler/constEnumToStringWithComments.types @@ -35,108 +35,108 @@ const enum Foo { let x0 = Foo.X.toString(); >x0 : string >Foo.X.toString() : string ->Foo.X.toString : (radix?: number | undefined) => string +>Foo.X.toString : (radix?: number) => string >Foo.X : Foo.X >Foo : typeof Foo >X : Foo.X ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let x1 = Foo["X"].toString(); >x1 : string >Foo["X"].toString() : string ->Foo["X"].toString : (radix?: number | undefined) => string +>Foo["X"].toString : (radix?: number) => string >Foo["X"] : Foo.X >Foo : typeof Foo >"X" : "X" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let y0 = Foo.Y.toString(); >y0 : string >Foo.Y.toString() : string ->Foo.Y.toString : (radix?: number | undefined) => string +>Foo.Y.toString : (radix?: number) => string >Foo.Y : Foo.Y >Foo : typeof Foo >Y : Foo.Y ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let y1 = Foo["Y"].toString(); >y1 : string >Foo["Y"].toString() : string ->Foo["Y"].toString : (radix?: number | undefined) => string +>Foo["Y"].toString : (radix?: number) => string >Foo["Y"] : Foo.Y >Foo : typeof Foo >"Y" : "Y" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let z0 = Foo.Z.toString(); >z0 : string >Foo.Z.toString() : string ->Foo.Z.toString : (radix?: number | undefined) => string +>Foo.Z.toString : (radix?: number) => string >Foo.Z : Foo.Z >Foo : typeof Foo >Z : Foo.Z ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let z1 = Foo["Z"].toString(); >z1 : string >Foo["Z"].toString() : string ->Foo["Z"].toString : (radix?: number | undefined) => string +>Foo["Z"].toString : (radix?: number) => string >Foo["Z"] : Foo.Z >Foo : typeof Foo >"Z" : "Z" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let a0 = Foo.A.toString(); >a0 : string >Foo.A.toString() : string ->Foo.A.toString : (radix?: number | undefined) => string +>Foo.A.toString : (radix?: number) => string >Foo.A : Foo.A >Foo : typeof Foo >A : Foo.A ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let a1 = Foo["A"].toString(); >a1 : string >Foo["A"].toString() : string ->Foo["A"].toString : (radix?: number | undefined) => string +>Foo["A"].toString : (radix?: number) => string >Foo["A"] : Foo.A >Foo : typeof Foo >"A" : "A" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let b0 = Foo.B.toString(); >b0 : string >Foo.B.toString() : string ->Foo.B.toString : (radix?: number | undefined) => string +>Foo.B.toString : (radix?: number) => string >Foo.B : Foo.B >Foo : typeof Foo >B : Foo.B ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let b1 = Foo["B"].toString(); >b1 : string >Foo["B"].toString() : string ->Foo["B"].toString : (radix?: number | undefined) => string +>Foo["B"].toString : (radix?: number) => string >Foo["B"] : Foo.B >Foo : typeof Foo >"B" : "B" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let c0 = Foo.C.toString(); >c0 : string >Foo.C.toString() : string ->Foo.C.toString : (radix?: number | undefined) => string +>Foo.C.toString : (radix?: number) => string >Foo.C : Foo.A >Foo : typeof Foo >C : Foo.A ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let c1 = Foo["C"].toString(); >c1 : string >Foo["C"].toString() : string ->Foo["C"].toString : (radix?: number | undefined) => string +>Foo["C"].toString : (radix?: number) => string >Foo["C"] : Foo.A >Foo : typeof Foo >"C" : "C" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/constEnumToStringWithComments.types.diff b/testdata/baselines/reference/submodule/compiler/constEnumToStringWithComments.types.diff deleted file mode 100644 index 5106bb5b350..00000000000 --- a/testdata/baselines/reference/submodule/compiler/constEnumToStringWithComments.types.diff +++ /dev/null @@ -1,134 +0,0 @@ ---- old.constEnumToStringWithComments.types -+++ new.constEnumToStringWithComments.types -@@= skipped -34, +34 lines =@@ - let x0 = Foo.X.toString(); - >x0 : string - >Foo.X.toString() : string -->Foo.X.toString : (radix?: number) => string -+>Foo.X.toString : (radix?: number | undefined) => string - >Foo.X : Foo.X - >Foo : typeof Foo - >X : Foo.X -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let x1 = Foo["X"].toString(); - >x1 : string - >Foo["X"].toString() : string -->Foo["X"].toString : (radix?: number) => string -+>Foo["X"].toString : (radix?: number | undefined) => string - >Foo["X"] : Foo.X - >Foo : typeof Foo - >"X" : "X" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let y0 = Foo.Y.toString(); - >y0 : string - >Foo.Y.toString() : string -->Foo.Y.toString : (radix?: number) => string -+>Foo.Y.toString : (radix?: number | undefined) => string - >Foo.Y : Foo.Y - >Foo : typeof Foo - >Y : Foo.Y -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let y1 = Foo["Y"].toString(); - >y1 : string - >Foo["Y"].toString() : string -->Foo["Y"].toString : (radix?: number) => string -+>Foo["Y"].toString : (radix?: number | undefined) => string - >Foo["Y"] : Foo.Y - >Foo : typeof Foo - >"Y" : "Y" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let z0 = Foo.Z.toString(); - >z0 : string - >Foo.Z.toString() : string -->Foo.Z.toString : (radix?: number) => string -+>Foo.Z.toString : (radix?: number | undefined) => string - >Foo.Z : Foo.Z - >Foo : typeof Foo - >Z : Foo.Z -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let z1 = Foo["Z"].toString(); - >z1 : string - >Foo["Z"].toString() : string -->Foo["Z"].toString : (radix?: number) => string -+>Foo["Z"].toString : (radix?: number | undefined) => string - >Foo["Z"] : Foo.Z - >Foo : typeof Foo - >"Z" : "Z" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let a0 = Foo.A.toString(); - >a0 : string - >Foo.A.toString() : string -->Foo.A.toString : (radix?: number) => string -+>Foo.A.toString : (radix?: number | undefined) => string - >Foo.A : Foo.A - >Foo : typeof Foo - >A : Foo.A -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let a1 = Foo["A"].toString(); - >a1 : string - >Foo["A"].toString() : string -->Foo["A"].toString : (radix?: number) => string -+>Foo["A"].toString : (radix?: number | undefined) => string - >Foo["A"] : Foo.A - >Foo : typeof Foo - >"A" : "A" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let b0 = Foo.B.toString(); - >b0 : string - >Foo.B.toString() : string -->Foo.B.toString : (radix?: number) => string -+>Foo.B.toString : (radix?: number | undefined) => string - >Foo.B : Foo.B - >Foo : typeof Foo - >B : Foo.B -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let b1 = Foo["B"].toString(); - >b1 : string - >Foo["B"].toString() : string -->Foo["B"].toString : (radix?: number) => string -+>Foo["B"].toString : (radix?: number | undefined) => string - >Foo["B"] : Foo.B - >Foo : typeof Foo - >"B" : "B" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let c0 = Foo.C.toString(); - >c0 : string - >Foo.C.toString() : string -->Foo.C.toString : (radix?: number) => string -+>Foo.C.toString : (radix?: number | undefined) => string - >Foo.C : Foo.A - >Foo : typeof Foo - >C : Foo.A -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let c1 = Foo["C"].toString(); - >c1 : string - >Foo["C"].toString() : string -->Foo["C"].toString : (radix?: number) => string -+>Foo["C"].toString : (radix?: number | undefined) => string - >Foo["C"] : Foo.A - >Foo : typeof Foo - >"C" : "C" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/constEnums.types b/testdata/baselines/reference/submodule/compiler/constEnums.types index 89eac65932b..bc7765572aa 100644 --- a/testdata/baselines/reference/submodule/compiler/constEnums.types +++ b/testdata/baselines/reference/submodule/compiler/constEnums.types @@ -571,7 +571,7 @@ function foo(x: Enum1) { } function bar(e: A.B.C.E): number { ->bar : (e: I) => number +>bar : (e: A.B.C.E) => number >e : I >A : any >B : any diff --git a/testdata/baselines/reference/submodule/compiler/constEnums.types.diff b/testdata/baselines/reference/submodule/compiler/constEnums.types.diff deleted file mode 100644 index 9b3bf873577..00000000000 --- a/testdata/baselines/reference/submodule/compiler/constEnums.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.constEnums.types -+++ new.constEnums.types -@@= skipped -570, +570 lines =@@ - } - - function bar(e: A.B.C.E): number { -->bar : (e: A.B.C.E) => number -+>bar : (e: I) => number - >e : I - >A : any - >B : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/constantOverloadFunction.types b/testdata/baselines/reference/submodule/compiler/constantOverloadFunction.types index 9208c8d5b9a..164104b39f7 100644 --- a/testdata/baselines/reference/submodule/compiler/constantOverloadFunction.types +++ b/testdata/baselines/reference/submodule/compiler/constantOverloadFunction.types @@ -21,23 +21,23 @@ class Derived3 extends Base { biz() { } } >biz : () => void function foo(tagName: 'canvas'): Derived1; ->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >tagName : "canvas" function foo(tagName: 'div'): Derived2; ->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >tagName : "div" function foo(tagName: 'span'): Derived3; ->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >tagName : "span" function foo(tagName: string): Base; ->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >tagName : string function foo(tagName: any): Base { ->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >tagName : any return null; diff --git a/testdata/baselines/reference/submodule/compiler/constantOverloadFunction.types.diff b/testdata/baselines/reference/submodule/compiler/constantOverloadFunction.types.diff new file mode 100644 index 00000000000..86c8300b8b2 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/constantOverloadFunction.types.diff @@ -0,0 +1,31 @@ +--- old.constantOverloadFunction.types ++++ new.constantOverloadFunction.types +@@= skipped -20, +20 lines =@@ + >biz : () => void + + function foo(tagName: 'canvas'): Derived1; +->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >tagName : "canvas" + + function foo(tagName: 'div'): Derived2; +->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >tagName : "div" + + function foo(tagName: 'span'): Derived3; +->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >tagName : "span" + + function foo(tagName: string): Base; +->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >tagName : string + + function foo(tagName: any): Base { +->foo : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>foo : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >tagName : any + + return null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/constantOverloadFunctionNoSubtypeError.types b/testdata/baselines/reference/submodule/compiler/constantOverloadFunctionNoSubtypeError.types index 37d282c6e95..6d1645db46f 100644 --- a/testdata/baselines/reference/submodule/compiler/constantOverloadFunctionNoSubtypeError.types +++ b/testdata/baselines/reference/submodule/compiler/constantOverloadFunctionNoSubtypeError.types @@ -21,23 +21,23 @@ class Derived3 extends Base { biz() { } } >biz : () => void function foo(tagName: 'canvas'): Derived3; ->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } +>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } >tagName : "canvas" function foo(tagName: 'div'): Derived2; ->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } +>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } >tagName : "div" function foo(tagName: 'span'): Derived1; ->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } +>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } >tagName : "span" function foo(tagName: number): Base; ->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } +>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } >tagName : number function foo(tagName: any): Base { ->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } +>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } >tagName : any return null; diff --git a/testdata/baselines/reference/submodule/compiler/constantOverloadFunctionNoSubtypeError.types.diff b/testdata/baselines/reference/submodule/compiler/constantOverloadFunctionNoSubtypeError.types.diff new file mode 100644 index 00000000000..c318398edcf --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/constantOverloadFunctionNoSubtypeError.types.diff @@ -0,0 +1,31 @@ +--- old.constantOverloadFunctionNoSubtypeError.types ++++ new.constantOverloadFunctionNoSubtypeError.types +@@= skipped -20, +20 lines =@@ + >biz : () => void + + function foo(tagName: 'canvas'): Derived3; +->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } ++>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } + >tagName : "canvas" + + function foo(tagName: 'div'): Derived2; +->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } ++>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } + >tagName : "div" + + function foo(tagName: 'span'): Derived1; +->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } ++>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } + >tagName : "span" + + function foo(tagName: number): Base; +->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } ++>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } + >tagName : number + + function foo(tagName: any): Base { +->foo : { (tagName: "canvas"): Derived3; (tagName: "div"): Derived2; (tagName: "span"): Derived1; (tagName: number): Base; } ++>foo : { (tagName: 'canvas'): Derived3; (tagName: 'div'): Derived2; (tagName: 'span'): Derived1; (tagName: number): Base; } + >tagName : any + + return null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/constructorWithIncompleteTypeAnnotation.types b/testdata/baselines/reference/submodule/compiler/constructorWithIncompleteTypeAnnotation.types index a791f96e1a2..12837189523 100644 --- a/testdata/baselines/reference/submodule/compiler/constructorWithIncompleteTypeAnnotation.types +++ b/testdata/baselines/reference/submodule/compiler/constructorWithIncompleteTypeAnnotation.types @@ -284,13 +284,13 @@ namespace TypeScriptAllInOne { >f : string >hexchar : boolean >float.toString() : string ->float.toString : (radix?: number | undefined) => string +>float.toString : (radix?: number) => string >float : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >float2.toString() : string ->float2.toString : (radix?: number | undefined) => string +>float2.toString : (radix?: number) => string >float2 : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >reg.toString() : string >reg.toString : () => string >reg : RegExp diff --git a/testdata/baselines/reference/submodule/compiler/constructorWithIncompleteTypeAnnotation.types.diff b/testdata/baselines/reference/submodule/compiler/constructorWithIncompleteTypeAnnotation.types.diff deleted file mode 100644 index ad157e3ce27..00000000000 --- a/testdata/baselines/reference/submodule/compiler/constructorWithIncompleteTypeAnnotation.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.constructorWithIncompleteTypeAnnotation.types -+++ new.constructorWithIncompleteTypeAnnotation.types -@@= skipped -283, +283 lines =@@ - >f : string - >hexchar : boolean - >float.toString() : string -->float.toString : (radix?: number) => string -+>float.toString : (radix?: number | undefined) => string - >float : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >float2.toString() : string -->float2.toString : (radix?: number) => string -+>float2.toString : (radix?: number | undefined) => string - >float2 : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >reg.toString() : string - >reg.toString : () => string - >reg : RegExp \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextSensitiveReturnTypeInference.types b/testdata/baselines/reference/submodule/compiler/contextSensitiveReturnTypeInference.types index 5bb2ecf3440..0f21aa53bd5 100644 --- a/testdata/baselines/reference/submodule/compiler/contextSensitiveReturnTypeInference.types +++ b/testdata/baselines/reference/submodule/compiler/contextSensitiveReturnTypeInference.types @@ -65,7 +65,7 @@ test( >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: { foo: number; }, data: IData) => { fn1: () => number; fn2: boolean; } +>(deps: typeof DEPS, data) => ({ fn1: function() { return deps.foo }, fn2: data.bar }) : (deps: typeof DEPS, data: IData) => { fn1: () => number; fn2: boolean; } >deps : { foo: number; } >DEPS : { foo: number; } >data : IData diff --git a/testdata/baselines/reference/submodule/compiler/contextSensitiveReturnTypeInference.types.diff b/testdata/baselines/reference/submodule/compiler/contextSensitiveReturnTypeInference.types.diff deleted file mode 100644 index 8b07b87d3ce..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextSensitiveReturnTypeInference.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.contextSensitiveReturnTypeInference.types -+++ new.contextSensitiveReturnTypeInference.types -@@= skipped -64, +64 lines =@@ - >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; } -+>(deps: typeof DEPS, data) => ({ fn1: function() { return deps.foo }, fn2: data.bar }) : (deps: { foo: number; }, data: IData) => { fn1: () => number; fn2: boolean; } - >deps : { foo: number; } - >DEPS : { foo: number; } - >data : IData \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualOuterTypeParameters.types b/testdata/baselines/reference/submodule/compiler/contextualOuterTypeParameters.types index 496660294e5..03e7ade2082 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualOuterTypeParameters.types +++ b/testdata/baselines/reference/submodule/compiler/contextualOuterTypeParameters.types @@ -21,7 +21,7 @@ f(t => { >false : false type IsObject = { x: typeof t } extends { x: string } ? true : false; ->IsObject : { x: T; } extends { x: string; } ? true : false +>IsObject : { x: typeof t; } extends { x: string; } ? true : false >x : T >t : T >x : string @@ -43,7 +43,7 @@ const fn1: (x: T) => void = t => { >false : false type IsObject = { x: typeof t } extends { x: string } ? true : false; ->IsObject : { x: T; } extends { x: string; } ? true : false +>IsObject : { x: typeof t; } extends { x: string; } ? true : false >x : T >t : T >x : string @@ -66,7 +66,7 @@ const fn2: (x: T) => void = function test(t) { >false : false type IsObject = { x: typeof t } extends { x: string } ? true : false; ->IsObject : { x: T; } extends { x: string; } ? true : false +>IsObject : { x: typeof t; } extends { x: string; } ? true : false >x : T >t : T >x : string @@ -92,7 +92,7 @@ const obj: { f: (x: T) => void } = { >false : false type IsObject = { x: typeof t } extends { x: string } ? true : false; ->IsObject : { x: T; } extends { x: string; } ? true : false +>IsObject : { x: typeof t; } extends { x: string; } ? true : false >x : T >t : T >x : string diff --git a/testdata/baselines/reference/submodule/compiler/contextualOuterTypeParameters.types.diff b/testdata/baselines/reference/submodule/compiler/contextualOuterTypeParameters.types.diff deleted file mode 100644 index f5add895b25..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualOuterTypeParameters.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.contextualOuterTypeParameters.types -+++ new.contextualOuterTypeParameters.types -@@= skipped -20, +20 lines =@@ - >false : false - - type IsObject = { x: typeof t } extends { x: string } ? true : false; -->IsObject : { x: typeof t; } extends { x: string; } ? true : false -+>IsObject : { x: T; } extends { x: string; } ? true : false - >x : T - >t : T - >x : string -@@= skipped -22, +22 lines =@@ - >false : false - - type IsObject = { x: typeof t } extends { x: string } ? true : false; -->IsObject : { x: typeof t; } extends { x: string; } ? true : false -+>IsObject : { x: T; } extends { x: string; } ? true : false - >x : T - >t : T - >x : string -@@= skipped -23, +23 lines =@@ - >false : false - - type IsObject = { x: typeof t } extends { x: string } ? true : false; -->IsObject : { x: typeof t; } extends { x: string; } ? true : false -+>IsObject : { x: T; } extends { x: string; } ? true : false - >x : T - >t : T - >x : string -@@= skipped -26, +26 lines =@@ - >false : false - - type IsObject = { x: typeof t } extends { x: string } ? true : false; -->IsObject : { x: typeof t; } extends { x: string; } ? true : false -+>IsObject : { x: T; } extends { x: string; } ? true : false - >x : T - >t : T - >x : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualOverloadListFromArrayUnion.types b/testdata/baselines/reference/submodule/compiler/contextualOverloadListFromArrayUnion.types index 9bab29ff021..146bfdeab21 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualOverloadListFromArrayUnion.types +++ b/testdata/baselines/reference/submodule/compiler/contextualOverloadListFromArrayUnion.types @@ -151,7 +151,7 @@ series([ >cb => setTimeout(() => cb(null, 1), 300) : (cb: Callback) => number >cb : Callback >setTimeout(() => cb(null, 1), 300) : number ->setTimeout : (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]) => number +>setTimeout : (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number >() => cb(null, 1) : () => unknown >cb(null, 1) : unknown >cb : Callback @@ -162,7 +162,7 @@ series([ >cb => setTimeout(() => cb(null, 2), 200) : (cb: Callback) => number >cb : Callback >setTimeout(() => cb(null, 2), 200) : number ->setTimeout : (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]) => number +>setTimeout : (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number >() => cb(null, 2) : () => unknown >cb(null, 2) : unknown >cb : Callback @@ -173,7 +173,7 @@ series([ >cb => setTimeout(() => cb(null, 3), 100) : (cb: Callback) => number >cb : Callback >setTimeout(() => cb(null, 3), 100) : number ->setTimeout : (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]) => number +>setTimeout : (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number >() => cb(null, 3) : () => unknown >cb(null, 3) : unknown >cb : Callback diff --git a/testdata/baselines/reference/submodule/compiler/contextualOverloadListFromArrayUnion.types.diff b/testdata/baselines/reference/submodule/compiler/contextualOverloadListFromArrayUnion.types.diff deleted file mode 100644 index 2ec2329de2f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualOverloadListFromArrayUnion.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.contextualOverloadListFromArrayUnion.types -+++ new.contextualOverloadListFromArrayUnion.types -@@= skipped -150, +150 lines =@@ - >cb => setTimeout(() => cb(null, 1), 300) : (cb: Callback) => number - >cb : Callback - >setTimeout(() => cb(null, 1), 300) : number -->setTimeout : (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number -+>setTimeout : (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]) => number - >() => cb(null, 1) : () => unknown - >cb(null, 1) : unknown - >cb : Callback -@@= skipped -11, +11 lines =@@ - >cb => setTimeout(() => cb(null, 2), 200) : (cb: Callback) => number - >cb : Callback - >setTimeout(() => cb(null, 2), 200) : number -->setTimeout : (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number -+>setTimeout : (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]) => number - >() => cb(null, 2) : () => unknown - >cb(null, 2) : unknown - >cb : Callback -@@= skipped -11, +11 lines =@@ - >cb => setTimeout(() => cb(null, 3), 100) : (cb: Callback) => number - >cb : Callback - >setTimeout(() => cb(null, 3), 100) : number -->setTimeout : (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number -+>setTimeout : (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]) => number - >() => cb(null, 3) : () => unknown - >cb(null, 3) : unknown - >cb : Callback \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference1.types b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference1.types index c3899ff2f55..75058ea42a4 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference1.types +++ b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference1.types @@ -11,7 +11,7 @@ declare function effectGen(f: () => AEff): Effect; >f : () => AEff declare function effectFn>( ->effectFn : (body: (...args: Args) => unknown) => (...args: Args) => Effect +>effectFn : >(body: (...args: Args) => unknown) => (...args: Args) => Effect body: (...args: Args) => unknown, >body : (...args: Args) => unknown @@ -57,7 +57,7 @@ layerEffect( fn: effectFn(function (a) { >fn : (a: string) => Effect >effectFn(function (a) { a; // string }) : (a: string) => Effect ->effectFn : (body: (...args: Args) => unknown) => (...args: Args) => Effect +>effectFn : >(body: (...args: Args) => unknown) => (...args: Args) => Effect >function (a) { a; // string } : (a: string) => void >a : string diff --git a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference1.types.diff b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference1.types.diff deleted file mode 100644 index d529eb465e1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference1.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.contextualParamTypeVsNestedReturnTypeInference1.types -+++ new.contextualParamTypeVsNestedReturnTypeInference1.types -@@= skipped -10, +10 lines =@@ - >f : () => AEff - - declare function effectFn>( -->effectFn : >(body: (...args: Args) => unknown) => (...args: Args) => Effect -+>effectFn : (body: (...args: Args) => unknown) => (...args: Args) => Effect - - body: (...args: Args) => unknown, - >body : (...args: Args) => unknown -@@= skipped -46, +46 lines =@@ - fn: effectFn(function (a) { - >fn : (a: string) => Effect - >effectFn(function (a) { a; // string }) : (a: string) => Effect -->effectFn : >(body: (...args: Args) => unknown) => (...args: Args) => Effect -+>effectFn : (body: (...args: Args) => unknown) => (...args: Args) => Effect - >function (a) { a; // string } : (a: string) => void - >a : string diff --git a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference2.types b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference2.types index 87eb556072a..cd2c804d59d 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference2.types +++ b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference2.types @@ -17,7 +17,7 @@ interface Effect { } declare function effectGen, AEff>( ->effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> +>effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> f: () => Generator >f : () => Generator @@ -37,7 +37,7 @@ declare function effectGen, AEff>( >; declare function effectFn< ->effectFn : , AEff, Args extends any[]>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> +>effectFn : , AEff, Args extends Array>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> Eff extends Effect, AEff, @@ -113,7 +113,7 @@ declare function Tag( class Foo extends Tag("Foo")< >Foo : Foo ->Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> +>Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> >Tag("Foo") : () => TagClass >Tag : (id: Id) => () => TagClass >"Foo" : "Foo" @@ -121,7 +121,7 @@ class Foo extends Tag("Foo")< Foo, { fn: (a: string) => Effect; ->fn : (a: string) => Effect +>fn : (a: string) => Effect >a : string } >() {} @@ -135,7 +135,7 @@ layerEffect( effectGen(function* () { >effectGen(function* () { return { fn: effectFn(function* (a) { a; // string }), }; }) : Effect<{ fn: (a: string) => Effect; }, never, never> ->effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> +>effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> >function* () { return { fn: effectFn(function* (a) { a; // string }), }; } : () => Generator Effect; }, never> return { @@ -144,7 +144,7 @@ layerEffect( fn: effectFn(function* (a) { >fn : (a: string) => Effect >effectFn(function* (a) { a; // string }) : (a: string) => Effect ->effectFn : , AEff, Args extends any[]>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> +>effectFn : , AEff, Args extends Array>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> >function* (a) { a; // string } : (a: string) => Generator >a : string diff --git a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference2.types.diff b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference2.types.diff deleted file mode 100644 index a651207a5f7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference2.types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.contextualParamTypeVsNestedReturnTypeInference2.types -+++ new.contextualParamTypeVsNestedReturnTypeInference2.types -@@= skipped -16, +16 lines =@@ - } - - declare function effectGen, AEff>( -->effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> -+>effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> - - f: () => Generator - >f : () => Generator -@@= skipped -20, +20 lines =@@ - >; - - declare function effectFn< -->effectFn : , AEff, Args extends Array>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> -+>effectFn : , AEff, Args extends any[]>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> - - Eff extends Effect, - AEff, -@@= skipped -76, +76 lines =@@ - - class Foo extends Tag("Foo")< - >Foo : Foo -->Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> -+>Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> - >Tag("Foo") : () => TagClass - >Tag : (id: Id) => () => TagClass - >"Foo" : "Foo" -@@= skipped -8, +8 lines =@@ - Foo, - { - fn: (a: string) => Effect; -->fn : (a: string) => Effect -+>fn : (a: string) => Effect - >a : string - } - >() {} -@@= skipped -14, +14 lines =@@ - - effectGen(function* () { - >effectGen(function* () { return { fn: effectFn(function* (a) { a; // string }), }; }) : Effect<{ fn: (a: string) => Effect; }, never, never> -->effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> -+>effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> - >function* () { return { fn: effectFn(function* (a) { a; // string }), }; } : () => Generator Effect; }, never> - - return { -@@= skipped -9, +9 lines =@@ - fn: effectFn(function* (a) { - >fn : (a: string) => Effect - >effectFn(function* (a) { a; // string }) : (a: string) => Effect -->effectFn : , AEff, Args extends Array>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> -+>effectFn : , AEff, Args extends any[]>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect] ? R : never> - >function* (a) { a; // string } : (a: string) => Generator - >a : string diff --git a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference3.types b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference3.types index eb89311dca1..bc6b0ee86a9 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference3.types +++ b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference3.types @@ -17,7 +17,7 @@ interface Effect { } declare function effectGen, AEff>( ->effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> +>effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> f: () => Generator, >f : () => Generator @@ -29,7 +29,7 @@ declare function effectGen, AEff>( >; declare function effectFn< ->effectFn : , AEff, Args extends any[]>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> +>effectFn : , AEff, Args extends Array>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> Eff extends Effect, AEff, @@ -97,7 +97,7 @@ declare function Tag( class Foo extends Tag("Foo")< >Foo : Foo ->Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> +>Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> >Tag("Foo") : () => TagClass >Tag : (id: Id) => () => TagClass >"Foo" : "Foo" @@ -105,7 +105,7 @@ class Foo extends Tag("Foo")< Foo, { fn: (a: string) => Effect; ->fn : (a: string) => Effect +>fn : (a: string) => Effect >a : string } >() {} @@ -119,7 +119,7 @@ layerEffect( effectGen(function* () { >effectGen(function* () { return { fn: effectFn(function* (a) { a; // string }), }; }) : Effect<{ fn: (a: string) => Effect; }, unknown, unknown> ->effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> +>effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> >function* () { return { fn: effectFn(function* (a) { a; // string }), }; } : () => Generator Effect; }, never> return { @@ -128,7 +128,7 @@ layerEffect( fn: effectFn(function* (a) { >fn : (a: string) => Effect >effectFn(function* (a) { a; // string }) : (a: string) => Effect ->effectFn : , AEff, Args extends any[]>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> +>effectFn : , AEff, Args extends Array>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> >function* (a) { a; // string } : (a: string) => Generator >a : string diff --git a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference3.types.diff b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference3.types.diff deleted file mode 100644 index 61cd7fa0337..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference3.types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.contextualParamTypeVsNestedReturnTypeInference3.types -+++ new.contextualParamTypeVsNestedReturnTypeInference3.types -@@= skipped -16, +16 lines =@@ - } - - declare function effectGen, AEff>( -->effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> -+>effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> - - f: () => Generator, - >f : () => Generator -@@= skipped -12, +12 lines =@@ - >; - - declare function effectFn< -->effectFn : , AEff, Args extends Array>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> -+>effectFn : , AEff, Args extends any[]>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> - - Eff extends Effect, - AEff, -@@= skipped -68, +68 lines =@@ - - class Foo extends Tag("Foo")< - >Foo : Foo -->Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> -+>Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> - >Tag("Foo") : () => TagClass - >Tag : (id: Id) => () => TagClass - >"Foo" : "Foo" -@@= skipped -8, +8 lines =@@ - Foo, - { - fn: (a: string) => Effect; -->fn : (a: string) => Effect -+>fn : (a: string) => Effect - >a : string - } - >() {} -@@= skipped -14, +14 lines =@@ - - effectGen(function* () { - >effectGen(function* () { return { fn: effectFn(function* (a) { a; // string }), }; }) : Effect<{ fn: (a: string) => Effect; }, unknown, unknown> -->effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> -+>effectGen : , AEff>(f: () => Generator) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> - >function* () { return { fn: effectFn(function* (a) { a; // string }), }; } : () => Generator Effect; }, never> - - return { -@@= skipped -9, +9 lines =@@ - fn: effectFn(function* (a) { - >fn : (a: string) => Effect - >effectFn(function* (a) { a; // string }) : (a: string) => Effect -->effectFn : , AEff, Args extends Array>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> -+>effectFn : , AEff, Args extends any[]>(body: (...args: Args) => Generator) => (...args: Args) => Effect] ? E : never, [Eff] extends [Effect] ? R : never> - >function* (a) { a; // string } : (a: string) => Generator - >a : string diff --git a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference4.types b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference4.types index 1e8e0144bfd..1af2bf0f6c4 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference4.types +++ b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference4.types @@ -25,7 +25,7 @@ declare function effectGen( ): Effect; declare function effectFn>( ->effectFn : (body: (...args: Args) => Generator, AEff, never>) => (...args: Args) => Effect +>effectFn : >(body: (...args: Args) => Generator, AEff, never>) => (...args: Args) => Effect body: (...args: Args) => Generator, AEff, never>, >body : (...args: Args) => Generator, AEff, never> @@ -82,7 +82,7 @@ declare function Tag( class Foo extends Tag("Foo")< >Foo : Foo ->Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> +>Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> >Tag("Foo") : () => TagClass >Tag : (id: Id) => () => TagClass >"Foo" : "Foo" @@ -90,7 +90,7 @@ class Foo extends Tag("Foo")< Foo, { fn: (a: string) => Effect; ->fn : (a: string) => Effect +>fn : (a: string) => Effect >a : string } >() {} @@ -113,7 +113,7 @@ layerEffect( fn: effectFn(function* (a) { >fn : (a: string) => Effect >effectFn(function* (a) { a; // string }) : (a: string) => Effect ->effectFn : (body: (...args: Args) => Generator, AEff, never>) => (...args: Args) => Effect +>effectFn : >(body: (...args: Args) => Generator, AEff, never>) => (...args: Args) => Effect >function* (a) { a; // string } : (a: string) => Generator >a : string diff --git a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference4.types.diff b/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference4.types.diff deleted file mode 100644 index 8855f8dfb42..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualParamTypeVsNestedReturnTypeInference4.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.contextualParamTypeVsNestedReturnTypeInference4.types -+++ new.contextualParamTypeVsNestedReturnTypeInference4.types -@@= skipped -24, +24 lines =@@ - ): Effect; - - declare function effectFn>( -->effectFn : >(body: (...args: Args) => Generator, AEff, never>) => (...args: Args) => Effect -+>effectFn : (body: (...args: Args) => Generator, AEff, never>) => (...args: Args) => Effect - - body: (...args: Args) => Generator, AEff, never>, - >body : (...args: Args) => Generator, AEff, never> -@@= skipped -57, +57 lines =@@ - - class Foo extends Tag("Foo")< - >Foo : Foo -->Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> -+>Tag("Foo")< Foo, { fn: (a: string) => Effect; }>() : TagClassShape<"Foo", { fn: (a: string) => Effect; }> - >Tag("Foo") : () => TagClass - >Tag : (id: Id) => () => TagClass - >"Foo" : "Foo" -@@= skipped -8, +8 lines =@@ - Foo, - { - fn: (a: string) => Effect; -->fn : (a: string) => Effect -+>fn : (a: string) => Effect - >a : string - } - >() {} -@@= skipped -23, +23 lines =@@ - fn: effectFn(function* (a) { - >fn : (a: string) => Effect - >effectFn(function* (a) { a; // string }) : (a: string) => Effect -->effectFn : >(body: (...args: Args) => Generator, AEff, never>) => (...args: Args) => Effect -+>effectFn : (body: (...args: Args) => Generator, AEff, never>) => (...args: Args) => Effect - >function* (a) { a; // string } : (a: string) => Generator - >a : string diff --git a/testdata/baselines/reference/submodule/compiler/contextualSigInstantiationRestParams.types b/testdata/baselines/reference/submodule/compiler/contextualSigInstantiationRestParams.types index e5542897334..4ba3a703155 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualSigInstantiationRestParams.types +++ b/testdata/baselines/reference/submodule/compiler/contextualSigInstantiationRestParams.types @@ -2,7 +2,7 @@ === contextualSigInstantiationRestParams.ts === declare function toInstantiate(a?: A, b?: B): B; ->toInstantiate : (a?: A | undefined, b?: B | undefined) => B +>toInstantiate : (a?: A, b?: B) => B >a : A | undefined >b : B | undefined @@ -13,5 +13,5 @@ declare function contextual(...s: string[]): string var sig: typeof contextual = toInstantiate; >sig : (...s: string[]) => string >contextual : (...s: string[]) => string ->toInstantiate : (a?: A | undefined, b?: B | undefined) => B +>toInstantiate : (a?: A, b?: B) => B diff --git a/testdata/baselines/reference/submodule/compiler/contextualSigInstantiationRestParams.types.diff b/testdata/baselines/reference/submodule/compiler/contextualSigInstantiationRestParams.types.diff deleted file mode 100644 index ea8045f9cbe..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualSigInstantiationRestParams.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.contextualSigInstantiationRestParams.types -+++ new.contextualSigInstantiationRestParams.types -@@= skipped -1, +1 lines =@@ - - === contextualSigInstantiationRestParams.ts === - declare function toInstantiate(a?: A, b?: B): B; -->toInstantiate : (a?: A, b?: B) => B -+>toInstantiate : (a?: A | undefined, b?: B | undefined) => B - >a : A | undefined - >b : B | undefined - -@@= skipped -11, +11 lines =@@ - var sig: typeof contextual = toInstantiate; - >sig : (...s: string[]) => string - >contextual : (...s: string[]) => string -->toInstantiate : (a?: A, b?: B) => B -+>toInstantiate : (a?: A | undefined, b?: B | undefined) => B diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.types b/testdata/baselines/reference/submodule/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.types index 637a14e5597..c1dbf244974 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.types +++ b/testdata/baselines/reference/submodule/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.types @@ -20,12 +20,12 @@ type ActionFunction = (event: TEvent) => void; >event : TEvent declare function createMachine< ->createMachine : (config: { types?: TTypesMeta | undefined; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void +>createMachine : (config: { types?: TTypesMeta; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled >( config: { ->config : { types?: TTypesMeta | undefined; } +>config : { types?: TTypesMeta; } types?: TTypesMeta; >types : TTypesMeta | undefined @@ -44,7 +44,7 @@ declare function createMachine< createMachine({}, (ev) => { >createMachine({}, (ev) => { ev.type; // should be `string`}) : void ->createMachine : (config: { types?: TTypesMeta | undefined; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void +>createMachine : (config: { types?: TTypesMeta; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void >{} : {} >(ev) => { ev.type; // should be `string`} : (ev: { type: string; }) => void >ev : { type: string; } diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.types.diff b/testdata/baselines/reference/submodule/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.types.diff deleted file mode 100644 index 042f3402699..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.contextualSignatureConditionalTypeInstantiationUsingDefault.types -+++ new.contextualSignatureConditionalTypeInstantiationUsingDefault.types -@@= skipped -19, +19 lines =@@ - >event : TEvent - - declare function createMachine< -->createMachine : (config: { types?: TTypesMeta; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void -+>createMachine : (config: { types?: TTypesMeta | undefined; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void - - TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled - >( - config: { -->config : { types?: TTypesMeta; } -+>config : { types?: TTypesMeta | undefined; } - - types?: TTypesMeta; - >types : TTypesMeta | undefined -@@= skipped -24, +24 lines =@@ - - createMachine({}, (ev) => { - >createMachine({}, (ev) => { ev.type; // should be `string`}) : void -->createMachine : (config: { types?: TTypesMeta; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void -+>createMachine : (config: { types?: TTypesMeta | undefined; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void - >{} : {} - >(ev) => { ev.type; // should be `string`} : (ev: { type: string; }) => void - >ev : { type: string; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs2015.types b/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs2015.types index 104b6c60c95..6e9a21452bf 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs2015.types +++ b/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs2015.types @@ -4,7 +4,7 @@ // See: https://github.com/microsoft/TypeScript/pull/53280#discussion_r1138684984 declare function test( ->test : (arg: ((arg: number) => void)[] | Record void>) => void +>test : (arg: Record void> | Array<(arg: number) => void>) => void arg: Record void> | Array<(arg: number) => void> >arg : ((arg: number) => void)[] | Record void> @@ -15,7 +15,7 @@ declare function test( test([ >test([ (arg) => { arg; // number },]) : void ->test : (arg: ((arg: number) => void)[] | Record void>) => void +>test : (arg: Record void> | Array<(arg: number) => void>) => void >[ (arg) => { arg; // number },] : ((arg: any) => void)[] (arg) => { diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs2015.types.diff b/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs2015.types.diff deleted file mode 100644 index b2db4dae6a6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs2015.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.contextualSignatureInArrayElementLibEs2015.types -+++ new.contextualSignatureInArrayElementLibEs2015.types -@@= skipped -3, +3 lines =@@ - // See: https://github.com/microsoft/TypeScript/pull/53280#discussion_r1138684984 - - declare function test( -->test : (arg: Record void> | Array<(arg: number) => void>) => void -+>test : (arg: ((arg: number) => void)[] | Record void>) => void - - arg: Record void> | Array<(arg: number) => void> - >arg : ((arg: number) => void)[] | Record void> -@@= skipped -11, +11 lines =@@ - - test([ - >test([ (arg) => { arg; // number },]) : void -->test : (arg: Record void> | Array<(arg: number) => void>) => void -+>test : (arg: ((arg: number) => void)[] | Record void>) => void - >[ (arg) => { arg; // number },] : ((arg: any) => void)[] - - (arg) => { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs5.types b/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs5.types index 6656a8e9796..a64d3e5de56 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs5.types +++ b/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs5.types @@ -4,7 +4,7 @@ // See: https://github.com/microsoft/TypeScript/pull/53280#discussion_r1138684984 declare function test( ->test : (arg: ((arg: number) => void)[] | Record void>) => void +>test : (arg: Record void> | Array<(arg: number) => void>) => void arg: Record void> | Array<(arg: number) => void> >arg : ((arg: number) => void)[] | Record void> @@ -15,7 +15,7 @@ declare function test( test([ >test([ (arg) => { arg; // number },]) : void ->test : (arg: ((arg: number) => void)[] | Record void>) => void +>test : (arg: Record void> | Array<(arg: number) => void>) => void >[ (arg) => { arg; // number },] : ((arg: any) => void)[] (arg) => { diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs5.types.diff b/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs5.types.diff deleted file mode 100644 index d594d435f23..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureInArrayElementLibEs5.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.contextualSignatureInArrayElementLibEs5.types -+++ new.contextualSignatureInArrayElementLibEs5.types -@@= skipped -3, +3 lines =@@ - // See: https://github.com/microsoft/TypeScript/pull/53280#discussion_r1138684984 - - declare function test( -->test : (arg: Record void> | Array<(arg: number) => void>) => void -+>test : (arg: ((arg: number) => void)[] | Record void>) => void - - arg: Record void> | Array<(arg: number) => void> - >arg : ((arg: number) => void)[] | Record void> -@@= skipped -11, +11 lines =@@ - - test([ - >test([ (arg) => { arg; // number },]) : void -->test : (arg: Record void> | Array<(arg: number) => void>) => void -+>test : (arg: ((arg: number) => void)[] | Record void>) => void - >[ (arg) => { arg; // number },] : ((arg: any) => void)[] - - (arg) => { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureInObjectFreeze.types b/testdata/baselines/reference/submodule/compiler/contextualSignatureInObjectFreeze.types index 2ff1e86cc85..db637c976cc 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureInObjectFreeze.types +++ b/testdata/baselines/reference/submodule/compiler/contextualSignatureInObjectFreeze.types @@ -5,9 +5,9 @@ Object.freeze({ >Object.freeze({ f: function () { }}) : Readonly<{ f: () => void; }> ->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; } >{ f: function () { }} : { f: () => void; } f: function () { } diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureInObjectFreeze.types.diff b/testdata/baselines/reference/submodule/compiler/contextualSignatureInObjectFreeze.types.diff deleted file mode 100644 index 0c36e7fbd72..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureInObjectFreeze.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.contextualSignatureInObjectFreeze.types -+++ new.contextualSignatureInObjectFreeze.types -@@= skipped -4, +4 lines =@@ - - Object.freeze({ - >Object.freeze({ f: function () { }}) : Readonly<{ f: () => void; }> -->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; } - >{ f: function () { }} : { f: () => void; } - - f: function () { } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureInstantiation1.types b/testdata/baselines/reference/submodule/compiler/contextualSignatureInstantiation1.types index 7f90b811706..c3ca3280930 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureInstantiation1.types +++ b/testdata/baselines/reference/submodule/compiler/contextualSignatureInstantiation1.types @@ -8,8 +8,8 @@ declare function map(f: (x: S) => T): (a: S[]) => T[]; >a : S[] var e = (x: string, y?: K) => x.length; ->e : (x: string, y?: K | undefined) => number ->(x: string, y?: K) => x.length : (x: string, y?: K | undefined) => number +>e : (x: string, y?: K) => number +>(x: string, y?: K) => x.length : (x: string, y?: K) => number >x : string >y : K | undefined >x.length : number @@ -20,7 +20,7 @@ var r99 = map(e); // should be {}[] for S since a generic lambda is not inferent >r99 : (a: string[]) => number[] >map(e) : (a: string[]) => number[] >map : (f: (x: S) => T) => (a: S[]) => T[] ->e : (x: string, y?: K | undefined) => number +>e : (x: string, y?: K) => number declare function map2(f: (x: S) => T): (a: S[]) => T[]; >map2 : (f: (x: S) => T) => (a: S[]) => T[] @@ -30,8 +30,8 @@ declare function map2(f: (x: S) => T): (a: S[]) >a : S[] var e2 = (x: string, y?: K) => x.length; ->e2 : (x: string, y?: K | undefined) => number ->(x: string, y?: K) => x.length : (x: string, y?: K | undefined) => number +>e2 : (x: string, y?: K) => number +>(x: string, y?: K) => x.length : (x: string, y?: K) => number >x : string >y : K | undefined >x.length : number @@ -42,5 +42,5 @@ var r100 = map2(e2); // type arg inference should fail for S since a generic lam >r100 : (a: string[]) => number[] >map2(e2) : (a: string[]) => number[] >map2 : (f: (x: S) => T) => (a: S[]) => T[] ->e2 : (x: string, y?: K | undefined) => number +>e2 : (x: string, y?: K) => number diff --git a/testdata/baselines/reference/submodule/compiler/contextualSignatureInstantiation1.types.diff b/testdata/baselines/reference/submodule/compiler/contextualSignatureInstantiation1.types.diff deleted file mode 100644 index dbcf41e53f0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualSignatureInstantiation1.types.diff +++ /dev/null @@ -1,39 +0,0 @@ ---- old.contextualSignatureInstantiation1.types -+++ new.contextualSignatureInstantiation1.types -@@= skipped -7, +7 lines =@@ - >a : S[] - - var e = (x: string, y?: K) => x.length; -->e : (x: string, y?: K) => number -->(x: string, y?: K) => x.length : (x: string, y?: K) => number -+>e : (x: string, y?: K | undefined) => number -+>(x: string, y?: K) => x.length : (x: string, y?: K | undefined) => number - >x : string - >y : K | undefined - >x.length : number -@@= skipped -12, +12 lines =@@ - >r99 : (a: string[]) => number[] - >map(e) : (a: string[]) => number[] - >map : (f: (x: S) => T) => (a: S[]) => T[] -->e : (x: string, y?: K) => number -+>e : (x: string, y?: K | undefined) => number - - declare function map2(f: (x: S) => T): (a: S[]) => T[]; - >map2 : (f: (x: S) => T) => (a: S[]) => T[] -@@= skipped -10, +10 lines =@@ - >a : S[] - - var e2 = (x: string, y?: K) => x.length; -->e2 : (x: string, y?: K) => number -->(x: string, y?: K) => x.length : (x: string, y?: K) => number -+>e2 : (x: string, y?: K | undefined) => number -+>(x: string, y?: K) => x.length : (x: string, y?: K | undefined) => number - >x : string - >y : K | undefined - >x.length : number -@@= skipped -12, +12 lines =@@ - >r100 : (a: string[]) => number[] - >map2(e2) : (a: string[]) => number[] - >map2 : (f: (x: S) => T) => (a: S[]) => T[] -->e2 : (x: string, y?: K) => number -+>e2 : (x: string, y?: K | undefined) => number diff --git a/testdata/baselines/reference/submodule/compiler/contextualTupleTypeParameterReadonly.types b/testdata/baselines/reference/submodule/compiler/contextualTupleTypeParameterReadonly.types index 7e797090f1e..654c5d691c3 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTupleTypeParameterReadonly.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTupleTypeParameterReadonly.types @@ -2,7 +2,7 @@ === contextualTupleTypeParameterReadonly.ts === declare function each>(cases: ReadonlyArray): (fn: (...args: T) => any) => void; ->each : (cases: readonly T[]) => (fn: (...args: T) => any) => void +>each : >(cases: ReadonlyArray) => (fn: (...args: T) => any) => void >cases : readonly T[] >fn : (...args: T) => any >args : T @@ -27,7 +27,7 @@ const cases = [ const eacher = each(cases); >eacher : (fn: (...args: readonly [1, "1"] | readonly [2, "2"]) => any) => void >each(cases) : (fn: (...args: readonly [1, "1"] | readonly [2, "2"]) => any) => void ->each : (cases: readonly T[]) => (fn: (...args: T) => any) => void +>each : >(cases: ReadonlyArray) => (fn: (...args: T) => any) => void >cases : readonly [readonly [1, "1"], readonly [2, "2"]] eacher((a, b) => { diff --git a/testdata/baselines/reference/submodule/compiler/contextualTupleTypeParameterReadonly.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTupleTypeParameterReadonly.types.diff deleted file mode 100644 index 071050ee4fc..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualTupleTypeParameterReadonly.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.contextualTupleTypeParameterReadonly.types -+++ new.contextualTupleTypeParameterReadonly.types -@@= skipped -1, +1 lines =@@ - - === contextualTupleTypeParameterReadonly.ts === - declare function each>(cases: ReadonlyArray): (fn: (...args: T) => any) => void; -->each : >(cases: ReadonlyArray) => (fn: (...args: T) => any) => void -+>each : (cases: readonly T[]) => (fn: (...args: T) => any) => void - >cases : readonly T[] - >fn : (...args: T) => any - >args : T -@@= skipped -25, +25 lines =@@ - const eacher = each(cases); - >eacher : (fn: (...args: readonly [1, "1"] | readonly [2, "2"]) => any) => void - >each(cases) : (fn: (...args: readonly [1, "1"] | readonly [2, "2"]) => any) => void -->each : >(cases: ReadonlyArray) => (fn: (...args: T) => any) => void -+>each : (cases: readonly T[]) => (fn: (...args: T) => any) => void - >cases : readonly [readonly [1, "1"], readonly [2, "2"]] - - eacher((a, b) => { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix1.types b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix1.types index d977593d4e4..7b6beabe09e 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix1.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix1.types @@ -17,7 +17,7 @@ interface StyledFunction< A extends keyof any = never, > { attrs< ->attrs : & U> & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction +>attrs : & U> & { [others: string]: any; } = {}>(attrs: Attrs & U, NewA>) => StyledFunction U, NewA extends Partial & U> & { @@ -52,11 +52,11 @@ declare const Flex: (props: BaseProps) => null; export const StyledSelect = styled(Flex).attrs({ >StyledSelect : StyledFunction<(props: BaseProps) => null, { as: "select"; }, "as"> >styled(Flex).attrs({ as: "select",}) : StyledFunction<(props: BaseProps) => null, { as: "select"; }, "as"> ->styled(Flex).attrs : & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction<(props: BaseProps) => null, {} & NewA, keyof NewA> +>styled(Flex).attrs : null> & U> & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction<(props: BaseProps) => null, {} & NewA, keyof NewA> >styled(Flex) : StyledFunction<(props: BaseProps) => null, {}, never> >styled : StyledInterface >Flex : (props: BaseProps) => null ->attrs : & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction<(props: BaseProps) => null, {} & NewA, keyof NewA> +>attrs : null> & U> & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction<(props: BaseProps) => null, {} & NewA, keyof NewA> >{ as: "select",} : { as: "select"; } as: "select", diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix1.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix1.types.diff index 27884310c73..13869c3a9d5 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix1.types.diff +++ b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix1.types.diff @@ -1,11 +1,16 @@ --- old.contextualTypeBasedOnIntersectionWithAnyInTheMix1.types +++ new.contextualTypeBasedOnIntersectionWithAnyInTheMix1.types -@@= skipped -16, +16 lines =@@ - A extends keyof any = never, - > { - attrs< -->attrs : & U> & { [others: string]: any; } = {}>(attrs: Attrs & U, NewA>) => StyledFunction -+>attrs : & U> & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction +@@= skipped -51, +51 lines =@@ + export const StyledSelect = styled(Flex).attrs({ + >StyledSelect : StyledFunction<(props: BaseProps) => null, { as: "select"; }, "as"> + >styled(Flex).attrs({ as: "select",}) : StyledFunction<(props: BaseProps) => null, { as: "select"; }, "as"> +->styled(Flex).attrs : & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction<(props: BaseProps) => null, {} & NewA, keyof NewA> ++>styled(Flex).attrs : null> & U> & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction<(props: BaseProps) => null, {} & NewA, keyof NewA> + >styled(Flex) : StyledFunction<(props: BaseProps) => null, {}, never> + >styled : StyledInterface + >Flex : (props: BaseProps) => null +->attrs : & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction<(props: BaseProps) => null, {} & NewA, keyof NewA> ++>attrs : null> & U> & { [others: string]: any; } = {}>(attrs: NewA) => StyledFunction<(props: BaseProps) => null, {} & NewA, keyof NewA> + >{ as: "select",} : { as: "select"; } - U, - NewA extends Partial & U> & { \ No newline at end of file + as: "select", \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types index da13f1384e6..dcf7edcc030 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types @@ -5,14 +5,14 @@ type IntrinsicElements = { >IntrinsicElements : IntrinsicElements a: { ->a : { href?: string | undefined; } +>a : { href?: string; } href?: string; >href : string | undefined }; div: { ->div : { dir?: string | undefined; } +>div : { dir?: string; } dir?: string; >dir : string | undefined @@ -47,21 +47,21 @@ declare function MyMDXComponent(props: MDXProps): null; MyMDXComponent({ >MyMDXComponent({ components: { a(props) { return null; }, div(props) { return null; }, },}) : null >MyMDXComponent : (props: MDXProps) => null ->{ components: { a(props) { return null; }, div(props) { return null; }, },} : { components: { a(props: { href?: string | undefined; }): null; div(props: { dir?: string | undefined; }): null; }; } +>{ components: { a(props) { return null; }, div(props) { return null; }, },} : { components: { a(props: { href?: string; }): null; div(props: { dir?: string; }): null; }; } components: { ->components : { a(props: { href?: string | undefined; }): null; div(props: { dir?: string | undefined; }): null; } ->{ a(props) { return null; }, div(props) { return null; }, } : { a(props: { href?: string | undefined; }): null; div(props: { dir?: string | undefined; }): null; } +>components : { a(props: { href?: string; }): null; div(props: { dir?: string; }): null; } +>{ a(props) { return null; }, div(props) { return null; }, } : { a(props: { href?: string; }): null; div(props: { dir?: string; }): null; } a(props) { ->a : (props: { href?: string | undefined; }) => null ->props : { href?: string | undefined; } +>a : (props: { href?: string; }) => null +>props : { href?: string; } return null; }, div(props) { ->div : (props: { dir?: string | undefined; }) => null ->props : { dir?: string | undefined; } +>div : (props: { dir?: string; }) => null +>props : { dir?: string; } return null; }, diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types.diff deleted file mode 100644 index f00e8a8d5c9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types.diff +++ /dev/null @@ -1,48 +0,0 @@ ---- old.contextualTypeBasedOnIntersectionWithAnyInTheMix2.types -+++ new.contextualTypeBasedOnIntersectionWithAnyInTheMix2.types -@@= skipped -4, +4 lines =@@ - >IntrinsicElements : IntrinsicElements - - a: { -->a : { href?: string; } -+>a : { href?: string | undefined; } - - href?: string; - >href : string | undefined - - }; - div: { -->div : { dir?: string; } -+>div : { dir?: string | undefined; } - - dir?: string; - >dir : string | undefined -@@= skipped -42, +42 lines =@@ - MyMDXComponent({ - >MyMDXComponent({ components: { a(props) { return null; }, div(props) { return null; }, },}) : null - >MyMDXComponent : (props: MDXProps) => null -->{ components: { a(props) { return null; }, div(props) { return null; }, },} : { components: { a(props: { href?: string; }): null; div(props: { dir?: string; }): null; }; } -+>{ components: { a(props) { return null; }, div(props) { return null; }, },} : { components: { a(props: { href?: string | undefined; }): null; div(props: { dir?: string | undefined; }): null; }; } - - components: { -->components : { a(props: { href?: string; }): null; div(props: { dir?: string; }): null; } -->{ a(props) { return null; }, div(props) { return null; }, } : { a(props: { href?: string; }): null; div(props: { dir?: string; }): null; } -+>components : { a(props: { href?: string | undefined; }): null; div(props: { dir?: string | undefined; }): null; } -+>{ a(props) { return null; }, div(props) { return null; }, } : { a(props: { href?: string | undefined; }): null; div(props: { dir?: string | undefined; }): null; } - - a(props) { -->a : (props: { href?: string; }) => null -->props : { href?: string; } -+>a : (props: { href?: string | undefined; }) => null -+>props : { href?: string | undefined; } - - return null; - }, - div(props) { -->div : (props: { dir?: string; }) => null -->props : { dir?: string; } -+>div : (props: { dir?: string | undefined; }) => null -+>props : { dir?: string | undefined; } - - return null; - }, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix3.types b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix3.types index 513aa49620c..2669cbb8d96 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix3.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix3.types @@ -13,7 +13,7 @@ type TypeMap = { }; declare function test1< ->test1 : (arg: T) => T +>test1 : (arg: T) => T T extends { [K in keyof TypeMap]: TypeMap[K][] } & { [k: string]: any[] }, >k : string @@ -24,7 +24,7 @@ declare function test1< const result = test1({ >result : { num: (1 | 2)[]; str: ("a" | "b")[]; bool: boolean[]; } >test1({ num: [1, 2], str: ["a", "b"], bool: [true, false],}) : { num: (1 | 2)[]; str: ("a" | "b")[]; bool: boolean[]; } ->test1 : (arg: T) => T +>test1 : (arg: T) => T >{ num: [1, 2], str: ["a", "b"], bool: [true, false],} : { num: (1 | 2)[]; str: ("a" | "b")[]; bool: boolean[]; } num: [1, 2], @@ -48,14 +48,14 @@ const result = test1({ }); declare function test2(a: { type: "foo" | "bar" } & { type: any }): void; ->test2 : (a: { type: "bar" | "foo"; } & { type: any; }) => void ->a : { type: "bar" | "foo"; } & { type: any; } +>test2 : (a: { type: "foo" | "bar"; } & { type: any; }) => void +>a : { type: "foo" | "bar"; } & { type: any; } >type : "bar" | "foo" >type : any test2({ type: "foo" }); >test2({ type: "foo" }) : void ->test2 : (a: { type: "bar" | "foo"; } & { type: any; }) => void +>test2 : (a: { type: "foo" | "bar"; } & { type: any; }) => void >{ type: "foo" } : { type: "foo"; } >type : "foo" >"foo" : "foo" @@ -63,7 +63,7 @@ test2({ type: "foo" }); // https://github.com/microsoft/TypeScript/issues/59473 const x: { ml: any } & { ml: 'edge' } = { ml: 'edge' }; ->x : { ml: any; } & { ml: "edge"; } +>x : { ml: any; } & { ml: 'edge'; } >ml : any >ml : "edge" >{ ml: 'edge' } : { ml: "edge"; } diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix3.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix3.types.diff index 0d44095cce2..bd400180066 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix3.types.diff +++ b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix3.types.diff @@ -1,38 +1,11 @@ --- old.contextualTypeBasedOnIntersectionWithAnyInTheMix3.types +++ new.contextualTypeBasedOnIntersectionWithAnyInTheMix3.types -@@= skipped -12, +12 lines =@@ - }; - - declare function test1< -->test1 : (arg: T) => T -+>test1 : (arg: T) => T - - T extends { [K in keyof TypeMap]: TypeMap[K][] } & { [k: string]: any[] }, - >k : string -@@= skipped -11, +11 lines =@@ - const result = test1({ - >result : { num: (1 | 2)[]; str: ("a" | "b")[]; bool: boolean[]; } - >test1({ num: [1, 2], str: ["a", "b"], bool: [true, false],}) : { num: (1 | 2)[]; str: ("a" | "b")[]; bool: boolean[]; } -->test1 : (arg: T) => T -+>test1 : (arg: T) => T - >{ num: [1, 2], str: ["a", "b"], bool: [true, false],} : { num: (1 | 2)[]; str: ("a" | "b")[]; bool: boolean[]; } - - num: [1, 2], -@@= skipped -24, +24 lines =@@ - }); - - declare function test2(a: { type: "foo" | "bar" } & { type: any }): void; -->test2 : (a: { type: "foo" | "bar"; } & { type: any; }) => void -->a : { type: "foo" | "bar"; } & { type: any; } -+>test2 : (a: { type: "bar" | "foo"; } & { type: any; }) => void -+>a : { type: "bar" | "foo"; } & { type: any; } - >type : "bar" | "foo" - >type : any - - test2({ type: "foo" }); - >test2({ type: "foo" }) : void -->test2 : (a: { type: "foo" | "bar"; } & { type: any; }) => void -+>test2 : (a: { type: "bar" | "foo"; } & { type: any; }) => void - >{ type: "foo" } : { type: "foo"; } - >type : "foo" - >"foo" : "foo" \ No newline at end of file +@@= skipped -62, +62 lines =@@ + // https://github.com/microsoft/TypeScript/issues/59473 + + const x: { ml: any } & { ml: 'edge' } = { ml: 'edge' }; +->x : { ml: any; } & { ml: "edge"; } ++>x : { ml: any; } & { ml: 'edge'; } + >ml : any + >ml : "edge" + >{ ml: 'edge' } : { ml: "edge"; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix5.types b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix5.types index 8bd00855faa..d1449fc11a3 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix5.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix5.types @@ -40,7 +40,7 @@ type ComponentOptions< interface App { mixin(mixin: ComponentOptions): this; ->mixin : (mixin: ComponentOptions) => this +>mixin : (mixin: ComponentOptions) => this >mixin : ComponentOptions } @@ -64,7 +64,7 @@ declare const ThemeSymbol: InjectionKey; >ThemeSymbol : InjectionKey declare function inject( ->inject : (this: ExtractComputedReturns<{}>, key: string | InjectionKey) => any +>inject : (this: ComponentPublicInstance, key: InjectionKey | string) => any this: ComponentPublicInstance, >this : ExtractComputedReturns<{}> @@ -79,9 +79,9 @@ declare const app: App; app.mixin({ >app.mixin({ computed: { $vuetify() { // this is meant to be `any` here return reactive({ theme: inject.call(this, ThemeSymbol), }); }, },}) : App ->app.mixin : (mixin: ComponentOptions) => App +>app.mixin : (mixin: ComponentOptions) => App >app : App ->mixin : (mixin: ComponentOptions) => App +>mixin : (mixin: ComponentOptions) => App >{ computed: { $vuetify() { // this is meant to be `any` here return reactive({ theme: inject.call(this, ThemeSymbol), }); }, },} : { computed: { $vuetify(): Ref<{ theme: any; }>; }; } computed: { @@ -101,7 +101,7 @@ app.mixin({ >theme : any >inject.call(this, ThemeSymbol) : any >inject.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R ->inject : (this: ExtractComputedReturns<{}>, key: string | InjectionKey) => any +>inject : (this: ComponentPublicInstance, key: InjectionKey | string) => any >call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R >this : any >ThemeSymbol : InjectionKey diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix5.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix5.types.diff deleted file mode 100644 index f8ec7f3e3f4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeBasedOnIntersectionWithAnyInTheMix5.types.diff +++ /dev/null @@ -1,41 +0,0 @@ ---- old.contextualTypeBasedOnIntersectionWithAnyInTheMix5.types -+++ new.contextualTypeBasedOnIntersectionWithAnyInTheMix5.types -@@= skipped -39, +39 lines =@@ - - interface App { - mixin(mixin: ComponentOptions): this; -->mixin : (mixin: ComponentOptions) => this -+>mixin : (mixin: ComponentOptions) => this - >mixin : ComponentOptions - } - -@@= skipped -24, +24 lines =@@ - >ThemeSymbol : InjectionKey - - declare function inject( -->inject : (this: ComponentPublicInstance, key: InjectionKey | string) => any -+>inject : (this: ExtractComputedReturns<{}>, key: string | InjectionKey) => any - - this: ComponentPublicInstance, - >this : ExtractComputedReturns<{}> -@@= skipped -15, +15 lines =@@ - - app.mixin({ - >app.mixin({ computed: { $vuetify() { // this is meant to be `any` here return reactive({ theme: inject.call(this, ThemeSymbol), }); }, },}) : App -->app.mixin : (mixin: ComponentOptions) => App -+>app.mixin : (mixin: ComponentOptions) => App - >app : App -->mixin : (mixin: ComponentOptions) => App -+>mixin : (mixin: ComponentOptions) => App - >{ computed: { $vuetify() { // this is meant to be `any` here return reactive({ theme: inject.call(this, ThemeSymbol), }); }, },} : { computed: { $vuetify(): Ref<{ theme: any; }>; }; } - - computed: { -@@= skipped -22, +22 lines =@@ - >theme : any - >inject.call(this, ThemeSymbol) : any - >inject.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -->inject : (this: ComponentPublicInstance, key: InjectionKey | string) => any -+>inject : (this: ExtractComputedReturns<{}>, key: string | InjectionKey) => any - >call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R - >this : any - >ThemeSymbol : InjectionKey \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeFunctionObjectPropertyIntersection.types b/testdata/baselines/reference/submodule/compiler/contextualTypeFunctionObjectPropertyIntersection.types index 39048bb6430..faa96307ba5 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeFunctionObjectPropertyIntersection.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTypeFunctionObjectPropertyIntersection.types @@ -19,7 +19,7 @@ interface MachineConfig { }; on?: { ->on : ({ [K in TEvent["type"]]?: Action | undefined; } & { "*"?: Action | undefined; }) | undefined +>on : ({ [K in TEvent["type"]]?: Action | undefined; } & { "*"?: Action; }) | undefined [K in TEvent["type"]]?: Action; >type : K @@ -121,7 +121,7 @@ interface MachineConfig2 { }; on?: { ->on : ({ [K in TEvent["type"] as K extends Uppercase ? K : never]?: Action | undefined; } & { "*"?: Action | undefined; }) | undefined +>on : ({ [K in TEvent["type"] as K extends Uppercase ? K : never]?: Action | undefined; } & { "*"?: Action; }) | undefined [K in TEvent["type"] as K extends Uppercase ? K : never]?: Action; >type : K @@ -308,7 +308,7 @@ type ValidateSliceCaseReducers> = ACR & { [T in keyof ACR]: ACR[T] extends { reducer(s: S, action?: infer A): any; ->reducer : (s: S, action?: A | undefined) => any +>reducer : (s: S, action?: infer A) => any >s : S >action : A | undefined } diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypeFunctionObjectPropertyIntersection.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTypeFunctionObjectPropertyIntersection.types.diff deleted file mode 100644 index f07aed5900a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualTypeFunctionObjectPropertyIntersection.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.contextualTypeFunctionObjectPropertyIntersection.types -+++ new.contextualTypeFunctionObjectPropertyIntersection.types -@@= skipped -18, +18 lines =@@ - - }; - on?: { -->on : ({ [K in TEvent["type"]]?: Action | undefined; } & { "*"?: Action; }) | undefined -+>on : ({ [K in TEvent["type"]]?: Action | undefined; } & { "*"?: Action | undefined; }) | undefined - - [K in TEvent["type"]]?: Action; - >type : K -@@= skipped -102, +102 lines =@@ - - }; - on?: { -->on : ({ [K in TEvent["type"] as K extends Uppercase ? K : never]?: Action | undefined; } & { "*"?: Action; }) | undefined -+>on : ({ [K in TEvent["type"] as K extends Uppercase ? K : never]?: Action | undefined; } & { "*"?: Action | undefined; }) | undefined - - [K in TEvent["type"] as K extends Uppercase ? K : never]?: Action; - >type : K -@@= skipped -187, +187 lines =@@ - - [T in keyof ACR]: ACR[T] extends { - reducer(s: S, action?: infer A): any; -->reducer : (s: S, action?: infer A) => any -+>reducer : (s: S, action?: A | undefined) => any - >s : S - >action : A | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types b/testdata/baselines/reference/submodule/compiler/contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types index fbaf819e904..8054d3133b9 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types @@ -29,13 +29,13 @@ type Value = { _tag: "A"; a: number } | { _tag: "B"; b: number }; >b : number const matcher = typeTags(); ->matcher :

any; readonly B: (_: { _tag: "B"; b: number; }) => any; } & { readonly [Tag in Exclude]: never; }>(fields: P) => unknown ->typeTags() :

any; readonly B: (_: { _tag: "B"; b: number; }) => any; } & { readonly [Tag in Exclude]: never; }>(fields: P) => unknown +>matcher :

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown +>typeTags() :

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown >typeTags : () =>

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown matcher({ >matcher({ A: (_) => _.a, B: (_) => "fail",}) : unknown ->matcher :

any; readonly B: (_: { _tag: "B"; b: number; }) => any; } & { readonly [Tag in Exclude]: never; }>(fields: P) => unknown +>matcher :

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown >{ A: (_) => _.a, B: (_) => "fail",} : { A: (_: { _tag: "A"; a: number; }) => number; B: (_: { _tag: "B"; b: number; }) => string; } A: (_) => _.a, @@ -56,7 +56,7 @@ matcher({ matcher({ >matcher({ A: (_) => _.a, B: (_) => "fail", C: (_) => "fail",}) : unknown ->matcher :

any; readonly B: (_: { _tag: "B"; b: number; }) => any; } & { readonly [Tag in Exclude]: never; }>(fields: P) => unknown +>matcher :

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown >{ A: (_) => _.a, B: (_) => "fail", C: (_) => "fail",} : { A: (_: { _tag: "A"; a: number; }) => number; B: (_: { _tag: "B"; b: number; }) => string; C: (_: any) => string; } A: (_) => _.a, diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types.diff new file mode 100644 index 00000000000..7c6c0c2c0f5 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types.diff @@ -0,0 +1,28 @@ +--- old.contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types ++++ new.contextualTypesNegatedTypeLikeConstraintInGenericMappedType2.types +@@= skipped -28, +28 lines =@@ + >b : number + + const matcher = typeTags(); +->matcher :

any; readonly B: (_: { _tag: "B"; b: number; }) => any; } & { readonly [Tag in Exclude]: never; }>(fields: P) => unknown +->typeTags() :

any; readonly B: (_: { _tag: "B"; b: number; }) => any; } & { readonly [Tag in Exclude]: never; }>(fields: P) => unknown ++>matcher :

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown ++>typeTags() :

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown + >typeTags : () =>

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown + + matcher({ + >matcher({ A: (_) => _.a, B: (_) => "fail",}) : unknown +->matcher :

any; readonly B: (_: { _tag: "B"; b: number; }) => any; } & { readonly [Tag in Exclude]: never; }>(fields: P) => unknown ++>matcher :

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown + >{ A: (_) => _.a, B: (_) => "fail",} : { A: (_: { _tag: "A"; a: number; }) => number; B: (_: { _tag: "B"; b: number; }) => string; } + + A: (_) => _.a, +@@= skipped -27, +27 lines =@@ + + matcher({ + >matcher({ A: (_) => _.a, B: (_) => "fail", C: (_) => "fail",}) : unknown +->matcher :

any; readonly B: (_: { _tag: "B"; b: number; }) => any; } & { readonly [Tag in Exclude]: never; }>(fields: P) => unknown ++>matcher :

& string]: (_: Extract) => any; } & { readonly [Tag in Exclude>]: never; }>(fields: P) => unknown + >{ A: (_) => _.a, B: (_) => "fail", C: (_) => "fail",} : { A: (_: { _tag: "A"; a: number; }) => number; B: (_: { _tag: "B"; b: number; }) => string; C: (_: any) => string; } + + A: (_) => _.a, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualTyping.types b/testdata/baselines/reference/submodule/compiler/contextualTyping.types index cc7e6b162de..f57a315f100 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTyping.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTyping.types @@ -328,7 +328,7 @@ interface IPlaceHolder { } var objc8: { ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } t1: (s: string) => string; >t1 : (s: string) => string @@ -394,7 +394,7 @@ var objc8: { objc8.t1 = (function(s) { return s }); >objc8.t1 = (function(s) { return s }) : (s: string) => string >objc8.t1 : (s: string) => string ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t1 : (s: string) => string >(function(s) { return s }) : (s: string) => string >function(s) { return s } : (s: string) => string @@ -404,7 +404,7 @@ objc8.t1 = (function(s) { return s }); objc8.t2 = ({ >objc8.t2 = ({ n: 1}) : IFoo >objc8.t2 : IFoo ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t2 : IFoo >({ n: 1}) : IFoo >({ n: 1}) : { n: number; } @@ -418,14 +418,14 @@ objc8.t2 = ({ objc8.t3 = []; >objc8.t3 = [] : undefined[] >objc8.t3 : number[] ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t3 : number[] >[] : undefined[] objc8.t4 = function() { return ({}) }; >objc8.t4 = function() { return ({}) } : () => IFoo >objc8.t4 : () => IFoo ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t4 : () => IFoo >function() { return ({}) } : () => IFoo >({}) : IFoo @@ -435,7 +435,7 @@ objc8.t4 = function() { return ({}) }; objc8.t5 = function(n) { return ({}) }; >objc8.t5 = function(n) { return ({}) } : (n: number) => IFoo >objc8.t5 : (n: number) => IFoo ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t5 : (n: number) => IFoo >function(n) { return ({}) } : (n: number) => IFoo >n : number @@ -446,7 +446,7 @@ objc8.t5 = function(n) { return ({}) }; objc8.t6 = function(n, s) { return ({}) }; >objc8.t6 = function(n, s) { return ({}) } : (n: number, s: string) => IFoo >objc8.t6 : (n: number, s: string) => IFoo ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t6 : (n: number, s: string) => IFoo >function(n, s) { return ({}) } : (n: number, s: string) => IFoo >n : number @@ -458,7 +458,7 @@ objc8.t6 = function(n, s) { return ({}) }; objc8.t7 = function(n: number) { return n }; >objc8.t7 = function(n: number) { return n } : (n: number) => number >objc8.t7 : (n: number, s: string) => number ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t7 : (n: number, s: string) => number >function(n: number) { return n } : (n: number) => number >n : number @@ -467,7 +467,7 @@ objc8.t7 = function(n: number) { return n }; objc8.t8 = function(n) { return n; }; >objc8.t8 = function(n) { return n; } : (n: number) => number >objc8.t8 : (n: number, s: string) => number ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t8 : (n: number, s: string) => number >function(n) { return n; } : (n: number) => number >n : number @@ -476,7 +476,7 @@ objc8.t8 = function(n) { return n; }; objc8.t9 = [[],[]]; >objc8.t9 = [[],[]] : undefined[][] >objc8.t9 : number[][] ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t9 : number[][] >[[],[]] : undefined[][] >[] : undefined[] @@ -485,7 +485,7 @@ objc8.t9 = [[],[]]; objc8.t10 = [({}),({})]; >objc8.t10 = [({}),({})] : IFoo[] >objc8.t10 : IFoo[] ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t10 : IFoo[] >[({}),({})] : IFoo[] >({}) : IFoo @@ -498,7 +498,7 @@ objc8.t10 = [({}),({})]; objc8.t11 = [function(n, s) { return s; }]; >objc8.t11 = [function(n, s) { return s; }] : ((n: number, s: string) => string)[] >objc8.t11 : ((n: number, s: string) => string)[] ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t11 : ((n: number, s: string) => string)[] >[function(n, s) { return s; }] : ((n: number, s: string) => string)[] >function(n, s) { return s; } : (n: number, s: string) => string @@ -509,7 +509,7 @@ objc8.t11 = [function(n, s) { return s; }]; objc8.t12 = { >objc8.t12 = { foo: ({})} : { foo: IFoo; } >objc8.t12 : IBar ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t12 : IBar >{ foo: ({})} : { foo: IFoo; } @@ -522,7 +522,7 @@ objc8.t12 = { objc8.t13 = ({ >objc8.t13 = ({ f: function(i, s) { return s; }}) : IFoo >objc8.t13 : IFoo ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t13 : IFoo >({ f: function(i, s) { return s; }}) : IFoo >({ f: function(i, s) { return s; }}) : { f: (i: number, s: string) => string; } @@ -539,7 +539,7 @@ objc8.t13 = ({ objc8.t14 = ({ >objc8.t14 = ({ a: []}) : IFoo >objc8.t14 : IFoo ->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } +>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } >t14 : IFoo >({ a: []}) : IFoo >({ a: []}) : { a: undefined[]; } diff --git a/testdata/baselines/reference/submodule/compiler/contextualTyping.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTyping.types.diff deleted file mode 100644 index cb959da525d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualTyping.types.diff +++ /dev/null @@ -1,136 +0,0 @@ ---- old.contextualTyping.types -+++ new.contextualTyping.types -@@= skipped -327, +327 lines =@@ - } - - var objc8: { -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - - t1: (s: string) => string; - >t1 : (s: string) => string -@@= skipped -66, +66 lines =@@ - objc8.t1 = (function(s) { return s }); - >objc8.t1 = (function(s) { return s }) : (s: string) => string - >objc8.t1 : (s: string) => string -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t1 : (s: string) => string - >(function(s) { return s }) : (s: string) => string - >function(s) { return s } : (s: string) => string -@@= skipped -10, +10 lines =@@ - objc8.t2 = ({ - >objc8.t2 = ({ n: 1}) : IFoo - >objc8.t2 : IFoo -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t2 : IFoo - >({ n: 1}) : IFoo - >({ n: 1}) : { n: number; } -@@= skipped -14, +14 lines =@@ - objc8.t3 = []; - >objc8.t3 = [] : undefined[] - >objc8.t3 : number[] -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t3 : number[] - >[] : undefined[] - - objc8.t4 = function() { return ({}) }; - >objc8.t4 = function() { return ({}) } : () => IFoo - >objc8.t4 : () => IFoo -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t4 : () => IFoo - >function() { return ({}) } : () => IFoo - >({}) : IFoo -@@= skipped -17, +17 lines =@@ - objc8.t5 = function(n) { return ({}) }; - >objc8.t5 = function(n) { return ({}) } : (n: number) => IFoo - >objc8.t5 : (n: number) => IFoo -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t5 : (n: number) => IFoo - >function(n) { return ({}) } : (n: number) => IFoo - >n : number -@@= skipped -11, +11 lines =@@ - objc8.t6 = function(n, s) { return ({}) }; - >objc8.t6 = function(n, s) { return ({}) } : (n: number, s: string) => IFoo - >objc8.t6 : (n: number, s: string) => IFoo -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t6 : (n: number, s: string) => IFoo - >function(n, s) { return ({}) } : (n: number, s: string) => IFoo - >n : number -@@= skipped -12, +12 lines =@@ - objc8.t7 = function(n: number) { return n }; - >objc8.t7 = function(n: number) { return n } : (n: number) => number - >objc8.t7 : (n: number, s: string) => number -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t7 : (n: number, s: string) => number - >function(n: number) { return n } : (n: number) => number - >n : number -@@= skipped -9, +9 lines =@@ - objc8.t8 = function(n) { return n; }; - >objc8.t8 = function(n) { return n; } : (n: number) => number - >objc8.t8 : (n: number, s: string) => number -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t8 : (n: number, s: string) => number - >function(n) { return n; } : (n: number) => number - >n : number -@@= skipped -9, +9 lines =@@ - objc8.t9 = [[],[]]; - >objc8.t9 = [[],[]] : undefined[][] - >objc8.t9 : number[][] -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t9 : number[][] - >[[],[]] : undefined[][] - >[] : undefined[] -@@= skipped -9, +9 lines =@@ - objc8.t10 = [({}),({})]; - >objc8.t10 = [({}),({})] : IFoo[] - >objc8.t10 : IFoo[] -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t10 : IFoo[] - >[({}),({})] : IFoo[] - >({}) : IFoo -@@= skipped -13, +13 lines =@@ - objc8.t11 = [function(n, s) { return s; }]; - >objc8.t11 = [function(n, s) { return s; }] : ((n: number, s: string) => string)[] - >objc8.t11 : ((n: number, s: string) => string)[] -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t11 : ((n: number, s: string) => string)[] - >[function(n, s) { return s; }] : ((n: number, s: string) => string)[] - >function(n, s) { return s; } : (n: number, s: string) => string -@@= skipped -11, +11 lines =@@ - objc8.t12 = { - >objc8.t12 = { foo: ({})} : { foo: IFoo; } - >objc8.t12 : IBar -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t12 : IBar - >{ foo: ({})} : { foo: IFoo; } - -@@= skipped -13, +13 lines =@@ - objc8.t13 = ({ - >objc8.t13 = ({ f: function(i, s) { return s; }}) : IFoo - >objc8.t13 : IFoo -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t13 : IFoo - >({ f: function(i, s) { return s; }}) : IFoo - >({ f: function(i, s) { return s; }}) : { f: (i: number, s: string) => string; } -@@= skipped -17, +17 lines =@@ - objc8.t14 = ({ - >objc8.t14 = ({ a: []}) : IFoo - >objc8.t14 : IFoo -->objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: { (n: number, s: string): number; }; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: { (n: number, s: string): string; }[]; t12: IBar; t13: IFoo; t14: IFoo; } -+>objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } - >t14 : IFoo - >({ a: []}) : IFoo - >({ a: []}) : { a: undefined[]; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypingOfOptionalMembers.types b/testdata/baselines/reference/submodule/compiler/contextualTypingOfOptionalMembers.types index 102561622d3..46ec8e5003c 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypingOfOptionalMembers.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTypingOfOptionalMembers.types @@ -174,7 +174,7 @@ interface ActionsObjectOr { } declare function App4>(props: Options["actions"] & { state: State }): JSX.Element; ->App4 : >(props: (string | Actions) & { state: State; }) => JSX.Element +>App4 : >(props: Options["actions"] & { state: State; }) => JSX.Element >props : (string | Actions) & { state: State; } >state : State >JSX : any @@ -182,7 +182,7 @@ declare function App4>(props: Opti const a = s} />; // TODO: should be number => number, but JSX resolution is missing an inferential pass >a : JSX.Element > s} /> : JSX.Element ->App4 : >(props: (string | Actions) & { state: State; }) => JSX.Element +>App4 : >(props: Options["actions"] & { state: State; }) => JSX.Element >state : number >100 : 100 >foo : (s: number) => number diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypingOfOptionalMembers.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTypingOfOptionalMembers.types.diff deleted file mode 100644 index 10c595893ba..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualTypingOfOptionalMembers.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.contextualTypingOfOptionalMembers.types -+++ new.contextualTypingOfOptionalMembers.types -@@= skipped -173, +173 lines =@@ - } - - declare function App4>(props: Options["actions"] & { state: State }): JSX.Element; -->App4 : >(props: Options["actions"] & { state: State; }) => JSX.Element -+>App4 : >(props: (string | Actions) & { state: State; }) => JSX.Element - >props : (string | Actions) & { state: State; } - >state : State - >JSX : any -@@= skipped -8, +8 lines =@@ - const a = s} />; // TODO: should be number => number, but JSX resolution is missing an inferential pass - >a : JSX.Element - > s} /> : JSX.Element -->App4 : >(props: Options["actions"] & { state: State; }) => JSX.Element -+>App4 : >(props: (string | Actions) & { state: State; }) => JSX.Element - >state : number - >100 : 100 - >foo : (s: number) => number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.types b/testdata/baselines/reference/submodule/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.types index 814884292c8..6283e02dcf8 100644 --- a/testdata/baselines/reference/submodule/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.types +++ b/testdata/baselines/reference/submodule/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.types @@ -9,7 +9,7 @@ declare function isString(text: unknown): text is string; >text : unknown declare function getPropFromRaw( ->getPropFromRaw : (prop: "exclude" | "files" | "include" | "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 : "exclude" | "files" | "include" | "references" @@ -24,7 +24,7 @@ declare function getPropFromRaw( ): PropOfRaw; function getSpecsFromRaw( ->getSpecsFromRaw : (prop: "exclude" | "files" | "include") => PropOfRaw +>getSpecsFromRaw : (prop: "files" | "include" | "exclude") => PropOfRaw prop: "files" | "include" | "exclude" >prop : "exclude" | "files" | "include" @@ -32,7 +32,7 @@ function getSpecsFromRaw( ): PropOfRaw { return getPropFromRaw(prop, isString, "string"); >getPropFromRaw(prop, isString, "string") : PropOfRaw ->getPropFromRaw : (prop: "exclude" | "files" | "include" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw +>getPropFromRaw : (prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw >prop : "exclude" | "files" | "include" >isString : (text: unknown) => text is string >"string" : "string" diff --git a/testdata/baselines/reference/submodule/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.types.diff b/testdata/baselines/reference/submodule/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.types.diff deleted file mode 100644 index 56f45193e8a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.contextualTypingReturnStatementWithReturnTypeAnnotation.types -+++ new.contextualTypingReturnStatementWithReturnTypeAnnotation.types -@@= skipped -8, +8 lines =@@ - >text : unknown - - declare function getPropFromRaw( -->getPropFromRaw : (prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw -+>getPropFromRaw : (prop: "exclude" | "files" | "include" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw - - prop: "files" | "include" | "exclude" | "references", - >prop : "exclude" | "files" | "include" | "references" -@@= skipped -15, +15 lines =@@ - ): PropOfRaw; - - function getSpecsFromRaw( -->getSpecsFromRaw : (prop: "files" | "include" | "exclude") => PropOfRaw -+>getSpecsFromRaw : (prop: "exclude" | "files" | "include") => PropOfRaw - - prop: "files" | "include" | "exclude" - >prop : "exclude" | "files" | "include" -@@= skipped -8, +8 lines =@@ - ): PropOfRaw { - 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: "exclude" | "files" | "include" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw - >prop : "exclude" | "files" | "include" - >isString : (text: unknown) => text is string - >"string" : "string" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypeArgumentsKeyword.types b/testdata/baselines/reference/submodule/compiler/contextuallyTypeArgumentsKeyword.types index 634a4d20eb1..e3b706a118d 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypeArgumentsKeyword.types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypeArgumentsKeyword.types @@ -11,7 +11,7 @@ const x = { setTimeout(function() { arguments }, 0); >setTimeout(function() { arguments }, 0) : number ->setTimeout : (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]) => number +>setTimeout : (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number >function() { arguments } : () => void >arguments : IArguments >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypeArgumentsKeyword.types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypeArgumentsKeyword.types.diff index ec9d4e2830c..934ce01c156 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypeArgumentsKeyword.types.diff +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypeArgumentsKeyword.types.diff @@ -1,12 +1,10 @@ --- old.contextuallyTypeArgumentsKeyword.types +++ new.contextuallyTypeArgumentsKeyword.types -@@= skipped -10, +10 lines =@@ - +@@= skipped -11, +11 lines =@@ setTimeout(function() { arguments }, 0); >setTimeout(function() { arguments }, 0) : number -->setTimeout : (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number + >setTimeout : (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number ->function() { arguments } : (...args: any[]) => void -+>setTimeout : (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]) => number +>function() { arguments } : () => void >arguments : IArguments >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedByDiscriminableUnion2.types b/testdata/baselines/reference/submodule/compiler/contextuallyTypedByDiscriminableUnion2.types index 3583a58a018..124e9e551e4 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedByDiscriminableUnion2.types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedByDiscriminableUnion2.types @@ -70,8 +70,8 @@ type MyComponentProps = (EnableA | DisableA) & (DisableD | EnableD); const MyComponent = (props: MyComponentProps) => {}; ->MyComponent : (props: (DisableA & DisableB & DisableD) | (DisableA & DisableB & EnableD) | (DisableA & EnableB & DisableD) | (DisableA & EnableB & EnableD) | (EnableA & EnableB & DisableD) | (EnableA & EnableB & EnableD)) => void ->(props: MyComponentProps) => {} : (props: (DisableA & DisableB & DisableD) | (DisableA & DisableB & EnableD) | (DisableA & EnableB & DisableD) | (DisableA & EnableB & EnableD) | (EnableA & EnableB & DisableD) | (EnableA & EnableB & EnableD)) => void +>MyComponent : (props: MyComponentProps) => void +>(props: MyComponentProps) => {} : (props: MyComponentProps) => void >props : (DisableA & DisableB & DisableD) | (DisableA & DisableB & EnableD) | (DisableA & EnableB & DisableD) | (DisableA & EnableB & EnableD) | (EnableA & EnableB & DisableD) | (EnableA & EnableB & EnableD) declare const item: string | null; @@ -79,7 +79,7 @@ declare const item: string | null; MyComponent({ >MyComponent({ enableD: true, value: item, setItem: (item) => {},}) : void ->MyComponent : (props: (DisableA & DisableB & DisableD) | (DisableA & DisableB & EnableD) | (DisableA & EnableB & DisableD) | (DisableA & EnableB & EnableD) | (EnableA & EnableB & DisableD) | (EnableA & EnableB & EnableD)) => void +>MyComponent : (props: MyComponentProps) => void >{ enableD: true, value: item, setItem: (item) => {},} : { enableD: true; value: string | null; setItem: (item: Identifiable | null) => void; } enableD: true, diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedByDiscriminableUnion2.types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypedByDiscriminableUnion2.types.diff deleted file mode 100644 index df182f640a5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedByDiscriminableUnion2.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.contextuallyTypedByDiscriminableUnion2.types -+++ new.contextuallyTypedByDiscriminableUnion2.types -@@= skipped -69, +69 lines =@@ - (DisableD | EnableD); - - const MyComponent = (props: MyComponentProps) => {}; -->MyComponent : (props: MyComponentProps) => void -->(props: MyComponentProps) => {} : (props: MyComponentProps) => void -+>MyComponent : (props: (DisableA & DisableB & DisableD) | (DisableA & DisableB & EnableD) | (DisableA & EnableB & DisableD) | (DisableA & EnableB & EnableD) | (EnableA & EnableB & DisableD) | (EnableA & EnableB & EnableD)) => void -+>(props: MyComponentProps) => {} : (props: (DisableA & DisableB & DisableD) | (DisableA & DisableB & EnableD) | (DisableA & EnableB & DisableD) | (DisableA & EnableB & EnableD) | (EnableA & EnableB & DisableD) | (EnableA & EnableB & EnableD)) => void - >props : (DisableA & DisableB & DisableD) | (DisableA & DisableB & EnableD) | (DisableA & EnableB & DisableD) | (DisableA & EnableB & EnableD) | (EnableA & EnableB & DisableD) | (EnableA & EnableB & EnableD) - - declare const item: string | null; -@@= skipped -9, +9 lines =@@ - - MyComponent({ - >MyComponent({ enableD: true, value: item, setItem: (item) => {},}) : void -->MyComponent : (props: MyComponentProps) => void -+>MyComponent : (props: (DisableA & DisableB & DisableD) | (DisableA & DisableB & EnableD) | (DisableA & EnableB & DisableD) | (DisableA & EnableB & EnableD) | (EnableA & EnableB & DisableD) | (EnableA & EnableB & EnableD)) => void - >{ enableD: true, value: item, setItem: (item) => {},} : { enableD: true; value: string | null; setItem: (item: Identifiable | null) => void; } - - enableD: true, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute.types b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute.types index 569ddc71086..b554f34fc0c 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute.types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute.types @@ -3,12 +3,12 @@ === index.tsx === interface Elements { foo: { callback?: (value: number) => void }; ->foo : { callback?: ((value: number) => void) | undefined; } +>foo : { callback?: (value: number) => void; } >callback : ((value: number) => void) | undefined >value : number bar: { callback?: (value: string) => void }; ->bar : { callback?: ((value: string) => void) | undefined; } +>bar : { callback?: (value: string) => void; } >callback : ((value: string) => void) | undefined >value : string } diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute.types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute.types.diff deleted file mode 100644 index e317d17b7f6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.contextuallyTypedJsxAttribute.types -+++ new.contextuallyTypedJsxAttribute.types -@@= skipped -2, +2 lines =@@ - === index.tsx === - interface Elements { - foo: { callback?: (value: number) => void }; -->foo : { callback?: (value: number) => void; } -+>foo : { callback?: ((value: number) => void) | undefined; } - >callback : ((value: number) => void) | undefined - >value : number - - bar: { callback?: (value: string) => void }; -->bar : { callback?: (value: string) => void; } -+>bar : { callback?: ((value: string) => void) | undefined; } - >callback : ((value: string) => void) | undefined - >value : string - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute2.types b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute2.types index 5ba8d4f7d42..39d1ac9951f 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute2.types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute2.types @@ -31,10 +31,10 @@ function UnwrappedLink( >e : React.MouseEvent function UnwrappedLink2( ->UnwrappedLink2 : (props: Omit, "as"> & { as?: T | undefined; }) => JSX.Element +>UnwrappedLink2 : (props: Omit, "as"> & { as?: T; }) => JSX.Element props: Omit, "as"> & { ->props : Omit, "as"> & { as?: T | undefined; } +>props : Omit, "as"> & { as?: T; } as?: T; >as : T | undefined @@ -49,14 +49,14 @@ function UnwrappedLink2( {}} />; > {}} /> : JSX.Element ->UnwrappedLink2 : (props: Omit, "as"> & { as?: T | undefined; }) => JSX.Element +>UnwrappedLink2 : (props: Omit, "as"> & { as?: T; }) => JSX.Element >onClick : (e: React.MouseEvent) => void >(e) => {} : (e: React.MouseEvent) => void >e : React.MouseEvent {}} />; > {}} /> : JSX.Element ->UnwrappedLink2 : (props: Omit, "as"> & { as?: T | undefined; }) => JSX.Element +>UnwrappedLink2 : (props: Omit, "as"> & { as?: T; }) => JSX.Element >as : "button" >onClick : (e: React.MouseEvent) => void >(e) => {} : (e: React.MouseEvent) => void diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute2.types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute2.types.diff index ffbc0766940..13b25d4f74f 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxAttribute2.types.diff @@ -25,11 +25,11 @@ function UnwrappedLink2( ->UnwrappedLink2 : (props: Omit, "as"> & { as?: T; }) => JSX.Element -+>UnwrappedLink2 : (props: Omit, "as"> & { as?: T | undefined; }) => JSX.Element ++>UnwrappedLink2 : (props: Omit, "as"> & { as?: T; }) => JSX.Element props: Omit, "as"> & { ->props : Omit, "as"> & { as?: T; } -+>props : Omit, "as"> & { as?: T | undefined; } ++>props : Omit, "as"> & { as?: T; } as?: T; >as : T | undefined @@ -38,7 +38,7 @@ {}} />; > {}} /> : JSX.Element ->UnwrappedLink2 : (props: Omit, "as"> & { as?: T; }) => JSX.Element -+>UnwrappedLink2 : (props: Omit, "as"> & { as?: T | undefined; }) => JSX.Element ++>UnwrappedLink2 : (props: Omit, "as"> & { as?: T; }) => JSX.Element >onClick : (e: React.MouseEvent) => void >(e) => {} : (e: React.MouseEvent) => void >e : React.MouseEvent @@ -46,7 +46,7 @@ {}} />; > {}} /> : JSX.Element ->UnwrappedLink2 : (props: Omit, "as"> & { as?: T; }) => JSX.Element -+>UnwrappedLink2 : (props: Omit, "as"> & { as?: T | undefined; }) => JSX.Element ++>UnwrappedLink2 : (props: Omit, "as"> & { as?: T; }) => JSX.Element >as : "button" >onClick : (e: React.MouseEvent) => void >(e) => {} : (e: React.MouseEvent) => void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxChildren2.types b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxChildren2.types index c87db4e2797..78de1b3d588 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxChildren2.types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxChildren2.types @@ -9,8 +9,8 @@ import * as React from 'react'; >React : typeof React declare const TestComponentWithChildren: (props: { ->TestComponentWithChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement ->props : { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; } +>TestComponentWithChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement +>props : { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; } state: T; >state : T @@ -28,8 +28,8 @@ declare const TestComponentWithChildren: (props: { >React : any declare const TestComponentWithoutChildren: (props: { ->TestComponentWithoutChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; notChildren?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement ->props : { state: T; selector?: ((state: NoInfer) => TParam) | undefined; notChildren?: ((state: NoInfer) => React.ReactElement | null) | undefined; } +>TestComponentWithoutChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; notChildren?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement +>props : { state: T; selector?: (state: NoInfer) => TParam; notChildren?: (state: NoInfer) => React.ReactElement | null; } state: T; >state : T @@ -58,7 +58,7 @@ const App = () => { state.foo}> > state.foo}> {(selected) =>

} : JSX.Element ->TestComponentWithChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement +>TestComponentWithChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement >state : { foo: number; } >{ foo: 123 } : { foo: number; } >foo : number @@ -84,11 +84,11 @@ const App = () => { >div : any ->TestComponentWithChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement +>TestComponentWithChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement state.foo} notChildren={(selected) =>
{Math.max(selected, 0)}
} /> : JSX.Element ->TestComponentWithoutChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; notChildren?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement +>TestComponentWithoutChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; notChildren?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement state={{ foo: 123 }} >state : { foo: number; } @@ -131,8 +131,8 @@ interface State { } declare const Subscribe: (props: { ->Subscribe : (props: { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; }) => React.ReactElement ->props : { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; } +>Subscribe : (props: { selector?: (state: State) => TSelected; children: (state: TSelected) => void; }) => React.ReactElement +>props : { selector?: (state: State) => TSelected; children: (state: TSelected) => void; } selector?: (state: State) => TSelected >selector : ((state: State) => TSelected) | undefined @@ -151,7 +151,7 @@ const _result = ( { return [state.value] }} > {([value = false]) => { console.log(value) }} : JSX.Element ->Subscribe : (props: { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; }) => React.ReactElement +>Subscribe : (props: { selector?: (state: State) => TSelected; children: (state: TSelected) => void; }) => React.ReactElement selector={(state) => { >selector : (state: State) => boolean[] @@ -180,7 +180,7 @@ const _result = ( }} ->Subscribe : (props: { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; }) => React.ReactElement +>Subscribe : (props: { selector?: (state: State) => TSelected; children: (state: TSelected) => void; }) => React.ReactElement ) diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxChildren2.types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxChildren2.types.diff deleted file mode 100644 index 7b443f3a2bb..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedJsxChildren2.types.diff +++ /dev/null @@ -1,75 +0,0 @@ ---- old.contextuallyTypedJsxChildren2.types -+++ new.contextuallyTypedJsxChildren2.types -@@= skipped -8, +8 lines =@@ - >React : typeof React - - declare const TestComponentWithChildren: (props: { -->TestComponentWithChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement -->props : { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; } -+>TestComponentWithChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement -+>props : { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; } - - state: T; - >state : T -@@= skipped -19, +19 lines =@@ - >React : any - - declare const TestComponentWithoutChildren: (props: { -->TestComponentWithoutChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; notChildren?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement -->props : { state: T; selector?: (state: NoInfer) => TParam; notChildren?: (state: NoInfer) => React.ReactElement | null; } -+>TestComponentWithoutChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; notChildren?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement -+>props : { state: T; selector?: ((state: NoInfer) => TParam) | undefined; notChildren?: ((state: NoInfer) => React.ReactElement | null) | undefined; } - - state: T; - >state : T -@@= skipped -30, +30 lines =@@ - - state.foo}> - > state.foo}> {(selected) =>
{Math.max(selected, 0)}
}
: JSX.Element -->TestComponentWithChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement -+>TestComponentWithChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement - >state : { foo: number; } - >{ foo: 123 } : { foo: number; } - >foo : number -@@= skipped -26, +26 lines =@@ - >div : any - -
-->TestComponentWithChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; children?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement -+>TestComponentWithChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; children?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement - - state.foo} notChildren={(selected) =>
{Math.max(selected, 0)}
} /> : JSX.Element -->TestComponentWithoutChildren : (props: { state: T; selector?: (state: NoInfer) => TParam; notChildren?: (state: NoInfer) => React.ReactElement | null; }) => React.ReactElement -+>TestComponentWithoutChildren : (props: { state: T; selector?: ((state: NoInfer) => TParam) | undefined; notChildren?: ((state: NoInfer) => React.ReactElement | null) | undefined; }) => React.ReactElement - - state={{ foo: 123 }} - >state : { foo: number; } -@@= skipped -47, +47 lines =@@ - } - - declare const Subscribe: (props: { -->Subscribe : (props: { selector?: (state: State) => TSelected; children: (state: TSelected) => void; }) => React.ReactElement -->props : { selector?: (state: State) => TSelected; children: (state: TSelected) => void; } -+>Subscribe : (props: { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; }) => React.ReactElement -+>props : { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; } - - selector?: (state: State) => TSelected - >selector : ((state: State) => TSelected) | undefined -@@= skipped -20, +20 lines =@@ - - { return [state.value] }} > {([value = false]) => { console.log(value) }} : JSX.Element -->Subscribe : (props: { selector?: (state: State) => TSelected; children: (state: TSelected) => void; }) => React.ReactElement -+>Subscribe : (props: { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; }) => React.ReactElement - - selector={(state) => { - >selector : (state: State) => boolean[] -@@= skipped -29, +29 lines =@@ - - }} - -->Subscribe : (props: { selector?: (state: State) => TSelected; children: (state: TSelected) => void; }) => React.ReactElement -+>Subscribe : (props: { selector?: ((state: State) => TSelected) | undefined; children: (state: TSelected) => void; }) => React.ReactElement - - ) diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types b/testdata/baselines/reference/submodule/compiler/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types index 4f61393ee3d..ce5f488f083 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types @@ -9,14 +9,14 @@ declare function match(cb: (value: T) => boolean): T; >value : T declare function foo(pos: { x?: number; y?: number }): boolean; ->foo : (pos: { x?: number | undefined; y?: number | undefined; }) => boolean ->pos : { x?: number | undefined; y?: number | undefined; } +>foo : (pos: { x?: number; y?: number; }) => boolean +>pos : { x?: number; y?: number; } >x : number | undefined >y : number | undefined foo({ y: match(y => y > 0) }) >foo({ y: match(y => y > 0) }) : boolean ->foo : (pos: { x?: number | undefined; y?: number | undefined; }) => boolean +>foo : (pos: { x?: number; y?: number; }) => boolean >{ y: match(y => y > 0) } : { y: number | undefined; } >y : number | undefined >match(y => y > 0) : number | undefined @@ -28,12 +28,12 @@ foo({ y: match(y => y > 0) }) >0 : 0 declare function foo2(point: [number?]): boolean; ->foo2 : (point: [(number | undefined)?]) => boolean +>foo2 : (point: [number?]) => boolean >point : [(number | undefined)?] foo2([match(y => y > 0)]) >foo2([match(y => y > 0)]) : boolean ->foo2 : (point: [(number | undefined)?]) => boolean +>foo2 : (point: [number?]) => boolean >[match(y => y > 0)] : [number | undefined] >match(y => y > 0) : number | undefined >match : (cb: (value: T) => boolean) => T diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types.diff deleted file mode 100644 index 89b5042e2d9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- old.contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types -+++ new.contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types -@@= skipped -8, +8 lines =@@ - >value : T - - declare function foo(pos: { x?: number; y?: number }): boolean; -->foo : (pos: { x?: number; y?: number; }) => boolean -->pos : { x?: number; y?: number; } -+>foo : (pos: { x?: number | undefined; y?: number | undefined; }) => boolean -+>pos : { x?: number | undefined; y?: number | undefined; } - >x : number | undefined - >y : number | undefined - - foo({ y: match(y => y > 0) }) - >foo({ y: match(y => y > 0) }) : boolean -->foo : (pos: { x?: number; y?: number; }) => boolean -+>foo : (pos: { x?: number | undefined; y?: number | undefined; }) => boolean - >{ y: match(y => y > 0) } : { y: number | undefined; } - >y : number | undefined - >match(y => y > 0) : number | undefined -@@= skipped -19, +19 lines =@@ - >0 : 0 - - declare function foo2(point: [number?]): boolean; -->foo2 : (point: [number?]) => boolean -+>foo2 : (point: [(number | undefined)?]) => boolean - >point : [(number | undefined)?] - - foo2([match(y => y > 0)]) - >foo2([match(y => y > 0)]) : boolean -->foo2 : (point: [number?]) => boolean -+>foo2 : (point: [(number | undefined)?]) => boolean - >[match(y => y > 0)] : [number | undefined] - >match(y => y > 0) : number | undefined - >match : (cb: (value: T) => boolean) => T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersOptionalInJSDoc.types b/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersOptionalInJSDoc.types index 899c9f70884..07d6d77a6f1 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersOptionalInJSDoc.types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersOptionalInJSDoc.types @@ -52,8 +52,8 @@ const fn2 = * @param {number} [b] */ function self(a, b) { ->function self(a, b) { acceptNum(b); // error self(""); self("", undefined); } : (a: string, b?: number | undefined) => void ->self : (a: string, b?: number | undefined) => void +>function self(a, b) { acceptNum(b); // error self(""); self("", undefined); } : (a: string, b?: number) => void +>self : (a: string, b?: number) => void >a : string >b : number | undefined @@ -64,12 +64,12 @@ const fn2 = self(""); >self("") : void ->self : (a: string, b?: number | undefined) => void +>self : (a: string, b?: number) => void >"" : "" self("", undefined); >self("", undefined) : void ->self : (a: string, b?: number | undefined) => void +>self : (a: string, b?: number) => void >"" : "" >undefined : undefined diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersOptionalInJSDoc.types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersOptionalInJSDoc.types.diff deleted file mode 100644 index 2bb9e8b929d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersOptionalInJSDoc.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.contextuallyTypedParametersOptionalInJSDoc.types -+++ new.contextuallyTypedParametersOptionalInJSDoc.types -@@= skipped -51, +51 lines =@@ - * @param {number} [b] - */ - function self(a, b) { -->function self(a, b) { acceptNum(b); // error self(""); self("", undefined); } : (a: string, b?: number) => void -->self : (a: string, b?: number) => void -+>function self(a, b) { acceptNum(b); // error self(""); self("", undefined); } : (a: string, b?: number | undefined) => void -+>self : (a: string, b?: number | undefined) => void - >a : string - >b : number | undefined - -@@= skipped -12, +12 lines =@@ - - self(""); - >self("") : void -->self : (a: string, b?: number) => void -+>self : (a: string, b?: number | undefined) => void - >"" : "" - - self("", undefined); - >self("", undefined) : void -->self : (a: string, b?: number) => void -+>self : (a: string, b?: number | undefined) => void - >"" : "" - >undefined : undefined diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithInitializers1.types b/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithInitializers1.types index 3de48cad915..9ca2330df37 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithInitializers1.types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithInitializers1.types @@ -17,13 +17,13 @@ declare function id3 any>(input: T): T; >input : T declare function id4 any>(input: T): T; ->id4 : any>(input: T) => T ->x : { foo?: number | undefined; } +>id4 : any>(input: T) => T +>x : { foo?: number; } >foo : number | undefined >input : T declare function id5 any>(input: T): T; ->id5 : any>(input: T) => T +>id5 : any>(input: T) => T >x : number | undefined >input : T @@ -62,10 +62,10 @@ const f13 = id3(function ({ foo = 42 }) { return foo }); >foo : any const f14 = id4(function ({ foo = 42 }) { return foo }); ->f14 : ({ foo }: { foo?: number | undefined; }) => number ->id4(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo?: number | undefined; }) => number ->id4 : any>(input: T) => T ->function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number | undefined; }) => number +>f14 : ({ foo }: { foo?: number; }) => number +>id4(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo?: number; }) => number +>id4 : any>(input: T) => T +>function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number; }) => number >foo : number >42 : 42 >foo : number @@ -98,7 +98,7 @@ const f22 = id2(function (foo = 42) { return foo }); const f25 = id5(function (foo = 42) { return foo }); >f25 : (foo?: number | undefined) => number >id5(function (foo = 42) { return foo }) : (foo?: number | undefined) => number ->id5 : any>(input: T) => T +>id5 : any>(input: T) => T >function (foo = 42) { return foo } : (foo?: number | undefined) => number >foo : number | undefined >42 : 42 diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithInitializers1.types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithInitializers1.types.diff deleted file mode 100644 index 0fe68a52d0f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithInitializers1.types.diff +++ /dev/null @@ -1,43 +0,0 @@ ---- old.contextuallyTypedParametersWithInitializers1.types -+++ new.contextuallyTypedParametersWithInitializers1.types -@@= skipped -16, +16 lines =@@ - >input : T - - declare function id4 any>(input: T): T; -->id4 : any>(input: T) => T -->x : { foo?: number; } -+>id4 : any>(input: T) => T -+>x : { foo?: number | undefined; } - >foo : number | undefined - >input : T - - declare function id5 any>(input: T): T; -->id5 : any>(input: T) => T -+>id5 : any>(input: T) => T - >x : number | undefined - >input : T - -@@= skipped -45, +45 lines =@@ - >foo : any - - const f14 = id4(function ({ foo = 42 }) { return foo }); -->f14 : ({ foo }: { foo?: number; }) => number -->id4(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo?: number; }) => number -->id4 : any>(input: T) => T -->function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number; }) => number -+>f14 : ({ foo }: { foo?: number | undefined; }) => number -+>id4(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo?: number | undefined; }) => number -+>id4 : any>(input: T) => T -+>function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number | undefined; }) => number - >foo : number - >42 : 42 - >foo : number -@@= skipped -36, +36 lines =@@ - const f25 = id5(function (foo = 42) { return foo }); - >f25 : (foo?: number | undefined) => number - >id5(function (foo = 42) { return foo }) : (foo?: number | undefined) => number -->id5 : any>(input: T) => T -+>id5 : any>(input: T) => T - >function (foo = 42) { return foo } : (foo?: number | undefined) => number - >foo : number | undefined - >42 : 42 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithQuestionToken.types b/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithQuestionToken.types index ae31679be57..c8699c2042c 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithQuestionToken.types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithQuestionToken.types @@ -38,8 +38,8 @@ const f2: (a: string, b: number) => void = function self(a, b?: number) { >f2 : (a: string, b: number) => void >a : string >b : number ->function self(a, b?: number) { acceptNum(b); // error self(""); self("", undefined);} : (a: string, b?: number | undefined) => void ->self : (a: string, b?: number | undefined) => void +>function self(a, b?: number) { acceptNum(b); // error self(""); self("", undefined);} : (a: string, b?: number) => void +>self : (a: string, b?: number) => void >a : string >b : number | undefined @@ -50,12 +50,12 @@ const f2: (a: string, b: number) => void = function self(a, b?: number) { self(""); >self("") : void ->self : (a: string, b?: number | undefined) => void +>self : (a: string, b?: number) => void >"" : "" self("", undefined); >self("", undefined) : void ->self : (a: string, b?: number | undefined) => void +>self : (a: string, b?: number) => void >"" : "" >undefined : undefined diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithQuestionToken.types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithQuestionToken.types.diff deleted file mode 100644 index 5683a013215..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedParametersWithQuestionToken.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.contextuallyTypedParametersWithQuestionToken.types -+++ new.contextuallyTypedParametersWithQuestionToken.types -@@= skipped -37, +37 lines =@@ - >f2 : (a: string, b: number) => void - >a : string - >b : number -->function self(a, b?: number) { acceptNum(b); // error self(""); self("", undefined);} : (a: string, b?: number) => void -->self : (a: string, b?: number) => void -+>function self(a, b?: number) { acceptNum(b); // error self(""); self("", undefined);} : (a: string, b?: number | undefined) => void -+>self : (a: string, b?: number | undefined) => void - >a : string - >b : number | undefined - -@@= skipped -12, +12 lines =@@ - - self(""); - >self("") : void -->self : (a: string, b?: number) => void -+>self : (a: string, b?: number | undefined) => void - >"" : "" - - self("", undefined); - >self("", undefined) : void -->self : (a: string, b?: number) => void -+>self : (a: string, b?: number | undefined) => void - >"" : "" - >undefined : undefined diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedSymbolNamedProperties.types b/testdata/baselines/reference/submodule/compiler/contextuallyTypedSymbolNamedProperties.types index c3091be7e8c..2a207cde0d7 100644 --- a/testdata/baselines/reference/submodule/compiler/contextuallyTypedSymbolNamedProperties.types +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedSymbolNamedProperties.types @@ -32,7 +32,7 @@ declare const ab: Action; >ab : Action declare function f(action: T, blah: { [K in T['type']]: (p: K) => void }): any; ->f : (action: T, blah: { [K in T["type"]]: (p: K) => void; }) => any +>f : (action: T, blah: { [K in T['type']]: (p: K) => void; }) => any >type : string | symbol >action : T >blah : { [K in T["type"]]: (p: K) => void; } @@ -40,7 +40,7 @@ declare function f(action: T, blah: { [K in f(ab, { >f(ab, { [A]: ap => { ap.description }, [B]: bp => { bp.description },}) : any ->f : (action: T, blah: { [K in T["type"]]: (p: K) => void; }) => any +>f : (action: T, blah: { [K in T['type']]: (p: K) => void; }) => any >ab : Action >{ [A]: ap => { ap.description }, [B]: bp => { bp.description },} : { [A]: (ap: unique symbol) => void; [B]: (bp: unique symbol) => void; } diff --git a/testdata/baselines/reference/submodule/compiler/contextuallyTypedSymbolNamedProperties.types.diff b/testdata/baselines/reference/submodule/compiler/contextuallyTypedSymbolNamedProperties.types.diff new file mode 100644 index 00000000000..6cb7f848079 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/contextuallyTypedSymbolNamedProperties.types.diff @@ -0,0 +1,19 @@ +--- old.contextuallyTypedSymbolNamedProperties.types ++++ new.contextuallyTypedSymbolNamedProperties.types +@@= skipped -31, +31 lines =@@ + >ab : Action + + declare function f(action: T, blah: { [K in T['type']]: (p: K) => void }): any; +->f : (action: T, blah: { [K in T["type"]]: (p: K) => void; }) => any ++>f : (action: T, blah: { [K in T['type']]: (p: K) => void; }) => any + >type : string | symbol + >action : T + >blah : { [K in T["type"]]: (p: K) => void; } +@@= skipped -8, +8 lines =@@ + + f(ab, { + >f(ab, { [A]: ap => { ap.description }, [B]: bp => { bp.description },}) : any +->f : (action: T, blah: { [K in T["type"]]: (p: K) => void; }) => any ++>f : (action: T, blah: { [K in T['type']]: (p: K) => void; }) => any + >ab : Action + >{ [A]: ap => { ap.description }, [B]: bp => { bp.description },} : { [A]: (ap: unique symbol) => void; [B]: (bp: unique symbol) => void; } diff --git a/testdata/baselines/reference/submodule/compiler/contravariantInferenceAndTypeGuard.types b/testdata/baselines/reference/submodule/compiler/contravariantInferenceAndTypeGuard.types index f689c3e37fc..b6d5687cd61 100644 --- a/testdata/baselines/reference/submodule/compiler/contravariantInferenceAndTypeGuard.types +++ b/testdata/baselines/reference/submodule/compiler/contravariantInferenceAndTypeGuard.types @@ -29,21 +29,21 @@ declare class List { >List : List filter(fn: FilterFn, context: TContext): 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 >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): 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 >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> } interface Test { diff --git a/testdata/baselines/reference/submodule/compiler/contravariantInferenceAndTypeGuard.types.diff b/testdata/baselines/reference/submodule/compiler/contravariantInferenceAndTypeGuard.types.diff index 825ff26eff9..92282247cf3 100644 --- a/testdata/baselines/reference/submodule/compiler/contravariantInferenceAndTypeGuard.types.diff +++ b/testdata/baselines/reference/submodule/compiler/contravariantInferenceAndTypeGuard.types.diff @@ -5,24 +5,17 @@ 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): List; (fn: IteratorFn>): List; } ++>filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext): 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; } ++>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): 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 >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> - } - interface Test { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceFromAnnotatedFunctionJs.types b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceFromAnnotatedFunctionJs.types index 22ef6a0604e..6ef2132ce27 100644 --- a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceFromAnnotatedFunctionJs.types +++ b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceFromAnnotatedFunctionJs.types @@ -14,7 +14,7 @@ * @returns {[A, B]} */ function foo(fns) { ->foo : >(fns: any) => [A, B] +>foo : >(fns: Funcs) => [A, B] >fns : any return /** @type {any} */ (null); @@ -24,7 +24,7 @@ function foo(fns) { const result = foo({ >result : [unknown, Record] >foo({ bar: { fn: /** @param {string} a */ (a) => {}, thing: "asd", },}) : [unknown, Record] ->foo : >(fns: any) => [A, B] +>foo : >(fns: Funcs) => [A, B] >{ bar: { fn: /** @param {string} a */ (a) => {}, thing: "asd", },} : { bar: { fn: (a: string) => void; thing: string; }; } bar: { diff --git a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceFromAnnotatedFunctionJs.types.diff b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceFromAnnotatedFunctionJs.types.diff index 477ca600701..139fdc8a585 100644 --- a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceFromAnnotatedFunctionJs.types.diff +++ b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceFromAnnotatedFunctionJs.types.diff @@ -1,12 +1,10 @@ --- old.contravariantOnlyInferenceFromAnnotatedFunctionJs.types +++ new.contravariantOnlyInferenceFromAnnotatedFunctionJs.types -@@= skipped -13, +13 lines =@@ - * @returns {[A, B]} +@@= skipped -14, +14 lines =@@ */ function foo(fns) { -->foo : >(fns: Funcs) => [A, B] + >foo : >(fns: Funcs) => [A, B] ->fns : Funcs -+>foo : >(fns: any) => [A, B] +>fns : any return /** @type {any} */ (null); @@ -16,10 +14,7 @@ const result = foo({ ->result : [string, { bar: string; }] ->foo({ bar: { fn: /** @param {string} a */ (a) => {}, thing: "asd", },}) : [string, { bar: string; }] -->foo : >(fns: Funcs) => [A, B] +>result : [unknown, Record] +>foo({ bar: { fn: /** @param {string} a */ (a) => {}, thing: "asd", },}) : [unknown, Record] -+>foo : >(fns: any) => [A, B] + >foo : >(fns: Funcs) => [A, B] >{ bar: { fn: /** @param {string} a */ (a) => {}, thing: "asd", },} : { bar: { fn: (a: string) => void; thing: string; }; } - - bar: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types index 310a849d514..f365dbeeea8 100644 --- a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types +++ b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types @@ -13,7 +13,7 @@ const a = filter((pose?: number) => true); >a : number | undefined >filter((pose?: number) => true) : number | undefined >filter : (predicate: (value: T, index: number) => boolean) => T ->(pose?: number) => true : (pose?: number | undefined) => true +>(pose?: number) => true : (pose?: number) => true >pose : number | undefined >true : true @@ -21,7 +21,7 @@ const b = filter((pose?: number, _?: number) => true); >b : number | undefined >filter((pose?: number, _?: number) => true) : number | undefined >filter : (predicate: (value: T, index: number) => boolean) => T ->(pose?: number, _?: number) => true : (pose?: number | undefined, _?: number | undefined) => true +>(pose?: number, _?: number) => true : (pose?: number, _?: number) => true >pose : number | undefined >_ : number | undefined >true : true diff --git a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types.diff b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types.diff deleted file mode 100644 index 553a125d030..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.contravariantOnlyInferenceWithAnnotatedOptionalParameter.types -+++ new.contravariantOnlyInferenceWithAnnotatedOptionalParameter.types -@@= skipped -12, +12 lines =@@ - >a : number | undefined - >filter((pose?: number) => true) : number | undefined - >filter : (predicate: (value: T, index: number) => boolean) => T -->(pose?: number) => true : (pose?: number) => true -+>(pose?: number) => true : (pose?: number | undefined) => true - >pose : number | undefined - >true : true - -@@= skipped -8, +8 lines =@@ - >b : number | undefined - >filter((pose?: number, _?: number) => true) : number | undefined - >filter : (predicate: (value: T, index: number) => boolean) => T -->(pose?: number, _?: number) => true : (pose?: number, _?: number) => true -+>(pose?: number, _?: number) => true : (pose?: number | undefined, _?: number | undefined) => true - >pose : number | undefined - >_ : number | undefined - >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types index 7c43485ae5e..ca1760bca06 100644 --- a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types +++ b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types @@ -23,7 +23,7 @@ const a = filter( * @param {number} [pose] */ (pose) => true ->(pose) => true : (pose?: number | undefined) => true +>(pose) => true : (pose?: number) => true >pose : number | undefined >true : true @@ -39,7 +39,7 @@ const b = filter( * @param {number} [_] */ (pose, _) => true ->(pose, _) => true : (pose?: number | undefined, _?: number | undefined) => true +>(pose, _) => true : (pose?: number, _?: number) => true >pose : number | undefined >_ : number | undefined >true : true diff --git a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types.diff b/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types.diff deleted file mode 100644 index f76fbfc7c65..00000000000 --- a/testdata/baselines/reference/submodule/compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types -+++ new.contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types -@@= skipped -22, +22 lines =@@ - * @param {number} [pose] - */ - (pose) => true -->(pose) => true : (pose?: number) => true -+>(pose) => true : (pose?: number | undefined) => true - >pose : number | undefined - >true : true - -@@= skipped -16, +16 lines =@@ - * @param {number} [_] - */ - (pose, _) => true -->(pose, _) => true : (pose?: number, _?: number) => true -+>(pose, _) => true : (pose?: number | undefined, _?: number | undefined) => true - >pose : number | undefined - >_ : number | undefined - >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowAliasedDiscriminants.types b/testdata/baselines/reference/submodule/compiler/controlFlowAliasedDiscriminants.types index 71f0793acc7..e3580a40b1b 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowAliasedDiscriminants.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowAliasedDiscriminants.types @@ -71,21 +71,21 @@ if (isSuccess1 && isSuccess2 && isSuccess3) { data1.toExponential(); // should ok >data1.toExponential() : string ->data1.toExponential : (fractionDigits?: number | undefined) => string +>data1.toExponential : (fractionDigits?: number) => string >data1 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string data2.toExponential(); // should ok >data2.toExponential() : string ->data2.toExponential : (fractionDigits?: number | undefined) => string +>data2.toExponential : (fractionDigits?: number) => string >data2 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string data3.toExponential(); // should ok >data3.toExponential() : string ->data3.toExponential : (fractionDigits?: number | undefined) => string +>data3.toExponential : (fractionDigits?: number) => string >data3 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string } const areSuccess = isSuccess1 && isSuccess2 && isSuccess3; @@ -101,21 +101,21 @@ if (areSuccess) { data1.toExponential(); // should ok >data1.toExponential() : string ->data1.toExponential : (fractionDigits?: number | undefined) => string +>data1.toExponential : (fractionDigits?: number) => string >data1 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string data2.toExponential(); // should ok >data2.toExponential() : string ->data2.toExponential : (fractionDigits?: number | undefined) => string +>data2.toExponential : (fractionDigits?: number) => string >data2 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string data3.toExponential(); // should ok >data3.toExponential() : string ->data3.toExponential : (fractionDigits?: number | undefined) => string +>data3.toExponential : (fractionDigits?: number) => string >data3 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string } { @@ -156,26 +156,26 @@ if (areSuccess) { data1.toExponential(); // should error >data1.toExponential() : string ->data1.toExponential : (fractionDigits?: number | undefined) => string +>data1.toExponential : (fractionDigits?: number) => string >data1 : number | undefined ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string data2.toExponential(); // should error >data2.toExponential() : string ->data2.toExponential : (fractionDigits?: number | undefined) => string +>data2.toExponential : (fractionDigits?: number) => string >data2 : number | undefined ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string data3.toExponential(); // should ok >data3.toExponential() : string ->data3.toExponential : (fractionDigits?: number | undefined) => string +>data3.toExponential : (fractionDigits?: number) => string >data3 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string } } declare function getArrayResult(): [true, number] | [false, undefined]; ->getArrayResult : () => [false, undefined] | [true, number] +>getArrayResult : () => [true, number] | [false, undefined] >true : true >false : false { @@ -183,19 +183,19 @@ declare function getArrayResult(): [true, number] | [false, undefined]; >foo1 : boolean >bar1 : number | undefined >getArrayResult() : [false, undefined] | [true, number] ->getArrayResult : () => [false, undefined] | [true, number] +>getArrayResult : () => [true, number] | [false, undefined] const [foo2, bar2] = getArrayResult(); >foo2 : boolean >bar2 : number | undefined >getArrayResult() : [false, undefined] | [true, number] ->getArrayResult : () => [false, undefined] | [true, number] +>getArrayResult : () => [true, number] | [false, undefined] const [foo3, bar3] = getArrayResult(); >foo3 : boolean >bar3 : number | undefined >getArrayResult() : [false, undefined] | [true, number] ->getArrayResult : () => [false, undefined] | [true, number] +>getArrayResult : () => [true, number] | [false, undefined] const arrayAllSuccess = foo1 && foo2 && foo3; >arrayAllSuccess : boolean @@ -210,21 +210,21 @@ declare function getArrayResult(): [true, number] | [false, undefined]; bar1.toExponential(); // should ok >bar1.toExponential() : string ->bar1.toExponential : (fractionDigits?: number | undefined) => string +>bar1.toExponential : (fractionDigits?: number) => string >bar1 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string bar2.toExponential(); // should ok >bar2.toExponential() : string ->bar2.toExponential : (fractionDigits?: number | undefined) => string +>bar2.toExponential : (fractionDigits?: number) => string >bar2 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string bar3.toExponential(); // should ok >bar3.toExponential() : string ->bar3.toExponential : (fractionDigits?: number | undefined) => string +>bar3.toExponential : (fractionDigits?: number) => string >bar3 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string } } @@ -233,19 +233,19 @@ declare function getArrayResult(): [true, number] | [false, undefined]; >foo1 : boolean >bar1 : number | undefined >getArrayResult() : [false, undefined] | [true, number] ->getArrayResult : () => [false, undefined] | [true, number] +>getArrayResult : () => [true, number] | [false, undefined] let [foo2, bar2] = getArrayResult(); >foo2 : boolean >bar2 : number | undefined >getArrayResult() : [false, undefined] | [true, number] ->getArrayResult : () => [false, undefined] | [true, number] +>getArrayResult : () => [true, number] | [false, undefined] let [foo3, bar3] = getArrayResult(); >foo3 : boolean >bar3 : number | undefined >getArrayResult() : [false, undefined] | [true, number] ->getArrayResult : () => [false, undefined] | [true, number] +>getArrayResult : () => [true, number] | [false, undefined] const arrayAllSuccess = foo1 && foo2 && foo3; >arrayAllSuccess : boolean @@ -260,21 +260,21 @@ declare function getArrayResult(): [true, number] | [false, undefined]; bar1.toExponential(); // should ok >bar1.toExponential() : string ->bar1.toExponential : (fractionDigits?: number | undefined) => string +>bar1.toExponential : (fractionDigits?: number) => string >bar1 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string bar2.toExponential(); // should error >bar2.toExponential() : string ->bar2.toExponential : (fractionDigits?: number | undefined) => string +>bar2.toExponential : (fractionDigits?: number) => string >bar2 : number | undefined ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string bar3.toExponential(); // should error >bar3.toExponential() : string ->bar3.toExponential : (fractionDigits?: number | undefined) => string +>bar3.toExponential : (fractionDigits?: number) => string >bar3 : number | undefined ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string } } @@ -332,7 +332,7 @@ type Nested = { >resp.resp.data satisfies string : string >resp.resp.data : string >resp.resp : { data: string; } ->resp : { type: "string"; resp: { data: string; }; } +>resp : { type: 'string'; resp: { data: string; }; } >resp : { data: string; } >data : string } @@ -370,7 +370,7 @@ type Nested = { >resp.resp.data satisfies string : string >resp.resp.data : string >resp.resp : { data: string; } ->resp : { type: "string"; resp: { data: string; }; } +>resp : { type: 'string'; resp: { data: string; }; } >resp : { data: string; } >data : string } @@ -402,15 +402,15 @@ function bindingPatternInParameter({ data: data1, isSuccess: isSuccess1 }: UseQu data1.toExponential(); >data1.toExponential() : string ->data1.toExponential : (fractionDigits?: number | undefined) => string +>data1.toExponential : (fractionDigits?: number) => string >data1 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string data2.toExponential(); >data2.toExponential() : string ->data2.toExponential : (fractionDigits?: number | undefined) => string +>data2.toExponential : (fractionDigits?: number) => string >data2 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string } } diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowAliasedDiscriminants.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowAliasedDiscriminants.types.diff index ddd5b5a3bbc..55d66714fda 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowAliasedDiscriminants.types.diff +++ b/testdata/baselines/reference/submodule/compiler/controlFlowAliasedDiscriminants.types.diff @@ -1,213 +1,20 @@ --- old.controlFlowAliasedDiscriminants.types +++ new.controlFlowAliasedDiscriminants.types -@@= skipped -70, +70 lines =@@ - - data1.toExponential(); // should ok - >data1.toExponential() : string -->data1.toExponential : (fractionDigits?: number) => string -+>data1.toExponential : (fractionDigits?: number | undefined) => string - >data1 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - data2.toExponential(); // should ok - >data2.toExponential() : string -->data2.toExponential : (fractionDigits?: number) => string -+>data2.toExponential : (fractionDigits?: number | undefined) => string - >data2 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - data3.toExponential(); // should ok - >data3.toExponential() : string -->data3.toExponential : (fractionDigits?: number) => string -+>data3.toExponential : (fractionDigits?: number | undefined) => string - >data3 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - } - - const areSuccess = isSuccess1 && isSuccess2 && isSuccess3; -@@= skipped -30, +30 lines =@@ - - data1.toExponential(); // should ok - >data1.toExponential() : string -->data1.toExponential : (fractionDigits?: number) => string -+>data1.toExponential : (fractionDigits?: number | undefined) => string - >data1 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - data2.toExponential(); // should ok - >data2.toExponential() : string -->data2.toExponential : (fractionDigits?: number) => string -+>data2.toExponential : (fractionDigits?: number | undefined) => string - >data2 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - data3.toExponential(); // should ok - >data3.toExponential() : string -->data3.toExponential : (fractionDigits?: number) => string -+>data3.toExponential : (fractionDigits?: number | undefined) => string - >data3 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - } - - { -@@= skipped -55, +55 lines =@@ - - data1.toExponential(); // should error - >data1.toExponential() : string -->data1.toExponential : (fractionDigits?: number) => string -+>data1.toExponential : (fractionDigits?: number | undefined) => string - >data1 : number | undefined -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - data2.toExponential(); // should error - >data2.toExponential() : string -->data2.toExponential : (fractionDigits?: number) => string -+>data2.toExponential : (fractionDigits?: number | undefined) => string - >data2 : number | undefined -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - data3.toExponential(); // should ok - >data3.toExponential() : string -->data3.toExponential : (fractionDigits?: number) => string -+>data3.toExponential : (fractionDigits?: number | undefined) => string - >data3 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - } - } - - declare function getArrayResult(): [true, number] | [false, undefined]; -->getArrayResult : () => [true, number] | [false, undefined] -+>getArrayResult : () => [false, undefined] | [true, number] - >true : true - >false : false - { -@@= skipped -27, +27 lines =@@ - >foo1 : boolean - >bar1 : number | undefined - >getArrayResult() : [false, undefined] | [true, number] -->getArrayResult : () => [true, number] | [false, undefined] -+>getArrayResult : () => [false, undefined] | [true, number] - - const [foo2, bar2] = getArrayResult(); - >foo2 : boolean - >bar2 : number | undefined - >getArrayResult() : [false, undefined] | [true, number] -->getArrayResult : () => [true, number] | [false, undefined] -+>getArrayResult : () => [false, undefined] | [true, number] - - const [foo3, bar3] = getArrayResult(); - >foo3 : boolean - >bar3 : number | undefined - >getArrayResult() : [false, undefined] | [true, number] -->getArrayResult : () => [true, number] | [false, undefined] -+>getArrayResult : () => [false, undefined] | [true, number] - - const arrayAllSuccess = foo1 && foo2 && foo3; - >arrayAllSuccess : boolean -@@= skipped -27, +27 lines =@@ - - bar1.toExponential(); // should ok - >bar1.toExponential() : string -->bar1.toExponential : (fractionDigits?: number) => string -+>bar1.toExponential : (fractionDigits?: number | undefined) => string - >bar1 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - bar2.toExponential(); // should ok - >bar2.toExponential() : string -->bar2.toExponential : (fractionDigits?: number) => string -+>bar2.toExponential : (fractionDigits?: number | undefined) => string - >bar2 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - bar3.toExponential(); // should ok - >bar3.toExponential() : string -->bar3.toExponential : (fractionDigits?: number) => string -+>bar3.toExponential : (fractionDigits?: number | undefined) => string - >bar3 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - } - } - -@@= skipped -23, +23 lines =@@ - >foo1 : boolean - >bar1 : number | undefined - >getArrayResult() : [false, undefined] | [true, number] -->getArrayResult : () => [true, number] | [false, undefined] -+>getArrayResult : () => [false, undefined] | [true, number] - - let [foo2, bar2] = getArrayResult(); - >foo2 : boolean - >bar2 : number | undefined - >getArrayResult() : [false, undefined] | [true, number] -->getArrayResult : () => [true, number] | [false, undefined] -+>getArrayResult : () => [false, undefined] | [true, number] - - let [foo3, bar3] = getArrayResult(); - >foo3 : boolean - >bar3 : number | undefined - >getArrayResult() : [false, undefined] | [true, number] -->getArrayResult : () => [true, number] | [false, undefined] -+>getArrayResult : () => [false, undefined] | [true, number] - - const arrayAllSuccess = foo1 && foo2 && foo3; - >arrayAllSuccess : boolean -@@= skipped -27, +27 lines =@@ - - bar1.toExponential(); // should ok - >bar1.toExponential() : string -->bar1.toExponential : (fractionDigits?: number) => string -+>bar1.toExponential : (fractionDigits?: number | undefined) => string - >bar1 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - bar2.toExponential(); // should error - >bar2.toExponential() : string -->bar2.toExponential : (fractionDigits?: number) => string -+>bar2.toExponential : (fractionDigits?: number | undefined) => string - >bar2 : number | undefined -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - bar3.toExponential(); // should error - >bar3.toExponential() : string -->bar3.toExponential : (fractionDigits?: number) => string -+>bar3.toExponential : (fractionDigits?: number | undefined) => string - >bar3 : number | undefined -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - } - } - -@@= skipped -142, +142 lines =@@ - - data1.toExponential(); - >data1.toExponential() : string -->data1.toExponential : (fractionDigits?: number) => string -+>data1.toExponential : (fractionDigits?: number | undefined) => string - >data1 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - data2.toExponential(); - >data2.toExponential() : string -->data2.toExponential : (fractionDigits?: number) => string -+>data2.toExponential : (fractionDigits?: number | undefined) => string - >data2 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - } - } +@@= skipped -331, +331 lines =@@ + >resp.resp.data satisfies string : string + >resp.resp.data : string + >resp.resp : { data: string; } +->resp : { type: "string"; resp: { data: string; }; } ++>resp : { type: 'string'; resp: { data: string; }; } + >resp : { data: string; } + >data : string + } +@@= skipped -38, +38 lines =@@ + >resp.resp.data satisfies string : string + >resp.resp.data : string + >resp.resp : { data: string; } +->resp : { type: "string"; resp: { data: string; }; } ++>resp : { type: 'string'; resp: { data: string; }; } + >resp : { data: string; } + >data : string + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowDestructuringLoop.types b/testdata/baselines/reference/submodule/compiler/controlFlowDestructuringLoop.types index 6939c0d0c22..3dce96915ee 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowDestructuringLoop.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowDestructuringLoop.types @@ -44,9 +44,9 @@ function foo(things: Val[]): void { val.toFixed(2); >val.toFixed(2) : string ->val.toFixed : (fractionDigits?: number | undefined) => string +>val.toFixed : (fractionDigits?: number) => string >val : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string >2 : 2 } else { diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowDestructuringLoop.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowDestructuringLoop.types.diff deleted file mode 100644 index af1565f7ab6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/controlFlowDestructuringLoop.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.controlFlowDestructuringLoop.types -+++ new.controlFlowDestructuringLoop.types -@@= skipped -43, +43 lines =@@ - - val.toFixed(2); - >val.toFixed(2) : string -->val.toFixed : (fractionDigits?: number) => string -+>val.toFixed : (fractionDigits?: number | undefined) => string - >val : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - >2 : 2 - } - else { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowForFunctionLike1.types b/testdata/baselines/reference/submodule/compiler/controlFlowForFunctionLike1.types index 79246618d64..201aafb4b18 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowForFunctionLike1.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowForFunctionLike1.types @@ -2,7 +2,7 @@ === controlFlowForFunctionLike1.ts === function test1(a: number | string) { ->test1 : (a: string | number) => ((arg: number) => boolean) | undefined +>test1 : (a: number | string) => ((arg: typeof a) => boolean) | undefined >a : string | number if (typeof a === "number") { @@ -12,14 +12,14 @@ function test1(a: number | string) { >"number" : "number" const fn = (arg: typeof a) => true; ->fn : (arg: number) => boolean ->(arg: typeof a) => true : (arg: number) => boolean +>fn : (arg: typeof a) => boolean +>(arg: typeof a) => true : (arg: typeof a) => boolean >arg : number >a : number >true : true return fn; ->fn : (arg: number) => boolean +>fn : (arg: typeof a) => boolean } return; } @@ -27,19 +27,19 @@ function test1(a: number | string) { test1(0)?.(100); >test1(0)?.(100) : boolean | undefined >test1(0) : ((arg: number) => boolean) | undefined ->test1 : (a: string | number) => ((arg: number) => boolean) | undefined +>test1 : (a: number | string) => ((arg: typeof a) => boolean) | undefined >0 : 0 >100 : 100 test1(0)?.(""); >test1(0)?.("") : boolean | undefined >test1(0) : ((arg: number) => boolean) | undefined ->test1 : (a: string | number) => ((arg: number) => boolean) | undefined +>test1 : (a: number | string) => ((arg: typeof a) => boolean) | undefined >0 : 0 >"" : "" function test2(a: number | string) { ->test2 : (a: string | number) => ((arg: string | number) => boolean) | undefined +>test2 : (a: number | string) => ((arg: typeof a) => boolean) | undefined >a : string | number if (typeof a === "number") { @@ -49,14 +49,14 @@ function test2(a: number | string) { >"number" : "number" const fn: { (arg: typeof a): boolean; } = () => true; ->fn : (arg: string | number) => boolean +>fn : (arg: typeof a) => boolean >arg : string | number >a : string | number >() => true : () => true >true : true return fn; ->fn : (arg: string | number) => boolean +>fn : (arg: typeof a) => boolean } return; } @@ -64,19 +64,19 @@ function test2(a: number | string) { test2(0)?.(100); >test2(0)?.(100) : boolean | undefined >test2(0) : ((arg: string | number) => boolean) | undefined ->test2 : (a: string | number) => ((arg: string | number) => boolean) | undefined +>test2 : (a: number | string) => ((arg: typeof a) => boolean) | undefined >0 : 0 >100 : 100 test2(0)?.(""); >test2(0)?.("") : boolean | undefined >test2(0) : ((arg: string | number) => boolean) | undefined ->test2 : (a: string | number) => ((arg: string | number) => boolean) | undefined +>test2 : (a: number | string) => ((arg: typeof a) => boolean) | undefined >0 : 0 >"" : "" function test3(a: number | string) { ->test3 : (a: string | number) => (arg: number) => void +>test3 : (a: number | string) => (arg: typeof a) => void >a : string | number if (typeof a === "number") { @@ -86,7 +86,7 @@ function test3(a: number | string) { >"number" : "number" return (arg: typeof a) => {}; ->(arg: typeof a) => {} : (arg: number) => void +>(arg: typeof a) => {} : (arg: typeof a) => void >arg : number >a : number } @@ -99,24 +99,24 @@ function test3(a: number | string) { test3(1)(100); >test3(1)(100) : void >test3(1) : (arg: number) => void ->test3 : (a: string | number) => (arg: number) => void +>test3 : (a: number | string) => (arg: typeof a) => void >1 : 1 >100 : 100 test3(1)(""); >test3(1)("") : void >test3(1) : (arg: number) => void ->test3 : (a: string | number) => (arg: number) => void +>test3 : (a: number | string) => (arg: typeof a) => void >1 : 1 >"" : "" function test4(a: number | string) { ->test4 : (a: string | number) => (arg: string | number) => void +>test4 : (a: number | string) => (arg: typeof a) => void >a : string | number let fn = (arg: typeof a) => {}; ->fn : (arg: string | number) => void ->(arg: typeof a) => {} : (arg: string | number) => void +>fn : (arg: typeof a) => void +>(arg: typeof a) => {} : (arg: typeof a) => void >arg : string | number >a : string | number @@ -132,7 +132,7 @@ function test4(a: number | string) { >"number" : "number" return fn; ->fn : (arg: string | number) => void +>fn : (arg: typeof a) => void } throw new Error(""); >new Error("") : Error @@ -143,14 +143,14 @@ function test4(a: number | string) { test4(1)?.(100); >test4(1)?.(100) : void >test4(1) : (arg: string | number) => void ->test4 : (a: string | number) => (arg: string | number) => void +>test4 : (a: number | string) => (arg: typeof a) => void >1 : 1 >100 : 100 test4(1)?.(""); >test4(1)?.("") : void >test4(1) : (arg: string | number) => void ->test4 : (a: string | number) => (arg: string | number) => void +>test4 : (a: number | string) => (arg: typeof a) => void >1 : 1 >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowForFunctionLike1.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowForFunctionLike1.types.diff deleted file mode 100644 index ae984e34327..00000000000 --- a/testdata/baselines/reference/submodule/compiler/controlFlowForFunctionLike1.types.diff +++ /dev/null @@ -1,156 +0,0 @@ ---- old.controlFlowForFunctionLike1.types -+++ new.controlFlowForFunctionLike1.types -@@= skipped -1, +1 lines =@@ - - === controlFlowForFunctionLike1.ts === - function test1(a: number | string) { -->test1 : (a: number | string) => ((arg: typeof a) => boolean) | undefined -+>test1 : (a: string | number) => ((arg: number) => boolean) | undefined - >a : string | number - - if (typeof a === "number") { -@@= skipped -10, +10 lines =@@ - >"number" : "number" - - const fn = (arg: typeof a) => true; -->fn : (arg: typeof a) => boolean -->(arg: typeof a) => true : (arg: typeof a) => boolean -+>fn : (arg: number) => boolean -+>(arg: typeof a) => true : (arg: number) => boolean - >arg : number - >a : number - >true : true - - return fn; -->fn : (arg: typeof a) => boolean -+>fn : (arg: number) => boolean - } - return; - } -@@= skipped -15, +15 lines =@@ - test1(0)?.(100); - >test1(0)?.(100) : boolean | undefined - >test1(0) : ((arg: number) => boolean) | undefined -->test1 : (a: number | string) => ((arg: typeof a) => boolean) | undefined -+>test1 : (a: string | number) => ((arg: number) => boolean) | undefined - >0 : 0 - >100 : 100 - - test1(0)?.(""); - >test1(0)?.("") : boolean | undefined - >test1(0) : ((arg: number) => boolean) | undefined -->test1 : (a: number | string) => ((arg: typeof a) => boolean) | undefined -+>test1 : (a: string | number) => ((arg: number) => boolean) | undefined - >0 : 0 - >"" : "" - - function test2(a: number | string) { -->test2 : (a: number | string) => ((arg: typeof a) => boolean) | undefined -+>test2 : (a: string | number) => ((arg: string | number) => boolean) | undefined - >a : string | number - - if (typeof a === "number") { -@@= skipped -22, +22 lines =@@ - >"number" : "number" - - const fn: { (arg: typeof a): boolean; } = () => true; -->fn : (arg: typeof a) => boolean -+>fn : (arg: string | number) => boolean - >arg : string | number - >a : string | number - >() => true : () => true - >true : true - - return fn; -->fn : (arg: typeof a) => boolean -+>fn : (arg: string | number) => boolean - } - return; - } -@@= skipped -15, +15 lines =@@ - test2(0)?.(100); - >test2(0)?.(100) : boolean | undefined - >test2(0) : ((arg: string | number) => boolean) | undefined -->test2 : (a: number | string) => ((arg: typeof a) => boolean) | undefined -+>test2 : (a: string | number) => ((arg: string | number) => boolean) | undefined - >0 : 0 - >100 : 100 - - test2(0)?.(""); - >test2(0)?.("") : boolean | undefined - >test2(0) : ((arg: string | number) => boolean) | undefined -->test2 : (a: number | string) => ((arg: typeof a) => boolean) | undefined -+>test2 : (a: string | number) => ((arg: string | number) => boolean) | undefined - >0 : 0 - >"" : "" - - function test3(a: number | string) { -->test3 : (a: number | string) => (arg: typeof a) => void -+>test3 : (a: string | number) => (arg: number) => void - >a : string | number - - if (typeof a === "number") { -@@= skipped -22, +22 lines =@@ - >"number" : "number" - - return (arg: typeof a) => {}; -->(arg: typeof a) => {} : (arg: typeof a) => void -+>(arg: typeof a) => {} : (arg: number) => void - >arg : number - >a : number - } -@@= skipped -13, +13 lines =@@ - test3(1)(100); - >test3(1)(100) : void - >test3(1) : (arg: number) => void -->test3 : (a: number | string) => (arg: typeof a) => void -+>test3 : (a: string | number) => (arg: number) => void - >1 : 1 - >100 : 100 - - test3(1)(""); - >test3(1)("") : void - >test3(1) : (arg: number) => void -->test3 : (a: number | string) => (arg: typeof a) => void -+>test3 : (a: string | number) => (arg: number) => void - >1 : 1 - >"" : "" - - function test4(a: number | string) { -->test4 : (a: number | string) => (arg: typeof a) => void -+>test4 : (a: string | number) => (arg: string | number) => void - >a : string | number - - let fn = (arg: typeof a) => {}; -->fn : (arg: typeof a) => void -->(arg: typeof a) => {} : (arg: typeof a) => void -+>fn : (arg: string | number) => void -+>(arg: typeof a) => {} : (arg: string | number) => void - >arg : string | number - >a : string | number - -@@= skipped -33, +33 lines =@@ - >"number" : "number" - - return fn; -->fn : (arg: typeof a) => void -+>fn : (arg: string | number) => void - } - throw new Error(""); - >new Error("") : Error -@@= skipped -11, +11 lines =@@ - test4(1)?.(100); - >test4(1)?.(100) : void - >test4(1) : (arg: string | number) => void -->test4 : (a: number | string) => (arg: typeof a) => void -+>test4 : (a: string | number) => (arg: string | number) => void - >1 : 1 - >100 : 100 - - test4(1)?.(""); - >test4(1)?.("") : void - >test4(1) : (arg: string | number) => void -->test4 : (a: number | string) => (arg: typeof a) => void -+>test4 : (a: string | number) => (arg: string | number) => void - >1 : 1 - >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowForIndexSignatures.types b/testdata/baselines/reference/submodule/compiler/controlFlowForIndexSignatures.types index 25aa019d2a3..8d71018f686 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowForIndexSignatures.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowForIndexSignatures.types @@ -12,7 +12,7 @@ const boo: Foo = { bar: 'bar' }; >'bar' : "bar" function a(aboo1?: Foo) { ->a : (aboo1?: Foo | undefined) => void +>a : (aboo1?: Foo) => void >aboo1 : Foo | undefined if (!aboo1) return; diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowForIndexSignatures.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowForIndexSignatures.types.diff deleted file mode 100644 index 6e622d60be2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/controlFlowForIndexSignatures.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.controlFlowForIndexSignatures.types -+++ new.controlFlowForIndexSignatures.types -@@= skipped -11, +11 lines =@@ - >'bar' : "bar" - - function a(aboo1?: Foo) { -->a : (aboo1?: Foo) => void -+>a : (aboo1?: Foo | undefined) => void - >aboo1 : Foo | undefined - - if (!aboo1) return; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.errors.txt b/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.errors.txt index e07cfcbbcf8..dd782273b63 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.errors.txt @@ -35,7 +35,7 @@ controlFlowFunctionLikeCircular_8.ts(4,10): error TS2456: Type alias 'First' cir controlFlowFunctionLikeCircular_9.ts(1,10): error TS2393: Duplicate function implementation. controlFlowFunctionLikeCircular_9.ts(3,5): error TS2448: Block-scoped variable 'o' used before its declaration. controlFlowFunctionLikeCircular_9.ts(3,5): error TS2454: Variable 'o' is used before being assigned. -controlFlowFunctionLikeCircular_9.ts(4,47): error TS2411: Property 'x' of type '(() => DateConstructor) | (() => void)' is not assignable to 'string' index type '() => string | number'. +controlFlowFunctionLikeCircular_9.ts(4,47): error TS2411: Property 'x' of type '(() => typeof Date) | (() => void)' is not assignable to 'string' index type '() => typeof arg'. ==== controlFlowFunctionLikeCircular_1.ts (5 errors) ==== @@ -185,7 +185,7 @@ controlFlowFunctionLikeCircular_9.ts(4,47): error TS2411: Property 'x' of type ' !!! error TS2454: Variable 'o' is used before being assigned. const o: { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void) } = whatever ~ -!!! error TS2411: Property 'x' of type '(() => DateConstructor) | (() => void)' is not assignable to 'string' index type '() => string | number'. +!!! error TS2411: Property 'x' of type '(() => typeof Date) | (() => void)' is not assignable to 'string' index type '() => typeof arg'. return o.x; } return undefined; diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.errors.txt.diff new file mode 100644 index 00000000000..ea118223fe4 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.errors.txt.diff @@ -0,0 +1,20 @@ +--- old.controlFlowFunctionLikeCircular1.errors.txt ++++ new.controlFlowFunctionLikeCircular1.errors.txt +@@= skipped -34, +34 lines =@@ + controlFlowFunctionLikeCircular_9.ts(1,10): error TS2393: Duplicate function implementation. + controlFlowFunctionLikeCircular_9.ts(3,5): error TS2448: Block-scoped variable 'o' used before its declaration. + controlFlowFunctionLikeCircular_9.ts(3,5): error TS2454: Variable 'o' is used before being assigned. +-controlFlowFunctionLikeCircular_9.ts(4,47): error TS2411: Property 'x' of type '(() => DateConstructor) | (() => void)' is not assignable to 'string' index type '() => string | number'. ++controlFlowFunctionLikeCircular_9.ts(4,47): error TS2411: Property 'x' of type '(() => typeof Date) | (() => void)' is not assignable to 'string' index type '() => typeof arg'. + + + ==== controlFlowFunctionLikeCircular_1.ts (5 errors) ==== +@@= skipped -150, +150 lines =@@ + !!! error TS2454: Variable 'o' is used before being assigned. + const o: { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void) } = whatever + ~ +-!!! error TS2411: Property 'x' of type '(() => DateConstructor) | (() => void)' is not assignable to 'string' index type '() => string | number'. ++!!! error TS2411: Property 'x' of type '(() => typeof Date) | (() => void)' is not assignable to 'string' index type '() => typeof arg'. + return o.x; + } + return undefined; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.types b/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.types index 59307d7263b..c9e265368ca 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.types @@ -3,11 +3,11 @@ === controlFlowFunctionLikeCircular_1.ts === unionOfDifferentReturnType1(true); >unionOfDifferentReturnType1(true) : number | DateConstructor ->unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => DateConstructor) +>unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => typeof Date) >true : true const unionOfDifferentReturnType1: { (a: any): number; } | { (a: number): typeof Date; }; ->unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => DateConstructor) +>unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => typeof Date) >a : any >a : number >Date : DateConstructor @@ -15,12 +15,12 @@ const unionOfDifferentReturnType1: { (a: any): number; } | { (a: number): typeof === controlFlowFunctionLikeCircular_2.ts === unionOfDifferentReturnType1(true); >unionOfDifferentReturnType1(true) : number | DateConstructor ->unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => DateConstructor) +>unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => typeof Date) >true : true const unionOfDifferentReturnType1 = Math.random() ? (a: any) => 1 : (a: number) => ({}) as typeof Date; ->unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => DateConstructor) ->Math.random() ? (a: any) => 1 : (a: number) => ({}) as typeof Date : ((a: any) => number) | ((a: number) => DateConstructor) +>unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => typeof Date) +>Math.random() ? (a: any) => 1 : (a: number) => ({}) as typeof Date : ((a: any) => number) | ((a: number) => typeof Date) >Math.random() : number >Math.random : () => number >Math : Math @@ -28,7 +28,7 @@ const unionOfDifferentReturnType1 = Math.random() ? (a: any) => 1 : (a: number) >(a: any) => 1 : (a: any) => number >a : any >1 : 1 ->(a: number) => ({}) as typeof Date : (a: number) => DateConstructor +>(a: number) => ({}) as typeof Date : (a: number) => typeof Date >a : number >({}) as typeof Date : DateConstructor >({}) : {} @@ -37,7 +37,7 @@ const unionOfDifferentReturnType1 = Math.random() ? (a: any) => 1 : (a: number) === controlFlowFunctionLikeCircular_3.ts === function test(arg: () => string) { ->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } +>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } >arg : () => string fn(); @@ -47,38 +47,38 @@ function test(arg: () => string) { const fn: typeof fn = Math.random() ? arg : (): (() => arg) => {}; >fn : any >fn : any ->Math.random() ? arg : (): (() => arg) => {} : (() => string) | (() => () => arg) +>Math.random() ? arg : (): (() => arg) => {} : (() => string) | (() => (() => arg)) >Math.random() : number >Math.random : () => number >Math : Math >random : () => number >arg : () => string ->(): (() => arg) => {} : () => () => arg +>(): (() => arg) => {} : () => (() => arg) } === controlFlowFunctionLikeCircular_4.ts === function test(arg: () => string) { ->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } +>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } >arg : () => string fn(); >fn() : string | (() => arg) ->fn : (() => string) | (() => () => arg) +>fn : (() => string) | (() => (() => arg)) const fn = Math.random() ? arg : (): (() => arg) => {}; ->fn : (() => string) | (() => () => arg) ->Math.random() ? arg : (): (() => arg) => {} : (() => string) | (() => () => arg) +>fn : (() => string) | (() => (() => arg)) +>Math.random() ? arg : (): (() => arg) => {} : (() => string) | (() => (() => arg)) >Math.random() : number >Math.random : () => number >Math : Math >random : () => number >arg : () => string ->(): (() => arg) => {} : () => () => arg +>(): (() => arg) => {} : () => (() => arg) } === controlFlowFunctionLikeCircular_5.ts === function test(arg: string | number) { ->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } +>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } >arg : string | number if (typeof arg === "string") { @@ -89,16 +89,16 @@ function test(arg: string | number) { fn(); >fn() : string | number ->fn : () => string | number +>fn : () => typeof arg const fn: () => typeof arg = () => arg; ->fn : () => string | number +>fn : () => typeof arg >arg : string | number >() => arg : () => string >arg : string return fn; ->fn : () => string | number +>fn : () => typeof arg } return undefined; >undefined : undefined @@ -106,7 +106,7 @@ function test(arg: string | number) { === controlFlowFunctionLikeCircular_6.ts === function test(arg: string | number) { ->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } +>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } >arg : string | number if (typeof arg === "string") { @@ -117,16 +117,16 @@ function test(arg: string | number) { fn(); >fn() : string ->fn : () => string +>fn : () => typeof arg const fn = (): typeof arg => arg; ->fn : () => string ->(): typeof arg => arg : () => string +>fn : () => typeof arg +>(): typeof arg => arg : () => typeof arg >arg : string >arg : string return fn; ->fn : () => string +>fn : () => typeof arg } return undefined; >undefined : undefined @@ -134,7 +134,7 @@ function test(arg: string | number) { === controlFlowFunctionLikeCircular_7.ts === function test(arg: string | number) { ->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } +>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } >arg : string | number if (typeof arg === "string") { @@ -145,16 +145,16 @@ function test(arg: string | number) { fn(); >fn() : string | number ->fn : () => string | number +>fn : () => typeof arg const fn: { (): typeof arg } = () => arg; ->fn : () => string | number +>fn : () => typeof arg >arg : string | number >() => arg : () => string >arg : string return fn; ->fn : () => string | number +>fn : () => typeof arg } return undefined; >undefined : undefined @@ -162,7 +162,7 @@ function test(arg: string | number) { === controlFlowFunctionLikeCircular_8.ts === function test(arg: string | number, whatever: any) { ->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } +>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } >arg : string | number >whatever : any @@ -197,7 +197,7 @@ function test(arg: string | number, whatever: any) { === controlFlowFunctionLikeCircular_9.ts === function test(arg: string | number, whatever: any) { ->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } +>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } >arg : string | number >whatever : any @@ -209,22 +209,22 @@ function test(arg: string | number, whatever: any) { o.x(); >o.x() : void | DateConstructor ->o.x : (() => DateConstructor) | (() => void) ->o : { [k: string]: () => string | number; x: (() => DateConstructor) | (() => void); } ->x : (() => DateConstructor) | (() => void) +>o.x : (() => typeof Date) | (() => void) +>o : { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void); } +>x : (() => typeof Date) | (() => void) const o: { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void) } = whatever ->o : { [k: string]: () => string | number; x: (() => DateConstructor) | (() => void); } +>o : { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void); } >k : string >arg : string | number ->x : (() => DateConstructor) | (() => void) +>x : (() => typeof Date) | (() => void) >Date : DateConstructor >whatever : any return o.x; ->o.x : (() => DateConstructor) | (() => void) ->o : { [k: string]: () => string | number; x: (() => DateConstructor) | (() => void); } ->x : (() => DateConstructor) | (() => void) +>o.x : (() => typeof Date) | (() => void) +>o : { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void); } +>x : (() => typeof Date) | (() => void) } return undefined; >undefined : undefined @@ -232,7 +232,7 @@ function test(arg: string | number, whatever: any) { === controlFlowFunctionLikeCircular_10.ts === function test(arg: string | number, whatever: any) { ->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } +>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } >arg : string | number >whatever : any @@ -244,20 +244,20 @@ function test(arg: string | number, whatever: any) { o.foo(); >o.foo() : string | number ->o.foo : () => string | number ->o : { [k: string]: () => string | number; } ->foo : () => string | number +>o.foo : () => typeof arg +>o : { [k: string]: () => typeof arg; } +>foo : () => typeof arg const o: { [k: string]: () => typeof arg } = whatever ->o : { [k: string]: () => string | number; } +>o : { [k: string]: () => typeof arg; } >k : string >arg : string | number >whatever : any return o.foo; ->o.foo : () => string | number ->o : { [k: string]: () => string | number; } ->foo : () => string | number +>o.foo : () => typeof arg +>o : { [k: string]: () => typeof arg; } +>foo : () => typeof arg } return undefined; >undefined : undefined diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.types.diff deleted file mode 100644 index db0108e611f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/controlFlowFunctionLikeCircular1.types.diff +++ /dev/null @@ -1,262 +0,0 @@ ---- old.controlFlowFunctionLikeCircular1.types -+++ new.controlFlowFunctionLikeCircular1.types -@@= skipped -2, +2 lines =@@ - === controlFlowFunctionLikeCircular_1.ts === - unionOfDifferentReturnType1(true); - >unionOfDifferentReturnType1(true) : number | DateConstructor -->unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => typeof Date) -+>unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => DateConstructor) - >true : true - - const unionOfDifferentReturnType1: { (a: any): number; } | { (a: number): typeof Date; }; -->unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => typeof Date) -+>unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => DateConstructor) - >a : any - >a : number - >Date : DateConstructor -@@= skipped -12, +12 lines =@@ - === controlFlowFunctionLikeCircular_2.ts === - unionOfDifferentReturnType1(true); - >unionOfDifferentReturnType1(true) : number | DateConstructor -->unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => typeof Date) -+>unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => DateConstructor) - >true : true - - const unionOfDifferentReturnType1 = Math.random() ? (a: any) => 1 : (a: number) => ({}) as typeof Date; -->unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => typeof Date) -->Math.random() ? (a: any) => 1 : (a: number) => ({}) as typeof Date : ((a: any) => number) | ((a: number) => typeof Date) -+>unionOfDifferentReturnType1 : ((a: any) => number) | ((a: number) => DateConstructor) -+>Math.random() ? (a: any) => 1 : (a: number) => ({}) as typeof Date : ((a: any) => number) | ((a: number) => DateConstructor) - >Math.random() : number - >Math.random : () => number - >Math : Math -@@= skipped -13, +13 lines =@@ - >(a: any) => 1 : (a: any) => number - >a : any - >1 : 1 -->(a: number) => ({}) as typeof Date : (a: number) => typeof Date -+>(a: number) => ({}) as typeof Date : (a: number) => DateConstructor - >a : number - >({}) as typeof Date : DateConstructor - >({}) : {} -@@= skipped -9, +9 lines =@@ - - === controlFlowFunctionLikeCircular_3.ts === - function test(arg: () => string) { -->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } -+>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } - >arg : () => string - - fn(); -@@= skipped -10, +10 lines =@@ - const fn: typeof fn = Math.random() ? arg : (): (() => arg) => {}; - >fn : any - >fn : any -->Math.random() ? arg : (): (() => arg) => {} : (() => string) | (() => (() => arg)) -+>Math.random() ? arg : (): (() => arg) => {} : (() => string) | (() => () => arg) - >Math.random() : number - >Math.random : () => number - >Math : Math - >random : () => number - >arg : () => string -->(): (() => arg) => {} : () => (() => arg) -+>(): (() => arg) => {} : () => () => arg - } - - === controlFlowFunctionLikeCircular_4.ts === - function test(arg: () => string) { -->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } -+>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } - >arg : () => string - - fn(); - >fn() : string | (() => arg) -->fn : (() => string) | (() => (() => arg)) -+>fn : (() => string) | (() => () => arg) - - const fn = Math.random() ? arg : (): (() => arg) => {}; -->fn : (() => string) | (() => (() => arg)) -->Math.random() ? arg : (): (() => arg) => {} : (() => string) | (() => (() => arg)) -+>fn : (() => string) | (() => () => arg) -+>Math.random() ? arg : (): (() => arg) => {} : (() => string) | (() => () => arg) - >Math.random() : number - >Math.random : () => number - >Math : Math - >random : () => number - >arg : () => string -->(): (() => arg) => {} : () => (() => arg) -+>(): (() => arg) => {} : () => () => arg - } - - === controlFlowFunctionLikeCircular_5.ts === - function test(arg: string | number) { -->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } -+>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } - >arg : string | number - - if (typeof arg === "string") { -@@= skipped -42, +42 lines =@@ - - fn(); - >fn() : string | number -->fn : () => typeof arg -+>fn : () => string | number - - const fn: () => typeof arg = () => arg; -->fn : () => typeof arg -+>fn : () => string | number - >arg : string | number - >() => arg : () => string - >arg : string - - return fn; -->fn : () => typeof arg -+>fn : () => string | number - } - return undefined; - >undefined : undefined -@@= skipped -17, +17 lines =@@ - - === controlFlowFunctionLikeCircular_6.ts === - function test(arg: string | number) { -->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } -+>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } - >arg : string | number - - if (typeof arg === "string") { -@@= skipped -11, +11 lines =@@ - - fn(); - >fn() : string -->fn : () => typeof arg -+>fn : () => string - - const fn = (): typeof arg => arg; -->fn : () => typeof arg -->(): typeof arg => arg : () => typeof arg -+>fn : () => string -+>(): typeof arg => arg : () => string - >arg : string - >arg : string - - return fn; -->fn : () => typeof arg -+>fn : () => string - } - return undefined; - >undefined : undefined -@@= skipped -17, +17 lines =@@ - - === controlFlowFunctionLikeCircular_7.ts === - function test(arg: string | number) { -->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } -+>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } - >arg : string | number - - if (typeof arg === "string") { -@@= skipped -11, +11 lines =@@ - - fn(); - >fn() : string | number -->fn : () => typeof arg -+>fn : () => string | number - - const fn: { (): typeof arg } = () => arg; -->fn : () => typeof arg -+>fn : () => string | number - >arg : string | number - >() => arg : () => string - >arg : string - - return fn; -->fn : () => typeof arg -+>fn : () => string | number - } - return undefined; - >undefined : undefined -@@= skipped -17, +17 lines =@@ - - === controlFlowFunctionLikeCircular_8.ts === - function test(arg: string | number, whatever: any) { -->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } -+>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } - >arg : string | number - >whatever : any - -@@= skipped -35, +35 lines =@@ - - === controlFlowFunctionLikeCircular_9.ts === - function test(arg: string | number, whatever: any) { -->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } -+>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } - >arg : string | number - >whatever : any - -@@= skipped -12, +12 lines =@@ - - o.x(); - >o.x() : void | DateConstructor -->o.x : (() => typeof Date) | (() => void) -->o : { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void); } -->x : (() => typeof Date) | (() => void) -+>o.x : (() => DateConstructor) | (() => void) -+>o : { [k: string]: () => string | number; x: (() => DateConstructor) | (() => void); } -+>x : (() => DateConstructor) | (() => void) - - const o: { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void) } = whatever -->o : { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void); } -+>o : { [k: string]: () => string | number; x: (() => DateConstructor) | (() => void); } - >k : string - >arg : string | number -->x : (() => typeof Date) | (() => void) -+>x : (() => DateConstructor) | (() => void) - >Date : DateConstructor - >whatever : any - - return o.x; -->o.x : (() => typeof Date) | (() => void) -->o : { [k: string]: () => typeof arg; x: (() => typeof Date) | (() => void); } -->x : (() => typeof Date) | (() => void) -+>o.x : (() => DateConstructor) | (() => void) -+>o : { [k: string]: () => string | number; x: (() => DateConstructor) | (() => void); } -+>x : (() => DateConstructor) | (() => void) - } - return undefined; - >undefined : undefined -@@= skipped -23, +23 lines =@@ - - === controlFlowFunctionLikeCircular_10.ts === - function test(arg: string | number, whatever: any) { -->test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number): (() => typeof arg) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => typeof arg) | undefined; } -+>test : { (arg: () => string): void; (arg: () => string): void; (arg: string | number): (() => string | number) | undefined; (arg: string | number): (() => string) | undefined; (arg: string | number): (() => string | number) | undefined; (arg: string | number, whatever: any): ((arg: unknown) => arg is any) | undefined; (arg: string | number, whatever: any): (() => void) | undefined; (arg: string | number, whatever: any): (() => string | number) | undefined; } - >arg : string | number - >whatever : any - -@@= skipped -12, +12 lines =@@ - - o.foo(); - >o.foo() : string | number -->o.foo : () => typeof arg -->o : { [k: string]: () => typeof arg; } -->foo : () => typeof arg -+>o.foo : () => string | number -+>o : { [k: string]: () => string | number; } -+>foo : () => string | number - - const o: { [k: string]: () => typeof arg } = whatever -->o : { [k: string]: () => typeof arg; } -+>o : { [k: string]: () => string | number; } - >k : string - >arg : string | number - >whatever : any - - return o.foo; -->o.foo : () => typeof arg -->o : { [k: string]: () => typeof arg; } -->foo : () => typeof arg -+>o.foo : () => string | number -+>o : { [k: string]: () => string | number; } -+>foo : () => string | number - } - return undefined; - >undefined : undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowInitializedDestructuringVariables.types b/testdata/baselines/reference/submodule/compiler/controlFlowInitializedDestructuringVariables.types index 36c1ab2d2e5..79357cbf67e 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowInitializedDestructuringVariables.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowInitializedDestructuringVariables.types @@ -2,7 +2,7 @@ === controlFlowInitializedDestructuringVariables.ts === declare const obj: { a?: string, b?: number }; ->obj : { a?: string | undefined; b?: number | undefined; } +>obj : { a?: string; b?: number; } >a : string | undefined >b : number | undefined @@ -17,5 +17,5 @@ const { >a : string } = obj; ->obj : { a?: string | undefined; b?: number | undefined; } +>obj : { a?: string; b?: number; } diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowInitializedDestructuringVariables.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowInitializedDestructuringVariables.types.diff deleted file mode 100644 index d839113f0c2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/controlFlowInitializedDestructuringVariables.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.controlFlowInitializedDestructuringVariables.types -+++ new.controlFlowInitializedDestructuringVariables.types -@@= skipped -1, +1 lines =@@ - - === controlFlowInitializedDestructuringVariables.ts === - declare const obj: { a?: string, b?: number }; -->obj : { a?: string; b?: number; } -+>obj : { a?: string | undefined; b?: number | undefined; } - >a : string | undefined - >b : number | undefined - -@@= skipped -15, +15 lines =@@ - >a : string - - } = obj; -->obj : { a?: string; b?: number; } -+>obj : { a?: string | undefined; b?: number | undefined; } diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowOuterVariable.types b/testdata/baselines/reference/submodule/compiler/controlFlowOuterVariable.types index 3d998b38eeb..5188547c364 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowOuterVariable.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowOuterVariable.types @@ -34,8 +34,8 @@ const helper = function(t: T[]) { >helper(t.slice(1)) : void >helper : (t: T[]) => void >t.slice(1) : T[] ->t.slice : (start?: number | undefined, end?: number | undefined) => T[] +>t.slice : (start?: number, end?: number) => T[] >t : T[] ->slice : (start?: number | undefined, end?: number | undefined) => T[] +>slice : (start?: number, end?: number) => T[] >1 : 1 } diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowOuterVariable.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowOuterVariable.types.diff deleted file mode 100644 index 6d8d233900c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/controlFlowOuterVariable.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.controlFlowOuterVariable.types -+++ new.controlFlowOuterVariable.types -@@= skipped -33, +33 lines =@@ - >helper(t.slice(1)) : void - >helper : (t: T[]) => void - >t.slice(1) : T[] -->t.slice : (start?: number, end?: number) => T[] -+>t.slice : (start?: number | undefined, end?: number | undefined) => T[] - >t : T[] -->slice : (start?: number, end?: number) => T[] -+>slice : (start?: number | undefined, end?: number | undefined) => T[] - >1 : 1 - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowPropertyDeclarations.types b/testdata/baselines/reference/submodule/compiler/controlFlowPropertyDeclarations.types index 3f0028c9b49..dfb96025c76 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowPropertyDeclarations.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowPropertyDeclarations.types @@ -318,9 +318,9 @@ export class HTMLtoJSX { >'{' + JSON.stringify(whitespace) : string >'{' : "{" >JSON.stringify(whitespace) : string ->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >whitespace : string >'}' : "}" diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowPropertyDeclarations.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowPropertyDeclarations.types.diff deleted file mode 100644 index cf81a5f781c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/controlFlowPropertyDeclarations.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.controlFlowPropertyDeclarations.types -+++ new.controlFlowPropertyDeclarations.types -@@= skipped -317, +317 lines =@@ - >'{' + JSON.stringify(whitespace) : string - >'{' : "{" - >JSON.stringify(whitespace) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; } - >whitespace : string - >'}' : "}" diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowUnionContainingTypeParameter1.types b/testdata/baselines/reference/submodule/compiler/controlFlowUnionContainingTypeParameter1.types index 0061a2a4239..07a9a8afbaf 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowUnionContainingTypeParameter1.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowUnionContainingTypeParameter1.types @@ -22,7 +22,7 @@ class TestClass { >v : T func(val: T | number): void { ->func : (val: number | T) => void +>func : (val: T | number) => void >val : number | T if (this.typeguard(val)) { @@ -69,7 +69,7 @@ class TestClass2 { >v : T func(val: T | number): void { ->func : (val: number | T) => void +>func : (val: T | number) => void >val : number | T if (this.typeguard(val)) { diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowUnionContainingTypeParameter1.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowUnionContainingTypeParameter1.types.diff deleted file mode 100644 index 0b334004c26..00000000000 --- a/testdata/baselines/reference/submodule/compiler/controlFlowUnionContainingTypeParameter1.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.controlFlowUnionContainingTypeParameter1.types -+++ new.controlFlowUnionContainingTypeParameter1.types -@@= skipped -21, +21 lines =@@ - >v : T - - func(val: T | number): void { -->func : (val: T | number) => void -+>func : (val: number | T) => void - >val : number | T - - if (this.typeguard(val)) { -@@= skipped -47, +47 lines =@@ - >v : T - - func(val: T | number): void { -->func : (val: T | number) => void -+>func : (val: number | T) => void - >val : number | T - - if (this.typeguard(val)) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowWithIncompleteTypes.types b/testdata/baselines/reference/submodule/compiler/controlFlowWithIncompleteTypes.types index 692411cc816..41861faa509 100644 --- a/testdata/baselines/reference/submodule/compiler/controlFlowWithIncompleteTypes.types +++ b/testdata/baselines/reference/submodule/compiler/controlFlowWithIncompleteTypes.types @@ -26,9 +26,9 @@ function foo1() { >x = x.slice() : string >x : string | number | boolean >x.slice() : string ->x.slice : (start?: number | undefined, end?: number | undefined) => string +>x.slice : (start?: number, end?: number) => string >x : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string } else { x = "abc"; @@ -65,9 +65,9 @@ function foo2() { >x = x.slice() : string >x : string | number | boolean >x.slice() : string ->x.slice : (start?: number | undefined, end?: number | undefined) => string +>x.slice : (start?: number, end?: number) => string >x : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string } } } diff --git a/testdata/baselines/reference/submodule/compiler/controlFlowWithIncompleteTypes.types.diff b/testdata/baselines/reference/submodule/compiler/controlFlowWithIncompleteTypes.types.diff deleted file mode 100644 index 412462c3846..00000000000 --- a/testdata/baselines/reference/submodule/compiler/controlFlowWithIncompleteTypes.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.controlFlowWithIncompleteTypes.types -+++ new.controlFlowWithIncompleteTypes.types -@@= skipped -25, +25 lines =@@ - >x = x.slice() : string - >x : string | number | boolean - >x.slice() : string -->x.slice : (start?: number, end?: number) => string -+>x.slice : (start?: number | undefined, end?: number | undefined) => string - >x : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - } - else { - x = "abc"; -@@= skipped -39, +39 lines =@@ - >x = x.slice() : string - >x : string | number | boolean - >x.slice() : string -->x.slice : (start?: number, end?: number) => string -+>x.slice : (start?: number | undefined, end?: number | undefined) => string - >x : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - } - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/correlatedUnions.js b/testdata/baselines/reference/submodule/compiler/correlatedUnions.js index b033e0dfa0e..3c29c60a422 100644 --- a/testdata/baselines/reference/submodule/compiler/correlatedUnions.js +++ b/testdata/baselines/reference/submodule/compiler/correlatedUnions.js @@ -518,12 +518,12 @@ declare function processEvents(events: Ev[] declare function createEventListener({ name, once, callback }: Ev): Ev; declare const clickEvent: { readonly name: "click"; - readonly once?: boolean | undefined; + readonly once?: boolean; readonly callback: (ev: PointerEvent) => void; }; declare const scrollEvent: { readonly name: "scroll"; - readonly once?: boolean | undefined; + readonly once?: boolean; readonly callback: (ev: Event) => void; }; declare function ff1(): void; @@ -558,16 +558,16 @@ declare function makeCompleteLookupMapping, Attr ex [Item in T[number] as Item[Attr]]: Item; }; declare const ALL_BARS: readonly [{ - readonly name: "a"; + readonly name: 'a'; }, { - readonly name: "b"; + readonly name: 'b'; }]; declare const BAR_LOOKUP: { a: { - readonly name: "a"; + readonly name: 'a'; }; b: { - readonly name: "b"; + readonly name: 'b'; }; }; type BarLookup = typeof BAR_LOOKUP; @@ -592,7 +592,7 @@ type SameKeys = { }; }; type MappedFromOriginal = SameKeys; -declare const getStringAndNumberFromOriginalAndMapped: (original: Original, mappedFromOriginal: SameKeys, key: K, nestedKey: N) => [Original[K][N], SameKeys[K][N]]; +declare const getStringAndNumberFromOriginalAndMapped: >(original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N) => [Original[K][N], MappedFromOriginal[K][N]]; interface Config { string: string; number: number; diff --git a/testdata/baselines/reference/submodule/compiler/correlatedUnions.js.diff b/testdata/baselines/reference/submodule/compiler/correlatedUnions.js.diff index b5fbae67111..30354b2ce47 100644 --- a/testdata/baselines/reference/submodule/compiler/correlatedUnions.js.diff +++ b/testdata/baselines/reference/submodule/compiler/correlatedUnions.js.diff @@ -1,26 +1,23 @@ --- old.correlatedUnions.js +++ new.correlatedUnions.js -@@= skipped -517, +517 lines =@@ - declare function createEventListener({ name, once, callback }: Ev): Ev; - declare const clickEvent: { - readonly name: "click"; -- readonly once?: boolean; -+ readonly once?: boolean | undefined; - readonly callback: (ev: PointerEvent) => void; +@@= skipped -557, +557 lines =@@ + [Item in T[number] as Item[Attr]]: Item; }; - declare const scrollEvent: { - readonly name: "scroll"; -- readonly once?: boolean; -+ readonly once?: boolean | undefined; - readonly callback: (ev: Event) => void; - }; - declare function ff1(): void; -@@= skipped -74, +74 lines =@@ + declare const ALL_BARS: readonly [{ +- readonly name: "a"; ++ readonly name: 'a'; + }, { +- readonly name: "b"; ++ readonly name: 'b'; + }]; + declare const BAR_LOOKUP: { + a: { +- readonly name: "a"; ++ readonly name: 'a'; + }; + b: { +- readonly name: "b"; ++ readonly name: 'b'; }; }; - type MappedFromOriginal = SameKeys; --declare const getStringAndNumberFromOriginalAndMapped: >(original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N) => [Original[K][N], MappedFromOriginal[K][N]]; -+declare const getStringAndNumberFromOriginalAndMapped: (original: Original, mappedFromOriginal: SameKeys, key: K, nestedKey: N) => [Original[K][N], SameKeys[K][N]]; - interface Config { - string: string; - number: number; \ No newline at end of file + type BarLookup = typeof BAR_LOOKUP; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/correlatedUnions.types b/testdata/baselines/reference/submodule/compiler/correlatedUnions.types index edbf4f7b937..64bd88ef32f 100644 --- a/testdata/baselines/reference/submodule/compiler/correlatedUnions.types +++ b/testdata/baselines/reference/submodule/compiler/correlatedUnions.types @@ -66,9 +66,9 @@ processRecord({ kind: 'n', v: 42, f: v => v.toExponential() }); >v => v.toExponential() : (v: number) => string >v : number >v.toExponential() : string ->v.toExponential : (fractionDigits?: number | undefined) => string +>v.toExponential : (fractionDigits?: number) => string >v : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string // -------- @@ -182,9 +182,9 @@ const handlers: HandlerMap = { >n => n.toFixed(2) : (n: number) => string >n : number >n.toFixed(2) : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string >2 : 2 }; @@ -228,7 +228,7 @@ const data: DataEntry[] = [ ]; function process(data: DataEntry[]) { ->process : (data: DataEntry[]) => void +>process : (data: DataEntry[]) => void >data : DataEntry[] data.forEach(block => { @@ -262,12 +262,12 @@ function process(data: DataEntry[]) { process(data); >process(data) : void ->process : (data: DataEntry[]) => void +>process : (data: DataEntry[]) => void >data : DataEntry[] process([{ type: 'foo', data: 'abc' }]); >process([{ type: 'foo', data: 'abc' }]) : void ->process : (data: DataEntry[]) => void +>process : (data: DataEntry[]) => void >[{ type: 'foo', data: 'abc' }] : { type: "foo"; data: string; }[] >{ type: 'foo', data: 'abc' } : { type: "foo"; data: string; } >type : "foo" @@ -354,9 +354,9 @@ function processEvents(events: Ev[]) { document.addEventListener(event.name, (ev) => event.callback(ev), { once: event.once }); >document.addEventListener(event.name, (ev) => event.callback(ev), { once: event.once }) : void ->document.addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void; } +>document.addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; } >document : Document ->addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void; } +>addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; } >event.name : K >event : Ev >name : K @@ -390,8 +390,8 @@ function createEventListener({ name, once = fa } const clickEvent = createEventListener({ ->clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: PointerEvent) => void; } ->createEventListener({ name: "click", callback: ev => console.log(ev),}) : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: PointerEvent) => void; } +>clickEvent : { readonly name: "click"; readonly once?: boolean; readonly callback: (ev: PointerEvent) => void; } +>createEventListener({ name: "click", callback: ev => console.log(ev),}) : { readonly name: "click"; readonly once?: boolean; readonly callback: (ev: PointerEvent) => void; } >createEventListener : ({ name, once, callback }: Ev) => Ev >{ name: "click", callback: ev => console.log(ev),} : { name: "click"; callback: (ev: PointerEvent) => void; } @@ -412,8 +412,8 @@ const clickEvent = createEventListener({ }); const scrollEvent = createEventListener({ ->scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; } ->createEventListener({ name: "scroll", callback: ev => console.log(ev),}) : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; } +>scrollEvent : { readonly name: "scroll"; readonly once?: boolean; readonly callback: (ev: Event) => void; } +>createEventListener({ name: "scroll", callback: ev => console.log(ev),}) : { readonly name: "scroll"; readonly once?: boolean; readonly callback: (ev: Event) => void; } >createEventListener : ({ name, once, callback }: Ev) => Ev >{ name: "scroll", callback: ev => console.log(ev),} : { name: "scroll"; callback: (ev: Event) => void; } @@ -436,9 +436,9 @@ const scrollEvent = createEventListener({ processEvents([clickEvent, scrollEvent]); >processEvents([clickEvent, scrollEvent]) : void >processEvents : (events: Ev[]) => void ->[clickEvent, scrollEvent] : ({ readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: PointerEvent) => void; } | { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; })[] ->clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: PointerEvent) => void; } ->scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; } +>[clickEvent, scrollEvent] : ({ readonly name: "click"; readonly once?: boolean; readonly callback: (ev: PointerEvent) => void; } | { readonly name: "scroll"; readonly once?: boolean; readonly callback: (ev: Event) => void; })[] +>clickEvent : { readonly name: "click"; readonly once?: boolean; readonly callback: (ev: PointerEvent) => void; } +>scrollEvent : { readonly name: "scroll"; readonly once?: boolean; readonly callback: (ev: Event) => void; } processEvents([ >processEvents([ { name: "click", callback: ev => console.log(ev) }, { name: "scroll", callback: ev => console.log(ev) },]) : void @@ -616,7 +616,7 @@ function f3(funcs: Funcs, key: K, arg: ArgMap[K]) { } function f4(x: Funcs[keyof ArgMap], y: Funcs[K]) { ->f4 : (x: Func<"a"> | Func<"b">, y: Funcs[K]) => void +>f4 : (x: Funcs[keyof ArgMap], y: Funcs[K]) => void >x : Func<"a"> | Func<"b"> >y : Funcs[K] @@ -662,7 +662,7 @@ const ref: MyObj = { }; function func(k: K): MyObj[K]['name'] | undefined { ->func : (k: K) => MyObj[K]["name"] | undefined +>func : (k: K) => MyObj[K]['name'] | undefined >k : K const myObj: Partial[K] = ref[k]; @@ -705,7 +705,7 @@ interface Foo { } function foo(prop: T, f: Required) { ->foo : (prop: T, f: Required) => void +>foo : (prop: T, f: Required) => void >prop : T >f : Required @@ -724,33 +724,33 @@ declare function bar(t: string): void; // Repro from #48246 declare function makeCompleteLookupMapping, Attr extends keyof T[number]>( ->makeCompleteLookupMapping : (ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; } +>makeCompleteLookupMapping : , Attr extends keyof T[number]>(ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; } ops: T, attr: Attr): { [Item in T[number]as Item[Attr]]: Item }; >ops : T >attr : Attr const ALL_BARS = [{ name: 'a'}, {name: 'b'}] as const; ->ALL_BARS : readonly [{ readonly name: "a"; }, { readonly name: "b"; }] ->[{ name: 'a'}, {name: 'b'}] as const : readonly [{ readonly name: "a"; }, { readonly name: "b"; }] ->[{ name: 'a'}, {name: 'b'}] : readonly [{ readonly name: "a"; }, { readonly name: "b"; }] ->{ name: 'a'} : { readonly name: "a"; } +>ALL_BARS : readonly [{ readonly name: 'a'; }, { readonly name: 'b'; }] +>[{ name: 'a'}, {name: 'b'}] as const : readonly [{ readonly name: 'a'; }, { readonly name: 'b'; }] +>[{ name: 'a'}, {name: 'b'}] : readonly [{ readonly name: 'a'; }, { readonly name: 'b'; }] +>{ name: 'a'} : { readonly name: 'a'; } >name : "a" >'a' : "a" ->{name: 'b'} : { readonly name: "b"; } +>{name: 'b'} : { readonly name: 'b'; } >name : "b" >'b' : "b" const BAR_LOOKUP = makeCompleteLookupMapping(ALL_BARS, 'name'); ->BAR_LOOKUP : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } ->makeCompleteLookupMapping(ALL_BARS, 'name') : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } ->makeCompleteLookupMapping : (ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; } ->ALL_BARS : readonly [{ readonly name: "a"; }, { readonly name: "b"; }] +>BAR_LOOKUP : { a: { readonly name: 'a'; }; b: { readonly name: 'b'; }; } +>makeCompleteLookupMapping(ALL_BARS, 'name') : { a: { readonly name: 'a'; }; b: { readonly name: 'b'; }; } +>makeCompleteLookupMapping : , Attr extends keyof T[number]>(ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; } +>ALL_BARS : readonly [{ readonly name: 'a'; }, { readonly name: 'b'; }] >'name' : "name" type BarLookup = typeof BAR_LOOKUP; ->BarLookup : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } ->BAR_LOOKUP : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } +>BarLookup : { a: { readonly name: 'a'; }; b: { readonly name: 'b'; }; } +>BAR_LOOKUP : { a: { readonly name: 'a'; }; b: { readonly name: 'b'; }; } type Baz = { [K in keyof BarLookup]: BarLookup[K]['name'] }; >Baz : Baz @@ -797,8 +797,8 @@ type MappedFromOriginal = SameKeys; >MappedFromOriginal : SameKeys const getStringAndNumberFromOriginalAndMapped = < ->getStringAndNumberFromOriginalAndMapped : (original: Original, mappedFromOriginal: SameKeys, key: K, nestedKey: N) => [Original[K][N], SameKeys[K][N]] ->< K extends KeyOfOriginal, N extends NestedKeyOfOriginalFor>( original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N): [Original[K][N], MappedFromOriginal[K][N]] => { return [original[key][nestedKey], mappedFromOriginal[key][nestedKey]];} : (original: Original, mappedFromOriginal: SameKeys, key: K, nestedKey: N) => [Original[K][N], SameKeys[K][N]] +>getStringAndNumberFromOriginalAndMapped : >(original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N) => [Original[K][N], MappedFromOriginal[K][N]] +>< K extends KeyOfOriginal, N extends NestedKeyOfOriginalFor>( original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N): [Original[K][N], MappedFromOriginal[K][N]] => { return [original[key][nestedKey], mappedFromOriginal[key][nestedKey]];} : >(original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N) => [Original[K][N], MappedFromOriginal[K][N]] K extends KeyOfOriginal, N extends NestedKeyOfOriginalFor diff --git a/testdata/baselines/reference/submodule/compiler/correlatedUnions.types.diff b/testdata/baselines/reference/submodule/compiler/correlatedUnions.types.diff index a66455f4f2e..05c22662855 100644 --- a/testdata/baselines/reference/submodule/compiler/correlatedUnions.types.diff +++ b/testdata/baselines/reference/submodule/compiler/correlatedUnions.types.diff @@ -1,144 +1,48 @@ --- old.correlatedUnions.types +++ new.correlatedUnions.types -@@= skipped -65, +65 lines =@@ - >v => v.toExponential() : (v: number) => string - >v : number - >v.toExponential() : string -->v.toExponential : (fractionDigits?: number) => string -+>v.toExponential : (fractionDigits?: number | undefined) => string - >v : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - // -------- - -@@= skipped -116, +116 lines =@@ - >n => n.toFixed(2) : (n: number) => string - >n : number - >n.toFixed(2) : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - >2 : 2 - +@@= skipped -661, +661 lines =@@ }; -@@= skipped -46, +46 lines =@@ - ]; - - function process(data: DataEntry[]) { -->process : (data: DataEntry[]) => void -+>process : (data: DataEntry[]) => void - >data : DataEntry[] - - data.forEach(block => { -@@= skipped -34, +34 lines =@@ - - process(data); - >process(data) : void -->process : (data: DataEntry[]) => void -+>process : (data: DataEntry[]) => void - >data : DataEntry[] - - process([{ type: 'foo', data: 'abc' }]); - >process([{ type: 'foo', data: 'abc' }]) : void -->process : (data: DataEntry[]) => void -+>process : (data: DataEntry[]) => void - >[{ type: 'foo', data: 'abc' }] : { type: "foo"; data: string; }[] - >{ type: 'foo', data: 'abc' } : { type: "foo"; data: string; } - >type : "foo" -@@= skipped -92, +92 lines =@@ - - document.addEventListener(event.name, (ev) => event.callback(ev), { once: event.once }); - >document.addEventListener(event.name, (ev) => event.callback(ev), { once: event.once }) : void -->document.addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; } -+>document.addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void; } - >document : Document -->addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; } -+>addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void; } - >event.name : K - >event : Ev - >name : K -@@= skipped -36, +36 lines =@@ - } - - const clickEvent = createEventListener({ -->clickEvent : { readonly name: "click"; readonly once?: boolean; readonly callback: (ev: PointerEvent) => void; } -->createEventListener({ name: "click", callback: ev => console.log(ev),}) : { readonly name: "click"; readonly once?: boolean; readonly callback: (ev: PointerEvent) => void; } -+>clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: PointerEvent) => void; } -+>createEventListener({ name: "click", callback: ev => console.log(ev),}) : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: PointerEvent) => void; } - >createEventListener : ({ name, once, callback }: Ev) => Ev - >{ name: "click", callback: ev => console.log(ev),} : { name: "click"; callback: (ev: PointerEvent) => void; } -@@= skipped -22, +22 lines =@@ - }); + function func(k: K): MyObj[K]['name'] | undefined { +->func : (k: K) => MyObj[K]["name"] | undefined ++>func : (k: K) => MyObj[K]['name'] | undefined + >k : K + + const myObj: Partial[K] = ref[k]; +@@= skipped -69, +69 lines =@@ + >attr : Attr + + const ALL_BARS = [{ name: 'a'}, {name: 'b'}] as const; +->ALL_BARS : readonly [{ readonly name: "a"; }, { readonly name: "b"; }] +->[{ name: 'a'}, {name: 'b'}] as const : readonly [{ readonly name: "a"; }, { readonly name: "b"; }] +->[{ name: 'a'}, {name: 'b'}] : readonly [{ readonly name: "a"; }, { readonly name: "b"; }] +->{ name: 'a'} : { readonly name: "a"; } ++>ALL_BARS : readonly [{ readonly name: 'a'; }, { readonly name: 'b'; }] ++>[{ name: 'a'}, {name: 'b'}] as const : readonly [{ readonly name: 'a'; }, { readonly name: 'b'; }] ++>[{ name: 'a'}, {name: 'b'}] : readonly [{ readonly name: 'a'; }, { readonly name: 'b'; }] ++>{ name: 'a'} : { readonly name: 'a'; } + >name : "a" + >'a' : "a" +->{name: 'b'} : { readonly name: "b"; } ++>{name: 'b'} : { readonly name: 'b'; } + >name : "b" + >'b' : "b" - const scrollEvent = createEventListener({ -->scrollEvent : { readonly name: "scroll"; readonly once?: boolean; readonly callback: (ev: Event) => void; } -->createEventListener({ name: "scroll", callback: ev => console.log(ev),}) : { readonly name: "scroll"; readonly once?: boolean; readonly callback: (ev: Event) => void; } -+>scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; } -+>createEventListener({ name: "scroll", callback: ev => console.log(ev),}) : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; } - >createEventListener : ({ name, once, callback }: Ev) => Ev - >{ name: "scroll", callback: ev => console.log(ev),} : { name: "scroll"; callback: (ev: Event) => void; } - -@@= skipped -24, +24 lines =@@ - processEvents([clickEvent, scrollEvent]); - >processEvents([clickEvent, scrollEvent]) : void - >processEvents : (events: Ev[]) => void -->[clickEvent, scrollEvent] : ({ readonly name: "click"; readonly once?: boolean; readonly callback: (ev: PointerEvent) => void; } | { readonly name: "scroll"; readonly once?: boolean; readonly callback: (ev: Event) => void; })[] -->clickEvent : { readonly name: "click"; readonly once?: boolean; readonly callback: (ev: PointerEvent) => void; } -->scrollEvent : { readonly name: "scroll"; readonly once?: boolean; readonly callback: (ev: Event) => void; } -+>[clickEvent, scrollEvent] : ({ readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: PointerEvent) => void; } | { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; })[] -+>clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: PointerEvent) => void; } -+>scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; } - - processEvents([ - >processEvents([ { name: "click", callback: ev => console.log(ev) }, { name: "scroll", callback: ev => console.log(ev) },]) : void -@@= skipped -180, +180 lines =@@ - } - - function f4(x: Funcs[keyof ArgMap], y: Funcs[K]) { -->f4 : (x: Funcs[keyof ArgMap], y: Funcs[K]) => void -+>f4 : (x: Func<"a"> | Func<"b">, y: Funcs[K]) => void - >x : Func<"a"> | Func<"b"> - >y : Funcs[K] - -@@= skipped -89, +89 lines =@@ - } - - function foo(prop: T, f: Required) { -->foo : (prop: T, f: Required) => void -+>foo : (prop: T, f: Required) => void - >prop : T - >f : Required - -@@= skipped -19, +19 lines =@@ - // Repro from #48246 - - declare function makeCompleteLookupMapping, Attr extends keyof T[number]>( -->makeCompleteLookupMapping : , Attr extends keyof T[number]>(ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; } -+>makeCompleteLookupMapping : (ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; } - - ops: T, attr: Attr): { [Item in T[number]as Item[Attr]]: Item }; - >ops : T -@@= skipped -20, +20 lines =@@ const BAR_LOOKUP = makeCompleteLookupMapping(ALL_BARS, 'name'); - >BAR_LOOKUP : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } - >makeCompleteLookupMapping(ALL_BARS, 'name') : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } -->makeCompleteLookupMapping : , Attr extends keyof T[number]>(ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; } -+>makeCompleteLookupMapping : (ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; } - >ALL_BARS : readonly [{ readonly name: "a"; }, { readonly name: "b"; }] +->BAR_LOOKUP : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } +->makeCompleteLookupMapping(ALL_BARS, 'name') : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } ++>BAR_LOOKUP : { a: { readonly name: 'a'; }; b: { readonly name: 'b'; }; } ++>makeCompleteLookupMapping(ALL_BARS, 'name') : { a: { readonly name: 'a'; }; b: { readonly name: 'b'; }; } + >makeCompleteLookupMapping : , Attr extends keyof T[number]>(ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; } +->ALL_BARS : readonly [{ readonly name: "a"; }, { readonly name: "b"; }] ++>ALL_BARS : readonly [{ readonly name: 'a'; }, { readonly name: 'b'; }] >'name' : "name" -@@= skipped -53, +53 lines =@@ - >MappedFromOriginal : SameKeys - - const getStringAndNumberFromOriginalAndMapped = < -->getStringAndNumberFromOriginalAndMapped : >(original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N) => [Original[K][N], MappedFromOriginal[K][N]] -->< K extends KeyOfOriginal, N extends NestedKeyOfOriginalFor>( original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N): [Original[K][N], MappedFromOriginal[K][N]] => { return [original[key][nestedKey], mappedFromOriginal[key][nestedKey]];} : >(original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N) => [Original[K][N], MappedFromOriginal[K][N]] -+>getStringAndNumberFromOriginalAndMapped : (original: Original, mappedFromOriginal: SameKeys, key: K, nestedKey: N) => [Original[K][N], SameKeys[K][N]] -+>< K extends KeyOfOriginal, N extends NestedKeyOfOriginalFor>( original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N): [Original[K][N], MappedFromOriginal[K][N]] => { return [original[key][nestedKey], mappedFromOriginal[key][nestedKey]];} : (original: Original, mappedFromOriginal: SameKeys, key: K, nestedKey: N) => [Original[K][N], SameKeys[K][N]] + type BarLookup = typeof BAR_LOOKUP; +->BarLookup : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } +->BAR_LOOKUP : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; } ++>BarLookup : { a: { readonly name: 'a'; }; b: { readonly name: 'b'; }; } ++>BAR_LOOKUP : { a: { readonly name: 'a'; }; b: { readonly name: 'b'; }; } - K extends KeyOfOriginal, - N extends NestedKeyOfOriginalFor \ No newline at end of file + type Baz = { [K in keyof BarLookup]: BarLookup[K]['name'] }; + >Baz : Baz \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/crashInResolveInterface.types b/testdata/baselines/reference/submodule/compiler/crashInResolveInterface.types index 9b83f604084..67b9726e85d 100644 --- a/testdata/baselines/reference/submodule/compiler/crashInResolveInterface.types +++ b/testdata/baselines/reference/submodule/compiler/crashInResolveInterface.types @@ -7,7 +7,7 @@ declare var c: C; interface C { count(countTitle?: string): void; ->count : (countTitle?: string | undefined) => void +>count : (countTitle?: string) => void >countTitle : string | undefined } interface C { diff --git a/testdata/baselines/reference/submodule/compiler/crashInResolveInterface.types.diff b/testdata/baselines/reference/submodule/compiler/crashInResolveInterface.types.diff deleted file mode 100644 index bbb94d12575..00000000000 --- a/testdata/baselines/reference/submodule/compiler/crashInResolveInterface.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.crashInResolveInterface.types -+++ new.crashInResolveInterface.types -@@= skipped -6, +6 lines =@@ - - interface C { - count(countTitle?: string): void; -->count : (countTitle?: string) => void -+>count : (countTitle?: string | undefined) => void - >countTitle : string | undefined - } - interface C { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/crashRegressionTest.types b/testdata/baselines/reference/submodule/compiler/crashRegressionTest.types index 8b8c86eace1..089ff1bb502 100644 --- a/testdata/baselines/reference/submodule/compiler/crashRegressionTest.types +++ b/testdata/baselines/reference/submodule/compiler/crashRegressionTest.types @@ -32,7 +32,7 @@ namespace MsPortal.Util.TemplateEngine { } public text(value?: string): any { ->text : (value?: string | undefined) => any +>text : (value?: string) => any >value : string | undefined this._templateStorage.templateSources[this._name] = value; diff --git a/testdata/baselines/reference/submodule/compiler/crashRegressionTest.types.diff b/testdata/baselines/reference/submodule/compiler/crashRegressionTest.types.diff deleted file mode 100644 index ea439fd8089..00000000000 --- a/testdata/baselines/reference/submodule/compiler/crashRegressionTest.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.crashRegressionTest.types -+++ new.crashRegressionTest.types -@@= skipped -31, +31 lines =@@ - } - - public text(value?: string): any { -->text : (value?: string) => any -+>text : (value?: string | undefined) => any - >value : string | undefined - - this._templateStorage.templateSources[this._name] = value; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/customAsyncIterator.types b/testdata/baselines/reference/submodule/compiler/customAsyncIterator.types index 1861128d521..79b67a05224 100644 --- a/testdata/baselines/reference/submodule/compiler/customAsyncIterator.types +++ b/testdata/baselines/reference/submodule/compiler/customAsyncIterator.types @@ -9,7 +9,7 @@ class ConstantIterator implements AsyncIterator { >constant : T } async next(value?: T): Promise> { ->next : (value?: T | undefined) => Promise> +>next : (value?: T) => Promise> >value : T | undefined if (value != null) { diff --git a/testdata/baselines/reference/submodule/compiler/customAsyncIterator.types.diff b/testdata/baselines/reference/submodule/compiler/customAsyncIterator.types.diff deleted file mode 100644 index 1b750e09fcb..00000000000 --- a/testdata/baselines/reference/submodule/compiler/customAsyncIterator.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.customAsyncIterator.types -+++ new.customAsyncIterator.types -@@= skipped -8, +8 lines =@@ - >constant : T - } - async next(value?: T): Promise> { -->next : (value?: T) => Promise> -+>next : (value?: T | undefined) => Promise> - >value : T | undefined - - if (value != null) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/customEventDetail.types b/testdata/baselines/reference/submodule/compiler/customEventDetail.types index fb9a90a4b29..e09d80d4403 100644 --- a/testdata/baselines/reference/submodule/compiler/customEventDetail.types +++ b/testdata/baselines/reference/submodule/compiler/customEventDetail.types @@ -7,9 +7,9 @@ var x: CustomEvent; // valid since detail is any x.initCustomEvent('hello', true, true, { id: 12, name: 'hello' }); >x.initCustomEvent('hello', true, true, { id: 12, name: 'hello' }) : void ->x.initCustomEvent : (type: string, bubbles?: boolean | undefined, cancelable?: boolean | undefined, detail?: any) => void +>x.initCustomEvent : (type: string, bubbles?: boolean, cancelable?: boolean, detail?: any) => void >x : CustomEvent ->initCustomEvent : (type: string, bubbles?: boolean | undefined, cancelable?: boolean | undefined, detail?: any) => void +>initCustomEvent : (type: string, bubbles?: boolean, cancelable?: boolean, detail?: any) => void >'hello' : "hello" >true : true >true : true diff --git a/testdata/baselines/reference/submodule/compiler/customEventDetail.types.diff b/testdata/baselines/reference/submodule/compiler/customEventDetail.types.diff deleted file mode 100644 index 855a66105dc..00000000000 --- a/testdata/baselines/reference/submodule/compiler/customEventDetail.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.customEventDetail.types -+++ new.customEventDetail.types -@@= skipped -6, +6 lines =@@ - // valid since detail is any - x.initCustomEvent('hello', true, true, { id: 12, name: 'hello' }); - >x.initCustomEvent('hello', true, true, { id: 12, name: 'hello' }) : void -->x.initCustomEvent : (type: string, bubbles?: boolean, cancelable?: boolean, detail?: any) => void -+>x.initCustomEvent : (type: string, bubbles?: boolean | undefined, cancelable?: boolean | undefined, detail?: any) => void - >x : CustomEvent -->initCustomEvent : (type: string, bubbles?: boolean, cancelable?: boolean, detail?: any) => void -+>initCustomEvent : (type: string, bubbles?: boolean | undefined, cancelable?: boolean | undefined, detail?: any) => void - >'hello' : "hello" - >true : true - >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/cyclicGenericTypeInstantiationInference.types b/testdata/baselines/reference/submodule/compiler/cyclicGenericTypeInstantiationInference.types index 6b3aaf81a1a..57872e2e6af 100644 --- a/testdata/baselines/reference/submodule/compiler/cyclicGenericTypeInstantiationInference.types +++ b/testdata/baselines/reference/submodule/compiler/cyclicGenericTypeInstantiationInference.types @@ -54,12 +54,12 @@ var b = bar(); >bar : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; } function test(x: typeof a): void { } ->test : (x: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }) => void +>test : (x: typeof a) => void >x : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; } >a : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; } test(b); >test(b) : void ->test : (x: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }) => void +>test : (x: typeof a) => void >b : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; } diff --git a/testdata/baselines/reference/submodule/compiler/cyclicGenericTypeInstantiationInference.types.diff b/testdata/baselines/reference/submodule/compiler/cyclicGenericTypeInstantiationInference.types.diff deleted file mode 100644 index d9abc04d8d4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/cyclicGenericTypeInstantiationInference.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.cyclicGenericTypeInstantiationInference.types -+++ new.cyclicGenericTypeInstantiationInference.types -@@= skipped -53, +53 lines =@@ - >bar : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; } - - function test(x: typeof a): void { } -->test : (x: typeof a) => void -+>test : (x: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }) => void - >x : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; } - >a : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; } - - test(b); - >test(b) : void -->test : (x: typeof a) => void -+>test : (x: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }) => void - >b : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; } diff --git a/testdata/baselines/reference/submodule/compiler/dataViewConstructor.errors.txt b/testdata/baselines/reference/submodule/compiler/dataViewConstructor.errors.txt index b239be66163..bfe291f8aaf 100644 --- a/testdata/baselines/reference/submodule/compiler/dataViewConstructor.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/dataViewConstructor.errors.txt @@ -1,4 +1,4 @@ -dataViewConstructor.ts(1,14): error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: undefined; }'. +dataViewConstructor.ts(1,14): error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: never; }'. Type 'Uint8Array' is not assignable to type 'ArrayBuffer'. Types of property '[Symbol.toStringTag]' are incompatible. Type '"Uint8Array"' is not assignable to type '"ArrayBuffer"'. @@ -7,7 +7,7 @@ dataViewConstructor.ts(1,14): error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: undefined; }'. +!!! error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: never; }'. !!! error TS2345: Type 'Uint8Array' is not assignable to type 'ArrayBuffer'. !!! error TS2345: Types of property '[Symbol.toStringTag]' are incompatible. !!! error TS2345: Type '"Uint8Array"' is not assignable to type '"ArrayBuffer"'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/dataViewConstructor.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/dataViewConstructor.errors.txt.diff new file mode 100644 index 00000000000..f623b7eabc0 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/dataViewConstructor.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.dataViewConstructor.errors.txt ++++ new.dataViewConstructor.errors.txt +@@= skipped -0, +0 lines =@@ +-dataViewConstructor.ts(1,14): error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: undefined; }'. ++dataViewConstructor.ts(1,14): error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: never; }'. + Type 'Uint8Array' is not assignable to type 'ArrayBuffer'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint8Array"' is not assignable to type '"ArrayBuffer"'. +@@= skipped -6, +6 lines =@@ + ==== dataViewConstructor.ts (1 errors) ==== + new DataView(new Uint8Array(32)); // should error + ~~~~~~~~~~~~~~~~~~ +-!!! error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: undefined; }'. ++!!! error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: never; }'. + !!! error TS2345: Type 'Uint8Array' is not assignable to type 'ArrayBuffer'. + !!! error TS2345: Types of property '[Symbol.toStringTag]' are incompatible. + !!! error TS2345: Type '"Uint8Array"' is not assignable to type '"ArrayBuffer"'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/dataViewConstructor.types b/testdata/baselines/reference/submodule/compiler/dataViewConstructor.types index 604d1a98ec0..76ebe0ca77c 100644 --- a/testdata/baselines/reference/submodule/compiler/dataViewConstructor.types +++ b/testdata/baselines/reference/submodule/compiler/dataViewConstructor.types @@ -2,7 +2,7 @@ === dataViewConstructor.ts === new DataView(new Uint8Array(32)); // should error ->new DataView(new Uint8Array(32)) : DataView +>new DataView(new Uint8Array(32)) : DataView >DataView : DataViewConstructor >new Uint8Array(32) : Uint8Array >Uint8Array : Uint8ArrayConstructor diff --git a/testdata/baselines/reference/submodule/compiler/dataViewConstructor.types.diff b/testdata/baselines/reference/submodule/compiler/dataViewConstructor.types.diff deleted file mode 100644 index 756a476e197..00000000000 --- a/testdata/baselines/reference/submodule/compiler/dataViewConstructor.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.dataViewConstructor.types -+++ new.dataViewConstructor.types -@@= skipped -1, +1 lines =@@ - - === dataViewConstructor.ts === - new DataView(new Uint8Array(32)); // should error -->new DataView(new Uint8Array(32)) : DataView -+>new DataView(new Uint8Array(32)) : DataView - >DataView : DataViewConstructor - >new Uint8Array(32) : Uint8Array - >Uint8Array : Uint8ArrayConstructor \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileConstructors(target=es2015).types b/testdata/baselines/reference/submodule/compiler/declFileConstructors(target=es2015).types index c36395f62a4..26551a5340b 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileConstructors(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/declFileConstructors(target=es2015).types @@ -36,9 +36,9 @@ export class ConstructorWithRestParamters { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } } @@ -126,9 +126,9 @@ class GlobalConstructorWithRestParamters { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } } diff --git a/testdata/baselines/reference/submodule/compiler/declFileConstructors(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/declFileConstructors(target=es2015).types.diff deleted file mode 100644 index 56c1827941f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFileConstructors(target=es2015).types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.declFileConstructors(target=es2015).types -+++ new.declFileConstructors(target=es2015).types -@@= skipped -35, +35 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - } -@@= skipped -90, +90 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileForInterfaceWithRestParams.types b/testdata/baselines/reference/submodule/compiler/declFileForInterfaceWithRestParams.types index 3262f31a5d0..db49d6709f5 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileForInterfaceWithRestParams.types +++ b/testdata/baselines/reference/submodule/compiler/declFileForInterfaceWithRestParams.types @@ -3,18 +3,18 @@ === declFileForInterfaceWithRestParams.ts === interface I { foo(...x): typeof x; ->foo : (...x: any[]) => any[] +>foo : (...x: any[]) => typeof x >x : any[] >x : any[] foo2(a: number, ...x): typeof x; ->foo2 : (a: number, ...x: any[]) => any[] +>foo2 : (a: number, ...x: any[]) => typeof x >a : number >x : any[] >x : any[] foo3(b: string, ...x: string[]): typeof x; ->foo3 : (b: string, ...x: string[]) => string[] +>foo3 : (b: string, ...x: string[]) => typeof x >b : string >x : string[] >x : string[] diff --git a/testdata/baselines/reference/submodule/compiler/declFileForInterfaceWithRestParams.types.diff b/testdata/baselines/reference/submodule/compiler/declFileForInterfaceWithRestParams.types.diff deleted file mode 100644 index 6f485ec66a7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFileForInterfaceWithRestParams.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.declFileForInterfaceWithRestParams.types -+++ new.declFileForInterfaceWithRestParams.types -@@= skipped -2, +2 lines =@@ - === declFileForInterfaceWithRestParams.ts === - interface I { - foo(...x): typeof x; -->foo : (...x: any[]) => typeof x -+>foo : (...x: any[]) => any[] - >x : any[] - >x : any[] - - foo2(a: number, ...x): typeof x; -->foo2 : (a: number, ...x: any[]) => typeof x -+>foo2 : (a: number, ...x: any[]) => any[] - >a : number - >x : any[] - >x : any[] - - foo3(b: string, ...x: string[]): typeof x; -->foo3 : (b: string, ...x: string[]) => typeof x -+>foo3 : (b: string, ...x: string[]) => string[] - >b : string - >x : string[] - >x : string[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileGenericType.types b/testdata/baselines/reference/submodule/compiler/declFileGenericType.types index 69edb54539f..c63e3e57fd9 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileGenericType.types +++ b/testdata/baselines/reference/submodule/compiler/declFileGenericType.types @@ -15,19 +15,19 @@ export namespace C { >x : T export function F2(x: T): C.A { return null; } ->F2 : (x: T) => A +>F2 : (x: T) => C.A >x : T >C : any >C : any export function F3(x: T): C.A[] { return null; } ->F3 : (x: T) => A[] +>F3 : (x: T) => C.A[] >x : T >C : any >C : any export function F4>(x: T): Array> { return null; } ->F4 : >(x: T) => A[] +>F4 : >(x: T) => Array> >x : T >C : any >C : any @@ -72,10 +72,10 @@ export var d = C.F3; >F3 : (x: T) => C.A[] export var e = C.F4; ->e : >(x: T) => C.A[] ->C.F4 : >(x: T) => C.A[] +>e : >(x: T) => Array> +>C.F4 : >(x: T) => Array> >C : typeof C ->F4 : >(x: T) => C.A[] +>F4 : >(x: T) => Array> export var x = (new C.D>(new C.A())).val; >x : C.A diff --git a/testdata/baselines/reference/submodule/compiler/declFileGenericType.types.diff b/testdata/baselines/reference/submodule/compiler/declFileGenericType.types.diff deleted file mode 100644 index 520bb9b5053..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFileGenericType.types.diff +++ /dev/null @@ -1,39 +0,0 @@ ---- old.declFileGenericType.types -+++ new.declFileGenericType.types -@@= skipped -14, +14 lines =@@ - >x : T - - export function F2(x: T): C.A { return null; } -->F2 : (x: T) => C.A -+>F2 : (x: T) => A - >x : T - >C : any - >C : any - - export function F3(x: T): C.A[] { return null; } -->F3 : (x: T) => C.A[] -+>F3 : (x: T) => A[] - >x : T - >C : any - >C : any - - export function F4>(x: T): Array> { return null; } -->F4 : >(x: T) => Array> -+>F4 : >(x: T) => A[] - >x : T - >C : any - >C : any -@@= skipped -57, +57 lines =@@ - >F3 : (x: T) => C.A[] - - export var e = C.F4; -->e : >(x: T) => Array> -->C.F4 : >(x: T) => Array> -+>e : >(x: T) => C.A[] -+>C.F4 : >(x: T) => C.A[] - >C : typeof C -->F4 : >(x: T) => Array> -+>F4 : >(x: T) => C.A[] - - export var x = (new C.D>(new C.A())).val; - >x : C.A \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileGenericType2.types b/testdata/baselines/reference/submodule/compiler/declFileGenericType2.types index 1bf1bce548a..03bbf6f86f9 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileGenericType2.types +++ b/testdata/baselines/reference/submodule/compiler/declFileGenericType2.types @@ -27,7 +27,7 @@ declare namespace templa.mvc.composite { >mvc : typeof mvc getControllers(): mvc.IController[]; ->getControllers : () => IController[] +>getControllers : () => mvc.IController[] >mvc : any >mvc : any } diff --git a/testdata/baselines/reference/submodule/compiler/declFileGenericType2.types.diff b/testdata/baselines/reference/submodule/compiler/declFileGenericType2.types.diff deleted file mode 100644 index eea1c66771e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFileGenericType2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.declFileGenericType2.types -+++ new.declFileGenericType2.types -@@= skipped -26, +26 lines =@@ - >mvc : typeof mvc - - getControllers(): mvc.IController[]; -->getControllers : () => mvc.IController[] -+>getControllers : () => IController[] - >mvc : any - >mvc : any - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileImportModuleWithExportAssignment.types b/testdata/baselines/reference/submodule/compiler/declFileImportModuleWithExportAssignment.types index f7f356f64db..c7bd98cf686 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileImportModuleWithExportAssignment.types +++ b/testdata/baselines/reference/submodule/compiler/declFileImportModuleWithExportAssignment.types @@ -35,7 +35,7 @@ namespace m2 { } var m2: { ->m2 : { (): import("./declFileImportModuleWithExportAssignment_0").connectExport; test1: import("./declFileImportModuleWithExportAssignment_0").connectModule; test2(): import("./declFileImportModuleWithExportAssignment_0").connectModule; } +>m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; } (): m2.connectExport; >m2 : any @@ -45,10 +45,10 @@ var m2: { >m2 : any test2(): m2.connectModule; ->test2 : () => import("./declFileImportModuleWithExportAssignment_0").connectModule +>test2 : () => m2.connectModule >m2 : any }; export = m2; ->m2 : { (): import("./declFileImportModuleWithExportAssignment_0").connectExport; test1: import("./declFileImportModuleWithExportAssignment_0").connectModule; test2(): import("./declFileImportModuleWithExportAssignment_0").connectModule; } +>m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; } diff --git a/testdata/baselines/reference/submodule/compiler/declFileImportModuleWithExportAssignment.types.diff b/testdata/baselines/reference/submodule/compiler/declFileImportModuleWithExportAssignment.types.diff index 2891f86f10d..67bc3d8d552 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileImportModuleWithExportAssignment.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declFileImportModuleWithExportAssignment.types.diff @@ -1,13 +1,6 @@ --- old.declFileImportModuleWithExportAssignment.types +++ new.declFileImportModuleWithExportAssignment.types -@@= skipped -34, +34 lines =@@ - - } - var m2: { -->m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; } -+>m2 : { (): import("./declFileImportModuleWithExportAssignment_0").connectExport; test1: import("./declFileImportModuleWithExportAssignment_0").connectModule; test2(): import("./declFileImportModuleWithExportAssignment_0").connectModule; } - - (): m2.connectExport; +@@= skipped -40, +40 lines =@@ >m2 : any test1: m2.connectModule; @@ -15,12 +8,4 @@ +>test1 : import("./declFileImportModuleWithExportAssignment_0").connectModule >m2 : any - test2(): m2.connectModule; -->test2 : () => m2.connectModule -+>test2 : () => import("./declFileImportModuleWithExportAssignment_0").connectModule - >m2 : any - - }; - export = m2; -->m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; } -+>m2 : { (): import("./declFileImportModuleWithExportAssignment_0").connectExport; test1: import("./declFileImportModuleWithExportAssignment_0").connectModule; test2(): import("./declFileImportModuleWithExportAssignment_0").connectModule; } + test2(): m2.connectModule; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileMethods(target=es2015).types b/testdata/baselines/reference/submodule/compiler/declFileMethods(target=es2015).types index 351f096051b..32342bb924c 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileMethods(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/declFileMethods(target=es2015).types @@ -30,9 +30,9 @@ export class c1 { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } @@ -79,9 +79,9 @@ export class c1 { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } private privateFooWithOverloads(a: string): string; @@ -127,9 +127,9 @@ export class c1 { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } static staticFooWithOverloads(a: string): string; @@ -175,9 +175,9 @@ export class c1 { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } private static privateStaticFooWithOverloads(a: string): string; @@ -255,9 +255,9 @@ class c2 { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } @@ -304,9 +304,9 @@ class c2 { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } private privateFooWithOverloads(a: string): string; @@ -352,9 +352,9 @@ class c2 { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } static staticFooWithOverloads(a: string): string; @@ -400,9 +400,9 @@ class c2 { >a + rests.join("") : string >a : string >rests.join("") : string ->rests.join : (separator?: string | undefined) => string +>rests.join : (separator?: string) => string >rests : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" } private static privateStaticFooWithOverloads(a: string): string; diff --git a/testdata/baselines/reference/submodule/compiler/declFileMethods(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/declFileMethods(target=es2015).types.diff deleted file mode 100644 index e6981192b12..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFileMethods(target=es2015).types.diff +++ /dev/null @@ -1,98 +0,0 @@ ---- old.declFileMethods(target=es2015).types -+++ new.declFileMethods(target=es2015).types -@@= skipped -29, +29 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - -@@= skipped -49, +49 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - private privateFooWithOverloads(a: string): string; -@@= skipped -48, +48 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - static staticFooWithOverloads(a: string): string; -@@= skipped -48, +48 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - private static privateStaticFooWithOverloads(a: string): string; -@@= skipped -80, +80 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - -@@= skipped -49, +49 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - private privateFooWithOverloads(a: string): string; -@@= skipped -48, +48 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - static staticFooWithOverloads(a: string): string; -@@= skipped -48, +48 lines =@@ - >a + rests.join("") : string - >a : string - >rests.join("") : string -->rests.join : (separator?: string) => string -+>rests.join : (separator?: string | undefined) => string - >rests : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" - } - private static privateStaticFooWithOverloads(a: string): string; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFilePrivateMethodOverloads.types b/testdata/baselines/reference/submodule/compiler/declFilePrivateMethodOverloads.types index 450f0fb833f..cec9de7297f 100644 --- a/testdata/baselines/reference/submodule/compiler/declFilePrivateMethodOverloads.types +++ b/testdata/baselines/reference/submodule/compiler/declFilePrivateMethodOverloads.types @@ -9,19 +9,19 @@ class c1 { >c1 : c1 private _forEachBindingContext(bindingContext: IContext, fn: (bindingContext: IContext) => void); ->_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } +>_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } >bindingContext : IContext >fn : (bindingContext: IContext) => void >bindingContext : IContext private _forEachBindingContext(bindingContextArray: Array, fn: (bindingContext: IContext) => void); ->_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } +>_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } >bindingContextArray : IContext[] >fn : (bindingContext: IContext) => void >bindingContext : IContext private _forEachBindingContext(context, fn: (bindingContext: IContext) => void): void { ->_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } +>_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } >context : any >fn : (bindingContext: IContext) => void >bindingContext : IContext @@ -30,17 +30,17 @@ class c1 { } private overloadWithArityDifference(bindingContext: IContext); ->overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } +>overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } >bindingContext : IContext private overloadWithArityDifference(bindingContextArray: Array, fn: (bindingContext: IContext) => void); ->overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } +>overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } >bindingContextArray : IContext[] >fn : (bindingContext: IContext) => void >bindingContext : IContext private overloadWithArityDifference(context): void { ->overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } +>overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } >context : any // Function here diff --git a/testdata/baselines/reference/submodule/compiler/declFilePrivateMethodOverloads.types.diff b/testdata/baselines/reference/submodule/compiler/declFilePrivateMethodOverloads.types.diff deleted file mode 100644 index 4f9b2461b88..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFilePrivateMethodOverloads.types.diff +++ /dev/null @@ -1,46 +0,0 @@ ---- old.declFilePrivateMethodOverloads.types -+++ new.declFilePrivateMethodOverloads.types -@@= skipped -8, +8 lines =@@ - >c1 : c1 - - private _forEachBindingContext(bindingContext: IContext, fn: (bindingContext: IContext) => void); -->_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } -+>_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } - >bindingContext : IContext - >fn : (bindingContext: IContext) => void - >bindingContext : IContext - - private _forEachBindingContext(bindingContextArray: Array, fn: (bindingContext: IContext) => void); -->_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } -+>_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } - >bindingContextArray : IContext[] - >fn : (bindingContext: IContext) => void - >bindingContext : IContext - - private _forEachBindingContext(context, fn: (bindingContext: IContext) => void): void { -->_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } -+>_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } - >context : any - >fn : (bindingContext: IContext) => void - >bindingContext : IContext -@@= skipped -21, +21 lines =@@ - } - - private overloadWithArityDifference(bindingContext: IContext); -->overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } -+>overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } - >bindingContext : IContext - - private overloadWithArityDifference(bindingContextArray: Array, fn: (bindingContext: IContext) => void); -->overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } -+>overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } - >bindingContextArray : IContext[] - >fn : (bindingContext: IContext) => void - >bindingContext : IContext - - private overloadWithArityDifference(context): void { -->overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; } -+>overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; } - >context : any - - // Function here \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileRestParametersOfFunctionAndFunctionType.types b/testdata/baselines/reference/submodule/compiler/declFileRestParametersOfFunctionAndFunctionType.types index 08094cb05a4..82aab5d7f9c 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileRestParametersOfFunctionAndFunctionType.types +++ b/testdata/baselines/reference/submodule/compiler/declFileRestParametersOfFunctionAndFunctionType.types @@ -6,21 +6,21 @@ function f1(...args) { } >args : any[] function f2(x: (...args) => void) { } ->f2 : (x: (...args: any[]) => void) => void +>f2 : (x: (...args: any) => void) => void >x : (...args: any[]) => void >args : any[] function f3(x: { (...args): void }) { } ->f3 : (x: (...args: any[]) => void) => void +>f3 : (x: { (...args: any): void; }) => void >x : (...args: any[]) => void >args : any[] function f4 void>() { } ->f4 : void>() => void +>f4 : void>() => void >args : any[] function f5() { } ->f5 : void>() => void +>f5 : () => void >args : any[] var f6 = () => { return [10]; } diff --git a/testdata/baselines/reference/submodule/compiler/declFileRestParametersOfFunctionAndFunctionType.types.diff b/testdata/baselines/reference/submodule/compiler/declFileRestParametersOfFunctionAndFunctionType.types.diff deleted file mode 100644 index 8d2dcf70b87..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFileRestParametersOfFunctionAndFunctionType.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.declFileRestParametersOfFunctionAndFunctionType.types -+++ new.declFileRestParametersOfFunctionAndFunctionType.types -@@= skipped -5, +5 lines =@@ - >args : any[] - - function f2(x: (...args) => void) { } -->f2 : (x: (...args: any) => void) => void -+>f2 : (x: (...args: any[]) => void) => void - >x : (...args: any[]) => void - >args : any[] - - function f3(x: { (...args): void }) { } -->f3 : (x: { (...args: any): void; }) => void -+>f3 : (x: (...args: any[]) => void) => void - >x : (...args: any[]) => void - >args : any[] - - function f4 void>() { } -->f4 : void>() => void -+>f4 : void>() => void - >args : any[] - - function f5() { } -->f5 : () => void -+>f5 : void>() => void - >args : any[] - - var f6 = () => { return [10]; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileTypeAnnotationTypeLiteral(target=es2015).types b/testdata/baselines/reference/submodule/compiler/declFileTypeAnnotationTypeLiteral(target=es2015).types index 0b4e15cb421..f3d8980c28d 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileTypeAnnotationTypeLiteral(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/declFileTypeAnnotationTypeLiteral(target=es2015).types @@ -17,7 +17,7 @@ namespace m { // Object literal with everything var x: { ->x : { (a: number): c; (a: string): g; new (a: number): c; new (a: string): m.c; [n: number]: c; [n: string]: c; a: c; b: g; m1(): g; m2(a: string, b?: number | undefined, ...c: c[]): string; } +>x : { (a: number): c; (a: string): g; new (a: number): c; new (a: string): m.c; [n: number]: c; [n: string]: c; a: c; b: g; m1(): g; m2(a: string, b?: number, ...c: c[]): string; } // Call signatures (a: number): c; @@ -53,7 +53,7 @@ var x: { >m1 : () => g m2(a: string, b?: number, ...c: c[]): string; ->m2 : (a: string, b?: number | undefined, ...c: c[]) => string +>m2 : (a: string, b?: number, ...c: c[]) => string >a : string >b : number | undefined >c : c[] diff --git a/testdata/baselines/reference/submodule/compiler/declFileTypeAnnotationTypeLiteral(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/declFileTypeAnnotationTypeLiteral(target=es2015).types.diff deleted file mode 100644 index 7edb63b7d73..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFileTypeAnnotationTypeLiteral(target=es2015).types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.declFileTypeAnnotationTypeLiteral(target=es2015).types -+++ new.declFileTypeAnnotationTypeLiteral(target=es2015).types -@@= skipped -16, +16 lines =@@ - - // Object literal with everything - var x: { -->x : { (a: number): c; (a: string): g; new (a: number): c; new (a: string): m.c; [n: number]: c; [n: string]: c; a: c; b: g; m1(): g; m2(a: string, b?: number, ...c: c[]): string; } -+>x : { (a: number): c; (a: string): g; new (a: number): c; new (a: string): m.c; [n: number]: c; [n: string]: c; a: c; b: g; m1(): g; m2(a: string, b?: number | undefined, ...c: c[]): string; } - - // Call signatures - (a: number): c; -@@= skipped -36, +36 lines =@@ - >m1 : () => g - - m2(a: string, b?: number, ...c: c[]): string; -->m2 : (a: string, b?: number, ...c: c[]) => string -+>m2 : (a: string, b?: number | undefined, ...c: c[]) => string - >a : string - >b : number | undefined - >c : c[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.js b/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.js index 7c2b21f4d31..6a0c032be1d 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.js +++ b/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.js @@ -71,6 +71,6 @@ declare function b1(): typeof b1; declare function foo(): typeof foo; declare var foo1: typeof foo; declare var foo2: typeof foo; -declare var foo3: () => /*elided*/ any; -declare var x: () => /*elided*/ any; +declare var foo3: () => () => /*elided*/ any; +declare var x: () => () => /*elided*/ any; declare function foo5(x: number): (x: number) => number; diff --git a/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.js.diff b/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.js.diff deleted file mode 100644 index ea3abca597b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.declFileTypeofFunction.js -+++ new.declFileTypeofFunction.js -@@= skipped -70, +70 lines =@@ - declare function foo(): typeof foo; - declare var foo1: typeof foo; - declare var foo2: typeof foo; --declare var foo3: () => () => /*elided*/ any; --declare var x: () => () => /*elided*/ any; -+declare var foo3: () => /*elided*/ any; -+declare var x: () => /*elided*/ any; - declare function foo5(x: number): (x: number) => number; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.types b/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.types index 834063f2582..cfa83a383f9 100644 --- a/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.types +++ b/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.types @@ -2,36 +2,36 @@ === declFileTypeofFunction.ts === function f(n: typeof f): string; ->f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } ->n : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } ->f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } +>f : { (n: typeof f): string; (n: typeof g): string; } +>n : { (n: typeof f): string; (n: typeof g): string; } +>f : { (n: typeof f): string; (n: typeof g): string; } function f(n: typeof g): string; ->f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } ->n : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } ->g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } +>f : { (n: typeof f): string; (n: typeof g): string; } +>n : { (n: typeof g): number; (n: typeof f): number; } +>g : { (n: typeof g): number; (n: typeof f): number; } function f() { return undefined; } ->f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } +>f : { (n: typeof f): string; (n: typeof g): string; } >undefined : undefined function g(n: typeof g): number; ->g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } ->n : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } ->g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } +>g : { (n: typeof g): number; (n: typeof f): number; } +>n : { (n: typeof g): number; (n: typeof f): number; } +>g : { (n: typeof g): number; (n: typeof f): number; } function g(n: typeof f): number; ->g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } ->n : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } ->f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } +>g : { (n: typeof g): number; (n: typeof f): number; } +>n : { (n: typeof f): string; (n: typeof g): string; } +>f : { (n: typeof f): string; (n: typeof g): string; } function g() { return undefined; } ->g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } +>g : { (n: typeof g): number; (n: typeof f): number; } >undefined : undefined var b: () => typeof b; ->b : () => any ->b : () => any +>b : () => typeof b +>b : () => typeof b function b1() { >b1 : () => typeof b1 diff --git a/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.types.diff b/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.types.diff deleted file mode 100644 index 611f04041c3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declFileTypeofFunction.types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.declFileTypeofFunction.types -+++ new.declFileTypeofFunction.types -@@= skipped -1, +1 lines =@@ - - === declFileTypeofFunction.ts === - function f(n: typeof f): string; -->f : { (n: typeof f): string; (n: typeof g): string; } -->n : { (n: typeof f): string; (n: typeof g): string; } -->f : { (n: typeof f): string; (n: typeof g): string; } -+>f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } -+>n : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } -+>f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } - - function f(n: typeof g): string; -->f : { (n: typeof f): string; (n: typeof g): string; } -->n : { (n: typeof g): number; (n: typeof f): number; } -->g : { (n: typeof g): number; (n: typeof f): number; } -+>f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } -+>n : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } -+>g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } - - function f() { return undefined; } -->f : { (n: typeof f): string; (n: typeof g): string; } -+>f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } - >undefined : undefined - - function g(n: typeof g): number; -->g : { (n: typeof g): number; (n: typeof f): number; } -->n : { (n: typeof g): number; (n: typeof f): number; } -->g : { (n: typeof g): number; (n: typeof f): number; } -+>g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } -+>n : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } -+>g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } - - function g(n: typeof f): number; -->g : { (n: typeof g): number; (n: typeof f): number; } -->n : { (n: typeof f): string; (n: typeof g): string; } -->f : { (n: typeof f): string; (n: typeof g): string; } -+>g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } -+>n : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } -+>f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; } - - function g() { return undefined; } -->g : { (n: typeof g): number; (n: typeof f): number; } -+>g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; } - >undefined : undefined - - var b: () => typeof b; -->b : () => typeof b -->b : () => typeof b -+>b : () => any -+>b : () => any - - function b1() { - >b1 : () => typeof b1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.js b/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.js index 6cbdce41218..b44853800c9 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.js @@ -57,7 +57,10 @@ type O = { prop: string; prop2: string; }; -export declare const fn: (v: string, p: Omit, key: keyof O, p2: Omit) => void; +type I = { + prop: string; +}; +export declare const fn: (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void; export {}; //// [aExp.d.ts] export type O = { @@ -67,16 +70,16 @@ export type O = { export type I = { prop: string; }; -export declare const fnExp: (v: string, p: Omit, key: keyof O, p2: Omit) => void; +export declare const fnExp: (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void; //// [b.d.ts] export declare const f: (v: string, p: Omit<{ prop: string; prop2: string; -}, "prop">, key: keyof { +}, 'prop'>, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void; -export declare const fExp: (v: string, p: Omit, key: keyof import("./aExp").O, p2: Omit) => void; +export declare const fExp: (v: import("./aExp").O['prop'], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.js.diff index c090f2aba6a..5a9f5c63f42 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.js.diff @@ -1,29 +1,31 @@ --- old.declarationEmitAliasInlineing.js +++ new.declarationEmitAliasInlineing.js -@@= skipped -56, +56 lines =@@ +@@= skipped -59, +59 lines =@@ + type I = { prop: string; - prop2: string; }; --type I = { -- prop: string; --}; -export declare const fn: (v: O["prop"], p: Omit, key: keyof O, p2: Omit) => void; -+export declare const fn: (v: string, p: Omit, key: keyof O, p2: Omit) => void; ++export declare const fn: (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void; export {}; //// [aExp.d.ts] export type O = { -@@= skipped -13, +10 lines =@@ +@@= skipped -10, +10 lines =@@ export type I = { prop: string; }; -export declare const fnExp: (v: O["prop"], p: Omit, key: keyof O, p2: Omit) => void; -+export declare const fnExp: (v: string, p: Omit, key: keyof O, p2: Omit) => void; ++export declare const fnExp: (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void; //// [b.d.ts] export declare const f: (v: string, p: Omit<{ prop: string; -@@= skipped -12, +12 lines =@@ + prop2: string; +-}, "prop">, key: keyof { ++}, 'prop'>, key: keyof { + prop: string; + prop2: string; + }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void; -export declare const fExp: (v: import("./aExp").O["prop"], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void; -+export declare const fExp: (v: string, p: Omit, key: keyof import("./aExp").O, p2: Omit) => void; \ No newline at end of file ++export declare const fExp: (v: import("./aExp").O['prop'], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.types b/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.types index 633e6e566b3..38b207e1894 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.types @@ -19,8 +19,8 @@ type I = { } export const fn = (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {}; ->fn : (v: string, p: Omit, key: keyof O, p2: Omit) => void ->(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: string, p: Omit, key: keyof O, p2: Omit) => void +>fn : (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void +>(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void >v : string >p : Omit >key : keyof O @@ -45,8 +45,8 @@ export type I = { } export const fnExp = (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {}; ->fnExp : (v: string, p: Omit, key: keyof O, p2: Omit) => void ->(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: string, p: Omit, key: keyof O, p2: Omit) => void +>fnExp : (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void +>(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void >v : string >p : Omit >key : keyof O @@ -54,16 +54,16 @@ export const fnExp = (v: O['prop'], p: Omit, key: keyof O, p2: Omitfn : (v: string, p: Omit<{ prop: string; prop2: string; }, "prop">, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void +>fn : (v: string, p: Omit<{ prop: string; prop2: string; }, 'prop'>, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void import {fnExp} from './aExp' ->fnExp : (v: string, p: Omit, key: keyof import("./aExp").O, p2: Omit) => void +>fnExp : (v: import("./aExp").O['prop'], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void export const f = fn; ->f : (v: string, p: Omit<{ prop: string; prop2: string; }, "prop">, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void ->fn : (v: string, p: Omit<{ prop: string; prop2: string; }, "prop">, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void +>f : (v: string, p: Omit<{ prop: string; prop2: string; }, 'prop'>, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void +>fn : (v: string, p: Omit<{ prop: string; prop2: string; }, 'prop'>, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void export const fExp = fnExp; ->fExp : (v: string, p: Omit, key: keyof import("./aExp").O, p2: Omit) => void ->fnExp : (v: string, p: Omit, key: keyof import("./aExp").O, p2: Omit) => void +>fExp : (v: import("./aExp").O['prop'], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void +>fnExp : (v: import("./aExp").O['prop'], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.types.diff index 52ed07e2c7f..3643689ab88 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitAliasInlineing.types.diff @@ -6,8 +6,8 @@ export const fn = (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {}; ->fn : (v: O["prop"], p: Omit, key: keyof O, p2: Omit) => void ->(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: O["prop"], p: Omit, key: keyof O, p2: Omit) => void -+>fn : (v: string, p: Omit, key: keyof O, p2: Omit) => void -+>(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: string, p: Omit, key: keyof O, p2: Omit) => void ++>fn : (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void ++>(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void >v : string >p : Omit >key : keyof O @@ -17,24 +17,30 @@ export const fnExp = (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {}; ->fnExp : (v: O["prop"], p: Omit, key: keyof O, p2: Omit) => void ->(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: O["prop"], p: Omit, key: keyof O, p2: Omit) => void -+>fnExp : (v: string, p: Omit, key: keyof O, p2: Omit) => void -+>(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: string, p: Omit, key: keyof O, p2: Omit) => void ++>fnExp : (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void ++>(v: O['prop'], p: Omit, key: keyof O, p2: Omit) => {} : (v: O['prop'], p: Omit, key: keyof O, p2: Omit) => void >v : string >p : Omit >key : keyof O -@@= skipped -12, +12 lines =@@ - >fn : (v: string, p: Omit<{ prop: string; prop2: string; }, "prop">, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void +@@= skipped -9, +9 lines =@@ + + === b.ts === + import {fn} from './a' +->fn : (v: string, p: Omit<{ prop: string; prop2: string; }, "prop">, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void ++>fn : (v: string, p: Omit<{ prop: string; prop2: string; }, 'prop'>, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void import {fnExp} from './aExp' ->fnExp : (v: import("./aExp").O["prop"], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void -+>fnExp : (v: string, p: Omit, key: keyof import("./aExp").O, p2: Omit) => void ++>fnExp : (v: import("./aExp").O['prop'], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void export const f = fn; - >f : (v: string, p: Omit<{ prop: string; prop2: string; }, "prop">, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void - >fn : (v: string, p: Omit<{ prop: string; prop2: string; }, "prop">, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void +->f : (v: string, p: Omit<{ prop: string; prop2: string; }, "prop">, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void +->fn : (v: string, p: Omit<{ prop: string; prop2: string; }, "prop">, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void ++>f : (v: string, p: Omit<{ prop: string; prop2: string; }, 'prop'>, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void ++>fn : (v: string, p: Omit<{ prop: string; prop2: string; }, 'prop'>, key: keyof { prop: string; prop2: string; }, p2: Omit<{ prop: string; prop2: string; }, "prop">) => void export const fExp = fnExp; ->fExp : (v: import("./aExp").O["prop"], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void ->fnExp : (v: import("./aExp").O["prop"], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void -+>fExp : (v: string, p: Omit, key: keyof import("./aExp").O, p2: Omit) => void -+>fnExp : (v: string, p: Omit, key: keyof import("./aExp").O, p2: Omit) => void ++>fExp : (v: import("./aExp").O['prop'], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void ++>fnExp : (v: import("./aExp").O['prop'], p: Omit, key: keyof import("./aExp").O, p2: Omit) => void diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.js b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.js index a95f2bb4c13..63b46cfc5fa 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.js @@ -41,4 +41,4 @@ declare const duplicateIndetifiers3: ({ name: alias }: Named, { name: alias2 }: declare let value: string; declare const shadowedVariable: ({ value: alias }: { value: string; -}) => string; +}) => typeof value; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.js.diff deleted file mode 100644 index e4c29ba297e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.js.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.declarationEmitBindingPatternsFunctionExpr.js -+++ new.declarationEmitBindingPatternsFunctionExpr.js -@@= skipped -40, +40 lines =@@ - declare let value: string; - declare const shadowedVariable: ({ value: alias }: { - value: string; --}) => typeof value; -+}) => string; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.types b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.types index ac064df6698..583bdaf4057 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.types @@ -44,8 +44,8 @@ let value = ""; // 2.Can change in meaning for typeof value if we remove alias const shadowedVariable = ({ value: alias }: { value: string }): typeof value => value; ->shadowedVariable : ({ value: alias }: { value: string; }) => string ->({ value: alias }: { value: string }): typeof value => value : ({ value: alias }: { value: string; }) => string +>shadowedVariable : ({ value: alias }: { value: string; }) => typeof value +>({ value: alias }: { value: string }): typeof value => value : ({ value: alias }: { value: string; }) => typeof value >value : any >alias : string >value : string diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.types.diff deleted file mode 100644 index f1c434214c6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsFunctionExpr.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitBindingPatternsFunctionExpr.types -+++ new.declarationEmitBindingPatternsFunctionExpr.types -@@= skipped -43, +43 lines =@@ - - // 2.Can change in meaning for typeof value if we remove alias - const shadowedVariable = ({ value: alias }: { value: string }): typeof value => value; -->shadowedVariable : ({ value: alias }: { value: string; }) => typeof value -->({ value: alias }: { value: string }): typeof value => value : ({ value: alias }: { value: string; }) => typeof value -+>shadowedVariable : ({ value: alias }: { value: string; }) => string -+>({ value: alias }: { value: string }): typeof value => value : ({ value: alias }: { value: string; }) => string - >value : any - >alias : string - >value : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.js b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.js index 6a8ce3d4162..a81027c2f78 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.js @@ -228,9 +228,9 @@ declare function referencedInSignartureKeyword({ function: alias }: { function: string; }): typeof alias; declare function referencedInInferredType({ name: alias }: Named): { - name: string; + name: typeof alias; }; -declare function referencedInNestedFunction({ name: alias }: Named): (p: string) => void; +declare function referencedInNestedFunction({ name: alias }: Named): (p: typeof alias) => void; declare function referencedNestedAlias({ p: { name: alias } }: { p: Named; }): typeof alias; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.js.diff deleted file mode 100644 index 0fef53e5608..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.js.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.declarationEmitBindingPatternsUnused.js -+++ new.declarationEmitBindingPatternsUnused.js -@@= skipped -227, +227 lines =@@ - function: string; - }): typeof alias; - declare function referencedInInferredType({ name: alias }: Named): { -- name: typeof alias; -+ name: string; - }; --declare function referencedInNestedFunction({ name: alias }: Named): (p: typeof alias) => void; -+declare function referencedInNestedFunction({ name: alias }: Named): (p: string) => void; - declare function referencedNestedAlias({ p: { name: alias } }: { - p: Named; - }): typeof alias; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.types b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.types index a1ed3f800a1..150207dd7c3 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.types @@ -34,7 +34,7 @@ let value = ""; // 2.Can change in meaning for typeof value if we remove alias function shadowedVariable({ value: alias }: { value: string }): typeof value { return value } ->shadowedVariable : ({ value: alias }: { value: string; }) => string +>shadowedVariable : ({ value: alias }: { value: string; }) => typeof value >value : any >alias : string >value : string @@ -72,7 +72,7 @@ function referencedInCode({ name: alias }: Named) { } function referencedInSignarture({ name: alias }: Named): typeof alias { ->referencedInSignarture : ({ name: alias }: Named) => string +>referencedInSignarture : ({ name: alias }: Named) => typeof alias >name : any >alias : string >alias : string @@ -82,7 +82,7 @@ function referencedInSignarture({ name: alias }: Named): typeof alias { } function referencedInSignartureKeyword({ function: alias }: { function: string }): typeof alias { ->referencedInSignartureKeyword : ({ function: alias }: { function: string; }) => string +>referencedInSignartureKeyword : ({ function: alias }: { function: string; }) => typeof alias >function : any >alias : string >function : string @@ -93,27 +93,27 @@ function referencedInSignartureKeyword({ function: alias }: { function: string } } function referencedInInferredType({ name: alias }: Named) { ->referencedInInferredType : ({ name: alias }: Named) => { name: string; } +>referencedInInferredType : ({ name: alias }: Named) => { name: typeof alias; } >name : any >alias : string type Named2 = { name: typeof alias } ->Named2 : { name: string; } +>Named2 : { name: typeof alias; } >name : string >alias : string return null! as Named2 ->null! as Named2 : { name: string; } +>null! as Named2 : { name: typeof alias; } >null! : null } function referencedInNestedFunction({ name: alias }: Named) { ->referencedInNestedFunction : ({ name: alias }: Named) => (p: string) => void +>referencedInNestedFunction : ({ name: alias }: Named) => (p: typeof alias) => void >name : any >alias : string return function(p: typeof alias) { ->function(p: typeof alias) { } : (p: string) => void +>function(p: typeof alias) { } : (p: typeof alias) => void >p : string >alias : string @@ -121,7 +121,7 @@ function referencedInNestedFunction({ name: alias }: Named) { } function referencedNestedAlias({ p: { name: alias } }: { p: Named }): typeof alias { ->referencedNestedAlias : ({ p: { name: alias } }: { p: Named; }) => string +>referencedNestedAlias : ({ p: { name: alias } }: { p: Named; }) => typeof alias >p : any >name : any >alias : string @@ -133,7 +133,7 @@ function referencedNestedAlias({ p: { name: alias } }: { p: Named }): typeof ali } function referencedArrayAlias([a, b, { name: alias }]: Named[]): typeof alias { ->referencedArrayAlias : ([a, b, { name: alias }]: Named[]) => string +>referencedArrayAlias : ([a, b, { name: alias }]: Named[]) => typeof alias >a : Named >b : Named >name : any @@ -235,7 +235,7 @@ class ReferencedInSignartureClass { >alias : string } set x({ name: alias }: Named & { o: typeof alias }) { ->x : Named & { o: string; } +>x : Named & { o: typeof alias; } >name : any >alias : string >o : string @@ -243,7 +243,7 @@ class ReferencedInSignartureClass { } mReturnType({ name: alias }: Named): typeof alias { ->mReturnType : ({ name: alias }: Named) => string +>mReturnType : ({ name: alias }: Named) => typeof alias >name : any >alias : string >alias : string @@ -252,7 +252,7 @@ class ReferencedInSignartureClass { >null! : null } mRerturnTypeNested({ name: alias }: Named): NonNullable { ->mRerturnTypeNested : ({ name: alias }: Named) => string +>mRerturnTypeNested : ({ name: alias }: Named) => NonNullable >name : any >alias : string >alias : string @@ -261,7 +261,7 @@ class ReferencedInSignartureClass { >null! : null } mParameter({ name: alias }: Named, p: typeof alias) { ->mParameter : ({ name: alias }: Named, p: string) => any +>mParameter : ({ name: alias }: Named, p: typeof alias) => any >name : any >alias : string >p : string @@ -278,13 +278,13 @@ let notReferencedFnType: ({ name: alias }: Named) => void; >alias : string let referencedInSignartureReturnTypeFnType: ({ name: alias }: Named) => typeof alias; ->referencedInSignartureReturnTypeFnType : ({ name: alias }: Named) => string +>referencedInSignartureReturnTypeFnType : ({ name: alias }: Named) => typeof alias >name : any >alias : string >alias : string let referencedInSignartureParamTypeFnType: ({ name: alias }: Named, p: typeof alias) => void; ->referencedInSignartureParamTypeFnType : ({ name: alias }: Named, p: string) => void +>referencedInSignartureParamTypeFnType : ({ name: alias }: Named, p: typeof alias) => void >name : any >alias : string >p : string @@ -296,13 +296,13 @@ let notReferencedCtorType: new ({ name: alias }: Named) => void; >alias : string let referencedInSignartureReturnTypeCtorType: new ({ name: alias }: Named) => typeof alias; ->referencedInSignartureReturnTypeCtorType : new ({ name: alias }: Named) => string +>referencedInSignartureReturnTypeCtorType : new ({ name: alias }: Named) => typeof alias >name : any >alias : string >alias : string let referencedInSignartureParamTypeCtorType: new ({ name: alias }: Named, p: typeof alias) => void; ->referencedInSignartureParamTypeCtorType : new ({ name: alias }: Named, p: string) => void +>referencedInSignartureParamTypeCtorType : new ({ name: alias }: Named, p: typeof alias) => void >name : any >alias : string >p : string @@ -353,26 +353,26 @@ interface ReferencedInSignartureInterface { >alias : string set x({ name: alias }: Named & { o: typeof alias }) ->x : Named & { o: string; } +>x : Named & { o: typeof alias; } >name : any >alias : string >o : string >alias : string mReturnType({ name: alias }: Named): typeof alias; ->mReturnType : ({ name: alias }: Named) => string +>mReturnType : ({ name: alias }: Named) => typeof alias >name : any >alias : string >alias : string mRerturnTypeNested({ name: alias }: Named): NonNullable; ->mRerturnTypeNested : ({ name: alias }: Named) => string +>mRerturnTypeNested : ({ name: alias }: Named) => NonNullable >name : any >alias : string >alias : string mParameter({ name: alias }: Named, p: typeof alias); ->mParameter : ({ name: alias }: Named, p: string) => any +>mParameter : ({ name: alias }: Named, p: typeof alias) => any >name : any >alias : string >p : string diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.types.diff deleted file mode 100644 index c95bebe5615..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBindingPatternsUnused.types.diff +++ /dev/null @@ -1,179 +0,0 @@ ---- old.declarationEmitBindingPatternsUnused.types -+++ new.declarationEmitBindingPatternsUnused.types -@@= skipped -33, +33 lines =@@ - - // 2.Can change in meaning for typeof value if we remove alias - function shadowedVariable({ value: alias }: { value: string }): typeof value { return value } -->shadowedVariable : ({ value: alias }: { value: string; }) => typeof value -+>shadowedVariable : ({ value: alias }: { value: string; }) => string - >value : any - >alias : string - >value : string -@@= skipped -38, +38 lines =@@ - } - - function referencedInSignarture({ name: alias }: Named): typeof alias { -->referencedInSignarture : ({ name: alias }: Named) => typeof alias -+>referencedInSignarture : ({ name: alias }: Named) => string - >name : any - >alias : string - >alias : string -@@= skipped -10, +10 lines =@@ - } - - function referencedInSignartureKeyword({ function: alias }: { function: string }): typeof alias { -->referencedInSignartureKeyword : ({ function: alias }: { function: string; }) => typeof alias -+>referencedInSignartureKeyword : ({ function: alias }: { function: string; }) => string - >function : any - >alias : string - >function : string -@@= skipped -11, +11 lines =@@ - } - - function referencedInInferredType({ name: alias }: Named) { -->referencedInInferredType : ({ name: alias }: Named) => { name: typeof alias; } -+>referencedInInferredType : ({ name: alias }: Named) => { name: string; } - >name : any - >alias : string - - type Named2 = { name: typeof alias } -->Named2 : { name: typeof alias; } -+>Named2 : { name: string; } - >name : string - >alias : string - - return null! as Named2 -->null! as Named2 : { name: typeof alias; } -+>null! as Named2 : { name: string; } - >null! : null - } - - function referencedInNestedFunction({ name: alias }: Named) { -->referencedInNestedFunction : ({ name: alias }: Named) => (p: typeof alias) => void -+>referencedInNestedFunction : ({ name: alias }: Named) => (p: string) => void - >name : any - >alias : string - - return function(p: typeof alias) { -->function(p: typeof alias) { } : (p: typeof alias) => void -+>function(p: typeof alias) { } : (p: string) => void - >p : string - >alias : string - -@@= skipped -28, +28 lines =@@ - } - - function referencedNestedAlias({ p: { name: alias } }: { p: Named }): typeof alias { -->referencedNestedAlias : ({ p: { name: alias } }: { p: Named; }) => typeof alias -+>referencedNestedAlias : ({ p: { name: alias } }: { p: Named; }) => string - >p : any - >name : any - >alias : string -@@= skipped -12, +12 lines =@@ - } - - function referencedArrayAlias([a, b, { name: alias }]: Named[]): typeof alias { -->referencedArrayAlias : ([a, b, { name: alias }]: Named[]) => typeof alias -+>referencedArrayAlias : ([a, b, { name: alias }]: Named[]) => string - >a : Named - >b : Named - >name : any -@@= skipped -102, +102 lines =@@ - >alias : string - } - set x({ name: alias }: Named & { o: typeof alias }) { -->x : Named & { o: typeof alias; } -+>x : Named & { o: string; } - >name : any - >alias : string - >o : string -@@= skipped -8, +8 lines =@@ - - } - mReturnType({ name: alias }: Named): typeof alias { -->mReturnType : ({ name: alias }: Named) => typeof alias -+>mReturnType : ({ name: alias }: Named) => string - >name : any - >alias : string - >alias : string -@@= skipped -9, +9 lines =@@ - >null! : null - } - mRerturnTypeNested({ name: alias }: Named): NonNullable { -->mRerturnTypeNested : ({ name: alias }: Named) => NonNullable -+>mRerturnTypeNested : ({ name: alias }: Named) => string - >name : any - >alias : string - >alias : string -@@= skipped -9, +9 lines =@@ - >null! : null - } - mParameter({ name: alias }: Named, p: typeof alias) { -->mParameter : ({ name: alias }: Named, p: typeof alias) => any -+>mParameter : ({ name: alias }: Named, p: string) => any - >name : any - >alias : string - >p : string -@@= skipped -17, +17 lines =@@ - >alias : string - - let referencedInSignartureReturnTypeFnType: ({ name: alias }: Named) => typeof alias; -->referencedInSignartureReturnTypeFnType : ({ name: alias }: Named) => typeof alias -+>referencedInSignartureReturnTypeFnType : ({ name: alias }: Named) => string - >name : any - >alias : string - >alias : string - - let referencedInSignartureParamTypeFnType: ({ name: alias }: Named, p: typeof alias) => void; -->referencedInSignartureParamTypeFnType : ({ name: alias }: Named, p: typeof alias) => void -+>referencedInSignartureParamTypeFnType : ({ name: alias }: Named, p: string) => void - >name : any - >alias : string - >p : string -@@= skipped -18, +18 lines =@@ - >alias : string - - let referencedInSignartureReturnTypeCtorType: new ({ name: alias }: Named) => typeof alias; -->referencedInSignartureReturnTypeCtorType : new ({ name: alias }: Named) => typeof alias -+>referencedInSignartureReturnTypeCtorType : new ({ name: alias }: Named) => string - >name : any - >alias : string - >alias : string - - let referencedInSignartureParamTypeCtorType: new ({ name: alias }: Named, p: typeof alias) => void; -->referencedInSignartureParamTypeCtorType : new ({ name: alias }: Named, p: typeof alias) => void -+>referencedInSignartureParamTypeCtorType : new ({ name: alias }: Named, p: string) => void - >name : any - >alias : string - >p : string -@@= skipped -57, +57 lines =@@ - >alias : string - - set x({ name: alias }: Named & { o: typeof alias }) -->x : Named & { o: typeof alias; } -+>x : Named & { o: string; } - >name : any - >alias : string - >o : string - >alias : string - - mReturnType({ name: alias }: Named): typeof alias; -->mReturnType : ({ name: alias }: Named) => typeof alias -+>mReturnType : ({ name: alias }: Named) => string - >name : any - >alias : string - >alias : string - - mRerturnTypeNested({ name: alias }: Named): NonNullable; -->mRerturnTypeNested : ({ name: alias }: Named) => NonNullable -+>mRerturnTypeNested : ({ name: alias }: Named) => string - >name : any - >alias : string - >alias : string - - mParameter({ name: alias }: Named, p: typeof alias); -->mParameter : ({ name: alias }: Named, p: typeof alias) => any -+>mParameter : ({ name: alias }: Named, p: string) => any - >name : any - >alias : string - >p : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=false).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=false).js index 49f72541c03..f9190ff7779 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=false).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=false).js @@ -34,49 +34,21 @@ export function fnWithPartialAnnotationOnDefaultparam(x: P = null! as P, b: numb type P = {} & { name: string; }; -export declare let vLet: { - name: string; -}; -export declare const vConst: { - name: string; -}; -export declare function fn(p?: { - name: string; -}): void; -export declare function fnWithRequiredDefaultParam(p: { - name: string; -}, req: number): void; +export declare let vLet: P; +export declare const vConst: P; +export declare function fn(p?: P): void; +export declare function fnWithRequiredDefaultParam(p: P, req: number): void; export declare class C { - ctorField: { - name: string; - }; - field: { - name: string; - }; - optField?: { - name: string; - }; - readonly roFiled: { - name: string; - }; - method(p?: { - name: string; - }): void; - methodWithRequiredDefault(p: { - name: string; - }, req: number): void; - constructor(ctorField?: { - name: string; - }); - get x(): { - name: string; - }; - set x(v: { - name: string; - }); + ctorField: P; + field: P; + optField?: P; + readonly roFiled: P; + method(p?: P): void; + methodWithRequiredDefault(p: P, req: number): void; + constructor(ctorField?: P); + get x(): P; + set x(v: P); } -declare const _default: { - name: string; -}; +declare const _default: P; export default _default; export declare function fnWithPartialAnnotationOnDefaultparam(x: P, b: number): void; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=false).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=false).js.diff deleted file mode 100644 index 769b8995e51..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=false).js.diff +++ /dev/null @@ -1,66 +0,0 @@ ---- old.declarationEmitCastReusesTypeNode1(strictnullchecks=false).js -+++ new.declarationEmitCastReusesTypeNode1(strictnullchecks=false).js -@@= skipped -33, +33 lines =@@ - type P = {} & { - name: string; - }; --export declare let vLet: P; --export declare const vConst: P; --export declare function fn(p?: P): void; --export declare function fnWithRequiredDefaultParam(p: P, req: number): void; -+export declare let vLet: { -+ name: string; -+}; -+export declare const vConst: { -+ name: string; -+}; -+export declare function fn(p?: { -+ name: string; -+}): void; -+export declare function fnWithRequiredDefaultParam(p: { -+ name: string; -+}, req: number): void; - export declare class C { -- ctorField: P; -- field: P; -- optField?: P; -- readonly roFiled: P; -- method(p?: P): void; -- methodWithRequiredDefault(p: P, req: number): void; -- constructor(ctorField?: P); -- get x(): P; -- set x(v: P); -+ ctorField: { -+ name: string; -+ }; -+ field: { -+ name: string; -+ }; -+ optField?: { -+ name: string; -+ }; -+ readonly roFiled: { -+ name: string; -+ }; -+ method(p?: { -+ name: string; -+ }): void; -+ methodWithRequiredDefault(p: { -+ name: string; -+ }, req: number): void; -+ constructor(ctorField?: { -+ name: string; -+ }); -+ get x(): { -+ name: string; -+ }; -+ set x(v: { -+ name: string; -+ }); - } --declare const _default: P; -+declare const _default: { -+ name: string; -+}; - export default _default; - export declare function fnWithPartialAnnotationOnDefaultparam(x: P, b: number): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=true).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=true).js index 32e96f18cb0..f7332974fba 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=true).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=true).js @@ -31,51 +31,24 @@ export function fnWithPartialAnnotationOnDefaultparam(x: P = null! as P, b: numb //// [declarationEmitCastReusesTypeNode1.d.ts] -export declare let vLet: { +type P = {} & { name: string; }; -export declare const vConst: { - name: string; -}; -export declare function fn(p?: { - name: string; -}): void; -export declare function fnWithRequiredDefaultParam(p: { - name: string; -} | undefined, req: number): void; +export declare let vLet: P; +export declare const vConst: P; +export declare function fn(p?: P): void; +export declare function fnWithRequiredDefaultParam(p: P | undefined, req: number): void; export declare class C { - ctorField: { - name: string; - }; - field: { - name: string; - }; - optField?: { - name: string; - } | undefined; - readonly roFiled: { - name: string; - }; - method(p?: { - name: string; - }): void; - methodWithRequiredDefault(p: { - name: string; - } | undefined, req: number): void; - constructor(ctorField?: { - name: string; - }); - get x(): { - name: string; - }; - set x(v: { - name: string; - }); + ctorField: P; + field: P; + optField?: P; + readonly roFiled: P; + method(p?: P): void; + methodWithRequiredDefault(p: P | undefined, req: number): void; + constructor(ctorField?: P); + get x(): P; + set x(v: P); } -declare const _default: { - name: string; -}; +declare const _default: P; export default _default; -export declare function fnWithPartialAnnotationOnDefaultparam(x: { - name: string; -} | undefined, b: number): void; +export declare function fnWithPartialAnnotationOnDefaultparam(x: P | undefined, b: number): void; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=true).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=true).js.diff deleted file mode 100644 index 2772c7e04b5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode1(strictnullchecks=true).js.diff +++ /dev/null @@ -1,72 +0,0 @@ ---- old.declarationEmitCastReusesTypeNode1(strictnullchecks=true).js -+++ new.declarationEmitCastReusesTypeNode1(strictnullchecks=true).js -@@= skipped -30, +30 lines =@@ - - - //// [declarationEmitCastReusesTypeNode1.d.ts] --type P = {} & { -- name: string; --}; --export declare let vLet: P; --export declare const vConst: P; --export declare function fn(p?: P): void; --export declare function fnWithRequiredDefaultParam(p: P | undefined, req: number): void; -+export declare let vLet: { -+ name: string; -+}; -+export declare const vConst: { -+ name: string; -+}; -+export declare function fn(p?: { -+ name: string; -+}): void; -+export declare function fnWithRequiredDefaultParam(p: { -+ name: string; -+} | undefined, req: number): void; - export declare class C { -- ctorField: P; -- field: P; -- optField?: P; -- readonly roFiled: P; -- method(p?: P): void; -- methodWithRequiredDefault(p: P | undefined, req: number): void; -- constructor(ctorField?: P); -- get x(): P; -- set x(v: P); -+ ctorField: { -+ name: string; -+ }; -+ field: { -+ name: string; -+ }; -+ optField?: { -+ name: string; -+ } | undefined; -+ readonly roFiled: { -+ name: string; -+ }; -+ method(p?: { -+ name: string; -+ }): void; -+ methodWithRequiredDefault(p: { -+ name: string; -+ } | undefined, req: number): void; -+ constructor(ctorField?: { -+ name: string; -+ }); -+ get x(): { -+ name: string; -+ }; -+ set x(v: { -+ name: string; -+ }); - } --declare const _default: P; -+declare const _default: { -+ name: string; -+}; - export default _default; --export declare function fnWithPartialAnnotationOnDefaultparam(x: P | undefined, b: number): void; -+export declare function fnWithPartialAnnotationOnDefaultparam(x: { -+ name: string; -+} | undefined, b: number): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=false).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=false).js index 14a100ffcc6..068f1c7f0c0 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=false).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=false).js @@ -29,48 +29,48 @@ export function fnWithPartialAnnotationOnDefaultparam(x: {} & { name: string } = //// [declarationEmitCastReusesTypeNode2.d.ts] -export declare let vLet: { +export declare let vLet: {} & { name: string; }; -export declare const vConst: { +export declare const vConst: {} & { name: string; }; -export declare function fn(p?: { +export declare function fn(p?: {} & { name: string; }): void; -export declare function fnWithRequiredDefaultParam(p: { +export declare function fnWithRequiredDefaultParam(p: {} & { name: string; }, req: number): void; export declare class C { - ctorField: { + ctorField: {} & { name: string; }; - field: { + field: {} & { name: string; }; - optField?: { + optField?: {} & { name: string; }; - readonly roFiled: { + readonly roFiled: {} & { name: string; }; - method(p?: { + method(p?: {} & { name: string; }): void; - methodWithRequiredDefault(p: { + methodWithRequiredDefault(p: {} & { name: string; }, req: number): void; - constructor(ctorField?: { + constructor(ctorField?: {} & { name: string; }); - get x(): { + get x(): {} & { name: string; }; - set x(v: { + set x(v: {} & { name: string; }); } -declare const _default: { +declare const _default: {} & { name: string; }; export default _default; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=false).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=false).js.diff deleted file mode 100644 index 46243d6de30..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=false).js.diff +++ /dev/null @@ -1,77 +0,0 @@ ---- old.declarationEmitCastReusesTypeNode2(strictnullchecks=false).js -+++ new.declarationEmitCastReusesTypeNode2(strictnullchecks=false).js -@@= skipped -28, +28 lines =@@ - - - //// [declarationEmitCastReusesTypeNode2.d.ts] --export declare let vLet: {} & { -- name: string; --}; --export declare const vConst: {} & { -- name: string; --}; --export declare function fn(p?: {} & { -+export declare let vLet: { -+ name: string; -+}; -+export declare const vConst: { -+ name: string; -+}; -+export declare function fn(p?: { - name: string; - }): void; --export declare function fnWithRequiredDefaultParam(p: {} & { -+export declare function fnWithRequiredDefaultParam(p: { - name: string; - }, req: number): void; - export declare class C { -- ctorField: {} & { -- name: string; -- }; -- field: {} & { -- name: string; -- }; -- optField?: {} & { -- name: string; -- }; -- readonly roFiled: {} & { -- name: string; -- }; -- method(p?: {} & { -+ ctorField: { -+ name: string; -+ }; -+ field: { -+ name: string; -+ }; -+ optField?: { -+ name: string; -+ }; -+ readonly roFiled: { -+ name: string; -+ }; -+ method(p?: { - name: string; - }): void; -- methodWithRequiredDefault(p: {} & { -+ methodWithRequiredDefault(p: { - name: string; - }, req: number): void; -- constructor(ctorField?: {} & { -+ constructor(ctorField?: { - name: string; - }); -- get x(): {} & { -+ get x(): { - name: string; - }; -- set x(v: {} & { -+ set x(v: { - name: string; - }); - } --declare const _default: {} & { -+declare const _default: { - name: string; - }; - export default _default; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=true).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=true).js index 10b54412d42..9161a318be4 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=true).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=true).js @@ -29,51 +29,51 @@ export function fnWithPartialAnnotationOnDefaultparam(x: {} & { name: string } = //// [declarationEmitCastReusesTypeNode2.d.ts] -export declare let vLet: { +export declare let vLet: {} & { name: string; }; -export declare const vConst: { +export declare const vConst: {} & { name: string; }; -export declare function fn(p?: { +export declare function fn(p?: {} & { name: string; }): void; -export declare function fnWithRequiredDefaultParam(p: { +export declare function fnWithRequiredDefaultParam(p: ({} & { name: string; -} | undefined, req: number): void; +}) | undefined, req: number): void; export declare class C { - ctorField: { + ctorField: {} & { name: string; }; - field: { + field: {} & { name: string; }; - optField?: { + optField?: {} & { name: string; - } | undefined; - readonly roFiled: { + }; + readonly roFiled: {} & { name: string; }; - method(p?: { + method(p?: {} & { name: string; }): void; - methodWithRequiredDefault(p: { + methodWithRequiredDefault(p: ({} & { name: string; - } | undefined, req: number): void; - constructor(ctorField?: { + }) | undefined, req: number): void; + constructor(ctorField?: {} & { name: string; }); - get x(): { + get x(): {} & { name: string; }; - set x(v: { + set x(v: {} & { name: string; }); } -declare const _default: { +declare const _default: {} & { name: string; }; export default _default; -export declare function fnWithPartialAnnotationOnDefaultparam(x: { +export declare function fnWithPartialAnnotationOnDefaultparam(x: ({} & { name: string; -} | undefined, b: number): void; +}) | undefined, b: number): void; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=true).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=true).js.diff deleted file mode 100644 index 63b45e739f6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode2(strictnullchecks=true).js.diff +++ /dev/null @@ -1,84 +0,0 @@ ---- old.declarationEmitCastReusesTypeNode2(strictnullchecks=true).js -+++ new.declarationEmitCastReusesTypeNode2(strictnullchecks=true).js -@@= skipped -28, +28 lines =@@ - - - //// [declarationEmitCastReusesTypeNode2.d.ts] --export declare let vLet: {} & { -- name: string; --}; --export declare const vConst: {} & { -- name: string; --}; --export declare function fn(p?: {} & { -+export declare let vLet: { -+ name: string; -+}; -+export declare const vConst: { -+ name: string; -+}; -+export declare function fn(p?: { - name: string; - }): void; --export declare function fnWithRequiredDefaultParam(p: ({} & { -+export declare function fnWithRequiredDefaultParam(p: { - name: string; --}) | undefined, req: number): void; -+} | undefined, req: number): void; - export declare class C { -- ctorField: {} & { -- name: string; -- }; -- field: {} & { -- name: string; -- }; -- optField?: {} & { -- name: string; -- }; -- readonly roFiled: {} & { -- name: string; -- }; -- method(p?: {} & { -+ ctorField: { -+ name: string; -+ }; -+ field: { -+ name: string; -+ }; -+ optField?: { -+ name: string; -+ } | undefined; -+ readonly roFiled: { -+ name: string; -+ }; -+ method(p?: { - name: string; - }): void; -- methodWithRequiredDefault(p: ({} & { -+ methodWithRequiredDefault(p: { - name: string; -- }) | undefined, req: number): void; -- constructor(ctorField?: {} & { -+ } | undefined, req: number): void; -+ constructor(ctorField?: { - name: string; - }); -- get x(): {} & { -+ get x(): { - name: string; - }; -- set x(v: {} & { -+ set x(v: { - name: string; - }); - } --declare const _default: {} & { -+declare const _default: { - name: string; - }; - export default _default; --export declare function fnWithPartialAnnotationOnDefaultparam(x: ({} & { -+export declare function fnWithPartialAnnotationOnDefaultparam(x: { - name: string; --}) | undefined, b: number): void; -+} | undefined, b: number): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=false).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=false).js index 0646bb0b3bd..d380f7122e6 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=false).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=false).js @@ -34,49 +34,21 @@ export function fnWithPartialAnnotationOnDefaultparam(x: P =

null!, b: number type P = {} & { name: string; }; -export declare let vLet: { - name: string; -}; -export declare const vConst: { - name: string; -}; -export declare function fn(p?: { - name: string; -}): void; -export declare function fnWithRequiredDefaultParam(p: { - name: string; -}, req: number): void; +export declare let vLet: P; +export declare const vConst: P; +export declare function fn(p?: P): void; +export declare function fnWithRequiredDefaultParam(p: P, req: number): void; export declare class C { - ctorField: { - name: string; - }; - field: { - name: string; - }; - optField?: { - name: string; - }; - readonly roFiled: { - name: string; - }; - method(p?: { - name: string; - }): void; - methodWithRequiredDefault(p: { - name: string; - }, req: number): void; - constructor(ctorField?: { - name: string; - }); - get x(): { - name: string; - }; - set x(v: { - name: string; - }); + ctorField: P; + field: P; + optField?: P; + readonly roFiled: P; + method(p?: P): void; + methodWithRequiredDefault(p: P, req: number): void; + constructor(ctorField?: P); + get x(): P; + set x(v: P); } -declare const _default: { - name: string; -}; +declare const _default: P; export default _default; export declare function fnWithPartialAnnotationOnDefaultparam(x: P, b: number): void; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=false).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=false).js.diff deleted file mode 100644 index 6d9d8729a79..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=false).js.diff +++ /dev/null @@ -1,66 +0,0 @@ ---- old.declarationEmitCastReusesTypeNode3(strictnullchecks=false).js -+++ new.declarationEmitCastReusesTypeNode3(strictnullchecks=false).js -@@= skipped -33, +33 lines =@@ - type P = {} & { - name: string; - }; --export declare let vLet: P; --export declare const vConst: P; --export declare function fn(p?: P): void; --export declare function fnWithRequiredDefaultParam(p: P, req: number): void; -+export declare let vLet: { -+ name: string; -+}; -+export declare const vConst: { -+ name: string; -+}; -+export declare function fn(p?: { -+ name: string; -+}): void; -+export declare function fnWithRequiredDefaultParam(p: { -+ name: string; -+}, req: number): void; - export declare class C { -- ctorField: P; -- field: P; -- optField?: P; -- readonly roFiled: P; -- method(p?: P): void; -- methodWithRequiredDefault(p: P, req: number): void; -- constructor(ctorField?: P); -- get x(): P; -- set x(v: P); -+ ctorField: { -+ name: string; -+ }; -+ field: { -+ name: string; -+ }; -+ optField?: { -+ name: string; -+ }; -+ readonly roFiled: { -+ name: string; -+ }; -+ method(p?: { -+ name: string; -+ }): void; -+ methodWithRequiredDefault(p: { -+ name: string; -+ }, req: number): void; -+ constructor(ctorField?: { -+ name: string; -+ }); -+ get x(): { -+ name: string; -+ }; -+ set x(v: { -+ name: string; -+ }); - } --declare const _default: P; -+declare const _default: { -+ name: string; -+}; - export default _default; - export declare function fnWithPartialAnnotationOnDefaultparam(x: P, b: number): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=true).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=true).js index a40d5cf44dc..994b37b966f 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=true).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=true).js @@ -31,51 +31,24 @@ export function fnWithPartialAnnotationOnDefaultparam(x: P =

null!, b: number //// [declarationEmitCastReusesTypeNode3.d.ts] -export declare let vLet: { +type P = {} & { name: string; }; -export declare const vConst: { - name: string; -}; -export declare function fn(p?: { - name: string; -}): void; -export declare function fnWithRequiredDefaultParam(p: { - name: string; -} | undefined, req: number): void; +export declare let vLet: P; +export declare const vConst: P; +export declare function fn(p?: P): void; +export declare function fnWithRequiredDefaultParam(p: P | undefined, req: number): void; export declare class C { - ctorField: { - name: string; - }; - field: { - name: string; - }; - optField?: { - name: string; - } | undefined; - readonly roFiled: { - name: string; - }; - method(p?: { - name: string; - }): void; - methodWithRequiredDefault(p: { - name: string; - } | undefined, req: number): void; - constructor(ctorField?: { - name: string; - }); - get x(): { - name: string; - }; - set x(v: { - name: string; - }); + ctorField: P; + field: P; + optField?: P; + readonly roFiled: P; + method(p?: P): void; + methodWithRequiredDefault(p: P | undefined, req: number): void; + constructor(ctorField?: P); + get x(): P; + set x(v: P); } -declare const _default: { - name: string; -}; +declare const _default: P; export default _default; -export declare function fnWithPartialAnnotationOnDefaultparam(x: { - name: string; -} | undefined, b: number): void; +export declare function fnWithPartialAnnotationOnDefaultparam(x: P | undefined, b: number): void; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=true).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=true).js.diff deleted file mode 100644 index 98135ca3d30..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode3(strictnullchecks=true).js.diff +++ /dev/null @@ -1,72 +0,0 @@ ---- old.declarationEmitCastReusesTypeNode3(strictnullchecks=true).js -+++ new.declarationEmitCastReusesTypeNode3(strictnullchecks=true).js -@@= skipped -30, +30 lines =@@ - - - //// [declarationEmitCastReusesTypeNode3.d.ts] --type P = {} & { -- name: string; --}; --export declare let vLet: P; --export declare const vConst: P; --export declare function fn(p?: P): void; --export declare function fnWithRequiredDefaultParam(p: P | undefined, req: number): void; -+export declare let vLet: { -+ name: string; -+}; -+export declare const vConst: { -+ name: string; -+}; -+export declare function fn(p?: { -+ name: string; -+}): void; -+export declare function fnWithRequiredDefaultParam(p: { -+ name: string; -+} | undefined, req: number): void; - export declare class C { -- ctorField: P; -- field: P; -- optField?: P; -- readonly roFiled: P; -- method(p?: P): void; -- methodWithRequiredDefault(p: P | undefined, req: number): void; -- constructor(ctorField?: P); -- get x(): P; -- set x(v: P); -+ ctorField: { -+ name: string; -+ }; -+ field: { -+ name: string; -+ }; -+ optField?: { -+ name: string; -+ } | undefined; -+ readonly roFiled: { -+ name: string; -+ }; -+ method(p?: { -+ name: string; -+ }): void; -+ methodWithRequiredDefault(p: { -+ name: string; -+ } | undefined, req: number): void; -+ constructor(ctorField?: { -+ name: string; -+ }); -+ get x(): { -+ name: string; -+ }; -+ set x(v: { -+ name: string; -+ }); - } --declare const _default: P; -+declare const _default: { -+ name: string; -+}; - export default _default; --export declare function fnWithPartialAnnotationOnDefaultparam(x: P | undefined, b: number): void; -+export declare function fnWithPartialAnnotationOnDefaultparam(x: { -+ name: string; -+} | undefined, b: number): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=false).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=false).js index 66ac428f742..657b0542143 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=false).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=false).js @@ -48,49 +48,23 @@ export function fnWithPartialAnnotationOnDefaultparam(x = /** @type {P} */(somet export type P = {} & { name?: string; }; -export declare let vLet: { - name?: string; -}; -export declare const vConst: { - name?: string; -}; -export declare function fn(p?: { - name?: string; -}): void; +export declare let vLet: P; +export declare const vConst: P; +export declare function fn(p?: P): void; /** @param {number} req */ -export declare function fnWithRequiredDefaultParam(p: { - name?: string; -}, req: number): void; +export declare function fnWithRequiredDefaultParam(p: P, req: number): void; export declare class C { - field: { - name?: string; - }; - /** @optional */ optField: { - name?: string; - }; - /** @readonly */ readonly roFiled: { - name?: string; - }; - method(p?: { - name?: string; - }): void; + field: P; + /** @optional */ optField: P; + /** @readonly */ readonly roFiled: P; + method(p?: P): void; /** @param {number} req */ - methodWithRequiredDefault(p: { - name?: string; - }, req: number): void; - constructor(ctorField?: { - name?: string; - }); - get x(): { - name?: string; - }; - set x(v: { - name?: string; - }); + methodWithRequiredDefault(p: P, req: number): void; + constructor(ctorField?: P); + get x(): P; + set x(v: P); } -declare const _default: { - name?: string; -}; +declare const _default: P; export default /** @type {P} */ _default; /** * diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=false).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=false).js.diff index 66f8165e978..38d278df28f 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=false).js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=false).js.diff @@ -11,73 +11,43 @@ +export type P = {} & { + name?: string; +}; -+export declare let vLet: { -+ name?: string; -+}; -+export declare const vConst: { -+ name?: string; -+}; -+export declare function fn(p?: { -+ name?: string; -+}): void; ++export declare let vLet: P; ++export declare const vConst: P; ++export declare function fn(p?: P): void; /** @param {number} req */ -export function fnWithRequiredDefaultParam(p: P, req: number): void; -+export declare function fnWithRequiredDefaultParam(p: { -+ name?: string; -+}, req: number): void; -+export declare class C { -+ field: { -+ name?: string; -+ }; -+ /** @optional */ optField: { -+ name?: string; -+ }; -+ /** @readonly */ readonly roFiled: { -+ name?: string; -+ }; -+ method(p?: { -+ name?: string; -+ }): void; -+ /** @param {number} req */ -+ methodWithRequiredDefault(p: { -+ name?: string; -+ }, req: number): void; -+ constructor(ctorField?: { -+ name?: string; -+ }); -+ get x(): { -+ name?: string; -+ }; -+ set x(v: { -+ name?: string; -+ }); -+} -+declare const _default: { -+ name?: string; -+}; -+export default /** @type {P} */ _default; - /** - * - * @param {P} x - * @param {number} b - */ +-/** +- * +- * @param {P} x +- * @param {number} b +- */ -export function fnWithPartialAnnotationOnDefaultparam(x: P, b: number): void; -export let vLet: P; -export const vConst: P; -export class C { - constructor(ctorField?: P); -- field: P; -- /** @optional */ optField: P; -- /** @readonly */ readonly roFiled: P; -- method(p?: P): void; -- /** @param {number} req */ -- methodWithRequiredDefault(p: P, req: number): void; ++export declare function fnWithRequiredDefaultParam(p: P, req: number): void; ++export declare class C { + field: P; + /** @optional */ optField: P; + /** @readonly */ readonly roFiled: P; + method(p?: P): void; + /** @param {number} req */ + methodWithRequiredDefault(p: P, req: number): void; - set x(v: P); -- get x(): P; --} --declare const _default: P; ++ constructor(ctorField?: P); + get x(): P; ++ set x(v: P); + } + declare const _default: P; -export default _default; -export type P = {} & { - name?: string; -}; ++export default /** @type {P} */ _default; ++/** ++ * ++ * @param {P} x ++ * @param {number} b ++ */ +export declare function fnWithPartialAnnotationOnDefaultparam(x: P, b: number): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=true).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=true).js index f2e51184e50..b389ea8b3a9 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=true).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=true).js @@ -48,55 +48,27 @@ export function fnWithPartialAnnotationOnDefaultparam(x = /** @type {P} */(somet export type P = {} & { name?: string; }; -export declare let vLet: { - name?: string | undefined; -}; -export declare const vConst: { - name?: string | undefined; -}; -export declare function fn(p?: { - name?: string | undefined; -}): void; +export declare let vLet: P; +export declare const vConst: P; +export declare function fn(p?: P): void; /** @param {number} req */ -export declare function fnWithRequiredDefaultParam(p: { - name?: string | undefined; -} | undefined, req: number): void; +export declare function fnWithRequiredDefaultParam(p: P | undefined, req: number): void; export declare class C { - field: { - name?: string | undefined; - }; - /** @optional */ optField: { - name?: string | undefined; - }; - /** @readonly */ readonly roFiled: { - name?: string | undefined; - }; - method(p?: { - name?: string | undefined; - }): void; + field: P; + /** @optional */ optField: P; + /** @readonly */ readonly roFiled: P; + method(p?: P): void; /** @param {number} req */ - methodWithRequiredDefault(p: { - name?: string | undefined; - } | undefined, req: number): void; - constructor(ctorField?: { - name?: string | undefined; - }); - get x(): { - name?: string | undefined; - }; - set x(v: { - name?: string | undefined; - }); + methodWithRequiredDefault(p: P | undefined, req: number): void; + constructor(ctorField?: P); + get x(): P; + set x(v: P); } -declare const _default: { - name?: string | undefined; -}; +declare const _default: P; export default /** @type {P} */ _default; /** * * @param {P} x * @param {number} b */ -export declare function fnWithPartialAnnotationOnDefaultparam(x: { - name?: string | undefined; -} | undefined, b: number): void; +export declare function fnWithPartialAnnotationOnDefaultparam(x: P | undefined, b: number): void; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=true).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=true).js.diff index db186c93e4e..9349858a3a8 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=true).js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode4(strictnullchecks=true).js.diff @@ -11,75 +11,43 @@ +export type P = {} & { + name?: string; +}; -+export declare let vLet: { -+ name?: string | undefined; -+}; -+export declare const vConst: { -+ name?: string | undefined; -+}; -+export declare function fn(p?: { -+ name?: string | undefined; -+}): void; ++export declare let vLet: P; ++export declare const vConst: P; ++export declare function fn(p?: P): void; /** @param {number} req */ -export function fnWithRequiredDefaultParam(p: P | undefined, req: number): void; -+export declare function fnWithRequiredDefaultParam(p: { -+ name?: string | undefined; -+} | undefined, req: number): void; -+export declare class C { -+ field: { -+ name?: string | undefined; -+ }; -+ /** @optional */ optField: { -+ name?: string | undefined; -+ }; -+ /** @readonly */ readonly roFiled: { -+ name?: string | undefined; -+ }; -+ method(p?: { -+ name?: string | undefined; -+ }): void; -+ /** @param {number} req */ -+ methodWithRequiredDefault(p: { -+ name?: string | undefined; -+ } | undefined, req: number): void; -+ constructor(ctorField?: { -+ name?: string | undefined; -+ }); -+ get x(): { -+ name?: string | undefined; -+ }; -+ set x(v: { -+ name?: string | undefined; -+ }); -+} -+declare const _default: { -+ name?: string | undefined; -+}; -+export default /** @type {P} */ _default; - /** - * - * @param {P} x - * @param {number} b - */ +-/** +- * +- * @param {P} x +- * @param {number} b +- */ -export function fnWithPartialAnnotationOnDefaultparam(x: P | undefined, b: number): void; -export let vLet: P; -export const vConst: P; -export class C { - constructor(ctorField?: P); -- field: P; -- /** @optional */ optField: P; -- /** @readonly */ readonly roFiled: P; -- method(p?: P): void; -- /** @param {number} req */ -- methodWithRequiredDefault(p: P | undefined, req: number): void; ++export declare function fnWithRequiredDefaultParam(p: P | undefined, req: number): void; ++export declare class C { + field: P; + /** @optional */ optField: P; + /** @readonly */ readonly roFiled: P; + method(p?: P): void; + /** @param {number} req */ + methodWithRequiredDefault(p: P | undefined, req: number): void; - set x(v: P); -- get x(): P; --} --declare const _default: P; ++ constructor(ctorField?: P); + get x(): P; ++ set x(v: P); + } + declare const _default: P; -export default _default; -export type P = {} & { - name?: string; -}; -+export declare function fnWithPartialAnnotationOnDefaultparam(x: { -+ name?: string | undefined; -+} | undefined, b: number): void; \ No newline at end of file ++export default /** @type {P} */ _default; ++/** ++ * ++ * @param {P} x ++ * @param {number} b ++ */ ++export declare function fnWithPartialAnnotationOnDefaultparam(x: P | undefined, b: number): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=false).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=false).js index 12ad63498a8..b3b52b89e08 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=false).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=false).js @@ -28,23 +28,23 @@ export class C { //// [declarationEmitCastReusesTypeNode5.d.ts] -export declare const vNumberLiteral: 1; -export declare const vStringLiteral: "1"; -export declare const vLiteral: "1"; +export declare const vNumberLiteral: 1 | 1; +export declare const vStringLiteral: "1" | "1"; +export declare const vLiteral: "1" | "1"; type R = { foo: string; }; export declare class C { - tsResolve?: R; - tsResolve2?: string | R; - reuseType?: string | ((p: R) => void); - reuseType2?: string | (new (p: R) => R); - reuseType3?: any; - reuseType4?: [R, R, R]; - reuseType5?: R[]; - reuseType6?: "2" | 1 | 1n; - reuseType7?: "A"; - reuseType8?: `${string}-ok`; - reuseType9?: this; + tsResolve?: R | R; + tsResolve2?: R | R | string; + reuseType?: ((p: R) => void) | string | string; + reuseType2?: (new (p: R) => R) | string | string; + reuseType3?: string | number | bigint | symbol | unknown | any | never | symbol; + reuseType4?: [R, R, R] | [R, R, R]; + reuseType5?: R[] | R[]; + reuseType6?: 1 | "2" | 1n | 1n; + reuseType7?: `A` | `A`; + reuseType8?: `${string}-ok` | `${string}-ok`; + reuseType9?: this | this; } export {}; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=false).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=false).js.diff deleted file mode 100644 index 940a074d1cd..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=false).js.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.declarationEmitCastReusesTypeNode5(strictnullchecks=false).js -+++ new.declarationEmitCastReusesTypeNode5(strictnullchecks=false).js -@@= skipped -27, +27 lines =@@ - - - //// [declarationEmitCastReusesTypeNode5.d.ts] --export declare const vNumberLiteral: 1 | 1; --export declare const vStringLiteral: "1" | "1"; --export declare const vLiteral: "1" | "1"; -+export declare const vNumberLiteral: 1; -+export declare const vStringLiteral: "1"; -+export declare const vLiteral: "1"; - type R = { - foo: string; - }; - export declare class C { -- tsResolve?: R | R; -- tsResolve2?: R | R | string; -- reuseType?: ((p: R) => void) | string | string; -- reuseType2?: (new (p: R) => R) | string | string; -- reuseType3?: string | number | bigint | symbol | unknown | any | never | symbol; -- reuseType4?: [R, R, R] | [R, R, R]; -- reuseType5?: R[] | R[]; -- reuseType6?: 1 | "2" | 1n | 1n; -- reuseType7?: `A` | `A`; -- reuseType8?: `${string}-ok` | `${string}-ok`; -- reuseType9?: this | this; -+ tsResolve?: R; -+ tsResolve2?: string | R; -+ reuseType?: string | ((p: R) => void); -+ reuseType2?: string | (new (p: R) => R); -+ reuseType3?: any; -+ reuseType4?: [R, R, R]; -+ reuseType5?: R[]; -+ reuseType6?: "2" | 1 | 1n; -+ reuseType7?: "A"; -+ reuseType8?: `${string}-ok`; -+ reuseType9?: this; - } - export {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=true).js b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=true).js index a7d89578855..b3b52b89e08 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=true).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=true).js @@ -28,23 +28,23 @@ export class C { //// [declarationEmitCastReusesTypeNode5.d.ts] -export declare const vNumberLiteral: 1; -export declare const vStringLiteral: "1"; -export declare const vLiteral: "1"; +export declare const vNumberLiteral: 1 | 1; +export declare const vStringLiteral: "1" | "1"; +export declare const vLiteral: "1" | "1"; type R = { foo: string; }; export declare class C { - tsResolve?: R | undefined; - tsResolve2?: string | R | undefined; - reuseType?: string | ((p: R) => void) | undefined; - reuseType2?: string | (new (p: R) => R) | undefined; - reuseType3?: any; - reuseType4?: [R, R, R] | undefined; - reuseType5?: R[] | undefined; - reuseType6?: "2" | 1 | 1n | undefined; - reuseType7?: "A" | undefined; - reuseType8?: `${string}-ok` | undefined; - reuseType9?: this | undefined; + tsResolve?: R | R; + tsResolve2?: R | R | string; + reuseType?: ((p: R) => void) | string | string; + reuseType2?: (new (p: R) => R) | string | string; + reuseType3?: string | number | bigint | symbol | unknown | any | never | symbol; + reuseType4?: [R, R, R] | [R, R, R]; + reuseType5?: R[] | R[]; + reuseType6?: 1 | "2" | 1n | 1n; + reuseType7?: `A` | `A`; + reuseType8?: `${string}-ok` | `${string}-ok`; + reuseType9?: this | this; } export {}; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=true).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=true).js.diff deleted file mode 100644 index a2b19bdc1f0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitCastReusesTypeNode5(strictnullchecks=true).js.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.declarationEmitCastReusesTypeNode5(strictnullchecks=true).js -+++ new.declarationEmitCastReusesTypeNode5(strictnullchecks=true).js -@@= skipped -27, +27 lines =@@ - - - //// [declarationEmitCastReusesTypeNode5.d.ts] --export declare const vNumberLiteral: 1 | 1; --export declare const vStringLiteral: "1" | "1"; --export declare const vLiteral: "1" | "1"; -+export declare const vNumberLiteral: 1; -+export declare const vStringLiteral: "1"; -+export declare const vLiteral: "1"; - type R = { - foo: string; - }; - export declare class C { -- tsResolve?: R | R; -- tsResolve2?: R | R | string; -- reuseType?: ((p: R) => void) | string | string; -- reuseType2?: (new (p: R) => R) | string | string; -- reuseType3?: string | number | bigint | symbol | unknown | any | never | symbol; -- reuseType4?: [R, R, R] | [R, R, R]; -- reuseType5?: R[] | R[]; -- reuseType6?: 1 | "2" | 1n | 1n; -- reuseType7?: `A` | `A`; -- reuseType8?: `${string}-ok` | `${string}-ok`; -- reuseType9?: this | this; -+ tsResolve?: R | undefined; -+ tsResolve2?: string | R | undefined; -+ reuseType?: string | ((p: R) => void) | undefined; -+ reuseType2?: string | (new (p: R) => R) | undefined; -+ reuseType3?: any; -+ reuseType4?: [R, R, R] | undefined; -+ reuseType5?: R[] | undefined; -+ reuseType6?: "2" | 1 | 1n | undefined; -+ reuseType7?: "A" | undefined; -+ reuseType8?: `${string}-ok` | undefined; -+ reuseType9?: this | undefined; - } - export {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitClassMemberWithComputedPropertyName.js b/testdata/baselines/reference/submodule/compiler/declarationEmitClassMemberWithComputedPropertyName.js index e8afbcac41d..fd3f611ab1a 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitClassMemberWithComputedPropertyName.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitClassMemberWithComputedPropertyName.js @@ -58,9 +58,9 @@ export const t12 = new Foo().p1; //// [declarationEmitClassMemberWithComputedPropertyName.d.ts] declare const k1: unique symbol; -declare const k2: "foo"; +declare const k2: 'foo'; declare const k3: unique symbol; -declare const k4: "prop"; +declare const k4: 'prop'; declare class Foo { static [k1](): number; [k1](): string; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitClassMemberWithComputedPropertyName.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitClassMemberWithComputedPropertyName.js.diff new file mode 100644 index 00000000000..896e262d7c4 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitClassMemberWithComputedPropertyName.js.diff @@ -0,0 +1,14 @@ +--- old.declarationEmitClassMemberWithComputedPropertyName.js ++++ new.declarationEmitClassMemberWithComputedPropertyName.js +@@= skipped -57, +57 lines =@@ + + //// [declarationEmitClassMemberWithComputedPropertyName.d.ts] + declare const k1: unique symbol; +-declare const k2: "foo"; ++declare const k2: 'foo'; + declare const k3: unique symbol; +-declare const k4: "prop"; ++declare const k4: 'prop'; + declare class Foo { + static [k1](): number; + [k1](): string; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.js b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.js index fe96ad07390..511ff192635 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.js @@ -31,11 +31,11 @@ export interface IData { //// [declarationEmitComputedPropertyName1.d.ts] export declare const c: { data: { - a_b_c: string; - sss: string; + ["a_b_c"]: string; + ["sss"]: string; s_d: string; - queryData?: string | undefined; - "foo bar": string; + queryData?: string; + ["foo bar"]: string; }; a_b_c: string; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.js.diff deleted file mode 100644 index ce3ef3004a7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.js.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.declarationEmitComputedPropertyName1.js -+++ new.declarationEmitComputedPropertyName1.js -@@= skipped -30, +30 lines =@@ - //// [declarationEmitComputedPropertyName1.d.ts] - export declare const c: { - data: { -- ["a_b_c"]: string; -- ["sss"]: string; -+ a_b_c: string; -+ sss: string; - s_d: string; -- queryData?: string; -- ["foo bar"]: string; -+ queryData?: string | undefined; -+ "foo bar": string; - }; - a_b_c: string; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.types b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.types index ae98aee6839..a4e3edac9ba 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.types @@ -7,12 +7,12 @@ declare function create(): T; >create : () => T export const c = create<{ ->c : { data: { a_b_c: string; sss: string; s_d: string; queryData?: string | undefined; "foo bar": string; }; a_b_c: string; } ->create<{ data: { ["a_b_c"]: string; ["sss"]: string; s_d: string; queryData?: string; ["foo bar"]: string; }; ["a_b_c"]: string;}>() : { data: { a_b_c: string; sss: string; s_d: string; queryData?: string | undefined; "foo bar": string; }; a_b_c: string; } +>c : { data: { ["a_b_c"]: string; ["sss"]: string; s_d: string; queryData?: string; ["foo bar"]: string; }; a_b_c: string; } +>create<{ data: { ["a_b_c"]: string; ["sss"]: string; s_d: string; queryData?: string; ["foo bar"]: string; }; ["a_b_c"]: string;}>() : { data: { ["a_b_c"]: string; ["sss"]: string; s_d: string; queryData?: string; ["foo bar"]: string; }; a_b_c: string; } >create : () => T data: { ->data : { a_b_c: string; sss: string; s_d: string; queryData?: string | undefined; "foo bar": string; } +>data : { a_b_c: string; sss: string; s_d: string; queryData?: string; "foo bar": string; } ["a_b_c"]: string; >["a_b_c"] : string diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.types.diff deleted file mode 100644 index 32d3bfb52ad..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyName1.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.declarationEmitComputedPropertyName1.types -+++ new.declarationEmitComputedPropertyName1.types -@@= skipped -6, +6 lines =@@ - >create : () => T - - export const c = create<{ -->c : { data: { ["a_b_c"]: string; ["sss"]: string; s_d: string; queryData?: string; ["foo bar"]: string; }; a_b_c: string; } -->create<{ data: { ["a_b_c"]: string; ["sss"]: string; s_d: string; queryData?: string; ["foo bar"]: string; }; ["a_b_c"]: string;}>() : { data: { ["a_b_c"]: string; ["sss"]: string; s_d: string; queryData?: string; ["foo bar"]: string; }; a_b_c: string; } -+>c : { data: { a_b_c: string; sss: string; s_d: string; queryData?: string | undefined; "foo bar": string; }; a_b_c: string; } -+>create<{ data: { ["a_b_c"]: string; ["sss"]: string; s_d: string; queryData?: string; ["foo bar"]: string; }; ["a_b_c"]: string;}>() : { data: { a_b_c: string; sss: string; s_d: string; queryData?: string | undefined; "foo bar": string; }; a_b_c: string; } - >create : () => T - - data: { -->data : { a_b_c: string; sss: string; s_d: string; queryData?: string; "foo bar": string; } -+>data : { a_b_c: string; sss: string; s_d: string; queryData?: string | undefined; "foo bar": string; } - - ["a_b_c"]: string; - >["a_b_c"] : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.js b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.js index a1ed0dca99c..162a3c3064c 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.js @@ -30,5 +30,5 @@ export type Type = { export declare const foo: { x?: { a: 0; - } | undefined; + }; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.js.diff deleted file mode 100644 index 6ad4e11910d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.declarationEmitComputedPropertyNameEnum1.js -+++ new.declarationEmitComputedPropertyNameEnum1.js -@@= skipped -29, +29 lines =@@ - export declare const foo: { - x?: { - a: 0; -- }; -+ } | undefined; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.types b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.types index 0a996d80b70..95413a840bc 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.types @@ -26,8 +26,8 @@ import { type Type } from "./type"; >Type : any export const foo = { ...({} as Type) }; ->foo : { x?: { a: 0; } | undefined; } ->{ ...({} as Type) } : { x?: { a: 0; } | undefined; } +>foo : { x?: { a: 0; }; } +>{ ...({} as Type) } : { x?: { a: 0; }; } >({} as Type) : Type >{} as Type : Type >{} : {} diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.types.diff deleted file mode 100644 index e12a6c88d23..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum1.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitComputedPropertyNameEnum1.types -+++ new.declarationEmitComputedPropertyNameEnum1.types -@@= skipped -25, +25 lines =@@ - >Type : any - - export const foo = { ...({} as Type) }; -->foo : { x?: { a: 0; }; } -->{ ...({} as Type) } : { x?: { a: 0; }; } -+>foo : { x?: { a: 0; } | undefined; } -+>{ ...({} as Type) } : { x?: { a: 0; } | undefined; } - >({} as Type) : Type - >{} as Type : Type - >{} : {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.js b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.js index bd813d820f7..c77d5998d87 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.js @@ -18,6 +18,6 @@ export type Type = { //// [index.d.ts] export declare const foo: { x?: { - [x: number]: 0; - } | undefined; + [Enum.A]: 0; + }; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.js.diff deleted file mode 100644 index b4877dc7e67..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.declarationEmitComputedPropertyNameEnum2.js -+++ new.declarationEmitComputedPropertyNameEnum2.js -@@= skipped -17, +17 lines =@@ - //// [index.d.ts] - export declare const foo: { - x?: { -- [Enum.A]: 0; -- }; -+ [x: number]: 0; -+ } | undefined; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.types b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.types index 96742af3b60..048bf1e48c2 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.types @@ -14,8 +14,8 @@ import { type Type } from "./type"; >Type : any export const foo = { ...({} as Type) }; ->foo : { x?: { [x: number]: 0; } | undefined; } ->{ ...({} as Type) } : { x?: { [x: number]: 0; } | undefined; } +>foo : { x?: { [Enum.A]: 0; }; } +>{ ...({} as Type) } : { x?: { [Enum.A]: 0; }; } >({} as Type) : Type >{} as Type : Type >{} : {} diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.types.diff deleted file mode 100644 index fd7701f100b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum2.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitComputedPropertyNameEnum2.types -+++ new.declarationEmitComputedPropertyNameEnum2.types -@@= skipped -13, +13 lines =@@ - >Type : any - - export const foo = { ...({} as Type) }; -->foo : { x?: { [Enum.A]: 0; }; } -->{ ...({} as Type) } : { x?: { [Enum.A]: 0; }; } -+>foo : { x?: { [x: number]: 0; } | undefined; } -+>{ ...({} as Type) } : { x?: { [x: number]: 0; } | undefined; } - >({} as Type) : Type - >{} as Type : Type - >{} : {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.js b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.js index 9bddf3dab57..1e3f52a3eaf 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.js @@ -29,5 +29,5 @@ export type Type = { }; //// [index.d.ts] export declare const foo: { - x?: {} | undefined; + x?: {}; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.js.diff deleted file mode 100644 index f59ad3946af..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.declarationEmitComputedPropertyNameEnum3.js -+++ new.declarationEmitComputedPropertyNameEnum3.js -@@= skipped -28, +28 lines =@@ - }; - //// [index.d.ts] - export declare const foo: { -- x?: {}; -+ x?: {} | undefined; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.types b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.types index 929b13846a4..3a990e28878 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.types @@ -29,8 +29,8 @@ import { type Type } from "./type"; >Type : any export const foo = { ...({} as Type) }; ->foo : { x?: {} | undefined; } ->{ ...({} as Type) } : { x?: {} | undefined; } +>foo : { x?: {}; } +>{ ...({} as Type) } : { x?: {}; } >({} as Type) : Type >{} as Type : Type >{} : {} diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.types.diff deleted file mode 100644 index 0b43942a6ab..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameEnum3.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitComputedPropertyNameEnum3.types -+++ new.declarationEmitComputedPropertyNameEnum3.types -@@= skipped -28, +28 lines =@@ - >Type : any - - export const foo = { ...({} as Type) }; -->foo : { x?: {}; } -->{ ...({} as Type) } : { x?: {}; } -+>foo : { x?: {} | undefined; } -+>{ ...({} as Type) } : { x?: {} | undefined; } - >({} as Type) : Type - >{} as Type : Type - >{} : {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.js b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.js index 393ac40fa74..d0263e9a4d6 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.js @@ -27,5 +27,5 @@ export type Type = { export declare const foo: { x?: { [Foo.sym]: 0; - } | undefined; + }; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.js.diff index 6fc20465f3a..e37e1693f21 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.js.diff @@ -8,5 +8,5 @@ +export declare const foo: { + x?: { + [Foo.sym]: 0; -+ } | undefined; ++ }; +}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.types b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.types index 4b5a80ff0de..044e4d52f2d 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.types @@ -22,8 +22,8 @@ import { type Type } from "./type"; >Type : any export const foo = { ...({} as Type) }; ->foo : { x?: { [Foo.sym]: 0; } | undefined; } ->{ ...({} as Type) } : { x?: { [Foo.sym]: 0; } | undefined; } +>foo : { x?: { [Foo.sym]: 0; }; } +>{ ...({} as Type) } : { x?: { [Foo.sym]: 0; }; } >({} as Type) : Type >{} as Type : Type >{} : {} diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.types.diff deleted file mode 100644 index 8ec0f574251..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol1.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitComputedPropertyNameSymbol1.types -+++ new.declarationEmitComputedPropertyNameSymbol1.types -@@= skipped -21, +21 lines =@@ - >Type : any - - export const foo = { ...({} as Type) }; -->foo : { x?: { [Foo.sym]: 0; }; } -->{ ...({} as Type) } : { x?: { [Foo.sym]: 0; }; } -+>foo : { x?: { [Foo.sym]: 0; } | undefined; } -+>{ ...({} as Type) } : { x?: { [Foo.sym]: 0; } | undefined; } - >({} as Type) : Type - >{} as Type : Type - >{} : {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.js b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.js index 3cfef2947ce..cadd63557a7 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.js @@ -28,5 +28,5 @@ export {}; export declare const foo: { x?: { [Foo.sym]: 0; - } | undefined; + }; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.js.diff index 58c5c32d14d..e388a394171 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.js.diff @@ -8,5 +8,5 @@ +export declare const foo: { + x?: { + [Foo.sym]: 0; -+ } | undefined; ++ }; +}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.types b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.types index 28a9dbe5f5a..5467d781f96 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.types @@ -22,8 +22,8 @@ import { type Type } from "./type"; >Type : any export const foo = { ...({} as Type) }; ->foo : { x?: { [Foo.sym]: 0; } | undefined; } ->{ ...({} as Type) } : { x?: { [Foo.sym]: 0; } | undefined; } +>foo : { x?: { [Foo.sym]: 0; }; } +>{ ...({} as Type) } : { x?: { [Foo.sym]: 0; }; } >({} as Type) : Type >{} as Type : Type >{} : {} diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.types.diff deleted file mode 100644 index ca0486a1695..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedPropertyNameSymbol2.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitComputedPropertyNameSymbol2.types -+++ new.declarationEmitComputedPropertyNameSymbol2.types -@@= skipped -21, +21 lines =@@ - >Type : any - - export const foo = { ...({} as Type) }; -->foo : { x?: { [Foo.sym]: 0; }; } -->{ ...({} as Type) } : { x?: { [Foo.sym]: 0; }; } -+>foo : { x?: { [Foo.sym]: 0; } | undefined; } -+>{ ...({} as Type) } : { x?: { [Foo.sym]: 0; } | undefined; } - >({} as Type) : Type - >{} as Type : Type - >{} : {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitDestructuringWithOptionalBindingParameters.types b/testdata/baselines/reference/submodule/compiler/declarationEmitDestructuringWithOptionalBindingParameters.types index 2f03f7d255c..029e8942c49 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitDestructuringWithOptionalBindingParameters.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitDestructuringWithOptionalBindingParameters.types @@ -2,13 +2,13 @@ === declarationEmitDestructuringWithOptionalBindingParameters.ts === function foo([x,y,z]?: [string, number, boolean]) { ->foo : ([x, y, z]?: [string, number, boolean] | undefined) => void +>foo : ([x, y, z]?: [string, number, boolean]) => void >x : string >y : number >z : boolean } function foo1( { x, y, z }?: { x: string; y: number; z: boolean }) { ->foo1 : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => void +>foo1 : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => void >x : string >y : number >z : boolean diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitDestructuringWithOptionalBindingParameters.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitDestructuringWithOptionalBindingParameters.types.diff deleted file mode 100644 index 662b886ce74..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitDestructuringWithOptionalBindingParameters.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.declarationEmitDestructuringWithOptionalBindingParameters.types -+++ new.declarationEmitDestructuringWithOptionalBindingParameters.types -@@= skipped -1, +1 lines =@@ - - === declarationEmitDestructuringWithOptionalBindingParameters.ts === - function foo([x,y,z]?: [string, number, boolean]) { -->foo : ([x, y, z]?: [string, number, boolean]) => void -+>foo : ([x, y, z]?: [string, number, boolean] | undefined) => void - >x : string - >y : number - >z : boolean - } - function foo1( { x, y, z }?: { x: string; y: number; z: boolean }) { -->foo1 : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => void -+>foo1 : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => void - >x : string - >y : number - >z : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.js b/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.js index 1fa315c0152..1f089432287 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.js @@ -17,4 +17,4 @@ exports.fun = fun; //// [declarationEmitDistributiveConditionalWithInfer.d.ts] -export declare const fun: (subFun: () => (Collection[Field] extends infer T ? T extends Collection[Field] ? T extends readonly (infer InnerArr)[] ? InnerArr : T : never : never)[]) => void; +export declare const fun: (subFun: () => FlatArray[]) => void; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.js.diff deleted file mode 100644 index 62dde4562b2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.js.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.declarationEmitDistributiveConditionalWithInfer.js -+++ new.declarationEmitDistributiveConditionalWithInfer.js -@@= skipped -16, +16 lines =@@ - - - //// [declarationEmitDistributiveConditionalWithInfer.d.ts] --export declare const fun: (subFun: () => FlatArray[]) => void; -+export declare const fun: (subFun: () => (Collection[Field] extends infer T ? T extends Collection[Field] ? T extends readonly (infer InnerArr)[] ? InnerArr : T : never : never)[]) => void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.types b/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.types index b440e40d157..9cb80f14cf9 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.types @@ -3,11 +3,11 @@ === declarationEmitDistributiveConditionalWithInfer.ts === // This function's type is changed on declaration export const fun = ( ->fun : (subFun: () => (Collection[Field] extends infer T ? T extends Collection[Field] ? T extends readonly (infer InnerArr)[] ? InnerArr : T : never : never)[]) => void ->( subFun: () => FlatArray[]) => { } : (subFun: () => (Collection[Field] extends infer T ? T extends Collection[Field] ? T extends readonly (infer InnerArr)[] ? InnerArr : T : never : never)[]) => void +>fun : (subFun: () => FlatArray[]) => void +>( subFun: () => FlatArray[]) => { } : (subFun: () => FlatArray[]) => void subFun: () ->subFun : () => (Collection[Field] extends infer T ? T extends Collection[Field] ? T extends readonly (infer InnerArr)[] ? InnerArr : T : never : never)[] +>subFun : () => FlatArray[] => FlatArray[]) => { }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.types.diff deleted file mode 100644 index 1a938eda0b5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitDistributiveConditionalWithInfer.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.declarationEmitDistributiveConditionalWithInfer.types -+++ new.declarationEmitDistributiveConditionalWithInfer.types -@@= skipped -2, +2 lines =@@ - === declarationEmitDistributiveConditionalWithInfer.ts === - // This function's type is changed on declaration - export const fun = ( -->fun : (subFun: () => FlatArray[]) => void -->( subFun: () => FlatArray[]) => { } : (subFun: () => FlatArray[]) => void -+>fun : (subFun: () => (Collection[Field] extends infer T ? T extends Collection[Field] ? T extends readonly (infer InnerArr)[] ? InnerArr : T : never : never)[]) => void -+>( subFun: () => FlatArray[]) => { } : (subFun: () => (Collection[Field] extends infer T ? T extends Collection[Field] ? T extends readonly (infer InnerArr)[] ? InnerArr : T : never : never)[]) => void - - subFun: () -->subFun : () => FlatArray[] -+>subFun : () => (Collection[Field] extends infer T ? T extends Collection[Field] ? T extends readonly (infer InnerArr)[] ? InnerArr : T : never : never)[] - - => FlatArray[]) => { }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js index d2be47f74dd..35723374eeb 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js @@ -32,7 +32,7 @@ exports.baddts = foo(); //// [declarationEmitExactOptionalPropertyTypesNodeNotReused.d.ts] export declare const baddts: (x: { - foo?: string | undefined; + foo?: string; baz?: undefined; } & { bar: number; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js.diff new file mode 100644 index 00000000000..a4bcfce89bc --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js.diff @@ -0,0 +1,11 @@ +--- old.declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js ++++ new.declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).js +@@= skipped -31, +31 lines =@@ + + //// [declarationEmitExactOptionalPropertyTypesNodeNotReused.d.ts] + export declare const baddts: (x: { +- foo?: string | undefined; ++ foo?: string; + baz?: undefined; + } & { + bar: number; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types index c48b74cc4b9..1024779328c 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types @@ -28,13 +28,13 @@ type Out = InexactOptionals >Out : Out const foo = () => (x: Out & A) => null ->foo : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null ->() => (x: Out & A) => null : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null ->(x: Out & A) => null : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null ->x : { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A +>foo : () => (x: Out & A) => null +>() => (x: Out & A) => null : () => (x: Out & A) => null +>(x: Out & A) => null : (x: Out & A) => null +>x : { foo?: string; baz?: undefined; } & { bar: number; } & A export const baddts = foo() ->baddts : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null ->foo() : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null ->foo : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null +>baddts : (x: { foo?: string; baz?: undefined; } & { bar: number; }) => null +>foo() : (x: { foo?: string; baz?: undefined; } & { bar: number; }) => null +>foo : () => (x: Out & A) => null diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types.diff index f420a09414a..775d817c2a5 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types.diff @@ -1,19 +1,15 @@ --- old.declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types +++ new.declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types -@@= skipped -27, +27 lines =@@ - >Out : Out - - const foo = () => (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 -+>foo : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null -+>() => (x: Out & A) => null : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null -+>(x: Out & A) => null : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null - >x : { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A +@@= skipped -30, +30 lines =@@ + >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 ++>x : { foo?: string; baz?: undefined; } & { bar: number; } & A export const baddts = foo() - >baddts : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null - >foo() : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null -->foo : () => (x: Out & A) => null -+>foo : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null +->baddts : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null +->foo() : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null ++>baddts : (x: { foo?: string; baz?: undefined; } & { bar: number; }) => null ++>foo() : (x: { foo?: string; baz?: undefined; } & { bar: number; }) => null + >foo : () => (x: Out & A) => null diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js index d2be47f74dd..35723374eeb 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js @@ -32,7 +32,7 @@ exports.baddts = foo(); //// [declarationEmitExactOptionalPropertyTypesNodeNotReused.d.ts] export declare const baddts: (x: { - foo?: string | undefined; + foo?: string; baz?: undefined; } & { bar: number; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js.diff new file mode 100644 index 00000000000..1a46451ac6d --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js.diff @@ -0,0 +1,11 @@ +--- old.declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js ++++ new.declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).js +@@= skipped -31, +31 lines =@@ + + //// [declarationEmitExactOptionalPropertyTypesNodeNotReused.d.ts] + export declare const baddts: (x: { +- foo?: string | undefined; ++ foo?: string; + baz?: undefined; + } & { + bar: number; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types index c48b74cc4b9..1024779328c 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types @@ -28,13 +28,13 @@ type Out = InexactOptionals >Out : Out const foo = () => (x: Out & A) => null ->foo : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null ->() => (x: Out & A) => null : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null ->(x: Out & A) => null : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null ->x : { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A +>foo : () => (x: Out & A) => null +>() => (x: Out & A) => null : () => (x: Out & A) => null +>(x: Out & A) => null : (x: Out & A) => null +>x : { foo?: string; baz?: undefined; } & { bar: number; } & A export const baddts = foo() ->baddts : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null ->foo() : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null ->foo : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null +>baddts : (x: { foo?: string; baz?: undefined; } & { bar: number; }) => null +>foo() : (x: { foo?: string; baz?: undefined; } & { bar: number; }) => null +>foo : () => (x: Out & A) => null diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types.diff index 4dedec547a9..7cbc2bff1af 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types.diff @@ -1,19 +1,15 @@ --- old.declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types +++ new.declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types -@@= skipped -27, +27 lines =@@ - >Out : Out - - const foo = () => (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 -+>foo : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null -+>() => (x: Out & A) => null : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null -+>(x: Out & A) => null : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null - >x : { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A +@@= skipped -30, +30 lines =@@ + >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 ++>x : { foo?: string; baz?: undefined; } & { bar: number; } & A export const baddts = foo() - >baddts : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null - >foo() : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null -->foo : () => (x: Out & A) => null -+>foo : () => (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A) => null +->baddts : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null +->foo() : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null ++>baddts : (x: { foo?: string; baz?: undefined; } & { bar: number; }) => null ++>foo() : (x: { foo?: string; baz?: undefined; } & { bar: number; }) => null + >foo : () => (x: Out & A) => null diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.types b/testdata/baselines/reference/submodule/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.types index 2e038d64f39..30616b8d530 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.types @@ -29,7 +29,7 @@ function f3(): X< () => Tany> { // written with space before type argument >prop11 : X<() => Tany> } function f4(): X<(() => Tany)> { // written type with parenthesis ->f4 : () => X<() => Tany> +>f4 : () => X<(() => Tany)> return prop12; >prop12 : X<() => Tany> diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.types.diff index 07412f73769..3ba55ee76de 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.types.diff @@ -36,8 +36,7 @@ +>prop11 : X<() => Tany> } function f4(): X<(() => Tany)> { // written type with parenthesis -->f4 : () => X<(() => Tany)> -+>f4 : () => X<() => Tany> + >f4 : () => X<(() => Tany)> return prop12; ->prop12 : X<(() => Tany)> diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization2.types b/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization2.types index 975e809e244..2491849e9f0 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization2.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization2.types @@ -47,8 +47,8 @@ type G = { export const x = (() => null! as ExpandRecursively)(); >x : { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } >(() => null! as ExpandRecursively)() : { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } ->(() => null! as ExpandRecursively) : () => { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } ->() => null! as ExpandRecursively : () => { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } +>(() => null! as ExpandRecursively) : () => ExpandRecursively +>() => null! as ExpandRecursively : () => ExpandRecursively >null! as ExpandRecursively : { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } >null! : never diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization2.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization2.types.diff index 182fec8a0f1..9660b4e759d 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization2.types.diff @@ -1,15 +1,6 @@ --- old.declarationEmitGenericTypeParamerSerialization2.types +++ new.declarationEmitGenericTypeParamerSerialization2.types -@@= skipped -46, +46 lines =@@ - export const x = (() => null! as ExpandRecursively)(); - >x : { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } - >(() => null! as ExpandRecursively)() : { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } -->(() => null! as ExpandRecursively) : () => ExpandRecursively -->() => null! as ExpandRecursively : () => ExpandRecursively -+>(() => null! as ExpandRecursively) : () => { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } -+>() => null! as ExpandRecursively : () => { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } - >null! as ExpandRecursively : { readonly readonlyProperty: string; field: string; method: (p: string) => string; fnField: (p: string) => string; writeOnlyProperty: string; property: string; divergentProperty: string; } - >null! : never +@@= skipped -53, +53 lines =@@ function makeV() { @@ -18,7 +9,7 @@ type X = { >X : { readonly readonlyProperty: T; field: T; method(p: T): T; fnField: (p: T) => T; writeOnlyProperty: T; property: T; get divergentProperty(): string | T; set divergentProperty(p: number | T); } -@@= skipped -45, +45 lines =@@ +@@= skipped -38, +38 lines =@@ >p : number | T } return null! as X diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization3.types b/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization3.types index 27719fd3c83..84812c01cf0 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization3.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization3.types @@ -2,7 +2,7 @@ === declarationEmitGenericTypeParamerSerialization3.ts === function mixin(superclass: T) { ->mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >args : any[] >superclass : T @@ -26,7 +26,7 @@ export function wrapper(value: T) { >class MyClass extends mixin(BaseClass) { accessor name = value; } : typeof MyClass >MyClass : typeof MyClass >mixin(BaseClass) : mixin.(Anonymous class) & BaseClass ->mixin : {}>(superclass: T_1) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T_1 +>mixin : (superclass: T_1) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T_1 >BaseClass : typeof BaseClass accessor name = value; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization3.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization3.types.diff index ccc9da89fcc..c823e1a4482 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization3.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitGenericTypeParamerSerialization3.types.diff @@ -5,7 +5,7 @@ === declarationEmitGenericTypeParamerSerialization3.ts === function mixin(superclass: T) { ->mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T -+>mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T ++>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >args : any[] >superclass : T @@ -22,7 +22,7 @@ ->mixin(BaseClass) : mixin.(Anonymous class) & BaseClass ->mixin : (superclass: T_1) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T_1 +>mixin(BaseClass) : mixin.(Anonymous class) & BaseClass -+>mixin : {}>(superclass: T_1) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T_1 ++>mixin : (superclass: T_1) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T_1 >BaseClass : typeof BaseClass accessor name = value; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.js b/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.js index 708c7e27833..bc9eefece53 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.js @@ -112,24 +112,24 @@ export type AsFunctionType = (isNaN: typeof globalThis.isNaN) => typeof globalTh //// [declarationEmitGlobalThisPreserved.d.ts] export declare const a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; -export declare const a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; +export declare const a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; export declare const a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; export declare const a4: (isNaN: number) => typeof globalThis.isNaN; export declare const aObj: { a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; - a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; + a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; a4: (isNaN: number) => typeof globalThis.isNaN; }; export type a4Return = ReturnType>; export type a4oReturn = ReturnType>; export declare const b1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; -export declare const b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; +export declare const b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; export declare const b3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; export declare const b4: (isNaN: number) => typeof globalThis.isNaN; export declare const bObj: { b1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; - b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; + b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; b3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; b4: (isNaN: number) => typeof globalThis.isNaN; }; @@ -141,14 +141,14 @@ export declare function c3(isNaN: number, bar: typeof globalThis.isNaN): typeof export declare function c4(isNaN: number): typeof globalThis.isNaN; export declare const cObj: { c1(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN; - c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined): typeof globalThis.isNaN; + c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN; c3(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN; c4(isNaN: number): typeof globalThis.isNaN; }; export type c4Return = ReturnType>; export type c4oReturn = ReturnType>; export declare function d1(): () => (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; -export declare function d2(): () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; +export declare function d2(): () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; export declare function d3(): () => (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; export declare function d4(): () => (isNaN: number) => typeof globalThis.isNaN; export type d4Return = ReturnType>>>; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.js.diff index 971497840d0..1a66a3a0f89 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.js.diff @@ -1,33 +1,15 @@ --- old.declarationEmitGlobalThisPreserved.js +++ new.declarationEmitGlobalThisPreserved.js -@@= skipped -111, +111 lines =@@ - - //// [declarationEmitGlobalThisPreserved.d.ts] - export declare const a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; --export declare const a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; -+export declare const a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; - export declare const a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; - export declare const a4: (isNaN: number) => typeof globalThis.isNaN; - export declare const aObj: { - a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; -- a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; -+ a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; - a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; +@@= skipped -121, +121 lines =@@ a4: (isNaN: number) => typeof globalThis.isNaN; }; export type a4Return = ReturnType>; -export type a4oReturn = ReturnType>; +export type a4oReturn = ReturnType>; export declare const b1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; --export declare const b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; -+export declare const b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; + export declare const b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; export declare const b3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; - export declare const b4: (isNaN: number) => typeof globalThis.isNaN; - export declare const bObj: { - b1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; -- b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; -+ b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; - b3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; +@@= skipped -12, +12 lines =@@ b4: (isNaN: number) => typeof globalThis.isNaN; }; export type b4Return = ReturnType>; @@ -36,20 +18,12 @@ export declare function c1(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN; export declare function c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN; export declare function c3(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN; - export declare function c4(isNaN: number): typeof globalThis.isNaN; - export declare const cObj: { - c1(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN; -- c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN; -+ c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined): typeof globalThis.isNaN; - c3(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN; +@@= skipped -12, +12 lines =@@ c4(isNaN: number): typeof globalThis.isNaN; }; export type c4Return = ReturnType>; -export type c4oReturn = ReturnType>; +export type c4oReturn = ReturnType>; export declare function d1(): () => (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; --export declare function d2(): () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; -+export declare function d2(): () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN | undefined) => typeof globalThis.isNaN; - export declare function d3(): () => (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; - export declare function d4(): () => (isNaN: number) => typeof globalThis.isNaN; - export type d4Return = ReturnType>>>; \ No newline at end of file + export declare function d2(): () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; + export declare function d3(): () => (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.types b/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.types index d3e55072491..54d5bd6fa64 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.types @@ -11,8 +11,8 @@ // Broken inference cases. export const a1 = (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN; ->a1 : (isNaN: (number: number) => boolean) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean +>a1 : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN +>(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -23,8 +23,8 @@ export const a1 = (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => i >isNaN : (number: number) => boolean export const a2 = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN; ->a2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>a2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN +>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -41,8 +41,8 @@ export const a2 = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN >isNaN : (number: number) => boolean export const a3 = (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar; ->a3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean ->(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>a3 : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN +>(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : number >bar : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean @@ -54,8 +54,8 @@ export const a3 = (isNaN: number, bar: typeof globalThis.isNaN): typeof globalTh >bar : (number: number) => boolean export const a4 = (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN; ->a4 : (isNaN: number) => (number: number) => boolean ->(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => (number: number) => boolean +>a4 : (isNaN: number) => typeof globalThis.isNaN +>(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => typeof globalThis.isNaN >isNaN : number >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -65,12 +65,12 @@ export const a4 = (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN; >isNaN : (number: number) => boolean export const aObj = { ->aObj : { a1: (isNaN: (number: number) => boolean) => (number: number) => boolean; a2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; a3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; a4: (isNaN: number) => (number: number) => boolean; } ->{ a1: (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN, a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN, a3: (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar, a4: (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN,} : { a1: (isNaN: (number: number) => boolean) => (number: number) => boolean; a2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; a3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; a4: (isNaN: number) => (number: number) => boolean; } +>aObj : { a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; a4: (isNaN: number) => typeof globalThis.isNaN; } +>{ a1: (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN, a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN, a3: (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar, a4: (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN,} : { a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; a4: (isNaN: number) => typeof globalThis.isNaN; } a1: (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN, ->a1 : (isNaN: (number: number) => boolean) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean +>a1 : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN +>(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -81,8 +81,8 @@ export const aObj = { >isNaN : (number: number) => boolean a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN, ->a2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>a2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN +>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -99,8 +99,8 @@ export const aObj = { >isNaN : (number: number) => boolean a3: (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar, ->a3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean ->(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>a3 : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN +>(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : number >bar : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean @@ -112,8 +112,8 @@ export const aObj = { >bar : (number: number) => boolean a4: (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN, ->a4 : (isNaN: number) => (number: number) => boolean ->(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => (number: number) => boolean +>a4 : (isNaN: number) => typeof globalThis.isNaN +>(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => typeof globalThis.isNaN >isNaN : number >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -125,15 +125,15 @@ export const aObj = { export type a4Return = ReturnType>; >a4Return : boolean ->a4 : (isNaN: number) => (number: number) => boolean +>a4 : (isNaN: number) => typeof globalThis.isNaN export type a4oReturn = ReturnType>; >a4oReturn : boolean ->aObj : { a1: (isNaN: (number: number) => boolean) => (number: number) => boolean; a2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; a3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; a4: (isNaN: number) => (number: number) => boolean; } +>aObj : { a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; a4: (isNaN: number) => typeof globalThis.isNaN; } export const b1 = (isNaN: typeof globalThis.isNaN) => isNaN; ->b1 : (isNaN: (number: number) => boolean) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean +>b1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean +>(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -141,8 +141,8 @@ export const b1 = (isNaN: typeof globalThis.isNaN) => isNaN; >isNaN : (number: number) => boolean export const b2 = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN; ->b2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>b2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean +>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -156,8 +156,8 @@ export const b2 = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN >isNaN : (number: number) => boolean export const b3 = (isNaN: number, bar: typeof globalThis.isNaN) => bar; ->b3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean ->(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>b3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean +>(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : number >bar : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean @@ -174,12 +174,12 @@ export const b4 = (isNaN: number) => globalThis.isNaN; >isNaN : (number: number) => boolean export const bObj = { ->bObj : { b1: (isNaN: (number: number) => boolean) => (number: number) => boolean; b2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; b3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } ->{ b1: (isNaN: typeof globalThis.isNaN) => isNaN, b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN, b3: (isNaN: number, bar: typeof globalThis.isNaN) => bar, b4: (isNaN: number) => globalThis.isNaN,} : { b1: (isNaN: (number: number) => boolean) => (number: number) => boolean; b2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; b3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } +>bObj : { b1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; b3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } +>{ b1: (isNaN: typeof globalThis.isNaN) => isNaN, b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN, b3: (isNaN: number, bar: typeof globalThis.isNaN) => bar, b4: (isNaN: number) => globalThis.isNaN,} : { b1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; b3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } b1: (isNaN: typeof globalThis.isNaN) => isNaN, ->b1 : (isNaN: (number: number) => boolean) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean +>b1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean +>(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -187,8 +187,8 @@ export const bObj = { >isNaN : (number: number) => boolean b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN, ->b2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>b2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean +>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -202,8 +202,8 @@ export const bObj = { >isNaN : (number: number) => boolean b3: (isNaN: number, bar: typeof globalThis.isNaN) => bar, ->b3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean ->(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>b3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean +>(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : number >bar : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean @@ -226,10 +226,10 @@ export type b4Return = ReturnType>; export type b4oReturn = ReturnType>; >b4oReturn : boolean ->bObj : { b1: (isNaN: (number: number) => boolean) => (number: number) => boolean; b2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; b3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } +>bObj : { b1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; b3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } export function c1(isNaN: typeof globalThis.isNaN) { return isNaN } ->c1 : (isNaN: (number: number) => boolean) => (number: number) => boolean +>c1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -237,7 +237,7 @@ export function c1(isNaN: typeof globalThis.isNaN) { return isNaN } >isNaN : (number: number) => boolean export function c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN } ->c2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>c2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -251,7 +251,7 @@ export function c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN >isNaN : (number: number) => boolean export function c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar } ->c3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>c3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : number >bar : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean @@ -267,11 +267,11 @@ export function c4(isNaN: number) { return globalThis.isNaN; } >isNaN : (number: number) => boolean export const cObj = { ->cObj : { c1(isNaN: (number: number) => boolean): (number: number) => boolean; c2(isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined): (number: number) => boolean; c3(isNaN: number, bar: (number: number) => boolean): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } ->{ c1(isNaN: typeof globalThis.isNaN) { return isNaN }, c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN }, c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar }, c4(isNaN: number) { return globalThis.isNaN; },} : { c1(isNaN: (number: number) => boolean): (number: number) => boolean; c2(isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined): (number: number) => boolean; c3(isNaN: number, bar: (number: number) => boolean): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } +>cObj : { c1(isNaN: typeof globalThis.isNaN): (number: number) => boolean; c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): (number: number) => boolean; c3(isNaN: number, bar: typeof globalThis.isNaN): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } +>{ c1(isNaN: typeof globalThis.isNaN) { return isNaN }, c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN }, c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar }, c4(isNaN: number) { return globalThis.isNaN; },} : { c1(isNaN: typeof globalThis.isNaN): (number: number) => boolean; c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): (number: number) => boolean; c3(isNaN: number, bar: typeof globalThis.isNaN): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } c1(isNaN: typeof globalThis.isNaN) { return isNaN }, ->c1 : (isNaN: (number: number) => boolean) => (number: number) => boolean +>c1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -279,7 +279,7 @@ export const cObj = { >isNaN : (number: number) => boolean c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN }, ->c2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>c2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -293,7 +293,7 @@ export const cObj = { >isNaN : (number: number) => boolean c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar }, ->c3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>c3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : number >bar : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean @@ -315,14 +315,14 @@ export type c4Return = ReturnType>; export type c4oReturn = ReturnType>; >c4oReturn : boolean ->cObj : { c1(isNaN: (number: number) => boolean): (number: number) => boolean; c2(isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined): (number: number) => boolean; c3(isNaN: number, bar: (number: number) => boolean): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } +>cObj : { c1(isNaN: typeof globalThis.isNaN): (number: number) => boolean; c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): (number: number) => boolean; c3(isNaN: number, bar: typeof globalThis.isNaN): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } export function d1() { ->d1 : () => () => (isNaN: (number: number) => boolean) => (number: number) => boolean +>d1 : () => () => (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN const fn = (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN; ->fn : (isNaN: (number: number) => boolean) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean +>fn : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN +>(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -333,16 +333,16 @@ export function d1() { >isNaN : (number: number) => boolean return function() { return fn }; ->function() { return fn } : () => (isNaN: (number: number) => boolean) => (number: number) => boolean ->fn : (isNaN: (number: number) => boolean) => (number: number) => boolean +>function() { return fn } : () => (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN +>fn : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN } export function d2() { ->d2 : () => () => (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>d2 : () => () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN const fn = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN; ->fn : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean ->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>fn : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN +>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -359,16 +359,16 @@ export function d2() { >isNaN : (number: number) => boolean return function() { return fn }; ->function() { return fn } : () => (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean ->fn : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>function() { return fn } : () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN +>fn : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN } export function d3() { ->d3 : () => () => (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>d3 : () => () => (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN const fn = (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar; ->fn : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean ->(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>fn : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN +>(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : number >bar : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean @@ -380,16 +380,16 @@ export function d3() { >bar : (number: number) => boolean return function() { return fn }; ->function() { return fn } : () => (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean ->fn : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>function() { return fn } : () => (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN +>fn : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN } export function d4() { ->d4 : () => () => (isNaN: number) => (number: number) => boolean +>d4 : () => () => (isNaN: number) => typeof globalThis.isNaN const fn = (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN; ->fn : (isNaN: number) => (number: number) => boolean ->(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => (number: number) => boolean +>fn : (isNaN: number) => typeof globalThis.isNaN +>(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => typeof globalThis.isNaN >isNaN : number >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -399,19 +399,19 @@ export function d4() { >isNaN : (number: number) => boolean return function() { return fn }; ->function() { return fn } : () => (isNaN: number) => (number: number) => boolean ->fn : (isNaN: number) => (number: number) => boolean +>function() { return fn } : () => (isNaN: number) => typeof globalThis.isNaN +>fn : (isNaN: number) => typeof globalThis.isNaN } export type d4Return = ReturnType>>>; >d4Return : boolean ->d4 : () => () => (isNaN: number) => (number: number) => boolean +>d4 : () => () => (isNaN: number) => typeof globalThis.isNaN export class A { >A : A method1(isNaN: typeof globalThis.isNaN) { return isNaN } ->method1 : (isNaN: (number: number) => boolean) => (number: number) => boolean +>method1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -419,7 +419,7 @@ export class A { >isNaN : (number: number) => boolean method2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN } ->method2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean +>method2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -433,7 +433,7 @@ export class A { >isNaN : (number: number) => boolean method3(isNaN: number, bar: typeof globalThis.isNaN) { return bar } ->method3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean +>method3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean >isNaN : number >bar : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean @@ -450,7 +450,7 @@ export class A { } export function fromParameter(isNaN: number, bar: typeof globalThis.isNaN) { ->fromParameter : (isNaN: number, bar: (number: number) => boolean) => () => { bar: (number: number) => boolean; } +>fromParameter : (isNaN: number, bar: typeof globalThis.isNaN) => () => { bar: (number: number) => boolean; } >isNaN : number >bar : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean @@ -466,7 +466,7 @@ export function fromParameter(isNaN: number, bar: typeof globalThis.isNaN) { // Non-inference cases. export const explicitlyTypedVariable: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN = (isNaN) => isNaN; ->explicitlyTypedVariable : (isNaN: (number: number) => boolean) => (number: number) => boolean +>explicitlyTypedVariable : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis @@ -479,7 +479,7 @@ export const explicitlyTypedVariable: (isNaN: typeof globalThis.isNaN) => typeof >isNaN : (number: number) => boolean export function explicitlyTypedFunction(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN { ->explicitlyTypedFunction : (isNaN: (number: number) => boolean) => (number: number) => boolean +>explicitlyTypedFunction : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN >isNaN : (number: number) => boolean >globalThis.isNaN : (number: number) => boolean >globalThis : typeof globalThis diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.types.diff deleted file mode 100644 index eec78008e54..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitGlobalThisPreserved.types.diff +++ /dev/null @@ -1,395 +0,0 @@ ---- old.declarationEmitGlobalThisPreserved.types -+++ new.declarationEmitGlobalThisPreserved.types -@@= skipped -10, +10 lines =@@ - // Broken inference cases. - - export const a1 = (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN; -->a1 : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -->(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>a1 : (isNaN: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -12, +12 lines =@@ - >isNaN : (number: number) => boolean - - export const a2 = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN; -->a2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>a2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -18, +18 lines =@@ - >isNaN : (number: number) => boolean - - export const a3 = (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar; -->a3 : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -->(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>a3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - >isNaN : number - >bar : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean -@@= skipped -13, +13 lines =@@ - >bar : (number: number) => boolean - - export const a4 = (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN; -->a4 : (isNaN: number) => typeof globalThis.isNaN -->(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => typeof globalThis.isNaN -+>a4 : (isNaN: number) => (number: number) => boolean -+>(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => (number: number) => boolean - >isNaN : number - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -11, +11 lines =@@ - >isNaN : (number: number) => boolean - - export const aObj = { -->aObj : { a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; a4: (isNaN: number) => typeof globalThis.isNaN; } -->{ a1: (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN, a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN, a3: (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar, a4: (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN,} : { a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; a4: (isNaN: number) => typeof globalThis.isNaN; } -+>aObj : { a1: (isNaN: (number: number) => boolean) => (number: number) => boolean; a2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; a3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; a4: (isNaN: number) => (number: number) => boolean; } -+>{ a1: (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN, a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN, a3: (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar, a4: (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN,} : { a1: (isNaN: (number: number) => boolean) => (number: number) => boolean; a2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; a3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; a4: (isNaN: number) => (number: number) => boolean; } - - a1: (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN, -->a1 : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -->(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>a1 : (isNaN: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -16, +16 lines =@@ - >isNaN : (number: number) => boolean - - a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN, -->a2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>a2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -18, +18 lines =@@ - >isNaN : (number: number) => boolean - - a3: (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar, -->a3 : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -->(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>a3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - >isNaN : number - >bar : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean -@@= skipped -13, +13 lines =@@ - >bar : (number: number) => boolean - - a4: (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN, -->a4 : (isNaN: number) => typeof globalThis.isNaN -->(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => typeof globalThis.isNaN -+>a4 : (isNaN: number) => (number: number) => boolean -+>(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => (number: number) => boolean - >isNaN : number - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -13, +13 lines =@@ - - export type a4Return = ReturnType>; - >a4Return : boolean -->a4 : (isNaN: number) => typeof globalThis.isNaN -+>a4 : (isNaN: number) => (number: number) => boolean - - export type a4oReturn = ReturnType>; - >a4oReturn : boolean -->aObj : { a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; a4: (isNaN: number) => typeof globalThis.isNaN; } -+>aObj : { a1: (isNaN: (number: number) => boolean) => (number: number) => boolean; a2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; a3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; a4: (isNaN: number) => (number: number) => boolean; } - - export const b1 = (isNaN: typeof globalThis.isNaN) => isNaN; -->b1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -->(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -+>b1 : (isNaN: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -16, +16 lines =@@ - >isNaN : (number: number) => boolean - - export const b2 = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN; -->b2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -+>b2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -15, +15 lines =@@ - >isNaN : (number: number) => boolean - - export const b3 = (isNaN: number, bar: typeof globalThis.isNaN) => bar; -->b3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -->(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -+>b3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - >isNaN : number - >bar : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean -@@= skipped -18, +18 lines =@@ - >isNaN : (number: number) => boolean - - export const bObj = { -->bObj : { b1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; b3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } -->{ b1: (isNaN: typeof globalThis.isNaN) => isNaN, b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN, b3: (isNaN: number, bar: typeof globalThis.isNaN) => bar, b4: (isNaN: number) => globalThis.isNaN,} : { b1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; b3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } -+>bObj : { b1: (isNaN: (number: number) => boolean) => (number: number) => boolean; b2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; b3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } -+>{ b1: (isNaN: typeof globalThis.isNaN) => isNaN, b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN, b3: (isNaN: number, bar: typeof globalThis.isNaN) => bar, b4: (isNaN: number) => globalThis.isNaN,} : { b1: (isNaN: (number: number) => boolean) => (number: number) => boolean; b2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; b3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } - - b1: (isNaN: typeof globalThis.isNaN) => isNaN, -->b1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -->(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -+>b1 : (isNaN: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -13, +13 lines =@@ - >isNaN : (number: number) => boolean - - b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN, -->b2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -+>b2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -15, +15 lines =@@ - >isNaN : (number: number) => boolean - - b3: (isNaN: number, bar: typeof globalThis.isNaN) => bar, -->b3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -->(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -+>b3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - >isNaN : number - >bar : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean -@@= skipped -24, +24 lines =@@ - - export type b4oReturn = ReturnType>; - >b4oReturn : boolean -->bObj : { b1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; b3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } -+>bObj : { b1: (isNaN: (number: number) => boolean) => (number: number) => boolean; b2: (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean; b3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } - - export function c1(isNaN: typeof globalThis.isNaN) { return isNaN } -->c1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -+>c1 : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -11, +11 lines =@@ - >isNaN : (number: number) => boolean - - export function c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN } -->c2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -+>c2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -14, +14 lines =@@ - >isNaN : (number: number) => boolean - - export function c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar } -->c3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -+>c3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - >isNaN : number - >bar : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean -@@= skipped -16, +16 lines =@@ - >isNaN : (number: number) => boolean - - export const cObj = { -->cObj : { c1(isNaN: typeof globalThis.isNaN): (number: number) => boolean; c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): (number: number) => boolean; c3(isNaN: number, bar: typeof globalThis.isNaN): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } -->{ c1(isNaN: typeof globalThis.isNaN) { return isNaN }, c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN }, c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar }, c4(isNaN: number) { return globalThis.isNaN; },} : { c1(isNaN: typeof globalThis.isNaN): (number: number) => boolean; c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): (number: number) => boolean; c3(isNaN: number, bar: typeof globalThis.isNaN): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } -+>cObj : { c1(isNaN: (number: number) => boolean): (number: number) => boolean; c2(isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined): (number: number) => boolean; c3(isNaN: number, bar: (number: number) => boolean): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } -+>{ c1(isNaN: typeof globalThis.isNaN) { return isNaN }, c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN }, c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar }, c4(isNaN: number) { return globalThis.isNaN; },} : { c1(isNaN: (number: number) => boolean): (number: number) => boolean; c2(isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined): (number: number) => boolean; c3(isNaN: number, bar: (number: number) => boolean): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } - - c1(isNaN: typeof globalThis.isNaN) { return isNaN }, -->c1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -+>c1 : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -12, +12 lines =@@ - >isNaN : (number: number) => boolean - - c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN }, -->c2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -+>c2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -14, +14 lines =@@ - >isNaN : (number: number) => boolean - - c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar }, -->c3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -+>c3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - >isNaN : number - >bar : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean -@@= skipped -22, +22 lines =@@ - - export type c4oReturn = ReturnType>; - >c4oReturn : boolean -->cObj : { c1(isNaN: typeof globalThis.isNaN): (number: number) => boolean; c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): (number: number) => boolean; c3(isNaN: number, bar: typeof globalThis.isNaN): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } -+>cObj : { c1(isNaN: (number: number) => boolean): (number: number) => boolean; c2(isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined): (number: number) => boolean; c3(isNaN: number, bar: (number: number) => boolean): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } - - export function d1() { -->d1 : () => () => (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>d1 : () => () => (isNaN: (number: number) => boolean) => (number: number) => boolean - - const fn = (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN; -->fn : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -->(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>fn : (isNaN: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -18, +18 lines =@@ - >isNaN : (number: number) => boolean - - return function() { return fn }; -->function() { return fn } : () => (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -->fn : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>function() { return fn } : () => (isNaN: (number: number) => boolean) => (number: number) => boolean -+>fn : (isNaN: (number: number) => boolean) => (number: number) => boolean - } - - export function d2() { -->d2 : () => () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>d2 : () => () => (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - - const fn = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN; -->fn : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -->(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>fn : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean -+>(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -26, +26 lines =@@ - >isNaN : (number: number) => boolean - - return function() { return fn }; -->function() { return fn } : () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -->fn : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>function() { return fn } : () => (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean -+>fn : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - } - - export function d3() { -->d3 : () => () => (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>d3 : () => () => (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - - const fn = (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar; -->fn : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -->(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>fn : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean -+>(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - >isNaN : number - >bar : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean -@@= skipped -21, +21 lines =@@ - >bar : (number: number) => boolean - - return function() { return fn }; -->function() { return fn } : () => (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -->fn : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>function() { return fn } : () => (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean -+>fn : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - } - - export function d4() { -->d4 : () => () => (isNaN: number) => typeof globalThis.isNaN -+>d4 : () => () => (isNaN: number) => (number: number) => boolean - - const fn = (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN; -->fn : (isNaN: number) => typeof globalThis.isNaN -->(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => typeof globalThis.isNaN -+>fn : (isNaN: number) => (number: number) => boolean -+>(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => (number: number) => boolean - >isNaN : number - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -19, +19 lines =@@ - >isNaN : (number: number) => boolean - - return function() { return fn }; -->function() { return fn } : () => (isNaN: number) => typeof globalThis.isNaN -->fn : (isNaN: number) => typeof globalThis.isNaN -+>function() { return fn } : () => (isNaN: number) => (number: number) => boolean -+>fn : (isNaN: number) => (number: number) => boolean - } - - export type d4Return = ReturnType>>>; - >d4Return : boolean -->d4 : () => () => (isNaN: number) => typeof globalThis.isNaN -+>d4 : () => () => (isNaN: number) => (number: number) => boolean - - export class A { - >A : A - - method1(isNaN: typeof globalThis.isNaN) { return isNaN } -->method1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -+>method1 : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -20, +20 lines =@@ - >isNaN : (number: number) => boolean - - method2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN } -->method2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -+>method2 : (isNaN: (number: number) => boolean, bar?: ((number: number) => boolean) | undefined) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -14, +14 lines =@@ - >isNaN : (number: number) => boolean - - method3(isNaN: number, bar: typeof globalThis.isNaN) { return bar } -->method3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -+>method3 : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean - >isNaN : number - >bar : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean -@@= skipped -17, +17 lines =@@ - } - - export function fromParameter(isNaN: number, bar: typeof globalThis.isNaN) { -->fromParameter : (isNaN: number, bar: typeof globalThis.isNaN) => () => { bar: (number: number) => boolean; } -+>fromParameter : (isNaN: number, bar: (number: number) => boolean) => () => { bar: (number: number) => boolean; } - >isNaN : number - >bar : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean -@@= skipped -16, +16 lines =@@ - // Non-inference cases. - - export const explicitlyTypedVariable: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN = (isNaN) => isNaN; -->explicitlyTypedVariable : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>explicitlyTypedVariable : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis -@@= skipped -13, +13 lines =@@ - >isNaN : (number: number) => boolean - - export function explicitlyTypedFunction(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN { -->explicitlyTypedFunction : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -+>explicitlyTypedFunction : (isNaN: (number: number) => boolean) => (number: number) => boolean - >isNaN : (number: number) => boolean - >globalThis.isNaN : (number: number) => boolean - >globalThis : typeof globalThis \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.js b/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.js index 97bc9319d3b..00d879be5bf 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.js @@ -174,10 +174,10 @@ export declare const dual: { ) => any, DataFirst extends (...args: Array) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; }; export declare const zipWith: (F: SemiApplicative) => { - (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; + (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; }; export declare const zipRight: (F: SemiApplicative) => { - (that: Kind): (self: Kind) => Kind; + (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.js.diff index 109a9e65894..1769d2cde63 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.js.diff @@ -1,17 +1,14 @@ --- old.declarationEmitHigherOrderRetainedGenerics.js +++ new.declarationEmitHigherOrderRetainedGenerics.js -@@= skipped -173, +173 lines =@@ - ) => any, DataFirst extends (...args: Array) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; +@@= skipped -174, +174 lines =@@ }; export declare const zipWith: (F: SemiApplicative) => { -- (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; + (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; - (self: Kind, that: Kind, f: (a: A_1, b: B_1) => C_1): Kind; -+ (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; + (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; }; export declare const zipRight: (F: SemiApplicative) => { -- (that: Kind): (self: Kind) => Kind; + (that: Kind): (self: Kind) => Kind; - (self: Kind, that: Kind): Kind; -+ (that: Kind): (self: Kind) => Kind; + (self: Kind, that: Kind): Kind; }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.types b/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.types index a170231b66a..8cbc10b365b 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.types @@ -140,7 +140,7 @@ export interface SemiProduct extends Invariant { ) => Kind readonly productMany: ( ->productMany : (self: Kind, collection: Iterable>) => Kind +>productMany : (self: Kind, collection: Iterable>) => Kind]> self: Kind, >self : Kind @@ -161,7 +161,7 @@ export const SK = (_: A, b: B): B => b; >b : B export declare const dual: { ->dual : { any, DataFirst extends (...args: any[]) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; any, DataFirst extends (...args: any[]) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } +>dual : { ) => any, DataFirst extends (...args: Array) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; ) => any, DataFirst extends (...args: Array) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } ) => any, DataFirst extends (...args: Array) => any>( >args : any[] @@ -189,8 +189,8 @@ export declare const dual: { }; export const zipWith = (F: SemiApplicative): { ->zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; } ->(F: SemiApplicative): { ( that: Kind, f: (a: A, b: B) => C ): (self: Kind) => Kind ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind} => dual( 3, ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind => F.map(F.product(self, that), ([a, b]) => f(a, b)) ) : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; } +>zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; } +>(F: SemiApplicative): { ( that: Kind, f: (a: A, b: B) => C ): (self: Kind) => Kind ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind} => dual( 3, ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind => F.map(F.product(self, that), ([a, b]) => f(a, b)) ) : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; } >F : SemiApplicative ( @@ -220,8 +220,8 @@ export const zipWith = (F: SemiApplicative): { ): Kind } => dual( ->dual( 3, ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind => F.map(F.product(self, that), ([a, b]) => f(a, b)) ) : ((...args: any[]) => any) & ((self: Kind, that: Kind, f: (a: A, b: B) => C) => Kind) ->dual : { any, DataFirst extends (...args: any[]) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; any, DataFirst extends (...args: any[]) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } +>dual( 3, ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind => F.map(F.product(self, that), ([a, b]) => f(a, b)) ) : ((...args: Array) => any) & ((self: Kind, that: Kind, f: (a: A, b: B) => C) => Kind) +>dual : { ) => any, DataFirst extends (...args: Array) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; ) => any, DataFirst extends (...args: Array) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } 3, >3 : 3 @@ -263,8 +263,8 @@ export const zipWith = (F: SemiApplicative): { export const zipRight = (F: SemiApplicative): { ->zipRight : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } ->(F: SemiApplicative): { ( that: Kind ): (self: Kind) => Kind ( self: Kind, that: Kind ): Kind} => dual(2, ( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK)) : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } +>zipRight : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } +>(F: SemiApplicative): { ( that: Kind ): (self: Kind) => Kind ( self: Kind, that: Kind ): Kind} => dual(2, ( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK)) : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } >F : SemiApplicative ( @@ -284,8 +284,8 @@ export const zipRight = (F: SemiApplicative): { ): Kind } => dual(2, ( ->dual(2, ( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK)) : ((...args: any[]) => any) & ((self: Kind, that: Kind) => Kind) ->dual : { any, DataFirst extends (...args: any[]) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; any, DataFirst extends (...args: any[]) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } +>dual(2, ( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK)) : ((...args: Array) => any) & ((self: Kind, that: Kind) => Kind) +>dual : { ) => any, DataFirst extends (...args: Array) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; ) => any, DataFirst extends (...args: Array) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } >2 : 2 >( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK) : (self: Kind, that: Kind) => Kind @@ -298,7 +298,7 @@ export const zipRight = (F: SemiApplicative): { ): Kind => zipWith(F)(self, that, SK)); >zipWith(F)(self, that, SK) : Kind >zipWith(F) : { (that: Kind, f: (a: A, b: B_1) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B_1) => C): Kind; } ->zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B_1) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B_1) => C): Kind; } +>zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B_1) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B_1) => C): Kind; } >F : SemiApplicative >self : Kind >that : Kind diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.types.diff index bbb0c92db66..d712ac1837c 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitHigherOrderRetainedGenerics.types.diff @@ -1,73 +1,33 @@ --- old.declarationEmitHigherOrderRetainedGenerics.types +++ new.declarationEmitHigherOrderRetainedGenerics.types -@@= skipped -139, +139 lines =@@ - ) => Kind - - readonly productMany: ( -->productMany : (self: Kind, collection: Iterable>) => Kind]> -+>productMany : (self: Kind, collection: Iterable>) => Kind - - self: Kind, - >self : Kind -@@= skipped -21, +21 lines =@@ - >b : B - - export declare const dual: { -->dual : { ) => any, DataFirst extends (...args: Array) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; ) => any, DataFirst extends (...args: Array) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } -+>dual : { any, DataFirst extends (...args: any[]) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; any, DataFirst extends (...args: any[]) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } - - ) => any, DataFirst extends (...args: Array) => any>( - >args : any[] -@@= skipped -28, +28 lines =@@ +@@= skipped -188, +188 lines =@@ }; export const zipWith = (F: SemiApplicative): { ->zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A_1, b: B_1) => C_1): Kind; } ->(F: SemiApplicative): { ( that: Kind, f: (a: A, b: B) => C ): (self: Kind) => Kind ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind} => dual( 3, ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind => F.map(F.product(self, that), ([a, b]) => f(a, b)) ) : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A_1, b: B_1) => C_1): Kind; } -+>zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; } -+>(F: SemiApplicative): { ( that: Kind, f: (a: A, b: B) => C ): (self: Kind) => Kind ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind} => dual( 3, ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind => F.map(F.product(self, that), ([a, b]) => f(a, b)) ) : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; } ++>zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; } ++>(F: SemiApplicative): { ( that: Kind, f: (a: A, b: B) => C ): (self: Kind) => Kind ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind} => dual( 3, ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind => F.map(F.product(self, that), ([a, b]) => f(a, b)) ) : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B) => C): Kind; } >F : SemiApplicative ( -@@= skipped -31, +31 lines =@@ - ): Kind - } => - dual( -->dual( 3, ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind => F.map(F.product(self, that), ([a, b]) => f(a, b)) ) : ((...args: Array) => any) & ((self: Kind, that: Kind, f: (a: A, b: B) => C) => Kind) -->dual : { ) => any, DataFirst extends (...args: Array) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; ) => any, DataFirst extends (...args: Array) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } -+>dual( 3, ( self: Kind, that: Kind, f: (a: A, b: B) => C ): Kind => F.map(F.product(self, that), ([a, b]) => f(a, b)) ) : ((...args: any[]) => any) & ((self: Kind, that: Kind, f: (a: A, b: B) => C) => Kind) -+>dual : { any, DataFirst extends (...args: any[]) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; any, DataFirst extends (...args: any[]) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } - - 3, - >3 : 3 -@@= skipped -43, +43 lines =@@ +@@= skipped -74, +74 lines =@@ export const zipRight = (F: SemiApplicative): { ->zipRight : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } ->(F: SemiApplicative): { ( that: Kind ): (self: Kind) => Kind ( self: Kind, that: Kind ): Kind} => dual(2, ( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK)) : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } -+>zipRight : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } -+>(F: SemiApplicative): { ( that: Kind ): (self: Kind) => Kind ( self: Kind, that: Kind ): Kind} => dual(2, ( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK)) : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } ++>zipRight : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } ++>(F: SemiApplicative): { ( that: Kind ): (self: Kind) => Kind ( self: Kind, that: Kind ): Kind} => dual(2, ( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK)) : (F: SemiApplicative) => { (that: Kind): (self: Kind) => Kind; (self: Kind, that: Kind): Kind; } >F : SemiApplicative ( -@@= skipped -21, +21 lines =@@ - ): Kind - } => - dual(2, ( -->dual(2, ( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK)) : ((...args: Array) => any) & ((self: Kind, that: Kind) => Kind) -->dual : { ) => any, DataFirst extends (...args: Array) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; ) => any, DataFirst extends (...args: Array) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } -+>dual(2, ( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK)) : ((...args: any[]) => any) & ((self: Kind, that: Kind) => Kind) -+>dual : { any, DataFirst extends (...args: any[]) => any>(arity: Parameters["length"], body: DataFirst): DataLast & DataFirst; any, DataFirst extends (...args: any[]) => any>(isDataFirst: (args: IArguments) => boolean, body: DataFirst): DataLast & DataFirst; } - >2 : 2 - >( self: Kind, that: Kind ): Kind => zipWith(F)(self, that, SK) : (self: Kind, that: Kind) => Kind - -@@= skipped -14, +14 lines =@@ +@@= skipped -35, +35 lines =@@ ): Kind => zipWith(F)(self, that, SK)); >zipWith(F)(self, that, SK) : Kind >zipWith(F) : { (that: Kind, f: (a: A, b: B_1) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B_1) => C): Kind; } ->zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B_1) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A_1, b: B_2) => C_1): Kind; } -+>zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B_1) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B_1) => C): Kind; } ++>zipWith : (F: SemiApplicative) => { (that: Kind, f: (a: A, b: B_1) => C): (self: Kind) => Kind; (self: Kind, that: Kind, f: (a: A, b: B_1) => C): Kind; } >F : SemiApplicative >self : Kind >that : Kind \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt b/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt new file mode 100644 index 00000000000..fffc7d52fff --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt @@ -0,0 +1,69 @@ +index.ts(5,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +index.ts(6,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +index.ts(7,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + + +==== node_modules/@trpc/server/internals/config.d.ts (0 errors) ==== + export interface RootConfig { + prop: T; + } +==== node_modules/@trpc/server/internals/utils.d.ts (0 errors) ==== + export interface ErrorFormatterShape { + prop: T; + } + export type PickFirstDefined = undefined extends TType + ? undefined extends TPick + ? never + : TPick + : TType; + export interface ErrorFormatter { + prop: [T, U]; + } + export interface DefaultErrorShape { + prop: T; + } +==== node_modules/@trpc/server/middleware.d.ts (0 errors) ==== + export interface MiddlewareFunction { + prop: [T, U]; + } + export interface MiddlewareBuilder { + prop: [T, U]; + } +==== node_modules/@trpc/server/index.d.ts (0 errors) ==== + import { RootConfig } from './internals/config'; + import { ErrorFormatterShape, PickFirstDefined, ErrorFormatter, DefaultErrorShape } from './internals/utils'; + declare class TRPCBuilder { + create>(): { + procedure: {}; + middleware: >(fn: import("./middleware").MiddlewareFunction<{ + _config: RootConfig<{ + errorShape: ErrorFormatterShape>>; + }>; + }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ + _config: RootConfig<{ + errorShape: ErrorFormatterShape>>; + }>; + }, TNewParams>; + router: {}; + }; + } + + export declare const initTRPC: TRPCBuilder; + export {}; +==== index.ts (3 errors) ==== + import { initTRPC } from "@trpc/server"; + + const trpc = initTRPC.create(); + + export const middleware = trpc.middleware; + ~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 index.ts:5:14: Add a type annotation to the variable middleware. + export const router = trpc.router; + ~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 index.ts:6:14: Add a type annotation to the variable router. + export const publicProcedure = trpc.procedure; + ~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 index.ts:7:14: Add a type annotation to the variable publicProcedure. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt.diff deleted file mode 100644 index 160c2e08c3b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt.diff +++ /dev/null @@ -1,73 +0,0 @@ ---- old.declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt -+++ new.declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.errors.txt -@@= skipped -0, +0 lines =@@ --index.ts(5,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --index.ts(6,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --index.ts(7,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. -- -- --==== node_modules/@trpc/server/internals/config.d.ts (0 errors) ==== -- export interface RootConfig { -- prop: T; -- } --==== node_modules/@trpc/server/internals/utils.d.ts (0 errors) ==== -- export interface ErrorFormatterShape { -- prop: T; -- } -- export type PickFirstDefined = undefined extends TType -- ? undefined extends TPick -- ? never -- : TPick -- : TType; -- export interface ErrorFormatter { -- prop: [T, U]; -- } -- export interface DefaultErrorShape { -- prop: T; -- } --==== node_modules/@trpc/server/middleware.d.ts (0 errors) ==== -- export interface MiddlewareFunction { -- prop: [T, U]; -- } -- export interface MiddlewareBuilder { -- prop: [T, U]; -- } --==== node_modules/@trpc/server/index.d.ts (0 errors) ==== -- import { RootConfig } from './internals/config'; -- import { ErrorFormatterShape, PickFirstDefined, ErrorFormatter, DefaultErrorShape } from './internals/utils'; -- declare class TRPCBuilder { -- create>(): { -- procedure: {}; -- middleware: >(fn: import("./middleware").MiddlewareFunction<{ -- _config: RootConfig<{ -- errorShape: ErrorFormatterShape>>; -- }>; -- }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ -- _config: RootConfig<{ -- errorShape: ErrorFormatterShape>>; -- }>; -- }, TNewParams>; -- router: {}; -- }; -- } -- -- export declare const initTRPC: TRPCBuilder; -- export {}; --==== index.ts (3 errors) ==== -- import { initTRPC } from "@trpc/server"; -- -- const trpc = initTRPC.create(); -- -- export const middleware = trpc.middleware; -- ~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 index.ts:5:14: Add a type annotation to the variable middleware. -- export const router = trpc.router; -- ~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 index.ts:6:14: Add a type annotation to the variable router. -- export const publicProcedure = trpc.procedure; -- ~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 index.ts:7:14: Add a type annotation to the variable publicProcedure. -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types b/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types index 5f10b638f51..5066eaf2428 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types @@ -48,17 +48,17 @@ declare class TRPCBuilder { >TRPCBuilder : TRPCBuilder create>(): { ->create : >() => { procedure: {}; middleware: >(fn: import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams>; router: {}; } +>create : >() => { procedure: {}; middleware: >(fn: import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams>; router: {}; } procedure: {}; >procedure : {} middleware: >(fn: import("./middleware").MiddlewareFunction<{ ->middleware : >(fn: import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams> ->fn : import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams> +>middleware : >(fn: import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams> +>fn : import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams> _config: RootConfig<{ ->_config : RootConfig<{ errorShape: ErrorFormatterShape>>>; }> +>_config : RootConfig<{ errorShape: ErrorFormatterShape>>; }> errorShape: ErrorFormatterShape>>; >errorShape : ErrorFormatterShape>>> @@ -66,7 +66,7 @@ declare class TRPCBuilder { }>; }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ _config: RootConfig<{ ->_config : RootConfig<{ errorShape: ErrorFormatterShape>>>; }> +>_config : RootConfig<{ errorShape: ErrorFormatterShape>>; }> errorShape: ErrorFormatterShape>>; >errorShape : ErrorFormatterShape>>> diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types.diff deleted file mode 100644 index 0a2f6f9cbd2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types.diff +++ /dev/null @@ -1,33 +0,0 @@ ---- old.declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types -+++ new.declarationEmitIsolatedDeclarationErrorNotEmittedForNonEmittedFile.types -@@= skipped -47, +47 lines =@@ - >TRPCBuilder : TRPCBuilder - - create>(): { -->create : >() => { procedure: {}; middleware: >(fn: import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams>; router: {}; } -+>create : >() => { procedure: {}; middleware: >(fn: import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams>; router: {}; } - - procedure: {}; - >procedure : {} - - middleware: >(fn: import("./middleware").MiddlewareFunction<{ -->middleware : >(fn: import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams> -->fn : import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>; }>; }, TNewParams> -+>middleware : >(fn: import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams> -+>fn : import("./middleware").MiddlewareFunction<{ _config: RootConfig<{ errorShape: ErrorFormatterShape>>>; }>; }, TNewParams> - - _config: RootConfig<{ -->_config : RootConfig<{ errorShape: ErrorFormatterShape>>; }> -+>_config : RootConfig<{ errorShape: ErrorFormatterShape>>>; }> - - errorShape: ErrorFormatterShape>>; - >errorShape : ErrorFormatterShape>>> -@@= skipped -18, +18 lines =@@ - }>; - }, TNewParams>) => import("./middleware").MiddlewareBuilder<{ - _config: RootConfig<{ -->_config : RootConfig<{ errorShape: ErrorFormatterShape>>; }> -+>_config : RootConfig<{ errorShape: ErrorFormatterShape>>>; }> - - errorShape: ErrorFormatterShape>>; - >errorShape : ErrorFormatterShape>>> \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types index 7437612dd5c..d4629071756 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types @@ -12,7 +12,7 @@ type AllArg = { [K in keyof T]: Parameters }; >AllArg : AllArg function fn }>(sliceIndex: T): AllArg { ->fn : ; }>(sliceIndex: T) => AllArg +>fn : ; }>(sliceIndex: T) => AllArg >x : Map >sliceIndex : T @@ -21,8 +21,8 @@ function fn }>(sliceIndex: T): AllArg { } export default { fn }; ->{ fn } : { fn: ; }>(sliceIndex: T) => AllArg; } ->fn : ; }>(sliceIndex: T) => AllArg +>{ fn } : { fn: ; }>(sliceIndex: T) => AllArg; } +>fn : ; }>(sliceIndex: T) => AllArg === reexport.ts === import test from "./types"; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types.diff index 5e519d47016..fbb2fd5a503 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types.diff @@ -1,6 +1,22 @@ --- old.declarationEmitMappedTypeDistributivityPreservesConstraints.types +++ new.declarationEmitMappedTypeDistributivityPreservesConstraints.types -@@= skipped -25, +25 lines =@@ +@@= skipped -11, +11 lines =@@ + >AllArg : AllArg + + function fn }>(sliceIndex: T): AllArg { +->fn : ; }>(sliceIndex: T) => AllArg ++>fn : ; }>(sliceIndex: T) => AllArg + >x : Map + >sliceIndex : T + +@@= skipped -9, +9 lines =@@ + } + + export default { fn }; +->{ fn } : { fn: ; }>(sliceIndex: T) => AllArg; } +->fn : ; }>(sliceIndex: T) => AllArg ++>{ fn } : { fn: ; }>(sliceIndex: T) => AllArg; } ++>fn : ; }>(sliceIndex: T) => AllArg === reexport.ts === import test from "./types"; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js index 86321d6aa49..3a2cd0662b5 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js @@ -93,9 +93,9 @@ export declare type objectOutputType = flatten(version: V) => addQuestionMarks(version: V) => objectOutputType<{ version: ZodLiteral; -}>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: T[k]; } : never; +}>; type evaluate = { [k in keyof t]: t[k]; } & unknown; @@ -103,5 +103,5 @@ export type entryOf = evaluate<{ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o]>; export type entriesOf = evaluate[]>; -export declare const entriesOf: (o: o) => ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[]; +export declare const entriesOf: (o: o) => entriesOf; export {}; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js.diff deleted file mode 100644 index 168fd9b81ed..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.declarationEmitMappedTypePreservesTypeParameterConstraint.js -+++ new.declarationEmitMappedTypePreservesTypeParameterConstraint.js -@@= skipped -92, +92 lines =@@ - export declare type ZodRawShape = { - [k: string]: ZodTypeAny; - }; --export declare const buildSchema: (version: V) => objectOutputType<{ -+export declare const buildSchema: (version: V) => addQuestionMarks; --}>; -+}>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: T[k]; } : never; - type evaluate = { - [k in keyof t]: t[k]; - } & unknown; -@@= skipped -10, +10 lines =@@ - [k in keyof o]-?: [k, o[k] & ({} | null)]; - }[o extends readonly unknown[] ? keyof o & number : keyof o]>; - export type entriesOf = evaluate[]>; --export declare const entriesOf: (o: o) => entriesOf; -+export declare const entriesOf: (o: o) => ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[]; - export {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types index 71e84cd1c48..162bc764704 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types @@ -60,8 +60,8 @@ export declare type ZodRawShape = { }; export const buildSchema = ( ->buildSchema : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: T[k]; } : never ->( version: V): objectOutputType<{ version: ZodLiteral;}> => ({} as any) : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: T[k]; } : never +>buildSchema : (version: V) => objectOutputType<{ version: ZodLiteral; }> +>( version: V): objectOutputType<{ version: ZodLiteral;}> => ({} as any) : (version: V) => objectOutputType<{ version: ZodLiteral; }> version: V >version : V @@ -92,15 +92,15 @@ export type entriesOf = evaluate[]> >entriesOf : ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[] export const entriesOf = (o: o) => ->entriesOf : (o: o) => ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[] ->(o: o) => Object.entries(o) as entriesOf : (o: o) => ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[] +>entriesOf : (o: o) => entriesOf +>(o: o) => Object.entries(o) as entriesOf : (o: o) => entriesOf >o : o Object.entries(o) as entriesOf >Object.entries(o) as entriesOf : ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[] >Object.entries(o) : [string, any][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >o : o diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types.diff index 0bd36214a9f..ad7311cc869 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types.diff @@ -1,17 +1,6 @@ --- old.declarationEmitMappedTypePreservesTypeParameterConstraint.types +++ new.declarationEmitMappedTypePreservesTypeParameterConstraint.types -@@= skipped -59, +59 lines =@@ - }; - - export const buildSchema = ( -->buildSchema : (version: V) => objectOutputType<{ version: ZodLiteral; }> -->( version: V): objectOutputType<{ version: ZodLiteral;}> => ({} as any) : (version: V) => objectOutputType<{ version: ZodLiteral; }> -+>buildSchema : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: T[k]; } : never -+>( version: V): objectOutputType<{ version: ZodLiteral;}> => ({} as any) : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: T[k]; } : never - - version: V - >version : V -@@= skipped -21, +21 lines =@@ +@@= skipped -80, +80 lines =@@ >evaluate : { [k in keyof t]: t[k]; } export type entryOf = evaluate< @@ -28,19 +17,13 @@ +>entriesOf : ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[] export const entriesOf = (o: o) => -->entriesOf : (o: o) => entriesOf -->(o: o) => Object.entries(o) as entriesOf : (o: o) => entriesOf -+>entriesOf : (o: o) => ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[] -+>(o: o) => Object.entries(o) as entriesOf : (o: o) => ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[] + >entriesOf : (o: o) => entriesOf +@@= skipped -8, +8 lines =@@ >o : o Object.entries(o) as entriesOf ->Object.entries(o) as entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[] +>Object.entries(o) as entriesOf : ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[] >Object.entries(o) : [string, any][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >o : o + >Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } + >Object : ObjectConstructor \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePropertyFromNumericStringKey.types b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePropertyFromNumericStringKey.types index 04705c37ee5..ce58b109cce 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePropertyFromNumericStringKey.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePropertyFromNumericStringKey.types @@ -4,8 +4,8 @@ export const f = ((arg: {[K in keyof T]: T[K] | string}) => arg)({'0': 0}); // Original prop uses string syntax >f : { '0': string | number; } >((arg: {[K in keyof T]: T[K] | string}) => arg)({'0': 0}) : { '0': string | number; } ->((arg: {[K in keyof T]: T[K] | string}) => arg) : (arg: { [K in keyof T]: string | T[K]; }) => { [K in keyof T]: string | T[K]; } ->(arg: {[K in keyof T]: T[K] | string}) => arg : (arg: { [K in keyof T]: string | T[K]; }) => { [K in keyof T]: string | T[K]; } +>((arg: {[K in keyof T]: T[K] | string}) => arg) : (arg: { [K in keyof T]: T[K] | string; }) => { [K in keyof T]: string | T[K]; } +>(arg: {[K in keyof T]: T[K] | string}) => arg : (arg: { [K in keyof T]: T[K] | string; }) => { [K in keyof T]: string | T[K]; } >arg : { [K in keyof T]: string | T[K]; } >arg : { [K in keyof T]: string | T[K]; } >{'0': 0} : { '0': number; } diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePropertyFromNumericStringKey.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePropertyFromNumericStringKey.types.diff deleted file mode 100644 index a26d381f108..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePropertyFromNumericStringKey.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitMappedTypePropertyFromNumericStringKey.types -+++ new.declarationEmitMappedTypePropertyFromNumericStringKey.types -@@= skipped -3, +3 lines =@@ - export const f = ((arg: {[K in keyof T]: T[K] | string}) => arg)({'0': 0}); // Original prop uses string syntax - >f : { '0': string | number; } - >((arg: {[K in keyof T]: T[K] | string}) => arg)({'0': 0}) : { '0': string | number; } -->((arg: {[K in keyof T]: T[K] | string}) => arg) : (arg: { [K in keyof T]: T[K] | string; }) => { [K in keyof T]: string | T[K]; } -->(arg: {[K in keyof T]: T[K] | string}) => arg : (arg: { [K in keyof T]: T[K] | string; }) => { [K in keyof T]: string | T[K]; } -+>((arg: {[K in keyof T]: T[K] | string}) => arg) : (arg: { [K in keyof T]: string | T[K]; }) => { [K in keyof T]: string | T[K]; } -+>(arg: {[K in keyof T]: T[K] | string}) => arg : (arg: { [K in keyof T]: string | T[K]; }) => { [K in keyof T]: string | T[K]; } - >arg : { [K in keyof T]: string | T[K]; } - >arg : { [K in keyof T]: string | T[K]; } - >{'0': 0} : { '0': number; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeTemplateTypeofSymbol.types b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeTemplateTypeofSymbol.types index 6653e3990c4..f17557a57c4 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeTemplateTypeofSymbol.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeTemplateTypeofSymbol.types @@ -14,7 +14,7 @@ export declare const Timestamp: { }; export declare function now(): typeof Timestamp; ->now : () => { [timestampSymbol]: true; } +>now : () => typeof Timestamp >Timestamp : { [timestampSymbol]: true; } === b.ts === @@ -24,16 +24,16 @@ import * as x from "./a"; export const timestamp = x.now(); >timestamp : { [x.timestampSymbol]: true; } >x.now() : { [x.timestampSymbol]: true; } ->x.now : () => { [x.timestampSymbol]: true; } +>x.now : () => typeof x.Timestamp >x : typeof x ->now : () => { [x.timestampSymbol]: true; } +>now : () => typeof x.Timestamp === c.ts === import { now } from "./a"; ->now : () => { [timestampSymbol]: true; } +>now : () => typeof import("./a").Timestamp export const timestamp = now(); >timestamp : { [timestampSymbol]: true; } >now() : { [timestampSymbol]: true; } ->now : () => { [timestampSymbol]: true; } +>now : () => typeof import("./a").Timestamp diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeTemplateTypeofSymbol.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeTemplateTypeofSymbol.types.diff deleted file mode 100644 index 8ac93fcd508..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeTemplateTypeofSymbol.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.declarationEmitMappedTypeTemplateTypeofSymbol.types -+++ new.declarationEmitMappedTypeTemplateTypeofSymbol.types -@@= skipped -13, +13 lines =@@ - }; - - export declare function now(): typeof Timestamp; -->now : () => typeof Timestamp -+>now : () => { [timestampSymbol]: true; } - >Timestamp : { [timestampSymbol]: true; } - - === b.ts === -@@= skipped -10, +10 lines =@@ - export const timestamp = x.now(); - >timestamp : { [x.timestampSymbol]: true; } - >x.now() : { [x.timestampSymbol]: true; } -->x.now : () => typeof x.Timestamp -+>x.now : () => { [x.timestampSymbol]: true; } - >x : typeof x -->now : () => typeof x.Timestamp -+>now : () => { [x.timestampSymbol]: true; } - - === c.ts === - import { now } from "./a"; -->now : () => typeof import("./a").Timestamp -+>now : () => { [timestampSymbol]: true; } - - export const timestamp = now(); - >timestamp : { [timestampSymbol]: true; } - >now() : { [timestampSymbol]: true; } -->now : () => typeof import("./a").Timestamp -+>now : () => { [timestampSymbol]: true; } diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.js b/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.js index 20fd651954b..a5239bd3d8a 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.js @@ -24,19 +24,5 @@ function g(x) { //// [declarationEmitNestedGenerics.d.ts] -declare function f(p: T): (x: T) => T_1; +declare function f(p: T): (x: T) => typeof p; declare function g(x: T): T extends (infer T_1)[] ? T_1 : T; - - -//// [DtsFileErrors] - - -declarationEmitNestedGenerics.d.ts(1,43): error TS2304: Cannot find name 'T_1'. - - -==== declarationEmitNestedGenerics.d.ts (1 errors) ==== - declare function f(p: T): (x: T) => T_1; - ~~~ -!!! error TS2304: Cannot find name 'T_1'. - declare function g(x: T): T extends (infer T_1)[] ? T_1 : T; - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.js.diff index 6600d9e2a31..33dd9963b0e 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.js.diff @@ -5,19 +5,5 @@ //// [declarationEmitNestedGenerics.d.ts] -declare function f(p: T): (x: T_1) => typeof p; -+declare function f(p: T): (x: T) => T_1; - declare function g(x: T): T extends (infer T_1)[] ? T_1 : T; -+ -+ -+//// [DtsFileErrors] -+ -+ -+declarationEmitNestedGenerics.d.ts(1,43): error TS2304: Cannot find name 'T_1'. -+ -+ -+==== declarationEmitNestedGenerics.d.ts (1 errors) ==== -+ declare function f(p: T): (x: T) => T_1; -+ ~~~ -+!!! error TS2304: Cannot find name 'T_1'. -+ declare function g(x: T): T extends (infer T_1)[] ? T_1 : T; -+ \ No newline at end of file ++declare function f(p: T): (x: T) => typeof p; + declare function g(x: T): T extends (infer T_1)[] ? T_1 : T; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.types b/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.types index c7a43ce7f09..19e8287f514 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.types @@ -2,17 +2,17 @@ === declarationEmitNestedGenerics.ts === function f(p: T) { ->f : (p: T) => (x: T_1) => T +>f : (p: T) => (x: T_1) => typeof p >p : T let g: (x: T) => typeof p = null as any; ->g : (x: T_1) => T +>g : (x: T_1) => typeof p >x : T >p : T_1 >null as any : any return g; ->g : (x: T_1) => T +>g : (x: T_1) => typeof p } function g(x: T) { diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.types.diff deleted file mode 100644 index 296d9dfcfd3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNestedGenerics.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.declarationEmitNestedGenerics.types -+++ new.declarationEmitNestedGenerics.types -@@= skipped -1, +1 lines =@@ - - === declarationEmitNestedGenerics.ts === - function f(p: T) { -->f : (p: T) => (x: T_1) => typeof p -+>f : (p: T) => (x: T_1) => T - >p : T - - let g: (x: T) => typeof p = null as any; -->g : (x: T_1) => typeof p -+>g : (x: T_1) => T - >x : T - >p : T_1 - >null as any : any - - return g; -->g : (x: T_1) => typeof p -+>g : (x: T_1) => T - } - - function g(x: T) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.js b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.js index 55dfb44bf16..44b3fcf5b9c 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.js @@ -22,7 +22,7 @@ export type Id = T; //// [a.d.ts] export declare const _: { - foo: {}; + foo: import("./id").Id<{}>; }; /** * huh diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.js.diff deleted file mode 100644 index c1b28019486..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.declarationEmitNoInvalidCommentReuse1.js -+++ new.declarationEmitNoInvalidCommentReuse1.js -@@= skipped -21, +21 lines =@@ - - //// [a.d.ts] - export declare const _: { -- foo: import("./id").Id<{}>; -+ foo: {}; - }; - /** - * huh \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.types b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.types index 985e8e3ec74..67f5e6f6961 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.types @@ -2,11 +2,11 @@ === a.ts === import { object } from "./obj"; ->object : { foo: {}; } +>object : { foo: import("./id.js").Id<{}>; } export const _ = object; ->_ : { foo: {}; } ->object : { foo: {}; } +>_ : { foo: import("./id").Id<{}>; } +>object : { foo: import("./id").Id<{}>; } /////////// /** @@ -14,7 +14,7 @@ export const _ = object; */ === obj.d.ts === export declare const object: import("./id").Id<{ ->object : { foo: {}; } +>object : { foo: import("./id").Id<{}>; } foo: import("./id" ).Id<{}>; >foo : {} diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.types.diff deleted file mode 100644 index 55ccd3a5756..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse1.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.declarationEmitNoInvalidCommentReuse1.types -+++ new.declarationEmitNoInvalidCommentReuse1.types -@@= skipped -1, +1 lines =@@ - - === a.ts === - import { object } from "./obj"; -->object : { foo: import("./id.js").Id<{}>; } -+>object : { foo: {}; } - - export const _ = object; -->_ : { foo: import("./id").Id<{}>; } -->object : { foo: import("./id").Id<{}>; } -+>_ : { foo: {}; } -+>object : { foo: {}; } - - /////////// - /** -@@= skipped -12, +12 lines =@@ - */ - === obj.d.ts === - export declare const object: import("./id").Id<{ -->object : { foo: import("./id").Id<{}>; } -+>object : { foo: {}; } - - foo: import("./id" ).Id<{}>; - >foo : {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.js b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.js index 46e141d13ab..35a8c500dc4 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.js @@ -22,7 +22,7 @@ export type Id = T; //// [a.d.ts] export declare const _: { - foo: {}; + foo: import("./id.d.ts").Id<{}>; }; /** * huh diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.js.diff index b708087b269..202b54db981 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.js.diff @@ -5,7 +5,7 @@ //// [a.d.ts] export declare const _: { - foo: import("./id").Id<{}>; -+ foo: {}; ++ foo: import("./id.d.ts").Id<{}>; }; /** * huh \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.types b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.types index d6128cc6a66..347dc96ce08 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.types @@ -2,11 +2,11 @@ === a.ts === import { object } from "./obj.ts"; ->object : { foo: {}; } +>object : { foo: import("./id.d.ts").Id<{}>; } export const _ = object; ->_ : { foo: {}; } ->object : { foo: {}; } +>_ : { foo: import("./id.d.ts").Id<{}>; } +>object : { foo: import("./id.d.ts").Id<{}>; } /////////// /** @@ -14,7 +14,7 @@ export const _ = object; */ === obj.d.ts === export declare const object: import("./id.ts").Id<{ ->object : { foo: {}; } +>object : { foo: import("./id.ts").Id<{}>; } foo: import("./id.ts" ).Id<{}>; >foo : {} diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.types.diff index 0da09930419..37f3c6b073e 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse2.types.diff @@ -5,22 +5,13 @@ === a.ts === import { object } from "./obj.ts"; ->object : { foo: import("./id").Id<{}>; } -+>object : { foo: {}; } ++>object : { foo: import("./id.d.ts").Id<{}>; } export const _ = object; ->_ : { foo: import("./id").Id<{}>; } ->object : { foo: import("./id").Id<{}>; } -+>_ : { foo: {}; } -+>object : { foo: {}; } ++>_ : { foo: import("./id.d.ts").Id<{}>; } ++>object : { foo: import("./id.d.ts").Id<{}>; } /////////// - /** -@@= skipped -12, +12 lines =@@ - */ - === obj.d.ts === - export declare const object: import("./id.ts").Id<{ -->object : { foo: import("./id.ts").Id<{}>; } -+>object : { foo: {}; } - - foo: import("./id.ts" ).Id<{}>; - >foo : {} \ No newline at end of file + /** \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.js b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.js index 966a63c1a65..c23f2cec44a 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.js @@ -21,8 +21,9 @@ export declare namespace id { //// [a.d.ts] +import { id } from "./id"; export declare const _: { - foo: 1; + foo: id.A<1>; }; /** */ diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.js.diff deleted file mode 100644 index 3e5811d7a3e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.js.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitNoInvalidCommentReuse3.js -+++ new.declarationEmitNoInvalidCommentReuse3.js -@@= skipped -20, +20 lines =@@ - - - //// [a.d.ts] --import { id } from "./id"; - export declare const _: { -- foo: id.A<1>; -+ foo: 1; - }; - /** - */ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.types b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.types index 8a493c64f3f..4a3b1b9995b 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.types @@ -2,14 +2,14 @@ === a.ts === import { object } from "./obj"; ->object : { foo: 1; } +>object : { foo: id.A<1>; } import { id } from "./id"; >id : any export const _ = object; ->_ : { foo: 1; } ->object : { foo: 1; } +>_ : { foo: id.A<1>; } +>object : { foo: id.A<1>; } /** */ @@ -19,7 +19,7 @@ import { id } from "./id"; // ---- export declare const object: id.A<{ ->object : { foo: 1; } +>object : { foo: id.A<1>; } >id : any foo: id.A<1> diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.types.diff deleted file mode 100644 index a182e3be673..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitNoInvalidCommentReuse3.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.declarationEmitNoInvalidCommentReuse3.types -+++ new.declarationEmitNoInvalidCommentReuse3.types -@@= skipped -1, +1 lines =@@ - - === a.ts === - import { object } from "./obj"; -->object : { foo: id.A<1>; } -+>object : { foo: 1; } - - import { id } from "./id"; - >id : any - - export const _ = object; -->_ : { foo: id.A<1>; } -->object : { foo: id.A<1>; } -+>_ : { foo: 1; } -+>object : { foo: 1; } - - /** - */ -@@= skipped -17, +17 lines =@@ - - // ---- - export declare const object: id.A<{ -->object : { foo: id.A<1>; } -+>object : { foo: 1; } - >id : any - - foo: id.A<1> \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectAssignedDefaultExport.types b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectAssignedDefaultExport.types index d97750c6d6e..d13d03cb00e 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectAssignedDefaultExport.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectAssignedDefaultExport.types @@ -40,7 +40,7 @@ export interface StyledComponentBase StyledComponent<"div">; ->div : (a: TemplateStringsArray) => StyledComponent<"div", DefaultTheme, {}, never> +>div : (a: TemplateStringsArray) => StyledComponent<"div"> >a : TemplateStringsArray } @@ -57,25 +57,25 @@ import styled from "styled-components"; const A = styled.div``; >A : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> >styled.div`` : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> ->styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> +>styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> >styled : import("styled-components").StyledInterface ->div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> +>div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> >`` : "" const B = styled.div``; >B : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> >styled.div`` : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> ->styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> +>styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> >styled : import("styled-components").StyledInterface ->div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> +>div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> >`` : "" export const C = styled.div``; >C : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> >styled.div`` : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> ->styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> +>styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> >styled : import("styled-components").StyledInterface ->div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> +>div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> >`` : "" export default Object.assign(A, { diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectAssignedDefaultExport.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectAssignedDefaultExport.types.diff deleted file mode 100644 index 5c3aa790b5d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectAssignedDefaultExport.types.diff +++ /dev/null @@ -1,43 +0,0 @@ ---- old.declarationEmitObjectAssignedDefaultExport.types -+++ new.declarationEmitObjectAssignedDefaultExport.types -@@= skipped -39, +39 lines =@@ - } - export interface StyledInterface { - div: (a: TemplateStringsArray) => StyledComponent<"div">; -->div : (a: TemplateStringsArray) => StyledComponent<"div"> -+>div : (a: TemplateStringsArray) => StyledComponent<"div", DefaultTheme, {}, never> - >a : TemplateStringsArray - } - -@@= skipped -17, +17 lines =@@ - const A = styled.div``; - >A : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> - >styled.div`` : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> -->styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> -+>styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> - >styled : import("styled-components").StyledInterface -->div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> -+>div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> - >`` : "" - - const B = styled.div``; - >B : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> - >styled.div`` : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> -->styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> -+>styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> - >styled : import("styled-components").StyledInterface -->div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> -+>div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> - >`` : "" - - export const C = styled.div``; - >C : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> - >styled.div`` : import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> -->styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> -+>styled.div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> - >styled : import("styled-components").StyledInterface -->div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div"> -+>div : (a: TemplateStringsArray) => import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never> - >`` : "" - - export default Object.assign(A, { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessors1.js b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessors1.js index 0ce00d2f8f9..f17f39f3ff4 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessors1.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessors1.js @@ -39,7 +39,9 @@ export const obj4 = { //// [declarationEmitObjectLiteralAccessors1.d.ts] export declare const obj1: { /** my awesome getter (first in source order) */ - x: string; + get x(): string; + /** my awesome setter (second in source order) */ + set x(a: string); }; export declare const obj2: { /** my awesome getter */ diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessors1.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessors1.js.diff new file mode 100644 index 00000000000..2d32258ebd1 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessors1.js.diff @@ -0,0 +1,13 @@ +--- old.declarationEmitObjectLiteralAccessors1.js ++++ new.declarationEmitObjectLiteralAccessors1.js +@@= skipped -38, +38 lines =@@ + //// [declarationEmitObjectLiteralAccessors1.d.ts] + export declare const obj1: { + /** my awesome getter (first in source order) */ +- x: string; ++ get x(): string; ++ /** my awesome setter (second in source order) */ ++ set x(a: string); + }; + export declare const obj2: { + /** my awesome getter */ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessorsJs1.js b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessorsJs1.js index 0e9ddb25109..0596a13f37a 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessorsJs1.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessorsJs1.js @@ -60,7 +60,12 @@ export declare const obj1: { * my awesome getter (first in source order) * @returns {string} */ - x: string; + get x(): string; + /** + * my awesome setter (second in source order) + * @param {string} a + */ + set x(a: string); }; export declare const obj2: { /** diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessorsJs1.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessorsJs1.js.diff index a11d1cf2c34..d9e2c291b33 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessorsJs1.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitObjectLiteralAccessorsJs1.js.diff @@ -13,13 +13,18 @@ + * my awesome getter (first in source order) + * @returns {string} + */ -+ x: string; ++ get x(): string; ++ /** ++ * my awesome setter (second in source order) ++ * @param {string} a ++ */ ++ set x(a: string); +}; +export declare const obj2: { /** * my awesome getter * @returns {string} -@@= skipped -15, +19 lines =@@ +@@= skipped -15, +24 lines =@@ */ set x(a: number); }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types index 224805d8669..0e3f2f321a0 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types @@ -8,7 +8,7 @@ type Id = { } & {}; export declare function createApi(_: { endpoints: Definitions }): { ->createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => { status: "uninitialized"; originalArgs?: undefined; }; } +>createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => Id<{ status: "uninitialized"; originalArgs?: undefined; }>; } >_ : { endpoints: Definitions; } >endpoints : Definitions diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types.diff deleted file mode 100644 index 457db89998b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types -+++ new.declarationEmitOptionalMappedTypePropertyNoStrictNullChecks1.types -@@= skipped -7, +7 lines =@@ - } & {}; - - export declare function createApi(_: { endpoints: Definitions }): { -->createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => Id<{ status: "uninitialized"; originalArgs?: undefined; }>; } -+>createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => { status: "uninitialized"; originalArgs?: undefined; }; } - >_ : { endpoints: Definitions; } - >endpoints : Definitions diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types index 4ee40ded0a2..be51d857195 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types @@ -8,7 +8,7 @@ type Id = { } & {}; export declare function createApi(_: { endpoints: Definitions }): { ->createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => { status: "uninitialized"; originalArgs?: any[]; }; } +>createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => Id<{ status: "uninitialized"; originalArgs?: any[]; }>; } >_ : { endpoints: Definitions; } >endpoints : Definitions diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types.diff deleted file mode 100644 index daf02eece9a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types -+++ new.declarationEmitOptionalMappedTypePropertyNoStrictNullChecks2.types -@@= skipped -7, +7 lines =@@ - } & {}; - - export declare function createApi(_: { endpoints: Definitions }): { -->createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => Id<{ status: "uninitialized"; originalArgs?: any[]; }>; } -+>createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => { status: "uninitialized"; originalArgs?: any[]; }; } - >_ : { endpoints: Definitions; } - >endpoints : Definitions diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types index 77a11385d04..4539b9910d9 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types @@ -8,7 +8,7 @@ type Id = { } & {}; export declare function createApi(_: { endpoints: Definitions }): { ->createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => { status: "uninitialized"; originalArgs?: never; }; } +>createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => Id<{ status: "uninitialized"; originalArgs?: never; }>; } >_ : { endpoints: Definitions; } >endpoints : Definitions diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types.diff deleted file mode 100644 index 867e39ec0e5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types -+++ new.declarationEmitOptionalMappedTypePropertyNoStrictNullChecks3.types -@@= skipped -7, +7 lines =@@ - } & {}; - - export declare function createApi(_: { endpoints: Definitions }): { -->createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => Id<{ status: "uninitialized"; originalArgs?: never; }>; } -+>createApi : (_: { endpoints: Definitions; }) => { [K in keyof Definitions as `use${Capitalize}Query`]: () => { status: "uninitialized"; originalArgs?: never; }; } - >_ : { endpoints: Definitions; } - >endpoints : Definitions diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.js b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.js index 9902968d30b..fa33f99a5f0 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.js @@ -20,8 +20,8 @@ exports.Foo = Foo; //// [declarationEmitOptionalMethod.d.ts] export declare const Foo: (opts: { a?(): void; - b?: (() => void) | undefined; + b?: () => void; }) => { c?(): void; - d?: (() => void) | undefined; + d?: () => void; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.js.diff deleted file mode 100644 index be0420e6f4d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.js.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitOptionalMethod.js -+++ new.declarationEmitOptionalMethod.js -@@= skipped -19, +19 lines =@@ - //// [declarationEmitOptionalMethod.d.ts] - export declare const Foo: (opts: { - a?(): void; -- b?: () => void; -+ b?: (() => void) | undefined; - }) => { - c?(): void; -- d?: () => void; -+ d?: (() => void) | undefined; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.types b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.types index d3579acffeb..75c8e79726d 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.types @@ -2,9 +2,9 @@ === declarationEmitOptionalMethod.ts === export const Foo = (opts: { ->Foo : (opts: { a?(): void; b?: (() => void) | undefined; }) => { c?(): void; d?: (() => void) | undefined; } ->(opts: { a?(): void, b?: () => void,}): { c?(): void, d?: () => void,} => ({ }) : (opts: { a?(): void; b?: (() => void) | undefined; }) => { c?(): void; d?: (() => void) | undefined; } ->opts : { a?(): void; b?: (() => void) | undefined; } +>Foo : (opts: { a?(): void; b?: () => void; }) => { c?(): void; d?: () => void; } +>(opts: { a?(): void, b?: () => void,}): { c?(): void, d?: () => void,} => ({ }) : (opts: { a?(): void; b?: () => void; }) => { c?(): void; d?: () => void; } +>opts : { a?(): void; b?: () => void; } a?(): void, >a : (() => void) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.types.diff deleted file mode 100644 index c65e49a1ec9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOptionalMethod.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.declarationEmitOptionalMethod.types -+++ new.declarationEmitOptionalMethod.types -@@= skipped -1, +1 lines =@@ - - === declarationEmitOptionalMethod.ts === - export const Foo = (opts: { -->Foo : (opts: { a?(): void; b?: () => void; }) => { c?(): void; d?: () => void; } -->(opts: { a?(): void, b?: () => void,}): { c?(): void, d?: () => void,} => ({ }) : (opts: { a?(): void; b?: () => void; }) => { c?(): void; d?: () => void; } -->opts : { a?(): void; b?: () => void; } -+>Foo : (opts: { a?(): void; b?: (() => void) | undefined; }) => { c?(): void; d?: (() => void) | undefined; } -+>(opts: { a?(): void, b?: () => void,}): { c?(): void, d?: () => void,} => ({ }) : (opts: { a?(): void; b?: (() => void) | undefined; }) => { c?(): void; d?: (() => void) | undefined; } -+>opts : { a?(): void; b?: (() => void) | undefined; } - - a?(): void, - >a : (() => void) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOverloadedPrivateInference.types b/testdata/baselines/reference/submodule/compiler/declarationEmitOverloadedPrivateInference.types index b7acc7e02bb..f9f7c9acef9 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOverloadedPrivateInference.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitOverloadedPrivateInference.types @@ -20,21 +20,21 @@ export class Wrapper { >Wrapper : Wrapper private proxy(fn: (options: T) => U): (options: T) => U; ->proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } +>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } >fn : (options: T) => U >options : T >options : T private proxy(fn: (options?: T) => U, noArgs: true): (options?: T) => U; ->proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } ->fn : (options?: T | undefined) => U +>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } +>fn : (options?: T) => U >options : T | undefined >noArgs : true >true : true >options : T | undefined private proxy(fn: (options: T) => U) { ->proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } +>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } >fn : (options: T) => U >options : T @@ -49,18 +49,18 @@ export class Wrapper { Failure: this.proxy(noArgs, true), >Failure : (options?: unknown) => string >this.proxy(noArgs, true) : (options?: unknown) => string ->this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } +>this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } >this : this ->proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } +>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } >noArgs : () => string >true : true Success: this.proxy(oneArg), >Success : (options: string) => string >this.proxy(oneArg) : (options: string) => string ->this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } +>this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } >this : this ->proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } +>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } >oneArg : (input: string) => string }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitOverloadedPrivateInference.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitOverloadedPrivateInference.types.diff index 6fd4991e136..0e3e6c69e6d 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitOverloadedPrivateInference.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitOverloadedPrivateInference.types.diff @@ -5,47 +5,22 @@ private proxy(fn: (options: T) => U): (options: T) => U; ->proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T_1) => U_1, noArgs: true): (options?: T_1) => U_1; } -+>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } ++>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } >fn : (options: T) => U >options : T >options : T private proxy(fn: (options?: T) => U, noArgs: true): (options?: T) => U; ->proxy : { (fn: (options: T_1) => U_1): (options: T_1) => U_1; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } -->fn : (options?: T) => U -+>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } -+>fn : (options?: T | undefined) => U ++>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } + >fn : (options?: T) => U >options : T | undefined >noArgs : true - >true : true +@@= skipped -14, +14 lines =@@ >options : T | undefined private proxy(fn: (options: T) => U) { ->proxy : { (fn: (options: T_1) => U_1): (options: T_1) => U_1; (fn: (options?: T_1) => U_1, noArgs: true): (options?: T_1) => U_1; } -+>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } ++>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } >fn : (options: T) => U >options : T - -@@= skipped -29, +29 lines =@@ - Failure: this.proxy(noArgs, true), - >Failure : (options?: unknown) => string - >this.proxy(noArgs, true) : (options?: unknown) => string -->this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } -+>this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } - >this : this -->proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } -+>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } - >noArgs : () => string - >true : true - - Success: this.proxy(oneArg), - >Success : (options: string) => string - >this.proxy(oneArg) : (options: string) => string -->this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } -+>this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } - >this : this -->proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } -+>proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T | undefined) => U, noArgs: true): (options?: T | undefined) => U; } - >oneArg : (input: string) => string - - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.js b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.js index b43b9f23071..69962d88269 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.js @@ -33,20 +33,24 @@ export const g = a.o; //// [a.d.ts] export declare const nImported = "nImported"; export declare const nNotImported = "nNotImported"; -export declare const o: (p1: "nImported", p2: "nNotImported", p3: "private") => { - foo: "nImported"; - bar: "private"; - baz: "nNotImported"; +declare const nPrivate = "private"; +export declare const o: (p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => { + foo: typeof nImported; + bar: typeof nPrivate; + baz: typeof nNotImported; }; +export {}; //// [b.d.ts] -export declare const g: (p1: "nImported", p2: "nNotImported", p3: "private") => { - foo: "nImported"; +import { nImported } from "./a"; +export declare const g: (p1: typeof nImported, p2: typeof import("./a").nNotImported, p3: "private") => { + foo: typeof nImported; bar: "private"; - baz: "nNotImported"; + baz: typeof import("./a").nNotImported; }; //// [c.d.ts] -export declare const g: (p1: "nImported", p2: "nNotImported", p3: "private") => { - foo: "nImported"; +import * as a from "./a"; +export declare const g: (p1: typeof a.nImported, p2: typeof a.nNotImported, p3: "private") => { + foo: typeof a.nImported; bar: "private"; - baz: "nNotImported"; + baz: typeof a.nNotImported; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.js.diff deleted file mode 100644 index bfca2ff8018..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.js.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.declarationEmitPartialNodeReuseTypeOf.js -+++ new.declarationEmitPartialNodeReuseTypeOf.js -@@= skipped -32, +32 lines =@@ - //// [a.d.ts] - export declare const nImported = "nImported"; - export declare const nNotImported = "nNotImported"; --declare const nPrivate = "private"; --export declare const o: (p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => { -- foo: typeof nImported; -- bar: typeof nPrivate; -- baz: typeof nNotImported; -+export declare const o: (p1: "nImported", p2: "nNotImported", p3: "private") => { -+ foo: "nImported"; -+ bar: "private"; -+ baz: "nNotImported"; - }; --export {}; - //// [b.d.ts] --import { nImported } from "./a"; --export declare const g: (p1: typeof nImported, p2: typeof import("./a").nNotImported, p3: "private") => { -- foo: typeof nImported; -+export declare const g: (p1: "nImported", p2: "nNotImported", p3: "private") => { -+ foo: "nImported"; - bar: "private"; -- baz: typeof import("./a").nNotImported; -+ baz: "nNotImported"; - }; - //// [c.d.ts] --import * as a from "./a"; --export declare const g: (p1: typeof a.nImported, p2: typeof a.nNotImported, p3: "private") => { -- foo: typeof a.nImported; -+export declare const g: (p1: "nImported", p2: "nNotImported", p3: "private") => { -+ foo: "nImported"; - bar: "private"; -- baz: typeof a.nNotImported; -+ baz: "nNotImported"; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.types b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.types index d8e16851001..e9eb0ed697a 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.types @@ -14,15 +14,15 @@ const nPrivate = "private" >"private" : "private" export const o = (p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } ->o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } ->(p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } +>o : (p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => { foo: typeof nImported; bar: typeof nPrivate; baz: typeof nNotImported; } +>(p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } : (p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => { foo: typeof nImported; bar: typeof nPrivate; baz: typeof nNotImported; } >p1 : "nImported" >nImported : "nImported" >p2 : "nNotImported" >nNotImported : "nNotImported" >p3 : "private" >nPrivate : "private" ->null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } : { foo: "nImported"; bar: "private"; baz: "nNotImported"; } +>null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } : { foo: typeof nImported; bar: typeof nPrivate; baz: typeof nNotImported; } >null! : never >foo : "nImported" >nImported : "nImported" @@ -33,12 +33,12 @@ export const o = (p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPri === b.ts === import { o, nImported } from "./a"; ->o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } +>o : (p1: typeof nImported, p2: typeof import("./a").nNotImported, p3: "private") => { foo: typeof nImported; bar: "private"; baz: typeof import("./a").nNotImported; } >nImported : "nImported" export const g = o ->g : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } ->o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } +>g : (p1: typeof nImported, p2: typeof import("./a").nNotImported, p3: "private") => { foo: typeof nImported; bar: "private"; baz: typeof import("./a").nNotImported; } +>o : (p1: typeof nImported, p2: typeof import("./a").nNotImported, p3: "private") => { foo: typeof nImported; bar: "private"; baz: typeof import("./a").nNotImported; } console.log(nImported); >console.log(nImported) : void @@ -52,8 +52,8 @@ import * as a from "./a"; >a : typeof a export const g = a.o ->g : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } ->a.o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } +>g : (p1: typeof a.nImported, p2: typeof a.nNotImported, p3: "private") => { foo: typeof a.nImported; bar: "private"; baz: typeof a.nNotImported; } +>a.o : (p1: typeof a.nImported, p2: typeof a.nNotImported, p3: "private") => { foo: typeof a.nImported; bar: "private"; baz: typeof a.nNotImported; } >a : typeof a ->o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } +>o : (p1: typeof a.nImported, p2: typeof a.nNotImported, p3: "private") => { foo: typeof a.nImported; bar: "private"; baz: typeof a.nNotImported; } diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.types.diff deleted file mode 100644 index 0da6efcf3d0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeOf.types.diff +++ /dev/null @@ -1,48 +0,0 @@ ---- old.declarationEmitPartialNodeReuseTypeOf.types -+++ new.declarationEmitPartialNodeReuseTypeOf.types -@@= skipped -13, +13 lines =@@ - >"private" : "private" - - export const o = (p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } -->o : (p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => { foo: typeof nImported; bar: typeof nPrivate; baz: typeof nNotImported; } -->(p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } : (p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => { foo: typeof nImported; bar: typeof nPrivate; baz: typeof nNotImported; } -+>o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } -+>(p1: typeof nImported, p2: typeof nNotImported, p3: typeof nPrivate) => null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } - >p1 : "nImported" - >nImported : "nImported" - >p2 : "nNotImported" - >nNotImported : "nNotImported" - >p3 : "private" - >nPrivate : "private" -->null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } : { foo: typeof nImported; bar: typeof nPrivate; baz: typeof nNotImported; } -+>null! as { foo: typeof nImported, bar: typeof nPrivate, baz: typeof nNotImported } : { foo: "nImported"; bar: "private"; baz: "nNotImported"; } - >null! : never - >foo : "nImported" - >nImported : "nImported" -@@= skipped -19, +19 lines =@@ - - === b.ts === - import { o, nImported } from "./a"; -->o : (p1: typeof nImported, p2: typeof import("./a").nNotImported, p3: "private") => { foo: typeof nImported; bar: "private"; baz: typeof import("./a").nNotImported; } -+>o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } - >nImported : "nImported" - - export const g = o -->g : (p1: typeof nImported, p2: typeof import("./a").nNotImported, p3: "private") => { foo: typeof nImported; bar: "private"; baz: typeof import("./a").nNotImported; } -->o : (p1: typeof nImported, p2: typeof import("./a").nNotImported, p3: "private") => { foo: typeof nImported; bar: "private"; baz: typeof import("./a").nNotImported; } -+>g : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } -+>o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } - - console.log(nImported); - >console.log(nImported) : void -@@= skipped -19, +19 lines =@@ - >a : typeof a - - export const g = a.o -->g : (p1: typeof a.nImported, p2: typeof a.nNotImported, p3: "private") => { foo: typeof a.nImported; bar: "private"; baz: typeof a.nNotImported; } -->a.o : (p1: typeof a.nImported, p2: typeof a.nNotImported, p3: "private") => { foo: typeof a.nImported; bar: "private"; baz: typeof a.nNotImported; } -+>g : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } -+>a.o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } - >a : typeof a -->o : (p1: typeof a.nImported, p2: typeof a.nNotImported, p3: "private") => { foo: typeof a.nImported; bar: "private"; baz: typeof a.nNotImported; } -+>o : (p1: "nImported", p2: "nNotImported", p3: "private") => { foo: "nImported"; bar: "private"; baz: "nNotImported"; } diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.js b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.js index 118599fa4c6..bd93fe5c1c3 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.js @@ -29,23 +29,27 @@ export const g = o; //// [a.d.ts] export type SpecialString = string; +type PrivateSpecialString = string; export declare namespace N { type SpecialString = string; } -export declare const o: (p1: string, p2: string, p3: string) => { - foo: string; - bar: string; - baz: string; +export declare const o: (p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => { + foo: SpecialString; + bar: PrivateSpecialString; + baz: N.SpecialString; }; +export {}; //// [b.d.ts] -export declare const g: (p1: string, p2: string, p3: string) => { - foo: string; +import * as a from "./a"; +export declare const g: (p1: a.SpecialString, p2: string, p3: a.N.SpecialString) => { + foo: a.SpecialString; bar: string; - baz: string; + baz: a.N.SpecialString; }; //// [c.d.ts] -export declare const g: (p1: string, p2: string, p3: string) => { - foo: string; +import { SpecialString } from "./a"; +export declare const g: (p1: SpecialString, p2: string, p3: import("./a").N.SpecialString) => { + foo: SpecialString; bar: string; - baz: string; + baz: import("./a").N.SpecialString; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.js.diff deleted file mode 100644 index 1279751403b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.js.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.declarationEmitPartialNodeReuseTypeReferences.js -+++ new.declarationEmitPartialNodeReuseTypeReferences.js -@@= skipped -28, +28 lines =@@ - - //// [a.d.ts] - export type SpecialString = string; --type PrivateSpecialString = string; - export declare namespace N { - type SpecialString = string; - } --export declare const o: (p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => { -- foo: SpecialString; -- bar: PrivateSpecialString; -- baz: N.SpecialString; -+export declare const o: (p1: string, p2: string, p3: string) => { -+ foo: string; -+ bar: string; -+ baz: string; - }; --export {}; - //// [b.d.ts] --import * as a from "./a"; --export declare const g: (p1: a.SpecialString, p2: string, p3: a.N.SpecialString) => { -- foo: a.SpecialString; -+export declare const g: (p1: string, p2: string, p3: string) => { -+ foo: string; - bar: string; -- baz: a.N.SpecialString; -+ baz: string; - }; - //// [c.d.ts] --import { SpecialString } from "./a"; --export declare const g: (p1: SpecialString, p2: string, p3: import("./a").N.SpecialString) => { -- foo: SpecialString; -+export declare const g: (p1: string, p2: string, p3: string) => { -+ foo: string; - bar: string; -- baz: import("./a").N.SpecialString; -+ baz: string; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.types b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.types index 87b2c22b645..7ecacb4c546 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.types @@ -12,13 +12,13 @@ export namespace N { >SpecialString : string } export const o = (p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString }; ->o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } ->(p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString } : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } +>o : (p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => { foo: SpecialString; bar: PrivateSpecialString; baz: N.SpecialString; } +>(p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString } : (p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => { foo: SpecialString; bar: PrivateSpecialString; baz: N.SpecialString; } >p1 : string >p2 : string >p3 : string >N : any ->null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString } : { foo: string; bar: string; baz: string; } +>null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString } : { foo: SpecialString; bar: PrivateSpecialString; baz: N.SpecialString; } >null! : never >foo : string >bar : string @@ -30,17 +30,17 @@ import * as a from "./a"; >a : typeof a export const g = a.o ->g : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } ->a.o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } +>g : (p1: a.SpecialString, p2: string, p3: a.N.SpecialString) => { foo: a.SpecialString; bar: string; baz: a.N.SpecialString; } +>a.o : (p1: a.SpecialString, p2: string, p3: a.N.SpecialString) => { foo: a.SpecialString; bar: string; baz: a.N.SpecialString; } >a : typeof a ->o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } +>o : (p1: a.SpecialString, p2: string, p3: a.N.SpecialString) => { foo: a.SpecialString; bar: string; baz: a.N.SpecialString; } === c.ts === import { o, SpecialString } from "./a"; ->o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } +>o : (p1: SpecialString, p2: string, p3: import("./a").N.SpecialString) => { foo: SpecialString; bar: string; baz: import("./a").N.SpecialString; } >SpecialString : any export const g = o ->g : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } ->o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } +>g : (p1: SpecialString, p2: string, p3: import("./a").N.SpecialString) => { foo: SpecialString; bar: string; baz: import("./a").N.SpecialString; } +>o : (p1: SpecialString, p2: string, p3: import("./a").N.SpecialString) => { foo: SpecialString; bar: string; baz: import("./a").N.SpecialString; } diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.types.diff deleted file mode 100644 index 588ad6c11fa..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialNodeReuseTypeReferences.types.diff +++ /dev/null @@ -1,42 +0,0 @@ ---- old.declarationEmitPartialNodeReuseTypeReferences.types -+++ new.declarationEmitPartialNodeReuseTypeReferences.types -@@= skipped -11, +11 lines =@@ - >SpecialString : string - } - export const o = (p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString }; -->o : (p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => { foo: SpecialString; bar: PrivateSpecialString; baz: N.SpecialString; } -->(p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString } : (p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => { foo: SpecialString; bar: PrivateSpecialString; baz: N.SpecialString; } -+>o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } -+>(p1: SpecialString, p2: PrivateSpecialString, p3: N.SpecialString) => null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString } : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } - >p1 : string - >p2 : string - >p3 : string - >N : any -->null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString } : { foo: SpecialString; bar: PrivateSpecialString; baz: N.SpecialString; } -+>null! as { foo: SpecialString, bar: PrivateSpecialString, baz: N.SpecialString } : { foo: string; bar: string; baz: string; } - >null! : never - >foo : string - >bar : string -@@= skipped -18, +18 lines =@@ - >a : typeof a - - export const g = a.o -->g : (p1: a.SpecialString, p2: string, p3: a.N.SpecialString) => { foo: a.SpecialString; bar: string; baz: a.N.SpecialString; } -->a.o : (p1: a.SpecialString, p2: string, p3: a.N.SpecialString) => { foo: a.SpecialString; bar: string; baz: a.N.SpecialString; } -+>g : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } -+>a.o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } - >a : typeof a -->o : (p1: a.SpecialString, p2: string, p3: a.N.SpecialString) => { foo: a.SpecialString; bar: string; baz: a.N.SpecialString; } -+>o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } - - === c.ts === - import { o, SpecialString } from "./a"; -->o : (p1: SpecialString, p2: string, p3: import("./a").N.SpecialString) => { foo: SpecialString; bar: string; baz: import("./a").N.SpecialString; } -+>o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } - >SpecialString : any - - export const g = o -->g : (p1: SpecialString, p2: string, p3: import("./a").N.SpecialString) => { foo: SpecialString; bar: string; baz: import("./a").N.SpecialString; } -->o : (p1: SpecialString, p2: string, p3: import("./a").N.SpecialString) => { foo: SpecialString; bar: string; baz: import("./a").N.SpecialString; } -+>g : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } -+>o : (p1: string, p2: string, p3: string) => { foo: string; bar: string; baz: string; } diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.js b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.js index ed121632bc1..8864a222ba9 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.js @@ -25,10 +25,10 @@ export declare const n = "A"; export declare const poz = 1; export declare const neg = -1; export declare const o: () => { - A: string; + [n]: string; foo: string; - 1: number; - [-1]: number; + [poz]: number; + [neg]: number; }; //// [b.d.ts] export declare const g: () => { diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.js.diff deleted file mode 100644 index da44b359019..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.js.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.declarationEmitPartialReuseComputedProperty.js -+++ new.declarationEmitPartialReuseComputedProperty.js -@@= skipped -24, +24 lines =@@ - export declare const poz = 1; - export declare const neg = -1; - export declare const o: () => { -- [n]: string; -+ A: string; - foo: string; -- [poz]: number; -- [neg]: number; -+ 1: number; -+ [-1]: number; - }; - //// [b.d.ts] - export declare const g: () => { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types index c838a3a97fc..b6b314dc914 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types @@ -15,8 +15,8 @@ export const neg = -1; >1 : 1 export const o = () => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } ->o : () => { A: string; foo: string; 1: number; [-1]: number; } ->() => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : () => { A: string; foo: string; 1: number; [-1]: number; } +>o : () => { [n]: string; foo: string; [poz]: number; [neg]: number; } +>() => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : () => { [n]: string; foo: string; [poz]: number; [neg]: number; } >null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : { A: string; foo: string; 1: number; [-1]: number; } >null! : never >[n] : string diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types.diff deleted file mode 100644 index e1de1c5826f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitPartialReuseComputedProperty.types -+++ new.declarationEmitPartialReuseComputedProperty.types -@@= skipped -14, +14 lines =@@ - >1 : 1 - - export const o = () => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } -->o : () => { [n]: string; foo: string; [poz]: number; [neg]: number; } -->() => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : () => { [n]: string; foo: string; [poz]: number; [neg]: number; } -+>o : () => { A: string; foo: string; 1: number; [-1]: number; } -+>() => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : () => { A: string; foo: string; 1: number; [-1]: number; } - >null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : { A: string; foo: string; 1: number; [-1]: number; } - >null! : never - >[n] : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPrivateNameCausesError.types b/testdata/baselines/reference/submodule/compiler/declarationEmitPrivateNameCausesError.types index cb4f0d67f01..cdc2c3eb6d1 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPrivateNameCausesError.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPrivateNameCausesError.types @@ -8,7 +8,7 @@ const IGNORE_EXTRA_VARIABLES = Symbol(); //Notice how this is unexported //This is exported export function ignoreExtraVariables (ctor : CtorT) { ->ignoreExtraVariables : {}>(ctor: CtorT) => { new (...args: any[]): (Anonymous class); prototype: ignoreExtraVariables.(Anonymous class); } & CtorT +>ignoreExtraVariables : (ctor: CtorT) => { new (...args: any[]): (Anonymous class); prototype: ignoreExtraVariables.(Anonymous class); } & CtorT >args : any[] >ctor : CtorT diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPrivateNameCausesError.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPrivateNameCausesError.types.diff index a426409dd84..3e71dbc3601 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPrivateNameCausesError.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPrivateNameCausesError.types.diff @@ -5,7 +5,7 @@ //This is exported export function ignoreExtraVariables (ctor : CtorT) { ->ignoreExtraVariables : (ctor: CtorT) => { new (...args: any[]): (Anonymous class); prototype: ignoreExtraVariables.(Anonymous class); } & CtorT -+>ignoreExtraVariables : {}>(ctor: CtorT) => { new (...args: any[]): (Anonymous class); prototype: ignoreExtraVariables.(Anonymous class); } & CtorT ++>ignoreExtraVariables : (ctor: CtorT) => { new (...args: any[]): (Anonymous class); prototype: ignoreExtraVariables.(Anonymous class); } & CtorT >args : any[] >ctor : CtorT diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPrivatePromiseLikeInterface.js b/testdata/baselines/reference/submodule/compiler/declarationEmitPrivatePromiseLikeInterface.js index eaa216c8e11..881423450eb 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPrivatePromiseLikeInterface.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPrivatePromiseLikeInterface.js @@ -69,7 +69,7 @@ export interface HttpResponse ex error: E; } export declare class HttpClient { - request: () => TPromise, any>; + request: () => TPromise>; } export {}; //// [Api.d.ts] @@ -5395,7 +5395,7 @@ export declare class Api { }; catch(onrejected?: ((reason: any) => TResult_7 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & { then(onfulfilled?: ((value: TResult_5 | TResult_6 | TResult_7 | TResult1_1 | TResult2_1) => TResult1_2 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2_2 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; - catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; + catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; }; }; }; @@ -10731,7 +10731,7 @@ export declare class Api { }; catch(onrejected?: ((reason: any) => TResult_7 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & { then(onfulfilled?: ((value: TResult_5 | TResult_6 | TResult_7 | TResult1_1 | TResult2_1) => TResult1_2 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2_2 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; - catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; + catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; }; }; }; @@ -16067,7 +16067,7 @@ export declare class Api { }; catch(onrejected?: ((reason: any) => TResult_7 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & { then(onfulfilled?: ((value: TResult_5 | TResult_6 | TResult_7 | TResult1_1 | TResult2_1) => TResult1_2 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2_2 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; - catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; + catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; }; }; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPrivatePromiseLikeInterface.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPrivatePromiseLikeInterface.js.diff index 7edfed4782f..30cd34ced58 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPrivatePromiseLikeInterface.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPrivatePromiseLikeInterface.js.diff @@ -1,11 +1,7 @@ --- old.declarationEmitPrivatePromiseLikeInterface.js +++ new.declarationEmitPrivatePromiseLikeInterface.js -@@= skipped -68, +68 lines =@@ - error: E; - } - export declare class HttpClient { -- request: () => TPromise>; -+ request: () => TPromise, any>; +@@= skipped -71, +71 lines =@@ + request: () => TPromise>; } export {}; +//// [Api.d.ts] @@ -5331,7 +5327,7 @@ + }; + catch(onrejected?: ((reason: any) => TResult_7 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & { + then(onfulfilled?: ((value: TResult_5 | TResult_6 | TResult_7 | TResult1_1 | TResult2_1) => TResult1_2 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2_2 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; -+ catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; ++ catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; + }; + }; + }; @@ -10667,7 +10663,7 @@ + }; + catch(onrejected?: ((reason: any) => TResult_7 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & { + then(onfulfilled?: ((value: TResult_5 | TResult_6 | TResult_7 | TResult1_1 | TResult2_1) => TResult1_2 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2_2 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; -+ catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; ++ catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; + }; + }; + }; @@ -16003,7 +15999,7 @@ + }; + catch(onrejected?: ((reason: any) => TResult_7 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & { + then(onfulfilled?: ((value: TResult_5 | TResult_6 | TResult_7 | TResult1_1 | TResult2_1) => TResult1_2 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2_2 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; -+ catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; ++ catch(onrejected?: ((reason: any) => TResult_8 | PromiseLike) | null | undefined): Omit, "catch" | "then"> & /*elided*/ any; + }; + }; + }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.js b/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.js index 11ba00b3fe7..d9ab13815ce 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.js @@ -63,5 +63,5 @@ function runSampleBreaks(a, b, c, d, e) { export declare class bluebird { static all: Array>; } -export declare function runSampleWorks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<(f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T>; -export declare function runSampleBreaks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<(f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T>; +export declare function runSampleWorks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T>; +export declare function runSampleBreaks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T>; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.js.diff index 6857984c154..e7555c21827 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.js.diff @@ -6,5 +6,5 @@ } -export declare function runSampleWorks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T)>; -export declare function runSampleBreaks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T)>; -+export declare function runSampleWorks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<(f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T>; -+export declare function runSampleBreaks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<(f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T>; \ No newline at end of file ++export declare function runSampleWorks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T>; ++export declare function runSampleBreaks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T>; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.types b/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.types index 61364518141..b3f6b1e672e 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.types @@ -9,7 +9,7 @@ export class bluebird { } export async function runSampleWorks( ->runSampleWorks : (a: bluebird, b?: bluebird | undefined, c?: bluebird | undefined, d?: bluebird | undefined, e?: bluebird | undefined) => Promise<(f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T> +>runSampleWorks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T> a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { >a : bluebird @@ -43,9 +43,9 @@ export async function runSampleWorks( >el : bluebird | undefined let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => ->func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T ->(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T ->f : (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>f : (a: A, b?: B, c?: C, d?: D, e?: E) => T >a : A >b : B | undefined >c : C | undefined @@ -55,23 +55,23 @@ export async function runSampleWorks( f.apply(this, result); >f.apply(this, result) : T >f.apply : { (this: (this: T_1) => R, thisArg: T_1): R; (this: (this: T_1, ...args: A_1) => R, thisArg: T_1, args: A_1): R; } ->f : (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T +>f : (a: A, b?: B, c?: C, d?: D, e?: E) => T >apply : { (this: (this: T_1) => R, thisArg: T_1): R; (this: (this: T_1, ...args: A_1) => R, thisArg: T_1, args: A_1): R; } >this : any >result : any let rfunc: typeof func & {} = func as any; // <- This is the only difference ->rfunc : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T ->func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T +>rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T >func as any : any ->func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T return rfunc ->rfunc : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T +>rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T } export async function runSampleBreaks( ->runSampleBreaks : (a: bluebird, b?: bluebird | undefined, c?: bluebird | undefined, d?: bluebird | undefined, e?: bluebird | undefined) => Promise<(f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T> +>runSampleBreaks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T> a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { >a : bluebird @@ -105,9 +105,9 @@ export async function runSampleBreaks( >el : bluebird | undefined let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => ->func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T ->(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T ->f : (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>f : (a: A, b?: B, c?: C, d?: D, e?: E) => T >a : A >b : B | undefined >c : C | undefined @@ -117,17 +117,17 @@ export async function runSampleBreaks( f.apply(this, result); >f.apply(this, result) : T >f.apply : { (this: (this: T_1) => R, thisArg: T_1): R; (this: (this: T_1, ...args: A_1) => R, thisArg: T_1, args: A_1): R; } ->f : (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T +>f : (a: A, b?: B, c?: C, d?: D, e?: E) => T >apply : { (this: (this: T_1) => R, thisArg: T_1): R; (this: (this: T_1, ...args: A_1) => R, thisArg: T_1, args: A_1): R; } >this : any >result : any let rfunc: typeof func = func as any; // <- This is the only difference ->rfunc : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T ->func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T +>rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T >func as any : any ->func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T return rfunc ->rfunc : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T +>rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T } diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.types.diff index b284b633655..f3f71f87891 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPromise.types.diff @@ -5,86 +5,16 @@ export async function runSampleWorks( ->runSampleWorks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T)> -+>runSampleWorks : (a: bluebird, b?: bluebird | undefined, c?: bluebird | undefined, d?: bluebird | undefined, e?: bluebird | undefined) => Promise<(f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T> ++>runSampleWorks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T> a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { >a : bluebird -@@= skipped -34, +34 lines =@@ - >el : bluebird | undefined - - let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => -->func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -->(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -->f : (a: A, b?: B, c?: C, d?: D, e?: E) => T -+>func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T -+>(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T -+>f : (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T - >a : A - >b : B | undefined - >c : C | undefined -@@= skipped -12, +12 lines =@@ - f.apply(this, result); - >f.apply(this, result) : T - >f.apply : { (this: (this: T_1) => R, thisArg: T_1): R; (this: (this: T_1, ...args: A_1) => R, thisArg: T_1, args: A_1): R; } -->f : (a: A, b?: B, c?: C, d?: D, e?: E) => T -+>f : (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T - >apply : { (this: (this: T_1) => R, thisArg: T_1): R; (this: (this: T_1, ...args: A_1) => R, thisArg: T_1, args: A_1): R; } - >this : any - >result : any - - let rfunc: typeof func & {} = func as any; // <- This is the only difference -->rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -->func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -+>rfunc : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T -+>func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T - >func as any : any -->func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -+>func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T - - return rfunc -->rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -+>rfunc : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T +@@= skipped -62, +62 lines =@@ } export async function runSampleBreaks( ->runSampleBreaks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T)> -+>runSampleBreaks : (a: bluebird, b?: bluebird | undefined, c?: bluebird | undefined, d?: bluebird | undefined, e?: bluebird | undefined) => Promise<(f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T> ++>runSampleBreaks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T> a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { - >a : bluebird -@@= skipped -50, +50 lines =@@ - >el : bluebird | undefined - - let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => -->func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -->(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -->f : (a: A, b?: B, c?: C, d?: D, e?: E) => T -+>func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T -+>(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T -+>f : (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T - >a : A - >b : B | undefined - >c : C | undefined -@@= skipped -12, +12 lines =@@ - f.apply(this, result); - >f.apply(this, result) : T - >f.apply : { (this: (this: T_1) => R, thisArg: T_1): R; (this: (this: T_1, ...args: A_1) => R, thisArg: T_1, args: A_1): R; } -->f : (a: A, b?: B, c?: C, d?: D, e?: E) => T -+>f : (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T - >apply : { (this: (this: T_1) => R, thisArg: T_1): R; (this: (this: T_1, ...args: A_1) => R, thisArg: T_1, args: A_1): R; } - >this : any - >result : any - - let rfunc: typeof func = func as any; // <- This is the only difference -->rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -->func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -+>rfunc : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T -+>func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T - >func as any : any -->func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -+>func : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T - - return rfunc -->rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -+>rfunc : (f: (a: A, b?: B | undefined, c?: C | undefined, d?: D | undefined, e?: E | undefined) => T) => T - } \ No newline at end of file + >a : bluebird \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPropertyNumericStringKey.js b/testdata/baselines/reference/submodule/compiler/declarationEmitPropertyNumericStringKey.js index 39f13df983c..dde7b3e1a61 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPropertyNumericStringKey.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPropertyNumericStringKey.js @@ -28,7 +28,7 @@ const obj2 = { [hundredNum]: "bar" }; //// [declarationEmitPropertyNumericStringKey.d.ts] declare const STATUS: { - readonly "404": "not found"; + readonly ["404"]: "not found"; }; declare const hundredStr = "100"; declare const obj: { diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPropertyNumericStringKey.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPropertyNumericStringKey.js.diff new file mode 100644 index 00000000000..755003f7118 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPropertyNumericStringKey.js.diff @@ -0,0 +1,11 @@ +--- old.declarationEmitPropertyNumericStringKey.js ++++ new.declarationEmitPropertyNumericStringKey.js +@@= skipped -27, +27 lines =@@ + + //// [declarationEmitPropertyNumericStringKey.d.ts] + declare const STATUS: { +- readonly "404": "not found"; ++ readonly ["404"]: "not found"; + }; + declare const hundredStr = "100"; + declare const obj: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.js b/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.js index aa0e55622c4..c342d487d6c 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.js @@ -31,14 +31,32 @@ export const f = { ...d }; //// [decl.d.ts] -export declare const o1: (o: "value of b") => void; -export declare const o2: (o: "value of a") => void; -export declare const o3: (o: "value of a") => void; -export declare const o4: (o: "b" | "notNecessary") => void; +declare const u = "X"; +type A = { + a: { + b: "value of b"; + notNecessary: typeof u; + }; +}; +declare const a: { + readonly a: "value of a"; + readonly notNecessary: "X"; +}; +export declare const o1: (o: A['a']['b']) => void; +export declare const o2: (o: (typeof a)['a']) => void; +export declare const o3: (o: (typeof a)['a']) => void; +export declare const o4: (o: keyof (A['a'])) => void; +export {}; //// [main.d.ts] export declare const f: { o1: (o: "value of b") => void; - o2: (o: "value of a") => void; + o2: (o: ({ + readonly a: "value of a"; + readonly notNecessary: "X"; + })['a']) => void; o3: (o: "value of a") => void; - o4: (o: "b" | "notNecessary") => void; + o4: (o: keyof ({ + b: "value of b"; + notNecessary: "X"; + })) => void; }; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.js.diff index de66237227c..98fc27ee823 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.js.diff @@ -1,29 +1,30 @@ --- old.declarationEmitResolveTypesIfNotReusable.js +++ new.declarationEmitResolveTypesIfNotReusable.js -@@= skipped -30, +30 lines =@@ - - - //// [decl.d.ts] --declare const u = "X"; --type A = { -- a: { -- b: "value of b"; -- notNecessary: typeof u; -- }; --}; --declare const a: { -- readonly a: "value of a"; -- readonly notNecessary: "X"; --}; +@@= skipped -41, +41 lines =@@ + readonly a: "value of a"; + readonly notNecessary: "X"; + }; -export declare const o1: (o: A["a"]["b"]) => void; -export declare const o2: (o: (typeof a)["a"]) => void; -export declare const o3: (o: (typeof a)["a"]) => void; -export declare const o4: (o: keyof A["a"]) => void; --export {}; -+export declare const o1: (o: "value of b") => void; -+export declare const o2: (o: "value of a") => void; -+export declare const o3: (o: "value of a") => void; -+export declare const o4: (o: "b" | "notNecessary") => void; ++export declare const o1: (o: A['a']['b']) => void; ++export declare const o2: (o: (typeof a)['a']) => void; ++export declare const o3: (o: (typeof a)['a']) => void; ++export declare const o4: (o: keyof (A['a'])) => void; + export {}; //// [main.d.ts] export declare const f: { - o1: (o: "value of b") => void; \ No newline at end of file + o1: (o: "value of b") => void; +- o2: (o: "value of a") => void; ++ o2: (o: ({ ++ readonly a: "value of a"; ++ readonly notNecessary: "X"; ++ })['a']) => void; + o3: (o: "value of a") => void; +- o4: (o: "b" | "notNecessary") => void; ++ o4: (o: keyof ({ ++ b: "value of b"; ++ notNecessary: "X"; ++ })) => void; + }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.types b/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.types index 06419ceab4f..e62f0ade302 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.types @@ -7,7 +7,7 @@ const u = "X"; type A = { a: { b : "value of b", notNecessary: typeof u }} >A : A ->a : { b: "value of b"; notNecessary: "X"; } +>a : { b: "value of b"; notNecessary: typeof u; } >b : "value of b" >notNecessary : "X" >u : "X" @@ -23,25 +23,25 @@ const a = { a: "value of a", notNecessary: u } as const export const o1 = (o: A['a']['b']) => {} ->o1 : (o: "value of b") => void ->(o: A['a']['b']) => {} : (o: "value of b") => void +>o1 : (o: A['a']['b']) => void +>(o: A['a']['b']) => {} : (o: A['a']['b']) => void >o : "value of b" export const o2 = (o: (typeof a)['a']) => {} ->o2 : (o: "value of a") => void ->(o: (typeof a)['a']) => {} : (o: "value of a") => void +>o2 : (o: (typeof a)['a']) => void +>(o: (typeof a)['a']) => {} : (o: (typeof a)['a']) => void >o : "value of a" >a : { readonly a: "value of a"; readonly notNecessary: "X"; } export const o3 = (o: typeof a['a']) => {} ->o3 : (o: "value of a") => void ->(o: typeof a['a']) => {} : (o: "value of a") => void +>o3 : (o: (typeof a)['a']) => void +>(o: typeof a['a']) => {} : (o: (typeof a)['a']) => void >o : "value of a" >a : { readonly a: "value of a"; readonly notNecessary: "X"; } export const o4 = (o: keyof (A['a'])) => {} ->o4 : (o: "b" | "notNecessary") => void ->(o: keyof (A['a'])) => {} : (o: "b" | "notNecessary") => void +>o4 : (o: keyof (A['a'])) => void +>(o: keyof (A['a'])) => {} : (o: keyof (A['a'])) => void >o : "b" | "notNecessary" === main.ts === @@ -49,7 +49,7 @@ import * as d from './decl' >d : typeof d export const f = {...d} ->f : { o1: (o: "value of b") => void; o2: (o: "value of a") => void; o3: (o: "value of a") => void; o4: (o: "b" | "notNecessary") => void; } ->{...d} : { o1: (o: "value of b") => void; o2: (o: "value of a") => void; o3: (o: "value of a") => void; o4: (o: "b" | "notNecessary") => void; } +>f : { o1: (o: "value of b") => void; o2: (o: ({ readonly a: "value of a"; readonly notNecessary: "X"; })['a']) => void; o3: (o: "value of a") => void; o4: (o: keyof ({ b: "value of b"; notNecessary: "X"; })) => void; } +>{...d} : { o1: (o: "value of b") => void; o2: (o: ({ readonly a: "value of a"; readonly notNecessary: "X"; })['a']) => void; o3: (o: "value of a") => void; o4: (o: keyof ({ b: "value of b"; notNecessary: "X"; })) => void; } >d : typeof d diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.types.diff index 3f659ef7ab3..7aea43a7b87 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitResolveTypesIfNotReusable.types.diff @@ -1,45 +1,45 @@ --- old.declarationEmitResolveTypesIfNotReusable.types +++ new.declarationEmitResolveTypesIfNotReusable.types -@@= skipped -6, +6 lines =@@ - - type A = { a: { b : "value of b", notNecessary: typeof u }} - >A : A -->a : { b: "value of b"; notNecessary: typeof u; } -+>a : { b: "value of b"; notNecessary: "X"; } - >b : "value of b" - >notNecessary : "X" - >u : "X" -@@= skipped -16, +16 lines =@@ +@@= skipped -22, +22 lines =@@ export const o1 = (o: A['a']['b']) => {} ->o1 : (o: A["a"]["b"]) => void ->(o: A['a']['b']) => {} : (o: A["a"]["b"]) => void -+>o1 : (o: "value of b") => void -+>(o: A['a']['b']) => {} : (o: "value of b") => void ++>o1 : (o: A['a']['b']) => void ++>(o: A['a']['b']) => {} : (o: A['a']['b']) => void >o : "value of b" export const o2 = (o: (typeof a)['a']) => {} ->o2 : (o: (typeof a)["a"]) => void ->(o: (typeof a)['a']) => {} : (o: (typeof a)["a"]) => void -+>o2 : (o: "value of a") => void -+>(o: (typeof a)['a']) => {} : (o: "value of a") => void ++>o2 : (o: (typeof a)['a']) => void ++>(o: (typeof a)['a']) => {} : (o: (typeof a)['a']) => void >o : "value of a" >a : { readonly a: "value of a"; readonly notNecessary: "X"; } export const o3 = (o: typeof a['a']) => {} ->o3 : (o: (typeof a)["a"]) => void ->(o: typeof a['a']) => {} : (o: (typeof a)["a"]) => void -+>o3 : (o: "value of a") => void -+>(o: typeof a['a']) => {} : (o: "value of a") => void ++>o3 : (o: (typeof a)['a']) => void ++>(o: typeof a['a']) => {} : (o: (typeof a)['a']) => void >o : "value of a" >a : { readonly a: "value of a"; readonly notNecessary: "X"; } export const o4 = (o: keyof (A['a'])) => {} ->o4 : (o: keyof A["a"]) => void ->(o: keyof (A['a'])) => {} : (o: keyof A["a"]) => void -+>o4 : (o: "b" | "notNecessary") => void -+>(o: keyof (A['a'])) => {} : (o: "b" | "notNecessary") => void ++>o4 : (o: keyof (A['a'])) => void ++>(o: keyof (A['a'])) => {} : (o: keyof (A['a'])) => void >o : "b" | "notNecessary" - === main.ts === \ No newline at end of file + === main.ts === +@@= skipped -26, +26 lines =@@ + >d : typeof d + + export const f = {...d} +->f : { o1: (o: "value of b") => void; o2: (o: "value of a") => void; o3: (o: "value of a") => void; o4: (o: "b" | "notNecessary") => void; } +->{...d} : { o1: (o: "value of b") => void; o2: (o: "value of a") => void; o3: (o: "value of a") => void; o4: (o: "b" | "notNecessary") => void; } ++>f : { o1: (o: "value of b") => void; o2: (o: ({ readonly a: "value of a"; readonly notNecessary: "X"; })['a']) => void; o3: (o: "value of a") => void; o4: (o: keyof ({ b: "value of b"; notNecessary: "X"; })) => void; } ++>{...d} : { o1: (o: "value of b") => void; o2: (o: ({ readonly a: "value of a"; readonly notNecessary: "X"; })['a']) => void; o3: (o: "value of a") => void; o4: (o: keyof ({ b: "value of b"; notNecessary: "X"; })) => void; } + >d : typeof d diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.js b/testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.js index cc21d5c76c0..bdc001a6ab0 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.js @@ -23,5 +23,5 @@ function CustomSelect2(x) { } //// [index.d.ts] import { Props } from "react-select"; -export declare const CustomSelect1:

{ - (props: P & { children?: number }, context?: any): null; -->props : P & { children?: number; } -+>props : P & { children?: number | undefined; } - >children : number | undefined - >context : any - } - - const TestComponent: StatelessComponent = (props) => { - >TestComponent : StatelessComponent -->(props) => { return null;} : (props: TestProps & { children?: number; }) => null -->props : TestProps & { children?: number; } -+>(props) => { return null;} : (props: TestProps & { children?: number | undefined; }) => null -+>props : TestProps & { children?: number | undefined; } - - return null; - } -@@= skipped -45, +45 lines =@@ - >TestComponent2 : StatelessComponent - >props2 : { x: number; } - >x : number -->(props) => { return null;} : (props: (TestProps | { props2: { x: number; }; }) & { children?: number; }) => null -->props : (TestProps | { props2: { x: number; }; }) & { children?: number; } -+>(props) => { return null;} : (props: (TestProps | { props2: { x: number; }; }) & { children?: number | undefined; }) => null -+>props : (TestProps | { props2: { x: number; }; }) & { children?: number | undefined; } - - return null; - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/deepKeysIndexing.types b/testdata/baselines/reference/submodule/compiler/deepKeysIndexing.types index 7cc7425b79d..4a2f67b6d21 100644 --- a/testdata/baselines/reference/submodule/compiler/deepKeysIndexing.types +++ b/testdata/baselines/reference/submodule/compiler/deepKeysIndexing.types @@ -75,7 +75,7 @@ class Bar { >value : V workaround< ->workaround : , V extends O[K1][K2]>(k1: K1, k2: K2, value: V) => void +>workaround : , V extends O[K1][K2]>(k1: K1, k2: K2, value: V) => void K1 extends keyof O, K2 extends keys2workaround, @@ -112,9 +112,9 @@ bar.working("a", "1", true); // ok - true is not allowed bar.workaround("a", "1", true); // ok - true is not allowed >bar.workaround("a", "1", true) : void ->bar.workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void +>bar.workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void >bar : Bar ->workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void +>workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void >"a" : "a" >"1" : "1" >true : true diff --git a/testdata/baselines/reference/submodule/compiler/deepKeysIndexing.types.diff b/testdata/baselines/reference/submodule/compiler/deepKeysIndexing.types.diff index 3c7e0de54dd..cfbe2c6a6bf 100644 --- a/testdata/baselines/reference/submodule/compiler/deepKeysIndexing.types.diff +++ b/testdata/baselines/reference/submodule/compiler/deepKeysIndexing.types.diff @@ -1,11 +1,14 @@ --- old.deepKeysIndexing.types +++ new.deepKeysIndexing.types -@@= skipped -74, +74 lines =@@ - >value : V +@@= skipped -111, +111 lines =@@ - workaround< -->workaround : , V extends O[K1][K2]>(k1: K1, k2: K2, value: V) => void -+>workaround : , V extends O[K1][K2]>(k1: K1, k2: K2, value: V) => void - - K1 extends keyof O, - K2 extends keys2workaround, \ No newline at end of file + bar.workaround("a", "1", true); // ok - true is not allowed + >bar.workaround("a", "1", true) : void +->bar.workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void ++>bar.workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void + >bar : Bar +->workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void ++>workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void + >"a" : "a" + >"1" : "1" + >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/deeplyNestedCheck.types b/testdata/baselines/reference/submodule/compiler/deeplyNestedCheck.types index 0718ae21f86..747597daa26 100644 --- a/testdata/baselines/reference/submodule/compiler/deeplyNestedCheck.types +++ b/testdata/baselines/reference/submodule/compiler/deeplyNestedCheck.types @@ -5,7 +5,7 @@ interface DataSnapshot { child(path: string): DataSnapshot; ->child : (path: string) => DataSnapshot<{}> +>child : (path: string) => DataSnapshot >path : string } diff --git a/testdata/baselines/reference/submodule/compiler/deeplyNestedCheck.types.diff b/testdata/baselines/reference/submodule/compiler/deeplyNestedCheck.types.diff deleted file mode 100644 index 2ccb72c75b2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/deeplyNestedCheck.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.deeplyNestedCheck.types -+++ new.deeplyNestedCheck.types -@@= skipped -4, +4 lines =@@ - - interface DataSnapshot { - child(path: string): DataSnapshot; -->child : (path: string) => DataSnapshot -+>child : (path: string) => DataSnapshot<{}> - >path : string - } diff --git a/testdata/baselines/reference/submodule/compiler/deeplyNestedMappedTypes.types b/testdata/baselines/reference/submodule/compiler/deeplyNestedMappedTypes.types index 8bea9930aee..7e6ecc7b187 100644 --- a/testdata/baselines/reference/submodule/compiler/deeplyNestedMappedTypes.types +++ b/testdata/baselines/reference/submodule/compiler/deeplyNestedMappedTypes.types @@ -213,7 +213,7 @@ export const Output = Type.Object({ }) function problematicFunction1(ors: Input[]): Output[] { ->problematicFunction1 : (ors: { level1: { level2: { foo: string; }; }; }[]) => { level1: { level2: { foo: string; bar: string; }; }; }[] +>problematicFunction1 : (ors: Input[]) => Output[] >ors : { level1: { level2: { foo: string; }; }; }[] return ors; // Error @@ -221,7 +221,7 @@ function problematicFunction1(ors: Input[]): Output[] { } function problematicFunction2(ors: Input[]): T { ->problematicFunction2 : (ors: { level1: { level2: { foo: string; }; }; }[]) => T +>problematicFunction2 : (ors: Input[]) => T >ors : { level1: { level2: { foo: string; }; }; }[] return ors; // Error @@ -229,7 +229,7 @@ function problematicFunction2(ors: Input[]): T { } function problematicFunction3(ors: (typeof Input.static)[]): Output[] { ->problematicFunction3 : (ors: { level1: { level2: { foo: string; }; }; }[]) => { level1: { level2: { foo: string; bar: string; }; }; }[] +>problematicFunction3 : (ors: (typeof Input.static)[]) => Output[] >ors : { level1: { level2: { foo: string; }; }; }[] >Input.static : { level1: { level2: { foo: string; }; }; } >Input : TObject<{ level1: TObject<{ level2: TObject<{ foo: TString; }>; }>; }> diff --git a/testdata/baselines/reference/submodule/compiler/deeplyNestedMappedTypes.types.diff b/testdata/baselines/reference/submodule/compiler/deeplyNestedMappedTypes.types.diff deleted file mode 100644 index ffdfe007e46..00000000000 --- a/testdata/baselines/reference/submodule/compiler/deeplyNestedMappedTypes.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.deeplyNestedMappedTypes.types -+++ new.deeplyNestedMappedTypes.types -@@= skipped -212, +212 lines =@@ - }) - - function problematicFunction1(ors: Input[]): Output[] { -->problematicFunction1 : (ors: Input[]) => Output[] -+>problematicFunction1 : (ors: { level1: { level2: { foo: string; }; }; }[]) => { level1: { level2: { foo: string; bar: string; }; }; }[] - >ors : { level1: { level2: { foo: string; }; }; }[] - - return ors; // Error -@@= skipped -8, +8 lines =@@ - } - - function problematicFunction2(ors: Input[]): T { -->problematicFunction2 : (ors: Input[]) => T -+>problematicFunction2 : (ors: { level1: { level2: { foo: string; }; }; }[]) => T - >ors : { level1: { level2: { foo: string; }; }; }[] - - return ors; // Error -@@= skipped -8, +8 lines =@@ - } - - function problematicFunction3(ors: (typeof Input.static)[]): Output[] { -->problematicFunction3 : (ors: (typeof Input.static)[]) => Output[] -+>problematicFunction3 : (ors: { level1: { level2: { foo: string; }; }; }[]) => { level1: { level2: { foo: string; bar: string; }; }; }[] - >ors : { level1: { level2: { foo: string; }; }; }[] - >Input.static : { level1: { level2: { foo: string; }; }; } - >Input : TObject<{ level1: TObject<{ level2: TObject<{ foo: TString; }>; }>; }> \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitNamedCorrectly.types b/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitNamedCorrectly.types index 4ca922adb6e..cfb69d56c1a 100644 --- a/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitNamedCorrectly.types +++ b/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitNamedCorrectly.types @@ -9,7 +9,7 @@ export interface Things { >t : T } export function make(x: { new (): CTor & {props: P} }): Things { ->make : (x: new () => CTor & { props: P; }) => Things +>make : (x: { new (): CTor & { props: P; }; }) => Things >x : new () => CTor & { props: P; } >props : P @@ -29,6 +29,6 @@ export default class MyComponent { static create = make(MyComponent); >create : Things >make(MyComponent) : Things ->make : (x: new () => CTor & { props: P; }) => Things +>make : (x: { new (): CTor & { props: P; }; }) => Things >MyComponent : typeof MyComponent } diff --git a/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitNamedCorrectly.types.diff b/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitNamedCorrectly.types.diff deleted file mode 100644 index 3b5971f8f10..00000000000 --- a/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitNamedCorrectly.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.defaultDeclarationEmitNamedCorrectly.types -+++ new.defaultDeclarationEmitNamedCorrectly.types -@@= skipped -8, +8 lines =@@ - >t : T - } - export function make(x: { new (): CTor & {props: P} }): Things { -->make : (x: { new (): CTor & { props: P; }; }) => Things -+>make : (x: new () => CTor & { props: P; }) => Things - >x : new () => CTor & { props: P; } - >props : P - -@@= skipped -20, +20 lines =@@ - static create = make(MyComponent); - >create : Things - >make(MyComponent) : Things -->make : (x: { new (): CTor & { props: P; }; }) => Things -+>make : (x: new () => CTor & { props: P; }) => Things - >MyComponent : typeof MyComponent - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitShadowedNamedCorrectly.types b/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitShadowedNamedCorrectly.types index 8b91f22c964..68c42bb928f 100644 --- a/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitShadowedNamedCorrectly.types +++ b/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitShadowedNamedCorrectly.types @@ -12,7 +12,7 @@ export interface Things { >t : T } export function make(x: { new (): CTor & {props: P} }): Things { ->make : (x: new () => CTor & { props: P; }) => Things +>make : (x: { new (): CTor & { props: P; }; }) => Things >x : new () => CTor & { props: P; } >props : P @@ -39,7 +39,7 @@ export namespace Something { export const create = make(me.default); >create : Things >make(me.default) : Things ->make : (x: new () => CTor & { props: P; }) => Things +>make : (x: { new (): CTor & { props: P; }; }) => Things >me.default : typeof me.default >me : typeof me >default : typeof me.default diff --git a/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitShadowedNamedCorrectly.types.diff b/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitShadowedNamedCorrectly.types.diff index 728c2d422ea..1fc82f66214 100644 --- a/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitShadowedNamedCorrectly.types.diff +++ b/testdata/baselines/reference/submodule/compiler/defaultDeclarationEmitShadowedNamedCorrectly.types.diff @@ -1,15 +1,6 @@ --- old.defaultDeclarationEmitShadowedNamedCorrectly.types +++ new.defaultDeclarationEmitShadowedNamedCorrectly.types -@@= skipped -11, +11 lines =@@ - >t : T - } - export function make(x: { new (): CTor & {props: P} }): Things { -->make : (x: { new (): CTor & { props: P; }; }) => Things -+>make : (x: new () => CTor & { props: P; }) => Things - >x : new () => CTor & { props: P; } - >props : P - -@@= skipped -15, +15 lines =@@ +@@= skipped -26, +26 lines =@@ >MyComponent : me.default props: Props; @@ -27,10 +18,8 @@ export const create = make(me.default); ->create : me.Things ->make(me.default) : me.Things -->make : (x: { new (): CTor & { props: P; }; }) => Things +>create : Things +>make(me.default) : Things -+>make : (x: new () => CTor & { props: P; }) => Things + >make : (x: { new (): CTor & { props: P; }; }) => Things >me.default : typeof me.default - >me : typeof me - >default : typeof me.default \ No newline at end of file + >me : typeof me \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/defaultParameterAddsUndefinedWithStrictNullChecks.types b/testdata/baselines/reference/submodule/compiler/defaultParameterAddsUndefinedWithStrictNullChecks.types index 18530fce3be..6e4b9062c36 100644 --- a/testdata/baselines/reference/submodule/compiler/defaultParameterAddsUndefinedWithStrictNullChecks.types +++ b/testdata/baselines/reference/submodule/compiler/defaultParameterAddsUndefinedWithStrictNullChecks.types @@ -2,7 +2,7 @@ === defaultParameterAddsUndefinedWithStrictNullChecks.ts === function f(addUndefined1 = "J", addUndefined2?: number) { ->f : (addUndefined1?: string, addUndefined2?: number | undefined) => number +>f : (addUndefined1?: string, addUndefined2?: number) => number >addUndefined1 : string >"J" : "J" >addUndefined2 : number | undefined @@ -36,16 +36,16 @@ let total = f() + f('a', 1) + f('b') + f(undefined, 2); >f() + f('a', 1) + f('b') : number >f() + f('a', 1) : number >f() : number ->f : (addUndefined1?: string, addUndefined2?: number | undefined) => number +>f : (addUndefined1?: string, addUndefined2?: number) => number >f('a', 1) : number ->f : (addUndefined1?: string, addUndefined2?: number | undefined) => number +>f : (addUndefined1?: string, addUndefined2?: number) => number >'a' : "a" >1 : 1 >f('b') : number ->f : (addUndefined1?: string, addUndefined2?: number | undefined) => number +>f : (addUndefined1?: string, addUndefined2?: number) => number >'b' : "b" >f(undefined, 2) : number ->f : (addUndefined1?: string, addUndefined2?: number | undefined) => number +>f : (addUndefined1?: string, addUndefined2?: number) => number >undefined : undefined >2 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/defaultParameterAddsUndefinedWithStrictNullChecks.types.diff b/testdata/baselines/reference/submodule/compiler/defaultParameterAddsUndefinedWithStrictNullChecks.types.diff deleted file mode 100644 index 5f2f953255c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/defaultParameterAddsUndefinedWithStrictNullChecks.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.defaultParameterAddsUndefinedWithStrictNullChecks.types -+++ new.defaultParameterAddsUndefinedWithStrictNullChecks.types -@@= skipped -1, +1 lines =@@ - - === defaultParameterAddsUndefinedWithStrictNullChecks.ts === - function f(addUndefined1 = "J", addUndefined2?: number) { -->f : (addUndefined1?: string, addUndefined2?: number) => number -+>f : (addUndefined1?: string, addUndefined2?: number | undefined) => number - >addUndefined1 : string - >"J" : "J" - >addUndefined2 : number | undefined -@@= skipped -34, +34 lines =@@ - >f() + f('a', 1) + f('b') : number - >f() + f('a', 1) : number - >f() : number -->f : (addUndefined1?: string, addUndefined2?: number) => number -+>f : (addUndefined1?: string, addUndefined2?: number | undefined) => number - >f('a', 1) : number -->f : (addUndefined1?: string, addUndefined2?: number) => number -+>f : (addUndefined1?: string, addUndefined2?: number | undefined) => number - >'a' : "a" - >1 : 1 - >f('b') : number -->f : (addUndefined1?: string, addUndefined2?: number) => number -+>f : (addUndefined1?: string, addUndefined2?: number | undefined) => number - >'b' : "b" - >f(undefined, 2) : number -->f : (addUndefined1?: string, addUndefined2?: number) => number -+>f : (addUndefined1?: string, addUndefined2?: number | undefined) => number - >undefined : undefined - >2 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/deferredLookupTypeResolution.types b/testdata/baselines/reference/submodule/compiler/deferredLookupTypeResolution.types index ef75ab94755..dd1814c3120 100644 --- a/testdata/baselines/reference/submodule/compiler/deferredLookupTypeResolution.types +++ b/testdata/baselines/reference/submodule/compiler/deferredLookupTypeResolution.types @@ -45,7 +45,7 @@ function f2(a: A) { } function f3(x: 'a' | 'b') { ->f3 : (x: "a" | "b") => { a: any; b: any; x: any; } +>f3 : (x: 'a' | 'b') => { a: any; b: any; x: any; } >x : "a" | "b" return f2(x); diff --git a/testdata/baselines/reference/submodule/compiler/deferredLookupTypeResolution.types.diff b/testdata/baselines/reference/submodule/compiler/deferredLookupTypeResolution.types.diff new file mode 100644 index 00000000000..4bb769a7187 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/deferredLookupTypeResolution.types.diff @@ -0,0 +1,11 @@ +--- old.deferredLookupTypeResolution.types ++++ new.deferredLookupTypeResolution.types +@@= skipped -44, +44 lines =@@ + } + + function f3(x: 'a' | 'b') { +->f3 : (x: "a" | "b") => { a: any; b: any; x: any; } ++>f3 : (x: 'a' | 'b') => { a: any; b: any; x: any; } + >x : "a" | "b" + + return f2(x); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.errors.txt b/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.errors.txt index a57df6368fe..087ff25721a 100644 --- a/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.errors.txt @@ -1,6 +1,6 @@ derivedInterfaceCallSignature.ts(11,11): error TS2430: Interface 'D3SvgArea' incorrectly extends interface 'D3SvgPath'. Types of property 'x' are incompatible. - Type '(x: (data: any, index?: number | undefined) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number | undefined) => number'. + Type '(x: (data: any, index?: number) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number) => number'. Target signature provides too few arguments. Expected 1 or more, but got 0. @@ -19,7 +19,7 @@ derivedInterfaceCallSignature.ts(11,11): error TS2430: Interface 'D3SvgArea' inc ~~~~~~~~~ !!! error TS2430: Interface 'D3SvgArea' incorrectly extends interface 'D3SvgPath'. !!! error TS2430: Types of property 'x' are incompatible. -!!! error TS2430: Type '(x: (data: any, index?: number | undefined) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number | undefined) => number'. +!!! error TS2430: Type '(x: (data: any, index?: number) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number) => number'. !!! error TS2430: Target signature provides too few arguments. Expected 1 or more, but got 0. x(x: (data: any, index?: number) => number): D3SvgArea; y(y: (data: any, index?: number) => number): D3SvgArea; diff --git a/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.errors.txt.diff new file mode 100644 index 00000000000..16784549c6c --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.errors.txt.diff @@ -0,0 +1,19 @@ +--- old.derivedInterfaceCallSignature.errors.txt ++++ new.derivedInterfaceCallSignature.errors.txt +@@= skipped -0, +0 lines =@@ + derivedInterfaceCallSignature.ts(11,11): error TS2430: Interface 'D3SvgArea' incorrectly extends interface 'D3SvgPath'. + Types of property 'x' are incompatible. +- Type '(x: (data: any, index?: number | undefined) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number | undefined) => number'. ++ Type '(x: (data: any, index?: number) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number) => number'. + Target signature provides too few arguments. Expected 1 or more, but got 0. + + +@@= skipped -18, +18 lines =@@ + ~~~~~~~~~ + !!! error TS2430: Interface 'D3SvgArea' incorrectly extends interface 'D3SvgPath'. + !!! error TS2430: Types of property 'x' are incompatible. +-!!! error TS2430: Type '(x: (data: any, index?: number | undefined) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number | undefined) => number'. ++!!! error TS2430: Type '(x: (data: any, index?: number) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number) => number'. + !!! error TS2430: Target signature provides too few arguments. Expected 1 or more, but got 0. + x(x: (data: any, index?: number) => number): D3SvgArea; + y(y: (data: any, index?: number) => number): D3SvgArea; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.types b/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.types index fb5d959654e..f7e7c90731d 100644 --- a/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.types +++ b/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.types @@ -7,12 +7,12 @@ interface D3SvgPath { >index : number | undefined x(): (data: any, index?: number) => number; ->x : () => (data: any, index?: number | undefined) => number +>x : () => (data: any, index?: number) => number >data : any >index : number | undefined y(): (data: any, index?: number) => number; ->y : () => (data: any, index?: number | undefined) => number +>y : () => (data: any, index?: number) => number >data : any >index : number | undefined @@ -23,51 +23,51 @@ interface D3SvgPath { >tension : () => number defined(): (data: any, index?: number) => boolean; ->defined : () => (data: any, index?: number | undefined) => boolean +>defined : () => (data: any, index?: number) => boolean >data : any >index : number | undefined } interface D3SvgArea extends D3SvgPath { x(x: (data: any, index?: number) => number): D3SvgArea; ->x : (x: (data: any, index?: number | undefined) => number) => D3SvgArea ->x : (data: any, index?: number | undefined) => number +>x : (x: (data: any, index?: number) => number) => D3SvgArea +>x : (data: any, index?: number) => number >data : any >index : number | undefined y(y: (data: any, index?: number) => number): D3SvgArea; ->y : (y: (data: any, index?: number | undefined) => number) => D3SvgArea ->y : (data: any, index?: number | undefined) => number +>y : (y: (data: any, index?: number) => number) => D3SvgArea +>y : (data: any, index?: number) => number >data : any >index : number | undefined y0(): (data: any, index?: number) => number; ->y0 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } +>y0 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } >data : any >index : number | undefined y0(y: number): D3SvgArea; ->y0 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } +>y0 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } >y : number y0(y: (data: any, index?: number) => number): D3SvgArea; ->y0 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } ->y : (data: any, index?: number | undefined) => number +>y0 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } +>y : (data: any, index?: number) => number >data : any >index : number | undefined y1(): (data: any, index?: number) => number; ->y1 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } +>y1 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } >data : any >index : number | undefined y1(y: number): D3SvgArea; ->y1 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } +>y1 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } >y : number y1(y: (data: any, index?: number) => number): D3SvgArea; ->y1 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } ->y : (data: any, index?: number | undefined) => number +>y1 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } +>y : (data: any, index?: number) => number >data : any >index : number | undefined @@ -80,8 +80,8 @@ interface D3SvgArea extends D3SvgPath { >tension : number defined(defined: (data: any, index?: number) => boolean): D3SvgArea; ->defined : (defined: (data: any, index?: number | undefined) => boolean) => D3SvgArea ->defined : (data: any, index?: number | undefined) => boolean +>defined : (defined: (data: any, index?: number) => boolean) => D3SvgArea +>defined : (data: any, index?: number) => boolean >data : any >index : number | undefined } diff --git a/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.types.diff b/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.types.diff deleted file mode 100644 index 944f93eb877..00000000000 --- a/testdata/baselines/reference/submodule/compiler/derivedInterfaceCallSignature.types.diff +++ /dev/null @@ -1,93 +0,0 @@ ---- old.derivedInterfaceCallSignature.types -+++ new.derivedInterfaceCallSignature.types -@@= skipped -6, +6 lines =@@ - >index : number | undefined - - x(): (data: any, index?: number) => number; -->x : () => (data: any, index?: number) => number -+>x : () => (data: any, index?: number | undefined) => number - >data : any - >index : number | undefined - - y(): (data: any, index?: number) => number; -->y : () => (data: any, index?: number) => number -+>y : () => (data: any, index?: number | undefined) => number - >data : any - >index : number | undefined - -@@= skipped -16, +16 lines =@@ - >tension : () => number - - defined(): (data: any, index?: number) => boolean; -->defined : () => (data: any, index?: number) => boolean -+>defined : () => (data: any, index?: number | undefined) => boolean - >data : any - >index : number | undefined - } - - interface D3SvgArea extends D3SvgPath { - x(x: (data: any, index?: number) => number): D3SvgArea; -->x : (x: (data: any, index?: number) => number) => D3SvgArea -->x : (data: any, index?: number) => number -+>x : (x: (data: any, index?: number | undefined) => number) => D3SvgArea -+>x : (data: any, index?: number | undefined) => number - >data : any - >index : number | undefined - - y(y: (data: any, index?: number) => number): D3SvgArea; -->y : (y: (data: any, index?: number) => number) => D3SvgArea -->y : (data: any, index?: number) => number -+>y : (y: (data: any, index?: number | undefined) => number) => D3SvgArea -+>y : (data: any, index?: number | undefined) => number - >data : any - >index : number | undefined - - y0(): (data: any, index?: number) => number; -->y0 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -+>y0 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } - >data : any - >index : number | undefined - - y0(y: number): D3SvgArea; -->y0 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -+>y0 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } - >y : number - - y0(y: (data: any, index?: number) => number): D3SvgArea; -->y0 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -->y : (data: any, index?: number) => number -+>y0 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } -+>y : (data: any, index?: number | undefined) => number - >data : any - >index : number | undefined - - y1(): (data: any, index?: number) => number; -->y1 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -+>y1 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } - >data : any - >index : number | undefined - - y1(y: number): D3SvgArea; -->y1 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -+>y1 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } - >y : number - - y1(y: (data: any, index?: number) => number): D3SvgArea; -->y1 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -->y : (data: any, index?: number) => number -+>y1 : { (): (data: any, index?: number | undefined) => number; (y: number): D3SvgArea; (y: (data: any, index?: number | undefined) => number): D3SvgArea; } -+>y : (data: any, index?: number | undefined) => number - >data : any - >index : number | undefined - -@@= skipped -57, +57 lines =@@ - >tension : number - - defined(defined: (data: any, index?: number) => boolean): D3SvgArea; -->defined : (defined: (data: any, index?: number) => boolean) => D3SvgArea -->defined : (data: any, index?: number) => boolean -+>defined : (defined: (data: any, index?: number | undefined) => boolean) => D3SvgArea -+>defined : (data: any, index?: number | undefined) => boolean - >data : any - >index : number | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/destructureOptionalParameter.types b/testdata/baselines/reference/submodule/compiler/destructureOptionalParameter.types index b9d38e2fb7a..e2c5f481613 100644 --- a/testdata/baselines/reference/submodule/compiler/destructureOptionalParameter.types +++ b/testdata/baselines/reference/submodule/compiler/destructureOptionalParameter.types @@ -2,7 +2,7 @@ === destructureOptionalParameter.ts === declare function f1({ a, b }?: { a: number, b: string }): void; ->f1 : ({ a, b }?: { a: number; b: string; } | undefined) => void +>f1 : ({ a, b }?: { a: number; b: string; }) => void >a : number >b : string >a : number diff --git a/testdata/baselines/reference/submodule/compiler/destructureOptionalParameter.types.diff b/testdata/baselines/reference/submodule/compiler/destructureOptionalParameter.types.diff deleted file mode 100644 index 3b9cbdcee0c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/destructureOptionalParameter.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.destructureOptionalParameter.types -+++ new.destructureOptionalParameter.types -@@= skipped -1, +1 lines =@@ - - === destructureOptionalParameter.ts === - declare function f1({ a, b }?: { a: number, b: string }): void; -->f1 : ({ a, b }?: { a: number; b: string; }) => void -+>f1 : ({ a, b }?: { a: number; b: string; } | undefined) => void - >a : number - >b : string - >a : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/destructuredDeclarationEmit.types b/testdata/baselines/reference/submodule/compiler/destructuredDeclarationEmit.types index f7d5a901758..f23c99bfc78 100644 --- a/testdata/baselines/reference/submodule/compiler/destructuredDeclarationEmit.types +++ b/testdata/baselines/reference/submodule/compiler/destructuredDeclarationEmit.types @@ -18,7 +18,7 @@ const foo = { bar: 'hello', bat: 'world', bam: { bork: { bar: 'a', baz: 'b' } } >'b' : "b" const arr: [0, 1, 2, ['a', 'b', 'c', [{def: 'def'}, {sec: 'sec'}]]] = [0, 1, 2, ['a', 'b', 'c', [{def: 'def'}, {sec: 'sec'}]]]; ->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] +>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] >def : "def" >sec : "sec" >[0, 1, 2, ['a', 'b', 'c', [{def: 'def'}, {sec: 'sec'}]]] : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] @@ -39,16 +39,16 @@ const arr: [0, 1, 2, ['a', 'b', 'c', [{def: 'def'}, {sec: 'sec'}]]] = [0, 1, 2, export { foo, arr }; >foo : { bar: string; bat: string; bam: { bork: { bar: string; baz: string; }; }; } ->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] +>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] === index.ts === import { foo, arr } from './foo'; >foo : { bar: string; bat: string; bam: { bork: { bar: string; baz: string; }; }; } ->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] +>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] export { foo, arr }; >foo : { bar: string; bat: string; bam: { bork: { bar: string; baz: string; }; }; } ->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] +>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] const { bar: baz, bat, bam: { bork: { bar: ibar, baz: ibaz } } } = foo; >bar : any @@ -70,7 +70,7 @@ const [ , one, , [, bee, , [, {sec} ]]] = arr; >one : 1 >bee : "b" >sec : "sec" ->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] +>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] export { one, bee, sec }; >one : 1 diff --git a/testdata/baselines/reference/submodule/compiler/destructuredDeclarationEmit.types.diff b/testdata/baselines/reference/submodule/compiler/destructuredDeclarationEmit.types.diff new file mode 100644 index 00000000000..7fb612bafe5 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/destructuredDeclarationEmit.types.diff @@ -0,0 +1,40 @@ +--- old.destructuredDeclarationEmit.types ++++ new.destructuredDeclarationEmit.types +@@= skipped -17, +17 lines =@@ + >'b' : "b" + + const arr: [0, 1, 2, ['a', 'b', 'c', [{def: 'def'}, {sec: 'sec'}]]] = [0, 1, 2, ['a', 'b', 'c', [{def: 'def'}, {sec: 'sec'}]]]; +->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] ++>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] + >def : "def" + >sec : "sec" + >[0, 1, 2, ['a', 'b', 'c', [{def: 'def'}, {sec: 'sec'}]]] : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] +@@= skipped -21, +21 lines =@@ + + export { foo, arr }; + >foo : { bar: string; bat: string; bam: { bork: { bar: string; baz: string; }; }; } +->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] ++>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] + + === index.ts === + import { foo, arr } from './foo'; + >foo : { bar: string; bat: string; bam: { bork: { bar: string; baz: string; }; }; } +->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] ++>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] + + export { foo, arr }; + >foo : { bar: string; bat: string; bam: { bork: { bar: string; baz: string; }; }; } +->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] ++>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] + + const { bar: baz, bat, bam: { bork: { bar: ibar, baz: ibaz } } } = foo; + >bar : any +@@= skipped -31, +31 lines =@@ + >one : 1 + >bee : "b" + >sec : "sec" +->arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] ++>arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] + + export { one, bee, sec }; + >one : 1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault.types b/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault.types index 8f6d90df296..98195bfce99 100644 --- a/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault.types +++ b/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault.types @@ -2,7 +2,7 @@ === destructuringAssignmentWithDefault.ts === const a: { x?: number } = { }; ->a : { x?: number | undefined; } +>a : { x?: number; } >x : number | undefined >{ } : {} @@ -11,59 +11,59 @@ let x = 0; >0 : 0 ({x = 1} = a); ->({x = 1} = a) : { x?: number | undefined; } ->{x = 1} = a : { x?: number | undefined; } +>({x = 1} = a) : { x?: number; } +>{x = 1} = a : { x?: number; } >{x = 1} : { x?: number; } >x : number >1 : 1 ->a : { x?: number | undefined; } +>a : { x?: number; } // Repro from #26235 function f1(options?: { color?: string, width?: number }) { ->f1 : (options?: { color?: string | undefined; width?: number | undefined; } | undefined) => void ->options : { color?: string | undefined; width?: number | undefined; } | undefined +>f1 : (options?: { color?: string; width?: number; }) => void +>options : { color?: string; width?: number; } | undefined >color : string | undefined >width : number | undefined let { color, width } = options || {}; >color : string | undefined >width : number | undefined ->options || {} : { color?: string | undefined; width?: number | undefined; } ->options : { color?: string | undefined; width?: number | undefined; } | undefined +>options || {} : { color?: string; width?: number; } +>options : { color?: string; width?: number; } | undefined >{} : {} ({ color, width } = options || {}); ->({ color, width } = options || {}) : { color?: string | undefined; width?: number | undefined; } ->{ color, width } = options || {} : { color?: string | undefined; width?: number | undefined; } +>({ color, width } = options || {}) : { color?: string; width?: number; } +>{ color, width } = options || {} : { color?: string; width?: number; } >{ color, width } : { color: string | undefined; width: number | undefined; } >color : string | undefined >width : number | undefined ->options || {} : { color?: string | undefined; width?: number | undefined; } ->options : { color?: string | undefined; width?: number | undefined; } | undefined +>options || {} : { color?: string; width?: number; } +>options : { color?: string; width?: number; } | undefined >{} : {} let x1 = (options || {}).color; >x1 : string | undefined >(options || {}).color : string | undefined ->(options || {}) : { color?: string | undefined; width?: number | undefined; } ->options || {} : { color?: string | undefined; width?: number | undefined; } ->options : { color?: string | undefined; width?: number | undefined; } | undefined +>(options || {}) : { color?: string; width?: number; } +>options || {} : { color?: string; width?: number; } +>options : { color?: string; width?: number; } | undefined >{} : {} >color : string | undefined let x2 = (options || {})["color"]; >x2 : string | undefined >(options || {})["color"] : string | undefined ->(options || {}) : { color?: string | undefined; width?: number | undefined; } ->options || {} : { color?: string | undefined; width?: number | undefined; } ->options : { color?: string | undefined; width?: number | undefined; } | undefined +>(options || {}) : { color?: string; width?: number; } +>options || {} : { color?: string; width?: number; } +>options : { color?: string; width?: number; } | undefined >{} : {} >"color" : "color" } function f2(options?: [string?, number?]) { ->f2 : (options?: [(string | undefined)?, (number | undefined)?] | undefined) => void +>f2 : (options?: [string?, number?]) => void >options : [(string | undefined)?, (number | undefined)?] | undefined let [str, num] = options || []; @@ -93,7 +93,7 @@ function f2(options?: [string?, number?]) { } function f3(options?: { color: string, width: number }) { ->f3 : (options?: { color: string; width: number; } | undefined) => void +>f3 : (options?: { color: string; width: number; }) => void >options : { color: string; width: number; } | undefined >color : string >width : number @@ -135,7 +135,7 @@ function f3(options?: { color: string, width: number }) { } function f4(options?: [string, number]) { ->f4 : (options?: [string, number] | undefined) => void +>f4 : (options?: [string, number]) => void >options : [string, number] | undefined let [str, num] = options || []; diff --git a/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault.types.diff b/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault.types.diff deleted file mode 100644 index 74f6c1d1953..00000000000 --- a/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault.types.diff +++ /dev/null @@ -1,107 +0,0 @@ ---- old.destructuringAssignmentWithDefault.types -+++ new.destructuringAssignmentWithDefault.types -@@= skipped -1, +1 lines =@@ - - === destructuringAssignmentWithDefault.ts === - const a: { x?: number } = { }; -->a : { x?: number; } -+>a : { x?: number | undefined; } - >x : number | undefined - >{ } : {} - -@@= skipped -9, +9 lines =@@ - >0 : 0 - - ({x = 1} = a); -->({x = 1} = a) : { x?: number; } -->{x = 1} = a : { x?: number; } -+>({x = 1} = a) : { x?: number | undefined; } -+>{x = 1} = a : { x?: number | undefined; } - >{x = 1} : { x?: number; } - >x : number - >1 : 1 -->a : { x?: number; } -+>a : { x?: number | undefined; } - - // Repro from #26235 - - function f1(options?: { color?: string, width?: number }) { -->f1 : (options?: { color?: string; width?: number; }) => void -->options : { color?: string; width?: number; } | undefined -+>f1 : (options?: { color?: string | undefined; width?: number | undefined; } | undefined) => void -+>options : { color?: string | undefined; width?: number | undefined; } | undefined - >color : string | undefined - >width : number | undefined - - let { color, width } = options || {}; - >color : string | undefined - >width : number | undefined -->options || {} : { color?: string; width?: number; } -->options : { color?: string; width?: number; } | undefined -+>options || {} : { color?: string | undefined; width?: number | undefined; } -+>options : { color?: string | undefined; width?: number | undefined; } | undefined - >{} : {} - - ({ color, width } = options || {}); -->({ color, width } = options || {}) : { color?: string; width?: number; } -->{ color, width } = options || {} : { color?: string; width?: number; } -+>({ color, width } = options || {}) : { color?: string | undefined; width?: number | undefined; } -+>{ color, width } = options || {} : { color?: string | undefined; width?: number | undefined; } - >{ color, width } : { color: string | undefined; width: number | undefined; } - >color : string | undefined - >width : number | undefined -->options || {} : { color?: string; width?: number; } -->options : { color?: string; width?: number; } | undefined -+>options || {} : { color?: string | undefined; width?: number | undefined; } -+>options : { color?: string | undefined; width?: number | undefined; } | undefined - >{} : {} - - let x1 = (options || {}).color; - >x1 : string | undefined - >(options || {}).color : string | undefined -->(options || {}) : { color?: string; width?: number; } -->options || {} : { color?: string; width?: number; } -->options : { color?: string; width?: number; } | undefined -+>(options || {}) : { color?: string | undefined; width?: number | undefined; } -+>options || {} : { color?: string | undefined; width?: number | undefined; } -+>options : { color?: string | undefined; width?: number | undefined; } | undefined - >{} : {} - >color : string | undefined - - let x2 = (options || {})["color"]; - >x2 : string | undefined - >(options || {})["color"] : string | undefined -->(options || {}) : { color?: string; width?: number; } -->options || {} : { color?: string; width?: number; } -->options : { color?: string; width?: number; } | undefined -+>(options || {}) : { color?: string | undefined; width?: number | undefined; } -+>options || {} : { color?: string | undefined; width?: number | undefined; } -+>options : { color?: string | undefined; width?: number | undefined; } | undefined - >{} : {} - >"color" : "color" - } - - function f2(options?: [string?, number?]) { -->f2 : (options?: [string?, number?]) => void -+>f2 : (options?: [(string | undefined)?, (number | undefined)?] | undefined) => void - >options : [(string | undefined)?, (number | undefined)?] | undefined - - let [str, num] = options || []; -@@= skipped -82, +82 lines =@@ - } - - function f3(options?: { color: string, width: number }) { -->f3 : (options?: { color: string; width: number; }) => void -+>f3 : (options?: { color: string; width: number; } | undefined) => void - >options : { color: string; width: number; } | undefined - >color : string - >width : number -@@= skipped -42, +42 lines =@@ - } - - function f4(options?: [string, number]) { -->f4 : (options?: [string, number]) => void -+>f4 : (options?: [string, number] | undefined) => void - >options : [string, number] | undefined - - let [str, num] = options || []; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault2.types b/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault2.types index 34568b36269..217260b8770 100644 --- a/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault2.types +++ b/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault2.types @@ -2,7 +2,7 @@ === destructuringAssignmentWithDefault2.ts === const a: { x?: number; y?: number } = { }; ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } >x : number | undefined >y : number | undefined >{ } : {} @@ -12,78 +12,78 @@ let x: number; // Should not error out ({ x = 0 } = a); ->({ x = 0 } = a) : { x?: number | undefined; y?: number | undefined; } ->{ x = 0 } = a : { x?: number | undefined; y?: number | undefined; } +>({ x = 0 } = a) : { x?: number; y?: number; } +>{ x = 0 } = a : { x?: number; y?: number; } >{ x = 0 } : { x?: number; } >x : number >0 : 0 ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } ({ x: x = 0} = a); ->({ x: x = 0} = a) : { x?: number | undefined; y?: number | undefined; } ->{ x: x = 0} = a : { x?: number | undefined; y?: number | undefined; } +>({ x: x = 0} = a) : { x?: number; y?: number; } +>{ x: x = 0} = a : { x?: number; y?: number; } >{ x: x = 0} : { x?: number; } >x : number >x = 0 : 0 >x : number >0 : 0 ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } ({ y: x = 0} = a); ->({ y: x = 0} = a) : { x?: number | undefined; y?: number | undefined; } ->{ y: x = 0} = a : { x?: number | undefined; y?: number | undefined; } +>({ y: x = 0} = a) : { x?: number; y?: number; } +>{ y: x = 0} = a : { x?: number; y?: number; } >{ y: x = 0} : { y?: number; } >y : number >x = 0 : 0 >x : number >0 : 0 ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } // Should be error ({ x = undefined } = a); ->({ x = undefined } = a) : { x?: number | undefined; y?: number | undefined; } ->{ x = undefined } = a : { x?: number | undefined; y?: number | undefined; } +>({ x = undefined } = a) : { x?: number; y?: number; } +>{ x = undefined } = a : { x?: number; y?: number; } >{ x = undefined } : { x?: number; } >x : number >undefined : undefined ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } ({ x: x = undefined } = a); ->({ x: x = undefined } = a) : { x?: number | undefined; y?: number | undefined; } ->{ x: x = undefined } = a : { x?: number | undefined; y?: number | undefined; } +>({ x: x = undefined } = a) : { x?: number; y?: number; } +>{ x: x = undefined } = a : { x?: number; y?: number; } >{ x: x = undefined } : { x?: undefined; } >x : undefined >x = undefined : undefined >x : number >undefined : undefined ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } ({ y: x = undefined } = a); ->({ y: x = undefined } = a) : { x?: number | undefined; y?: number | undefined; } ->{ y: x = undefined } = a : { x?: number | undefined; y?: number | undefined; } +>({ y: x = undefined } = a) : { x?: number; y?: number; } +>{ y: x = undefined } = a : { x?: number; y?: number; } >{ y: x = undefined } : { y?: undefined; } >y : undefined >x = undefined : undefined >x : number >undefined : undefined ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } const { x: z1 } = a; >x : any >z1 : number | undefined ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } const { x: z2 = 0 } = a; >x : any >z2 : number >0 : 0 ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } const { x: z3 = undefined } = a; >x : any >z3 : number | undefined >undefined : undefined ->a : { x?: number | undefined; y?: number | undefined; } +>a : { x?: number; y?: number; } declare const r: Iterator; diff --git a/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault2.types.diff b/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault2.types.diff deleted file mode 100644 index da8498112d0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/destructuringAssignmentWithDefault2.types.diff +++ /dev/null @@ -1,111 +0,0 @@ ---- old.destructuringAssignmentWithDefault2.types -+++ new.destructuringAssignmentWithDefault2.types -@@= skipped -1, +1 lines =@@ - - === destructuringAssignmentWithDefault2.ts === - const a: { x?: number; y?: number } = { }; -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - >x : number | undefined - >y : number | undefined - >{ } : {} -@@= skipped -10, +10 lines =@@ - - // Should not error out - ({ x = 0 } = a); -->({ x = 0 } = a) : { x?: number; y?: number; } -->{ x = 0 } = a : { x?: number; y?: number; } -+>({ x = 0 } = a) : { x?: number | undefined; y?: number | undefined; } -+>{ x = 0 } = a : { x?: number | undefined; y?: number | undefined; } - >{ x = 0 } : { x?: number; } - >x : number - >0 : 0 -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - - ({ x: x = 0} = a); -->({ x: x = 0} = a) : { x?: number; y?: number; } -->{ x: x = 0} = a : { x?: number; y?: number; } -+>({ x: x = 0} = a) : { x?: number | undefined; y?: number | undefined; } -+>{ x: x = 0} = a : { x?: number | undefined; y?: number | undefined; } - >{ x: x = 0} : { x?: number; } - >x : number - >x = 0 : 0 - >x : number - >0 : 0 -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - - ({ y: x = 0} = a); -->({ y: x = 0} = a) : { x?: number; y?: number; } -->{ y: x = 0} = a : { x?: number; y?: number; } -+>({ y: x = 0} = a) : { x?: number | undefined; y?: number | undefined; } -+>{ y: x = 0} = a : { x?: number | undefined; y?: number | undefined; } - >{ y: x = 0} : { y?: number; } - >y : number - >x = 0 : 0 - >x : number - >0 : 0 -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - - // Should be error - ({ x = undefined } = a); -->({ x = undefined } = a) : { x?: number; y?: number; } -->{ x = undefined } = a : { x?: number; y?: number; } -+>({ x = undefined } = a) : { x?: number | undefined; y?: number | undefined; } -+>{ x = undefined } = a : { x?: number | undefined; y?: number | undefined; } - >{ x = undefined } : { x?: number; } - >x : number - >undefined : undefined -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - - ({ x: x = undefined } = a); -->({ x: x = undefined } = a) : { x?: number; y?: number; } -->{ x: x = undefined } = a : { x?: number; y?: number; } -+>({ x: x = undefined } = a) : { x?: number | undefined; y?: number | undefined; } -+>{ x: x = undefined } = a : { x?: number | undefined; y?: number | undefined; } - >{ x: x = undefined } : { x?: undefined; } - >x : undefined - >x = undefined : undefined - >x : number - >undefined : undefined -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - - ({ y: x = undefined } = a); -->({ y: x = undefined } = a) : { x?: number; y?: number; } -->{ y: x = undefined } = a : { x?: number; y?: number; } -+>({ y: x = undefined } = a) : { x?: number | undefined; y?: number | undefined; } -+>{ y: x = undefined } = a : { x?: number | undefined; y?: number | undefined; } - >{ y: x = undefined } : { y?: undefined; } - >y : undefined - >x = undefined : undefined - >x : number - >undefined : undefined -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - - const { x: z1 } = a; - >x : any - >z1 : number | undefined -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - - const { x: z2 = 0 } = a; - >x : any - >z2 : number - >0 : 0 -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - - const { x: z3 = undefined } = a; - >x : any - >z3 : number | undefined - >undefined : undefined -->a : { x?: number; y?: number; } -+>a : { x?: number | undefined; y?: number | undefined; } - - - declare const r: Iterator; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations1.types b/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations1.types index 3ae4a8202d3..40d8e61e7d7 100644 --- a/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations1.types +++ b/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations1.types @@ -2,11 +2,11 @@ === destructuringInVariableDeclarations1.ts === export let { toString } = 1; ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >1 : 1 { let { toFixed } = 1; ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string >1 : 1 } diff --git a/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations1.types.diff b/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations1.types.diff deleted file mode 100644 index ff06014af2c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations1.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.destructuringInVariableDeclarations1.types -+++ new.destructuringInVariableDeclarations1.types -@@= skipped -1, +1 lines =@@ - - === destructuringInVariableDeclarations1.ts === - export let { toString } = 1; -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >1 : 1 - { - let { toFixed } = 1; -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - >1 : 1 - } diff --git a/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations2.types b/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations2.types index f938156bd2e..886a4076aa1 100644 --- a/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations2.types +++ b/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations2.types @@ -2,11 +2,11 @@ === destructuringInVariableDeclarations2.ts === let { toString } = 1; ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >1 : 1 { let { toFixed } = 1; ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string >1 : 1 } export {}; diff --git a/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations2.types.diff b/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations2.types.diff deleted file mode 100644 index f6950a6c543..00000000000 --- a/testdata/baselines/reference/submodule/compiler/destructuringInVariableDeclarations2.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.destructuringInVariableDeclarations2.types -+++ new.destructuringInVariableDeclarations2.types -@@= skipped -1, +1 lines =@@ - - === destructuringInVariableDeclarations2.ts === - let { toString } = 1; -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >1 : 1 - { - let { toFixed } = 1; -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - >1 : 1 - } - export {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/destructuringInitializerContextualTypeFromContext.types b/testdata/baselines/reference/submodule/compiler/destructuringInitializerContextualTypeFromContext.types index 96b43c1e40a..e0bff68ab2a 100644 --- a/testdata/baselines/reference/submodule/compiler/destructuringInitializerContextualTypeFromContext.types +++ b/testdata/baselines/reference/submodule/compiler/destructuringInitializerContextualTypeFromContext.types @@ -51,9 +51,9 @@ const Child: SFC = ({ >`name: ${name} props: ${JSON.stringify(props)}` : string >name : "Apollo" | "Artemis" | "Dionysus" | "Persephone" >JSON.stringify(props) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >props : {} // Repro from #29189 diff --git a/testdata/baselines/reference/submodule/compiler/destructuringInitializerContextualTypeFromContext.types.diff b/testdata/baselines/reference/submodule/compiler/destructuringInitializerContextualTypeFromContext.types.diff deleted file mode 100644 index c962a7bc28b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/destructuringInitializerContextualTypeFromContext.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.destructuringInitializerContextualTypeFromContext.types -+++ new.destructuringInitializerContextualTypeFromContext.types -@@= skipped -50, +50 lines =@@ - >`name: ${name} props: ${JSON.stringify(props)}` : string - >name : "Apollo" | "Artemis" | "Dionysus" | "Persephone" - >JSON.stringify(props) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >props : {} - - // Repro from #29189 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/destructuringWithGenericParameter.types b/testdata/baselines/reference/submodule/compiler/destructuringWithGenericParameter.types index 9da1950d060..80f97b81a30 100644 --- a/testdata/baselines/reference/submodule/compiler/destructuringWithGenericParameter.types +++ b/testdata/baselines/reference/submodule/compiler/destructuringWithGenericParameter.types @@ -38,9 +38,9 @@ genericFunction(genericObject, ({greeting}) => { var s = greeting.toLocaleLowerCase(); // Greeting should be of type string >s : string >greeting.toLocaleLowerCase() : string ->greeting.toLocaleLowerCase : (locales?: string | string[] | undefined) => string +>greeting.toLocaleLowerCase : (locales?: string | string[]) => string >greeting : string ->toLocaleLowerCase : (locales?: string | string[] | undefined) => string +>toLocaleLowerCase : (locales?: string | string[]) => string }); diff --git a/testdata/baselines/reference/submodule/compiler/destructuringWithGenericParameter.types.diff b/testdata/baselines/reference/submodule/compiler/destructuringWithGenericParameter.types.diff deleted file mode 100644 index 2959d6e4d5d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/destructuringWithGenericParameter.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.destructuringWithGenericParameter.types -+++ new.destructuringWithGenericParameter.types -@@= skipped -37, +37 lines =@@ - var s = greeting.toLocaleLowerCase(); // Greeting should be of type string - >s : string - >greeting.toLocaleLowerCase() : string -->greeting.toLocaleLowerCase : (locales?: string | string[]) => string -+>greeting.toLocaleLowerCase : (locales?: string | string[] | undefined) => string - >greeting : string -->toLocaleLowerCase : (locales?: string | string[]) => string -+>toLocaleLowerCase : (locales?: string | string[] | undefined) => string - - }); diff --git a/testdata/baselines/reference/submodule/compiler/destructuringWithNumberLiteral.types b/testdata/baselines/reference/submodule/compiler/destructuringWithNumberLiteral.types index 84638fa915d..b04d57040e4 100644 --- a/testdata/baselines/reference/submodule/compiler/destructuringWithNumberLiteral.types +++ b/testdata/baselines/reference/submodule/compiler/destructuringWithNumberLiteral.types @@ -2,6 +2,6 @@ === destructuringWithNumberLiteral.ts === var { toExponential } = 0; ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/destructuringWithNumberLiteral.types.diff b/testdata/baselines/reference/submodule/compiler/destructuringWithNumberLiteral.types.diff deleted file mode 100644 index 52b62f4a8cc..00000000000 --- a/testdata/baselines/reference/submodule/compiler/destructuringWithNumberLiteral.types.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.destructuringWithNumberLiteral.types -+++ new.destructuringWithNumberLiteral.types -@@= skipped -1, +1 lines =@@ - - === destructuringWithNumberLiteral.ts === - var { toExponential } = 0; -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types b/testdata/baselines/reference/submodule/compiler/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types index 8cdb034a270..be483ae8cf5 100644 --- a/testdata/baselines/reference/submodule/compiler/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types +++ b/testdata/baselines/reference/submodule/compiler/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types @@ -12,7 +12,7 @@ declare function getNum(): number; >getNum : () => number declare function foo(arg: { x: Bar, y: Date }, item: number, items?: [number, number, number]): void; ->foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number] | undefined) => void +>foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void >arg : { x: Bar; y: Date; } >x : Bar >y : Date @@ -21,7 +21,7 @@ declare function foo(arg: { x: Bar, y: Date }, item: number, items?: [number, nu foo({ >foo({ x: Bar, y: Date}, getNum()) : void ->foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number] | undefined) => void +>foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void >{ x: Bar, y: Date} : { x: typeof Bar; y: DateConstructor; } x: Bar, @@ -38,7 +38,7 @@ foo({ foo({ >foo({ x: new Bar(), y: new Date()}, getNum) : void ->foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number] | undefined) => void +>foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void >{ x: new Bar(), y: new Date()} : { x: Bar; y: Date; } x: new Bar(), @@ -57,7 +57,7 @@ foo({ foo({ >foo({ x: new Bar(), y: new Date()}, getNum(), [ 1, 2, getNum]) : void ->foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number] | undefined) => void +>foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void >{ x: new Bar(), y: new Date()} : { x: Bar; y: Date; } x: new Bar(), diff --git a/testdata/baselines/reference/submodule/compiler/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types.diff b/testdata/baselines/reference/submodule/compiler/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types.diff deleted file mode 100644 index 8acf8b2e4b4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types -+++ new.didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types -@@= skipped -11, +11 lines =@@ - >getNum : () => number - - declare function foo(arg: { x: Bar, y: Date }, item: number, items?: [number, number, number]): void; -->foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void -+>foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number] | undefined) => void - >arg : { x: Bar; y: Date; } - >x : Bar - >y : Date -@@= skipped -9, +9 lines =@@ - - foo({ - >foo({ x: Bar, y: Date}, getNum()) : void -->foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void -+>foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number] | undefined) => void - >{ x: Bar, y: Date} : { x: typeof Bar; y: DateConstructor; } - - x: Bar, -@@= skipped -17, +17 lines =@@ - - foo({ - >foo({ x: new Bar(), y: new Date()}, getNum) : void -->foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void -+>foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number] | undefined) => void - >{ x: new Bar(), y: new Date()} : { x: Bar; y: Date; } - - x: new Bar(), -@@= skipped -19, +19 lines =@@ - - foo({ - >foo({ x: new Bar(), y: new Date()}, getNum(), [ 1, 2, getNum]) : void -->foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void -+>foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number] | undefined) => void - >{ x: new Bar(), y: new Date()} : { x: Bar; y: Date; } - - x: new Bar(), \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/differentTypesWithSameName.types b/testdata/baselines/reference/submodule/compiler/differentTypesWithSameName.types index a163bcff31e..470706675c0 100644 --- a/testdata/baselines/reference/submodule/compiler/differentTypesWithSameName.types +++ b/testdata/baselines/reference/submodule/compiler/differentTypesWithSameName.types @@ -11,7 +11,7 @@ namespace m { >s : string } export function doSomething(v: m.variable) { ->doSomething : (v: variable) => void +>doSomething : (v: m.variable) => void >v : variable >m : any diff --git a/testdata/baselines/reference/submodule/compiler/differentTypesWithSameName.types.diff b/testdata/baselines/reference/submodule/compiler/differentTypesWithSameName.types.diff deleted file mode 100644 index f52346f08f2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/differentTypesWithSameName.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.differentTypesWithSameName.types -+++ new.differentTypesWithSameName.types -@@= skipped -10, +10 lines =@@ - >s : string - } - export function doSomething(v: m.variable) { -->doSomething : (v: m.variable) => void -+>doSomething : (v: variable) => void - >v : variable - >m : any - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/discriminableUnionWithIntersectedMembers.types b/testdata/baselines/reference/submodule/compiler/discriminableUnionWithIntersectedMembers.types index 625eaabfdf2..6e5a28406da 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminableUnionWithIntersectedMembers.types +++ b/testdata/baselines/reference/submodule/compiler/discriminableUnionWithIntersectedMembers.types @@ -19,7 +19,7 @@ type X = // error const x: X = 4 as any as { x: 'x' | 'y', y: number }; >x : X ->4 as any as { x: 'x' | 'y', y: number } : { x: "x" | "y"; y: number; } +>4 as any as { x: 'x' | 'y', y: number } : { x: 'x' | 'y'; y: number; } >4 as any : any >4 : 4 >x : "x" | "y" @@ -40,7 +40,7 @@ type Y = // no error const y: Y = 4 as any as { x: 'x' | 'y', y: number }; >y : Y ->4 as any as { x: 'x' | 'y', y: number } : { x: "x" | "y"; y: number; } +>4 as any as { x: 'x' | 'y', y: number } : { x: 'x' | 'y'; y: number; } >4 as any : any >4 : 4 >x : "x" | "y" diff --git a/testdata/baselines/reference/submodule/compiler/discriminableUnionWithIntersectedMembers.types.diff b/testdata/baselines/reference/submodule/compiler/discriminableUnionWithIntersectedMembers.types.diff new file mode 100644 index 00000000000..218f41b4ce5 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/discriminableUnionWithIntersectedMembers.types.diff @@ -0,0 +1,20 @@ +--- old.discriminableUnionWithIntersectedMembers.types ++++ new.discriminableUnionWithIntersectedMembers.types +@@= skipped -18, +18 lines =@@ + // error + const x: X = 4 as any as { x: 'x' | 'y', y: number }; + >x : X +->4 as any as { x: 'x' | 'y', y: number } : { x: "x" | "y"; y: number; } ++>4 as any as { x: 'x' | 'y', y: number } : { x: 'x' | 'y'; y: number; } + >4 as any : any + >4 : 4 + >x : "x" | "y" +@@= skipped -21, +21 lines =@@ + // no error + const y: Y = 4 as any as { x: 'x' | 'y', y: number }; + >y : Y +->4 as any as { x: 'x' | 'y', y: number } : { x: "x" | "y"; y: number; } ++>4 as any as { x: 'x' | 'y', y: number } : { x: 'x' | 'y'; y: number; } + >4 as any : any + >4 : 4 + >x : "x" | "y" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/discriminantNarrowingCouldBeCircular.types b/testdata/baselines/reference/submodule/compiler/discriminantNarrowingCouldBeCircular.types index 5e175439607..a77b1e3221f 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminantNarrowingCouldBeCircular.types +++ b/testdata/baselines/reference/submodule/compiler/discriminantNarrowingCouldBeCircular.types @@ -77,9 +77,9 @@ function getImplicitAriaRole(element: SomeRecord) { >parent : SomeRecord | undefined >!parents.includes(parent.a) : boolean >parents.includes(parent.a) : boolean ->parents.includes : (searchElement: string, fromIndex?: number | undefined) => boolean +>parents.includes : (searchElement: string, fromIndex?: number) => boolean >parents : string[] ->includes : (searchElement: string, fromIndex?: number | undefined) => boolean +>includes : (searchElement: string, fromIndex?: number) => boolean >parent.a : string >parent : SomeRecord >a : string diff --git a/testdata/baselines/reference/submodule/compiler/discriminantNarrowingCouldBeCircular.types.diff b/testdata/baselines/reference/submodule/compiler/discriminantNarrowingCouldBeCircular.types.diff deleted file mode 100644 index e9399164b0a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/discriminantNarrowingCouldBeCircular.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.discriminantNarrowingCouldBeCircular.types -+++ new.discriminantNarrowingCouldBeCircular.types -@@= skipped -76, +76 lines =@@ - >parent : SomeRecord | undefined - >!parents.includes(parent.a) : boolean - >parents.includes(parent.a) : boolean -->parents.includes : (searchElement: string, fromIndex?: number) => boolean -+>parents.includes : (searchElement: string, fromIndex?: number | undefined) => boolean - >parents : string[] -->includes : (searchElement: string, fromIndex?: number) => boolean -+>includes : (searchElement: string, fromIndex?: number | undefined) => boolean - >parent.a : string - >parent : SomeRecord - >a : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/discriminantPropertyCheck.types b/testdata/baselines/reference/submodule/compiler/discriminantPropertyCheck.types index 18a45c910fc..076827256f5 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminantPropertyCheck.types +++ b/testdata/baselines/reference/submodule/compiler/discriminantPropertyCheck.types @@ -300,11 +300,11 @@ function func2(inst: Instance) { >Num : Types.Num inst.value.toExponential; ->inst.value.toExponential : (fractionDigits?: number | undefined) => string +>inst.value.toExponential : (fractionDigits?: number) => string >inst.value : number >inst : NumType >value : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string break; } @@ -415,7 +415,7 @@ export function foo(obj: Obj) { onlyPlus(obj.key); >onlyPlus(obj.key) : "+" ->onlyPlus : (arg: "+") => "+" +>onlyPlus : (arg: '+') => "+" >obj.key : "+" >obj : AdditiveObj >key : "+" @@ -426,7 +426,7 @@ export function foo(obj: Obj) { } function onlyPlus(arg: '+') { ->onlyPlus : (arg: "+") => "+" +>onlyPlus : (arg: '+') => "+" >arg : "+" return arg; diff --git a/testdata/baselines/reference/submodule/compiler/discriminantPropertyCheck.types.diff b/testdata/baselines/reference/submodule/compiler/discriminantPropertyCheck.types.diff index c88e1ba254f..9b9d3490b28 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminantPropertyCheck.types.diff +++ b/testdata/baselines/reference/submodule/compiler/discriminantPropertyCheck.types.diff @@ -1,16 +1,20 @@ --- old.discriminantPropertyCheck.types +++ new.discriminantPropertyCheck.types -@@= skipped -299, +299 lines =@@ - >Num : Types.Num +@@= skipped -414, +414 lines =@@ - inst.value.toExponential; -->inst.value.toExponential : (fractionDigits?: number) => string -+>inst.value.toExponential : (fractionDigits?: number | undefined) => string - >inst.value : number - >inst : NumType - >value : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string + onlyPlus(obj.key); + >onlyPlus(obj.key) : "+" +->onlyPlus : (arg: "+") => "+" ++>onlyPlus : (arg: '+') => "+" + >obj.key : "+" + >obj : AdditiveObj + >key : "+" +@@= skipped -11, +11 lines =@@ + } - break; - } \ No newline at end of file + function onlyPlus(arg: '+') { +->onlyPlus : (arg: "+") => "+" ++>onlyPlus : (arg: '+') => "+" + >arg : "+" + + return arg; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/discriminantPropertyInference.types b/testdata/baselines/reference/submodule/compiler/discriminantPropertyInference.types index 4103d22b50a..ea85f963927 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminantPropertyInference.types +++ b/testdata/baselines/reference/submodule/compiler/discriminantPropertyInference.types @@ -31,13 +31,13 @@ type Props = DiscriminatorTrue | DiscriminatorFalse; >Props : Props declare function f(options: DiscriminatorTrue | DiscriminatorFalse): any; ->f : (options: DiscriminatorFalse | DiscriminatorTrue) => any +>f : (options: DiscriminatorTrue | DiscriminatorFalse) => any >options : DiscriminatorFalse | DiscriminatorTrue // simple inference f({ >f({ disc: true, cb: s => parseInt(s)}) : any ->f : (options: DiscriminatorFalse | DiscriminatorTrue) => any +>f : (options: DiscriminatorTrue | DiscriminatorFalse) => any >{ disc: true, cb: s => parseInt(s)} : { disc: true; cb: (s: string) => number; } disc: true, @@ -49,7 +49,7 @@ f({ >s => parseInt(s) : (s: string) => number >s : string >parseInt(s) : number ->parseInt : (string: string, radix?: number | undefined) => number +>parseInt : (string: string, radix?: number) => number >s : string }); @@ -57,7 +57,7 @@ f({ // simple inference f({ >f({ disc: false, cb: n => n.toFixed()}) : any ->f : (options: DiscriminatorFalse | DiscriminatorTrue) => any +>f : (options: DiscriminatorTrue | DiscriminatorFalse) => any >{ disc: false, cb: n => n.toFixed()} : { disc: false; cb: (n: number) => string; } disc: false, @@ -69,16 +69,16 @@ f({ >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string }); // simple inference when strict-null-checks are enabled f({ >f({ disc: undefined, cb: n => n.toFixed()}) : any ->f : (options: DiscriminatorFalse | DiscriminatorTrue) => any +>f : (options: DiscriminatorTrue | DiscriminatorFalse) => any >{ disc: undefined, cb: n => n.toFixed()} : { disc: undefined; cb: (n: number) => string; } disc: undefined, @@ -90,16 +90,16 @@ f({ >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string }); // requires checking type information since discriminator is missing from object f({ >f({ cb: n => n.toFixed()}) : any ->f : (options: DiscriminatorFalse | DiscriminatorTrue) => any +>f : (options: DiscriminatorTrue | DiscriminatorFalse) => any >{ cb: n => n.toFixed()} : { cb: (n: number) => string; } cb: n => n.toFixed() @@ -107,9 +107,9 @@ f({ >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string }); diff --git a/testdata/baselines/reference/submodule/compiler/discriminantPropertyInference.types.diff b/testdata/baselines/reference/submodule/compiler/discriminantPropertyInference.types.diff deleted file mode 100644 index 232f25b1714..00000000000 --- a/testdata/baselines/reference/submodule/compiler/discriminantPropertyInference.types.diff +++ /dev/null @@ -1,87 +0,0 @@ ---- old.discriminantPropertyInference.types -+++ new.discriminantPropertyInference.types -@@= skipped -30, +30 lines =@@ - >Props : Props - - declare function f(options: DiscriminatorTrue | DiscriminatorFalse): any; -->f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -+>f : (options: DiscriminatorFalse | DiscriminatorTrue) => any - >options : DiscriminatorFalse | DiscriminatorTrue - - // simple inference - f({ - >f({ disc: true, cb: s => parseInt(s)}) : any -->f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -+>f : (options: DiscriminatorFalse | DiscriminatorTrue) => any - >{ disc: true, cb: s => parseInt(s)} : { disc: true; cb: (s: string) => number; } - - disc: true, -@@= skipped -18, +18 lines =@@ - >s => parseInt(s) : (s: string) => number - >s : string - >parseInt(s) : number -->parseInt : (string: string, radix?: number) => number -+>parseInt : (string: string, radix?: number | undefined) => number - >s : string - - }); -@@= skipped -8, +8 lines =@@ - // simple inference - f({ - >f({ disc: false, cb: n => n.toFixed()}) : any -->f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -+>f : (options: DiscriminatorFalse | DiscriminatorTrue) => any - >{ disc: false, cb: n => n.toFixed()} : { disc: false; cb: (n: number) => string; } - - disc: false, -@@= skipped -12, +12 lines =@@ - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - }); - - // simple inference when strict-null-checks are enabled - f({ - >f({ disc: undefined, cb: n => n.toFixed()}) : any -->f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -+>f : (options: DiscriminatorFalse | DiscriminatorTrue) => any - >{ disc: undefined, cb: n => n.toFixed()} : { disc: undefined; cb: (n: number) => string; } - - disc: undefined, -@@= skipped -21, +21 lines =@@ - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - }); - - // requires checking type information since discriminator is missing from object - f({ - >f({ cb: n => n.toFixed()}) : any -->f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -+>f : (options: DiscriminatorFalse | DiscriminatorTrue) => any - >{ cb: n => n.toFixed()} : { cb: (n: number) => string; } - - cb: n => n.toFixed() -@@= skipped -17, +17 lines =@@ - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - }); diff --git a/testdata/baselines/reference/submodule/compiler/discriminantUsingEvaluatableTemplateExpression.types b/testdata/baselines/reference/submodule/compiler/discriminantUsingEvaluatableTemplateExpression.types index 205536324b1..9c9d155c9c3 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminantUsingEvaluatableTemplateExpression.types +++ b/testdata/baselines/reference/submodule/compiler/discriminantUsingEvaluatableTemplateExpression.types @@ -16,12 +16,12 @@ type N = { d: "n"; cb: (x: number) => void }; >x : number declare function foo(foo: S | N): void; ->foo : (foo: N | S) => void +>foo : (foo: S | N) => void >foo : N | S foo({ >foo({ d: `${"s"}`, cb: (x) => { x; // string },}) : void ->foo : (foo: N | S) => void +>foo : (foo: S | N) => void >{ d: `${"s"}`, cb: (x) => { x; // string },} : { d: "s"; cb: (x: string) => void; } d: `${"s"}`, diff --git a/testdata/baselines/reference/submodule/compiler/discriminantUsingEvaluatableTemplateExpression.types.diff b/testdata/baselines/reference/submodule/compiler/discriminantUsingEvaluatableTemplateExpression.types.diff deleted file mode 100644 index e7148665e6b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/discriminantUsingEvaluatableTemplateExpression.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.discriminantUsingEvaluatableTemplateExpression.types -+++ new.discriminantUsingEvaluatableTemplateExpression.types -@@= skipped -15, +15 lines =@@ - >x : number - - declare function foo(foo: S | N): void; -->foo : (foo: S | N) => void -+>foo : (foo: N | S) => void - >foo : N | S - - foo({ - >foo({ d: `${"s"}`, cb: (x) => { x; // string },}) : void -->foo : (foo: S | N) => void -+>foo : (foo: N | S) => void - >{ d: `${"s"}`, cb: (x) => { x; // string },} : { d: "s"; cb: (x: string) => void; } - - d: `${"s"}`, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/discriminantsAndPrimitives.types b/testdata/baselines/reference/submodule/compiler/discriminantsAndPrimitives.types index f9c09458374..f60f4342c38 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminantsAndPrimitives.types +++ b/testdata/baselines/reference/submodule/compiler/discriminantsAndPrimitives.types @@ -20,7 +20,7 @@ interface Bar { } function f1(x: Foo | Bar | string) { ->f1 : (x: string | Bar | Foo) => void +>f1 : (x: Foo | Bar | string) => void >x : string | Bar | Foo if (typeof x !== 'string') { @@ -46,7 +46,7 @@ function f1(x: Foo | Bar | string) { } function f2(x: Foo | Bar | string | undefined) { ->f2 : (x: string | Bar | Foo | undefined) => void +>f2 : (x: Foo | Bar | string | undefined) => void >x : string | Bar | Foo | undefined if (typeof x === "object") { @@ -72,7 +72,7 @@ function f2(x: Foo | Bar | string | undefined) { } function f3(x: Foo | Bar | string | null) { ->f3 : (x: string | Bar | Foo | null) => void +>f3 : (x: Foo | Bar | string | null) => void >x : string | Bar | Foo | null if (x && typeof x !== "string") { @@ -100,7 +100,7 @@ function f3(x: Foo | Bar | string | null) { } function f4(x: Foo | Bar | string | number | null) { ->f4 : (x: string | number | Bar | Foo | null) => void +>f4 : (x: Foo | Bar | string | number | null) => void >x : string | number | Bar | Foo | null if (x && typeof x === "object") { @@ -179,19 +179,19 @@ if (n.type === "Disjunction") { n.alternatives.slice() >n.alternatives.slice() : string[] ->n.alternatives.slice : (start?: number | undefined, end?: number | undefined) => string[] +>n.alternatives.slice : (start?: number, end?: number) => string[] >n.alternatives : string[] >n : Disjunction >alternatives : string[] ->slice : (start?: number | undefined, end?: number | undefined) => string[] +>slice : (start?: number, end?: number) => string[] } else { n.elements.slice() // n should be narrowed to Pattern >n.elements.slice() : string[] ->n.elements.slice : (start?: number | undefined, end?: number | undefined) => string[] +>n.elements.slice : (start?: number, end?: number) => string[] >n.elements : string[] >n : Pattern >elements : string[] ->slice : (start?: number | undefined, end?: number | undefined) => string[] +>slice : (start?: number, end?: number) => string[] } diff --git a/testdata/baselines/reference/submodule/compiler/discriminantsAndPrimitives.types.diff b/testdata/baselines/reference/submodule/compiler/discriminantsAndPrimitives.types.diff deleted file mode 100644 index 9f0a8656432..00000000000 --- a/testdata/baselines/reference/submodule/compiler/discriminantsAndPrimitives.types.diff +++ /dev/null @@ -1,61 +0,0 @@ ---- old.discriminantsAndPrimitives.types -+++ new.discriminantsAndPrimitives.types -@@= skipped -19, +19 lines =@@ - } - - function f1(x: Foo | Bar | string) { -->f1 : (x: Foo | Bar | string) => void -+>f1 : (x: string | Bar | Foo) => void - >x : string | Bar | Foo - - if (typeof x !== 'string') { -@@= skipped -26, +26 lines =@@ - } - - function f2(x: Foo | Bar | string | undefined) { -->f2 : (x: Foo | Bar | string | undefined) => void -+>f2 : (x: string | Bar | Foo | undefined) => void - >x : string | Bar | Foo | undefined - - if (typeof x === "object") { -@@= skipped -26, +26 lines =@@ - } - - function f3(x: Foo | Bar | string | null) { -->f3 : (x: Foo | Bar | string | null) => void -+>f3 : (x: string | Bar | Foo | null) => void - >x : string | Bar | Foo | null - - if (x && typeof x !== "string") { -@@= skipped -28, +28 lines =@@ - } - - function f4(x: Foo | Bar | string | number | null) { -->f4 : (x: Foo | Bar | string | number | null) => void -+>f4 : (x: string | number | Bar | Foo | null) => void - >x : string | number | Bar | Foo | null - - if (x && typeof x === "object") { -@@= skipped -79, +79 lines =@@ - - n.alternatives.slice() - >n.alternatives.slice() : string[] -->n.alternatives.slice : (start?: number, end?: number) => string[] -+>n.alternatives.slice : (start?: number | undefined, end?: number | undefined) => string[] - >n.alternatives : string[] - >n : Disjunction - >alternatives : string[] -->slice : (start?: number, end?: number) => string[] -+>slice : (start?: number | undefined, end?: number | undefined) => string[] - } - else { - n.elements.slice() // n should be narrowed to Pattern - >n.elements.slice() : string[] -->n.elements.slice : (start?: number, end?: number) => string[] -+>n.elements.slice : (start?: number | undefined, end?: number | undefined) => string[] - >n.elements : string[] - >n : Pattern - >elements : string[] -->slice : (start?: number, end?: number) => string[] -+>slice : (start?: number | undefined, end?: number | undefined) => string[] - } diff --git a/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types b/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types index 745f810daec..cf2ca3dd27c 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types +++ b/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types @@ -48,7 +48,7 @@ declare function getVariableValues(inputs: { }): CoercedVariableValues; export function buildExecutionContext( ->buildExecutionContext : (args: ExecutionArgs) => ExecutionContext | readonly GraphQLError[] +>buildExecutionContext : (args: ExecutionArgs) => ReadonlyArray | ExecutionContext args: ExecutionArgs, >args : ExecutionArgs @@ -74,7 +74,7 @@ export function buildExecutionContext( return coercedVariableValues.errors; >coercedVariableValues.errors : readonly GraphQLError[] ->coercedVariableValues : { errors: readonly GraphQLError[]; coerced?: undefined; } +>coercedVariableValues : { errors: ReadonlyArray; coerced?: never; } >errors : readonly GraphQLError[] } @@ -84,7 +84,7 @@ export function buildExecutionContext( variableValues: coercedVariableValues.coerced, >variableValues : { [variable: string]: unknown; } >coercedVariableValues.coerced : { [variable: string]: unknown; } ->coercedVariableValues : { coerced: { [variable: string]: unknown; }; errors?: undefined; } +>coercedVariableValues : { coerced: { [variable: string]: unknown; }; errors?: never; } >coerced : { [variable: string]: unknown; } }; diff --git a/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types.diff b/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types.diff deleted file mode 100644 index 8bf5cbc271f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types -+++ new.discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types -@@= skipped -47, +47 lines =@@ - }): CoercedVariableValues; - - export function buildExecutionContext( -->buildExecutionContext : (args: ExecutionArgs) => ReadonlyArray | ExecutionContext -+>buildExecutionContext : (args: ExecutionArgs) => ExecutionContext | readonly GraphQLError[] - - args: ExecutionArgs, - >args : ExecutionArgs -@@= skipped -26, +26 lines =@@ - - return coercedVariableValues.errors; - >coercedVariableValues.errors : readonly GraphQLError[] -->coercedVariableValues : { errors: ReadonlyArray; coerced?: never; } -+>coercedVariableValues : { errors: readonly GraphQLError[]; coerced?: undefined; } - >errors : readonly GraphQLError[] - } - -@@= skipped -10, +10 lines =@@ - variableValues: coercedVariableValues.coerced, - >variableValues : { [variable: string]: unknown; } - >coercedVariableValues.coerced : { [variable: string]: unknown; } -->coercedVariableValues : { coerced: { [variable: string]: unknown; }; errors?: never; } -+>coercedVariableValues : { coerced: { [variable: string]: unknown; }; errors?: undefined; } - >coerced : { [variable: string]: unknown; } - - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types b/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types index 32763bcafc0..cf2ca3dd27c 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types +++ b/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types @@ -48,7 +48,7 @@ declare function getVariableValues(inputs: { }): CoercedVariableValues; export function buildExecutionContext( ->buildExecutionContext : (args: ExecutionArgs) => ExecutionContext | readonly GraphQLError[] +>buildExecutionContext : (args: ExecutionArgs) => ReadonlyArray | ExecutionContext args: ExecutionArgs, >args : ExecutionArgs @@ -74,7 +74,7 @@ export function buildExecutionContext( return coercedVariableValues.errors; >coercedVariableValues.errors : readonly GraphQLError[] ->coercedVariableValues : { errors: readonly GraphQLError[]; coerced?: never; } +>coercedVariableValues : { errors: ReadonlyArray; coerced?: never; } >errors : readonly GraphQLError[] } diff --git a/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types.diff b/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types.diff deleted file mode 100644 index 5cf2f0fbfad..00000000000 --- a/testdata/baselines/reference/submodule/compiler/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types -+++ new.discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types -@@= skipped -47, +47 lines =@@ - }): CoercedVariableValues; - - export function buildExecutionContext( -->buildExecutionContext : (args: ExecutionArgs) => ReadonlyArray | ExecutionContext -+>buildExecutionContext : (args: ExecutionArgs) => ExecutionContext | readonly GraphQLError[] - - args: ExecutionArgs, - >args : ExecutionArgs -@@= skipped -26, +26 lines =@@ - - return coercedVariableValues.errors; - >coercedVariableValues.errors : readonly GraphQLError[] -->coercedVariableValues : { errors: ReadonlyArray; coerced?: never; } -+>coercedVariableValues : { errors: readonly GraphQLError[]; coerced?: never; } - >errors : readonly GraphQLError[] - } diff --git a/testdata/baselines/reference/submodule/compiler/discriminatedUnionWithIndexSignature.types b/testdata/baselines/reference/submodule/compiler/discriminatedUnionWithIndexSignature.types index 09865c9475e..6bfa5b295c7 100644 --- a/testdata/baselines/reference/submodule/compiler/discriminatedUnionWithIndexSignature.types +++ b/testdata/baselines/reference/submodule/compiler/discriminatedUnionWithIndexSignature.types @@ -40,11 +40,11 @@ const withoutAsConst: MapOrSingleton = { const withAsConst: MapOrSingleton = { >withAsConst : MapOrSingleton ->{ 1: { type: 'text' as const, },} : { 1: { type: "text"; }; } +>{ 1: { type: 'text' as const, },} : { 1: { type: 'text'; }; } 1: { ->1 : { type: "text"; } ->{ type: 'text' as const, } : { type: "text"; } +>1 : { type: 'text'; } +>{ type: 'text' as const, } : { type: 'text'; } type: 'text' as const, >type : "text" diff --git a/testdata/baselines/reference/submodule/compiler/discriminatedUnionWithIndexSignature.types.diff b/testdata/baselines/reference/submodule/compiler/discriminatedUnionWithIndexSignature.types.diff new file mode 100644 index 00000000000..c9f8b300b1e --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/discriminatedUnionWithIndexSignature.types.diff @@ -0,0 +1,17 @@ +--- old.discriminatedUnionWithIndexSignature.types ++++ new.discriminatedUnionWithIndexSignature.types +@@= skipped -39, +39 lines =@@ + + const withAsConst: MapOrSingleton = { + >withAsConst : MapOrSingleton +->{ 1: { type: 'text' as const, },} : { 1: { type: "text"; }; } ++>{ 1: { type: 'text' as const, },} : { 1: { type: 'text'; }; } + + 1: { +->1 : { type: "text"; } +->{ type: 'text' as const, } : { type: "text"; } ++>1 : { type: 'text'; } ++>{ type: 'text' as const, } : { type: 'text'; } + + type: 'text' as const, + >type : "text" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/dissallowSymbolAsWeakType.types b/testdata/baselines/reference/submodule/compiler/dissallowSymbolAsWeakType.types index 5b9a38bacea..806974b48a8 100644 --- a/testdata/baselines/reference/submodule/compiler/dissallowSymbolAsWeakType.types +++ b/testdata/baselines/reference/submodule/compiler/dissallowSymbolAsWeakType.types @@ -93,15 +93,15 @@ const f = new FinalizationRegistry(() => {}); f.register(s, null); >f.register(s, null) : void ->f.register : (target: object, heldValue: unknown, unregisterToken?: object | undefined) => void +>f.register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void >f : FinalizationRegistry ->register : (target: object, heldValue: unknown, unregisterToken?: object | undefined) => void +>register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void >s : symbol f.unregister(s); >f.unregister(s) : boolean ->f.unregister : (unregisterToken: object) => boolean +>f.unregister : (unregisterToken: WeakKey) => boolean >f : FinalizationRegistry ->unregister : (unregisterToken: object) => boolean +>unregister : (unregisterToken: WeakKey) => boolean >s : symbol diff --git a/testdata/baselines/reference/submodule/compiler/dissallowSymbolAsWeakType.types.diff b/testdata/baselines/reference/submodule/compiler/dissallowSymbolAsWeakType.types.diff deleted file mode 100644 index 0f7ccf5a995..00000000000 --- a/testdata/baselines/reference/submodule/compiler/dissallowSymbolAsWeakType.types.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.dissallowSymbolAsWeakType.types -+++ new.dissallowSymbolAsWeakType.types -@@= skipped -92, +92 lines =@@ - - f.register(s, null); - >f.register(s, null) : void -->f.register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void -+>f.register : (target: object, heldValue: unknown, unregisterToken?: object | undefined) => void - >f : FinalizationRegistry -->register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void -+>register : (target: object, heldValue: unknown, unregisterToken?: object | undefined) => void - >s : symbol - - f.unregister(s); - >f.unregister(s) : boolean -->f.unregister : (unregisterToken: WeakKey) => boolean -+>f.unregister : (unregisterToken: object) => boolean - >f : FinalizationRegistry -->unregister : (unregisterToken: WeakKey) => boolean -+>unregister : (unregisterToken: object) => boolean - >s : symbol diff --git a/testdata/baselines/reference/submodule/compiler/divergentAccessors1.types b/testdata/baselines/reference/submodule/compiler/divergentAccessors1.types index 430fcbbb360..5e349510251 100644 --- a/testdata/baselines/reference/submodule/compiler/divergentAccessors1.types +++ b/testdata/baselines/reference/submodule/compiler/divergentAccessors1.types @@ -33,7 +33,7 @@ { type T_HasGetSet = { ->T_HasGetSet : { get foo(): number; set foo(v: string | number); } +>T_HasGetSet : { get foo(): number; set foo(v: number | string); } get foo(): number; >foo : number @@ -44,20 +44,20 @@ } const t_hgs: T_HasGetSet = null as any; ->t_hgs : { get foo(): number; set foo(v: string | number); } +>t_hgs : { get foo(): number; set foo(v: number | string); } >null as any : any t_hgs.foo = "32"; >t_hgs.foo = "32" : "32" >t_hgs.foo : string | number ->t_hgs : { get foo(): number; set foo(v: string | number); } +>t_hgs : { get foo(): number; set foo(v: number | string); } >foo : string | number >"32" : "32" let r_t_hgs_foo: number = t_hgs.foo; >r_t_hgs_foo : number >t_hgs.foo : number ->t_hgs : { get foo(): number; set foo(v: string | number); } +>t_hgs : { get foo(): number; set foo(v: number | string); } >foo : number } diff --git a/testdata/baselines/reference/submodule/compiler/divergentAccessors1.types.diff b/testdata/baselines/reference/submodule/compiler/divergentAccessors1.types.diff deleted file mode 100644 index d0ab16578a1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/divergentAccessors1.types.diff +++ /dev/null @@ -1,34 +0,0 @@ ---- old.divergentAccessors1.types -+++ new.divergentAccessors1.types -@@= skipped -32, +32 lines =@@ - - { - type T_HasGetSet = { -->T_HasGetSet : { get foo(): number; set foo(v: number | string); } -+>T_HasGetSet : { get foo(): number; set foo(v: string | number); } - - get foo(): number; - >foo : number -@@= skipped -11, +11 lines =@@ - } - - const t_hgs: T_HasGetSet = null as any; -->t_hgs : { get foo(): number; set foo(v: number | string); } -+>t_hgs : { get foo(): number; set foo(v: string | number); } - >null as any : any - - t_hgs.foo = "32"; - >t_hgs.foo = "32" : "32" - >t_hgs.foo : string | number -->t_hgs : { get foo(): number; set foo(v: number | string); } -+>t_hgs : { get foo(): number; set foo(v: string | number); } - >foo : string | number - >"32" : "32" - - let r_t_hgs_foo: number = t_hgs.foo; - >r_t_hgs_foo : number - >t_hgs.foo : number -->t_hgs : { get foo(): number; set foo(v: number | string); } -+>t_hgs : { get foo(): number; set foo(v: string | number); } - >foo : number - } diff --git a/testdata/baselines/reference/submodule/compiler/divergentAccessorsTypes6.types b/testdata/baselines/reference/submodule/compiler/divergentAccessorsTypes6.types index b249223ff39..12baf79abce 100644 --- a/testdata/baselines/reference/submodule/compiler/divergentAccessorsTypes6.types +++ b/testdata/baselines/reference/submodule/compiler/divergentAccessorsTypes6.types @@ -53,8 +53,8 @@ interface I1 { >value : string } const o1 = { ->o1 : { get x(): number; set x(value: string); } ->{ get x(): number { return 0; }, set x(value: Fail) {}} : { get x(): number; set x(value: string); } +>o1 : { get x(): number; set x(value: Fail); } +>{ get x(): number { return 0; }, set x(value: Fail) {}} : { get x(): number; set x(value: Fail); } get x(): number { return 0; }, >x : number diff --git a/testdata/baselines/reference/submodule/compiler/divergentAccessorsTypes6.types.diff b/testdata/baselines/reference/submodule/compiler/divergentAccessorsTypes6.types.diff deleted file mode 100644 index d9e4039ebf2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/divergentAccessorsTypes6.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.divergentAccessorsTypes6.types -+++ new.divergentAccessorsTypes6.types -@@= skipped -52, +52 lines =@@ - >value : string - } - const o1 = { -->o1 : { get x(): number; set x(value: Fail); } -->{ get x(): number { return 0; }, set x(value: Fail) {}} : { get x(): number; set x(value: Fail); } -+>o1 : { get x(): number; set x(value: string); } -+>{ get x(): number { return 0; }, set x(value: Fail) {}} : { get x(): number; set x(value: string); } - - get x(): number { return 0; }, - >x : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/divideAndConquerIntersections.types b/testdata/baselines/reference/submodule/compiler/divideAndConquerIntersections.types index 6ac4c46373b..d5a8cb36c9a 100644 --- a/testdata/baselines/reference/submodule/compiler/divideAndConquerIntersections.types +++ b/testdata/baselines/reference/submodule/compiler/divideAndConquerIntersections.types @@ -109,7 +109,7 @@ type FilterFunction = (up: U) => up is V; >up : U export function matchFilter( ->matchFilter : (filter: Q | Q[]) => FilterFunction, Q>>> +>matchFilter : (filter: Q | Q[]) => FilterFunction> filter: Q | Q[], >filter : Q | Q[] @@ -183,7 +183,7 @@ class EventHub { >EventHub : EventHub use(...middleware: Array>): EventHub { ->use : (...middleware: Middleware[]) => EventHub +>use : (...middleware: Array>) => EventHub >middleware : Middleware[] console.log("Adding", middleware.length, "generic handlers"); @@ -201,7 +201,7 @@ class EventHub { >this : this } on( ->on : (filter: Q | Q[], ...middleware: Middleware, Q>>>[]) => EventHub, Q>>> +>on : (filter: Q | Q[], ...middleware: Array>>) => EventHub> filter: Q | Q[], >filter : Q | Q[] diff --git a/testdata/baselines/reference/submodule/compiler/divideAndConquerIntersections.types.diff b/testdata/baselines/reference/submodule/compiler/divideAndConquerIntersections.types.diff index f86848eed0b..e683022c4f6 100644 --- a/testdata/baselines/reference/submodule/compiler/divideAndConquerIntersections.types.diff +++ b/testdata/baselines/reference/submodule/compiler/divideAndConquerIntersections.types.diff @@ -1,15 +1,6 @@ --- old.divideAndConquerIntersections.types +++ new.divideAndConquerIntersections.types -@@= skipped -108, +108 lines =@@ - >up : U - - export function matchFilter( -->matchFilter : (filter: Q | Q[]) => FilterFunction> -+>matchFilter : (filter: Q | Q[]) => FilterFunction, Q>>> - - filter: Q | Q[], - >filter : Q | Q[] -@@= skipped -16, +16 lines =@@ +@@= skipped -124, +124 lines =@@ >filter : "callback_query" | "channel_post" | "chat_boost" | "chat_join_request" | "chat_member" | "chosen_inline_result" | "edited_channel_post" | "edited_message" | "inline_query" | "message" | "message_reaction" | "message_reaction_count" | "my_chat_member" | "poll" | "poll_answer" | "pre_checkout_query" | "removed_chat_boost" | "shipping_query" | Q[] return (up: U): up is Filter => !!up; @@ -17,22 +8,4 @@ +>(up: U): up is Filter => !!up : (up: U) => up is PerformQuery, Q>> >up : U >!!up : true - >!up : false -@@= skipped -58, +58 lines =@@ - >EventHub : EventHub - - use(...middleware: Array>): EventHub { -->use : (...middleware: Array>) => EventHub -+>use : (...middleware: Middleware[]) => EventHub - >middleware : Middleware[] - - console.log("Adding", middleware.length, "generic handlers"); -@@= skipped -18, +18 lines =@@ - >this : this - } - on( -->on : (filter: Q | Q[], ...middleware: Array>>) => EventHub> -+>on : (filter: Q | Q[], ...middleware: Middleware, Q>>>[]) => EventHub, Q>>> - - filter: Q | Q[], - >filter : Q | Q[] \ No newline at end of file + >!up : false \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/doNotInferUnrelatedTypes.types b/testdata/baselines/reference/submodule/compiler/doNotInferUnrelatedTypes.types index 5abe2d4ba3e..0dbbf95a78c 100644 --- a/testdata/baselines/reference/submodule/compiler/doNotInferUnrelatedTypes.types +++ b/testdata/baselines/reference/submodule/compiler/doNotInferUnrelatedTypes.types @@ -3,7 +3,7 @@ === doNotInferUnrelatedTypes.ts === // #16709 declare function dearray(ara: ReadonlyArray): T; ->dearray : (ara: readonly T[]) => T +>dearray : (ara: ReadonlyArray) => T >ara : readonly T[] type LiteralType = "foo" | "bar"; @@ -15,6 +15,6 @@ declare var alt: Array; let foo: LiteralType = dearray(alt); >foo : LiteralType >dearray(alt) : LiteralType ->dearray : (ara: readonly T[]) => T +>dearray : (ara: ReadonlyArray) => T >alt : LiteralType[] diff --git a/testdata/baselines/reference/submodule/compiler/doNotInferUnrelatedTypes.types.diff b/testdata/baselines/reference/submodule/compiler/doNotInferUnrelatedTypes.types.diff deleted file mode 100644 index b159a97dd1a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/doNotInferUnrelatedTypes.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.doNotInferUnrelatedTypes.types -+++ new.doNotInferUnrelatedTypes.types -@@= skipped -2, +2 lines =@@ - === doNotInferUnrelatedTypes.ts === - // #16709 - declare function dearray(ara: ReadonlyArray): T; -->dearray : (ara: ReadonlyArray) => T -+>dearray : (ara: readonly T[]) => T - >ara : readonly T[] - - type LiteralType = "foo" | "bar"; -@@= skipped -12, +12 lines =@@ - let foo: LiteralType = dearray(alt); - >foo : LiteralType - >dearray(alt) : LiteralType -->dearray : (ara: ReadonlyArray) => T -+>dearray : (ara: readonly T[]) => T - >alt : LiteralType[] diff --git a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2015.types b/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2015.types index ee7ad960229..d383a738b87 100644 --- a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2015.types +++ b/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2015.types @@ -19,9 +19,9 @@ const testReflectApply = Reflect.apply(noOp, this, []); const testReflectConstruct = Reflect.construct(noOp, []); >testReflectConstruct : any >Reflect.construct(noOp, []) : any ->Reflect.construct : { (target: new (...args: A) => R, argumentsList: Readonly, newTarget?: (new (...args: any) => any) | undefined): R; (target: Function, argumentsList: ArrayLike, newTarget?: Function | undefined): any; } +>Reflect.construct : { (target: new (...args: A) => R, argumentsList: Readonly, newTarget?: new (...args: any) => any): R; (target: Function, argumentsList: ArrayLike, newTarget?: Function): any; } >Reflect : typeof Reflect ->construct : { (target: new (...args: A) => R, argumentsList: Readonly, newTarget?: (new (...args: any) => any) | undefined): R; (target: Function, argumentsList: ArrayLike, newTarget?: Function | undefined): any; } +>construct : { (target: new (...args: A) => R, argumentsList: Readonly, newTarget?: new (...args: any) => any): R; (target: Function, argumentsList: ArrayLike, newTarget?: Function): any; } >noOp : () => void >[] : never[] @@ -148,19 +148,19 @@ const testArrayFindIndex = [""].findIndex((val, idx, obj) => { const testArrayFill = [""].fill("fill"); >testArrayFill : string[] >[""].fill("fill") : string[] ->[""].fill : (value: string, start?: number | undefined, end?: number | undefined) => string[] +>[""].fill : (value: string, start?: number, end?: number) => string[] >[""] : string[] >"" : "" ->fill : (value: string, start?: number | undefined, end?: number | undefined) => string[] +>fill : (value: string, start?: number, end?: number) => string[] >"fill" : "fill" const testArrayCopyWithin = [""].copyWithin(0, 0); >testArrayCopyWithin : string[] >[""].copyWithin(0, 0) : string[] ->[""].copyWithin : (target: number, start: number, end?: number | undefined) => string[] +>[""].copyWithin : (target: number, start: number, end?: number) => string[] >[""] : string[] >"" : "" ->copyWithin : (target: number, start: number, end?: number | undefined) => string[] +>copyWithin : (target: number, start: number, end?: number) => string[] >0 : 0 >0 : 0 @@ -191,9 +191,9 @@ const testArrayValues = [""].values(); const testArrayConstructorFrom = Array.from([]); >testArrayConstructorFrom : never[] >Array.from([]) : never[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[] const testArrayConstructorOf = Array.of([]); @@ -290,9 +290,9 @@ const testNumberConstructorParseFloat = Number.parseFloat("0"); const testNumberConstructorParseInt = Number.parseInt("0"); >testNumberConstructorParseInt : number >Number.parseInt("0") : number ->Number.parseInt : (string: string, radix?: number | undefined) => number +>Number.parseInt : (string: string, radix?: number) => number >Number : NumberConstructor ->parseInt : (string: string, radix?: number | undefined) => number +>parseInt : (string: string, radix?: number) => number >"0" : "0" const testMathClz32 = Math.clz32(0); @@ -514,25 +514,25 @@ const testStringCodePointAt = "".codePointAt(0); const testStringIncludes = "".includes(""); >testStringIncludes : boolean >"".includes("") : boolean ->"".includes : (searchString: string, position?: number | undefined) => boolean +>"".includes : (searchString: string, position?: number) => boolean >"" : "" ->includes : (searchString: string, position?: number | undefined) => boolean +>includes : (searchString: string, position?: number) => boolean >"" : "" const testStringEndsWith = "".endsWith(""); >testStringEndsWith : boolean >"".endsWith("") : boolean ->"".endsWith : (searchString: string, endPosition?: number | undefined) => boolean +>"".endsWith : (searchString: string, endPosition?: number) => boolean >"" : "" ->endsWith : (searchString: string, endPosition?: number | undefined) => boolean +>endsWith : (searchString: string, endPosition?: number) => boolean >"" : "" const testStringNormalize = "".normalize(); >testStringNormalize : string >"".normalize() : string ->"".normalize : { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; } +>"".normalize : { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string): string; } >"" : "" ->normalize : { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; } +>normalize : { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string): string; } const testStringRepeat = "".repeat(0); >testStringRepeat : string @@ -545,9 +545,9 @@ const testStringRepeat = "".repeat(0); const testStringStartsWith = "".startsWith(""); >testStringStartsWith : boolean >"".startsWith("") : boolean ->"".startsWith : (searchString: string, position?: number | undefined) => boolean +>"".startsWith : (searchString: string, position?: number) => boolean >"" : "" ->startsWith : (searchString: string, position?: number | undefined) => boolean +>startsWith : (searchString: string, position?: number) => boolean >"" : "" const testStringAnchor = "".anchor(""); @@ -655,9 +655,9 @@ const testStringConstructorFromCodePoint = String.fromCodePoint(); const testStringConstructorRaw = String.raw``; >testStringConstructorRaw : string >String.raw`` : string ->String.raw : (template: { raw: ArrayLike | readonly string[]; }, ...substitutions: any[]) => string +>String.raw : (template: { raw: readonly string[] | ArrayLike; }, ...substitutions: any[]) => string >String : StringConstructor ->raw : (template: { raw: ArrayLike | readonly string[]; }, ...substitutions: any[]) => string +>raw : (template: { raw: readonly string[] | ArrayLike; }, ...substitutions: any[]) => string >`` : "" const testRegExpFlags = /abc/g.flags; diff --git a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2015.types.diff b/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2015.types.diff deleted file mode 100644 index 78da3198a7d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2015.types.diff +++ /dev/null @@ -1,118 +0,0 @@ ---- old.doYouNeedToChangeYourTargetLibraryES2015.types -+++ new.doYouNeedToChangeYourTargetLibraryES2015.types -@@= skipped -18, +18 lines =@@ - const testReflectConstruct = Reflect.construct(noOp, []); - >testReflectConstruct : any - >Reflect.construct(noOp, []) : any -->Reflect.construct : { (target: new (...args: A) => R, argumentsList: Readonly, newTarget?: new (...args: any) => any): R; (target: Function, argumentsList: ArrayLike, newTarget?: Function): any; } -+>Reflect.construct : { (target: new (...args: A) => R, argumentsList: Readonly, newTarget?: (new (...args: any) => any) | undefined): R; (target: Function, argumentsList: ArrayLike, newTarget?: Function | undefined): any; } - >Reflect : typeof Reflect -->construct : { (target: new (...args: A) => R, argumentsList: Readonly, newTarget?: new (...args: any) => any): R; (target: Function, argumentsList: ArrayLike, newTarget?: Function): any; } -+>construct : { (target: new (...args: A) => R, argumentsList: Readonly, newTarget?: (new (...args: any) => any) | undefined): R; (target: Function, argumentsList: ArrayLike, newTarget?: Function | undefined): any; } - >noOp : () => void - >[] : never[] - -@@= skipped -129, +129 lines =@@ - const testArrayFill = [""].fill("fill"); - >testArrayFill : string[] - >[""].fill("fill") : string[] -->[""].fill : (value: string, start?: number, end?: number) => string[] -+>[""].fill : (value: string, start?: number | undefined, end?: number | undefined) => string[] - >[""] : string[] - >"" : "" -->fill : (value: string, start?: number, end?: number) => string[] -+>fill : (value: string, start?: number | undefined, end?: number | undefined) => string[] - >"fill" : "fill" - - const testArrayCopyWithin = [""].copyWithin(0, 0); - >testArrayCopyWithin : string[] - >[""].copyWithin(0, 0) : string[] -->[""].copyWithin : (target: number, start: number, end?: number) => string[] -+>[""].copyWithin : (target: number, start: number, end?: number | undefined) => string[] - >[""] : string[] - >"" : "" -->copyWithin : (target: number, start: number, end?: number) => string[] -+>copyWithin : (target: number, start: number, end?: number | undefined) => string[] - >0 : 0 - >0 : 0 - -@@= skipped -43, +43 lines =@@ - const testArrayConstructorFrom = Array.from([]); - >testArrayConstructorFrom : never[] - >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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >[] : never[] - - const testArrayConstructorOf = Array.of([]); -@@= skipped -99, +99 lines =@@ - const testNumberConstructorParseInt = Number.parseInt("0"); - >testNumberConstructorParseInt : number - >Number.parseInt("0") : number -->Number.parseInt : (string: string, radix?: number) => number -+>Number.parseInt : (string: string, radix?: number | undefined) => number - >Number : NumberConstructor -->parseInt : (string: string, radix?: number) => number -+>parseInt : (string: string, radix?: number | undefined) => number - >"0" : "0" - - const testMathClz32 = Math.clz32(0); -@@= skipped -224, +224 lines =@@ - const testStringIncludes = "".includes(""); - >testStringIncludes : boolean - >"".includes("") : boolean -->"".includes : (searchString: string, position?: number) => boolean -+>"".includes : (searchString: string, position?: number | undefined) => boolean - >"" : "" -->includes : (searchString: string, position?: number) => boolean -+>includes : (searchString: string, position?: number | undefined) => boolean - >"" : "" - - const testStringEndsWith = "".endsWith(""); - >testStringEndsWith : boolean - >"".endsWith("") : boolean -->"".endsWith : (searchString: string, endPosition?: number) => boolean -+>"".endsWith : (searchString: string, endPosition?: number | undefined) => boolean - >"" : "" -->endsWith : (searchString: string, endPosition?: number) => boolean -+>endsWith : (searchString: string, endPosition?: number | undefined) => boolean - >"" : "" - - const testStringNormalize = "".normalize(); - >testStringNormalize : string - >"".normalize() : string -->"".normalize : { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string): string; } -+>"".normalize : { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; } - >"" : "" -->normalize : { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string): string; } -+>normalize : { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; } - - const testStringRepeat = "".repeat(0); - >testStringRepeat : string -@@= skipped -31, +31 lines =@@ - const testStringStartsWith = "".startsWith(""); - >testStringStartsWith : boolean - >"".startsWith("") : boolean -->"".startsWith : (searchString: string, position?: number) => boolean -+>"".startsWith : (searchString: string, position?: number | undefined) => boolean - >"" : "" -->startsWith : (searchString: string, position?: number) => boolean -+>startsWith : (searchString: string, position?: number | undefined) => boolean - >"" : "" - - const testStringAnchor = "".anchor(""); -@@= skipped -110, +110 lines =@@ - const testStringConstructorRaw = String.raw``; - >testStringConstructorRaw : string - >String.raw`` : string -->String.raw : (template: { raw: readonly string[] | ArrayLike; }, ...substitutions: any[]) => string -+>String.raw : (template: { raw: ArrayLike | readonly string[]; }, ...substitutions: any[]) => string - >String : StringConstructor -->raw : (template: { raw: readonly string[] | ArrayLike; }, ...substitutions: any[]) => string -+>raw : (template: { raw: ArrayLike | readonly string[]; }, ...substitutions: any[]) => string - >`` : "" - - const testRegExpFlags = /abc/g.flags; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2016Plus.types b/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2016Plus.types index 83d7f9d90ff..a7a202d3cdc 100644 --- a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2016Plus.types +++ b/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2016Plus.types @@ -95,9 +95,9 @@ const testRegExpMatchArrayGroups = "2019-04-30".match(/(?[0-9]{4})-(?testRegExpMatchArrayGroups : any >"2019-04-30".match(/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g).groups : any >"2019-04-30".match(/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g) : RegExpMatchArray ->"2019-04-30".match : { (regexp: string | RegExp): RegExpMatchArray; (matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; } +>"2019-04-30".match : { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; } >"2019-04-30" : "2019-04-30" ->match : { (regexp: string | RegExp): RegExpMatchArray; (matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; } +>match : { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; } >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g : RegExp >groups : any @@ -105,9 +105,9 @@ const testRegExpExecArrayGroups = /(?[0-9]{4})-(?[0-9]{2})-(?[ >testRegExpExecArrayGroups : any >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec("2019-04-30").groups : any >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec("2019-04-30") : RegExpExecArray ->/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec : (string: string) => RegExpExecArray +>/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec : (string: string) => RegExpExecArray | null >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g : RegExp ->exec : (string: string) => RegExpExecArray +>exec : (string: string) => RegExpExecArray | null >"2019-04-30" : "2019-04-30" >groups : any diff --git a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2016Plus.types.diff b/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2016Plus.types.diff deleted file mode 100644 index 1a40001941f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2016Plus.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.doYouNeedToChangeYourTargetLibraryES2016Plus.types -+++ new.doYouNeedToChangeYourTargetLibraryES2016Plus.types -@@= skipped -94, +94 lines =@@ - >testRegExpMatchArrayGroups : any - >"2019-04-30".match(/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g).groups : any - >"2019-04-30".match(/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g) : RegExpMatchArray -->"2019-04-30".match : { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; } -+>"2019-04-30".match : { (regexp: string | RegExp): RegExpMatchArray; (matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; } - >"2019-04-30" : "2019-04-30" -->match : { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; } -+>match : { (regexp: string | RegExp): RegExpMatchArray; (matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; } - >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g : RegExp - >groups : any - -@@= skipped -10, +10 lines =@@ - >testRegExpExecArrayGroups : any - >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec("2019-04-30").groups : any - >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec("2019-04-30") : RegExpExecArray -->/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec : (string: string) => RegExpExecArray | null -+>/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec : (string: string) => RegExpExecArray - >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g : RegExp -->exec : (string: string) => RegExpExecArray | null -+>exec : (string: string) => RegExpExecArray - >"2019-04-30" : "2019-04-30" - >groups : any diff --git a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types b/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types index 57b343d2e48..21910d57dc4 100644 --- a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types +++ b/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types @@ -65,26 +65,26 @@ export let sorted = array.toSorted(); export let spliced1 = array.toSpliced(2); >spliced1 : number[] >array.toSpliced(2) : number[] ->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >array : number[] ->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >2 : 2 export let spliced2 = array.toSpliced(2, 1); >spliced2 : number[] >array.toSpliced(2, 1) : number[] ->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >array : number[] ->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >2 : 2 >1 : 1 export let spliced3 = array.toSpliced(2, 1, 4, 5, 6, 7); >spliced3 : number[] >array.toSpliced(2, 1, 4, 5, 6, 7) : number[] ->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >array : number[] ->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >2 : 2 >1 : 1 >4 : 4 @@ -95,18 +95,18 @@ export let spliced3 = array.toSpliced(2, 1, 4, 5, 6, 7); export let spliced4 = array.toSpliced(2, undefined); >spliced4 : number[] >array.toSpliced(2, undefined) : number[] ->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >array : number[] ->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >2 : 2 >undefined : undefined export let spliced5 = array.toSpliced(2, undefined, 4, 5, 6, 7); >spliced5 : number[] >array.toSpliced(2, undefined, 4, 5, 6, 7) : number[] ->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >array : number[] ->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } +>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } >2 : 2 >undefined : undefined >4 : 4 diff --git a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types.diff b/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types.diff deleted file mode 100644 index 9d427ff84e1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types.diff +++ /dev/null @@ -1,58 +0,0 @@ ---- old.doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types -+++ new.doYouNeedToChangeYourTargetLibraryES2023(target=esnext).types -@@= skipped -64, +64 lines =@@ - export let spliced1 = array.toSpliced(2); - >spliced1 : number[] - >array.toSpliced(2) : number[] -->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >array : number[] -->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >2 : 2 - - export let spliced2 = array.toSpliced(2, 1); - >spliced2 : number[] - >array.toSpliced(2, 1) : number[] -->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >array : number[] -->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >2 : 2 - >1 : 1 - - export let spliced3 = array.toSpliced(2, 1, 4, 5, 6, 7); - >spliced3 : number[] - >array.toSpliced(2, 1, 4, 5, 6, 7) : number[] -->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >array : number[] -->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >2 : 2 - >1 : 1 - >4 : 4 -@@= skipped -30, +30 lines =@@ - export let spliced4 = array.toSpliced(2, undefined); - >spliced4 : number[] - >array.toSpliced(2, undefined) : number[] -->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >array : number[] -->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >2 : 2 - >undefined : undefined - - export let spliced5 = array.toSpliced(2, undefined, 4, 5, 6, 7); - >spliced5 : number[] - >array.toSpliced(2, undefined, 4, 5, 6, 7) : number[] -->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >array : number[] -->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } -+>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number | undefined): number[]; } - >2 : 2 - >undefined : undefined - >4 : 4 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/doubleMixinConditionalTypeBaseClassWorks.types b/testdata/baselines/reference/submodule/compiler/doubleMixinConditionalTypeBaseClassWorks.types index ae3d60eaf6b..30207208d95 100644 --- a/testdata/baselines/reference/submodule/compiler/doubleMixinConditionalTypeBaseClassWorks.types +++ b/testdata/baselines/reference/submodule/compiler/doubleMixinConditionalTypeBaseClassWorks.types @@ -19,8 +19,8 @@ type FooConstructor = typeof Mixin1 extends (a: Constructor) => infer Cls ? Cls >a : Constructor const Mixin2 = (Base: C) => class extends Base {}; ->Mixin2 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C ->(Base: C) => class extends Base {} : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C +>Mixin2 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C +>(Base: C) => class extends Base {} : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C >Base : C >class extends Base {} : { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C >Base : Mixin1.(Anonymous class) @@ -28,7 +28,7 @@ const Mixin2 = (Base: C) => class extends Base {}; class C extends Mixin2(Mixin1(Object)) {} >C : C >Mixin2(Mixin1(Object)) : Mixin2.(Anonymous class) & Mixin1.(Anonymous class) & Object ->Mixin2 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C +>Mixin2 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C >Mixin1(Object) : { new (...args: any[]): Mixin1.(Anonymous class); prototype: Mixin1.(Anonymous class); } & ObjectConstructor >Mixin1 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin1.(Anonymous class); } & C >Object : ObjectConstructor diff --git a/testdata/baselines/reference/submodule/compiler/doubleMixinConditionalTypeBaseClassWorks.types.diff b/testdata/baselines/reference/submodule/compiler/doubleMixinConditionalTypeBaseClassWorks.types.diff index 5a4d0e863eb..1d91f95723a 100644 --- a/testdata/baselines/reference/submodule/compiler/doubleMixinConditionalTypeBaseClassWorks.types.diff +++ b/testdata/baselines/reference/submodule/compiler/doubleMixinConditionalTypeBaseClassWorks.types.diff @@ -24,8 +24,8 @@ const Mixin2 = (Base: C) => class extends Base {}; ->Mixin2 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C ->(Base: C) => class extends Base {} : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C -+>Mixin2 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C -+>(Base: C) => class extends Base {} : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C ++>Mixin2 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C ++>(Base: C) => class extends Base {} : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C >Base : C ->class extends Base {} : { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C ->Base : Mixin1.(Anonymous class) @@ -39,7 +39,7 @@ ->Mixin1(Object) : { new (...args: any[]): Mixin1.(Anonymous class); prototype: Mixin1.(Anonymous class); } & ObjectConstructor ->Mixin1 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin1.(Anonymous class); } & C +>Mixin2(Mixin1(Object)) : Mixin2.(Anonymous class) & Mixin1.(Anonymous class) & Object -+>Mixin2 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C ++>Mixin2 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C +>Mixin1(Object) : { new (...args: any[]): Mixin1.(Anonymous class); prototype: Mixin1.(Anonymous class); } & ObjectConstructor +>Mixin1 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin1.(Anonymous class); } & C >Object : ObjectConstructor diff --git a/testdata/baselines/reference/submodule/compiler/doubleUnderscoreExportStarConflict.types b/testdata/baselines/reference/submodule/compiler/doubleUnderscoreExportStarConflict.types index d80c0401e3c..5e47e193af9 100644 --- a/testdata/baselines/reference/submodule/compiler/doubleUnderscoreExportStarConflict.types +++ b/testdata/baselines/reference/submodule/compiler/doubleUnderscoreExportStarConflict.types @@ -7,9 +7,9 @@ export * from "./c"; === b.ts === export function __foo(): number | void {} ->__foo : () => void | number +>__foo : () => number | void === c.ts === export function __foo(): string | void {} ->__foo : () => void | string +>__foo : () => string | void diff --git a/testdata/baselines/reference/submodule/compiler/doubleUnderscoreExportStarConflict.types.diff b/testdata/baselines/reference/submodule/compiler/doubleUnderscoreExportStarConflict.types.diff deleted file mode 100644 index 2f8d3e59b10..00000000000 --- a/testdata/baselines/reference/submodule/compiler/doubleUnderscoreExportStarConflict.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.doubleUnderscoreExportStarConflict.types -+++ new.doubleUnderscoreExportStarConflict.types -@@= skipped -6, +6 lines =@@ - - === b.ts === - export function __foo(): number | void {} -->__foo : () => number | void -+>__foo : () => void | number - - === c.ts === - export function __foo(): string | void {} -->__foo : () => string | void -+>__foo : () => void | string diff --git a/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types b/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types index b0af82125f7..db884ae808b 100644 --- a/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types +++ b/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types @@ -4,8 +4,8 @@ // repro from https://github.com/microsoft/TypeScript/issues/56341 function bar(props: { x?: string; y?: string }) { ->bar : (props: { x?: string | undefined; y?: string | undefined; }) => { [x: string]: number; } ->props : { x?: string | undefined; y?: string | undefined; } +>bar : (props: { x?: string; y?: string; }) => { [x: string]: number; } +>props : { x?: string; y?: string; } >x : string | undefined >y : string | undefined @@ -14,7 +14,7 @@ function bar(props: { x?: string; y?: string }) { >"" : "" >y : string >"" : "" ->props : { x?: string | undefined; y?: string | undefined; } +>props : { x?: string; y?: string; } return { >{ [x]: 1, [y]: 2, } : { [x: string]: number; } @@ -33,7 +33,7 @@ function bar(props: { x?: string; y?: string }) { } function foo({ x = "", y = "" }: { x?: string; y?: string }) { ->foo : ({ x, y }: { x?: string | undefined; y?: string | undefined; }) => { [x: string]: number; } +>foo : ({ x, y }: { x?: string; y?: string; }) => { [x: string]: number; } >x : string >"" : "" >y : string diff --git a/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types.diff b/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types.diff index 99150dfb975..4aa0f1a16ce 100644 --- a/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types.diff +++ b/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types.diff @@ -1,31 +1,11 @@ --- old.duplicateObjectLiteralProperty_computedNameNegative1.types +++ new.duplicateObjectLiteralProperty_computedNameNegative1.types -@@= skipped -3, +3 lines =@@ - // repro from https://github.com/microsoft/TypeScript/issues/56341 - - function bar(props: { x?: string; y?: string }) { -->bar : (props: { x?: string; y?: string; }) => { [x: string]: number; } -->props : { x?: string; y?: string; } -+>bar : (props: { x?: string | undefined; y?: string | undefined; }) => { [x: string]: number; } -+>props : { x?: string | undefined; y?: string | undefined; } - >x : string | undefined - >y : string | undefined - -@@= skipped -10, +10 lines =@@ - >"" : "" - >y : string - >"" : "" -->props : { x?: string; y?: string; } -+>props : { x?: string | undefined; y?: string | undefined; } - - return { - >{ [x]: 1, [y]: 2, } : { [x: string]: number; } -@@= skipped -19, +19 lines =@@ +@@= skipped -32, +32 lines =@@ } function foo({ x = "", y = "" }: { x?: string; y?: string }) { ->foo : ({ x, y }: { x?: string; y?: string; }) => { [x]: number; [y]: number; } -+>foo : ({ x, y }: { x?: string | undefined; y?: string | undefined; }) => { [x: string]: number; } ++>foo : ({ x, y }: { x?: string; y?: string; }) => { [x: string]: number; } >x : string >"" : "" >y : string diff --git a/testdata/baselines/reference/submodule/compiler/duplicateOverloadInTypeAugmentation1.types b/testdata/baselines/reference/submodule/compiler/duplicateOverloadInTypeAugmentation1.types index a261d9265ff..69086b88bf1 100644 --- a/testdata/baselines/reference/submodule/compiler/duplicateOverloadInTypeAugmentation1.types +++ b/testdata/baselines/reference/submodule/compiler/duplicateOverloadInTypeAugmentation1.types @@ -3,7 +3,7 @@ === duplicateOverloadInTypeAugmentation1.ts === interface Array { reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, ->reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } +>reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T >previousValue : T >currentValue : T @@ -14,7 +14,7 @@ interface Array { >initialValue : T | undefined reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, ->reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } +>reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U >previousValue : U >currentValue : T diff --git a/testdata/baselines/reference/submodule/compiler/duplicateOverloadInTypeAugmentation1.types.diff b/testdata/baselines/reference/submodule/compiler/duplicateOverloadInTypeAugmentation1.types.diff index d7fb8449c1d..89b0778aa1d 100644 --- a/testdata/baselines/reference/submodule/compiler/duplicateOverloadInTypeAugmentation1.types.diff +++ b/testdata/baselines/reference/submodule/compiler/duplicateOverloadInTypeAugmentation1.types.diff @@ -1,20 +1,11 @@ --- old.duplicateOverloadInTypeAugmentation1.types +++ new.duplicateOverloadInTypeAugmentation1.types -@@= skipped -2, +2 lines =@@ - === duplicateOverloadInTypeAugmentation1.ts === - interface Array { - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, -->reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -+>reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } - >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T - >previousValue : T - >currentValue : T -@@= skipped -11, +11 lines =@@ +@@= skipped -13, +13 lines =@@ >initialValue : T | undefined reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, ->reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U_1, currentValue: T, currentIndex: number, array: T[]) => U_1, initialValue: U_1): U_1; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -+>reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } ++>reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U >previousValue : U >currentValue : T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/duplicateTypeParameters3.types b/testdata/baselines/reference/submodule/compiler/duplicateTypeParameters3.types index 86130359e6e..1236a380eb4 100644 --- a/testdata/baselines/reference/submodule/compiler/duplicateTypeParameters3.types +++ b/testdata/baselines/reference/submodule/compiler/duplicateTypeParameters3.types @@ -3,7 +3,7 @@ === duplicateTypeParameters3.ts === interface X { x: () => () => void; ->x : () => () => void +>x : () => () => void } diff --git a/testdata/baselines/reference/submodule/compiler/duplicateTypeParameters3.types.diff b/testdata/baselines/reference/submodule/compiler/duplicateTypeParameters3.types.diff deleted file mode 100644 index 0e8a72b853e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/duplicateTypeParameters3.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.duplicateTypeParameters3.types -+++ new.duplicateTypeParameters3.types -@@= skipped -2, +2 lines =@@ - === duplicateTypeParameters3.ts === - interface X { - x: () => () => void; -->x : () => () => void -+>x : () => () => void - } - diff --git a/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile.js b/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile.js index 791503bc908..31be79b0cba 100644 --- a/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile.js +++ b/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile.js @@ -91,7 +91,7 @@ export declare function WithTags>(Base: T): { new (...args: any[]): { tags(): void; foo(): void; - name?: string | undefined; + name?: string; }; getTags(): void; } & T; @@ -99,7 +99,7 @@ declare const Test_base: { new (...args: any[]): { tags(): void; foo(): void; - name?: string | undefined; + name?: string; }; getTags(): void; } & typeof FooItem; diff --git a/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile.js.diff b/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile.js.diff index 93d1784247c..e896cbba05e 100644 --- a/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile.js.diff +++ b/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile.js.diff @@ -21,22 +21,4 @@ + tags(c: any): any; }; }; - export declare class FooItem { -@@= skipped -12, +12 lines =@@ - new (...args: any[]): { - tags(): void; - foo(): void; -- name?: string; -+ name?: string | undefined; - }; - getTags(): void; - } & T; -@@= skipped -8, +8 lines =@@ - new (...args: any[]): { - tags(): void; - foo(): void; -- name?: string; -+ name?: string | undefined; - }; - getTags(): void; - } & typeof FooItem; \ No newline at end of file + export declare class FooItem { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile2.js b/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile2.js index 4beecfec444..f23bfcdd4b5 100644 --- a/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile2.js +++ b/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile2.js @@ -92,7 +92,7 @@ export declare function WithTags>(Base: T): { new (...args: any[]): { tags(): void; foo(): void; - name?: string | undefined; + name?: string; property: string; }; getTags(): void; @@ -101,7 +101,7 @@ declare const Test_base: { new (...args: any[]): { tags(): void; foo(): void; - name?: string | undefined; + name?: string; property: string; }; getTags(): void; diff --git a/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile2.js.diff b/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile2.js.diff index 00f0f62d807..a8ae1f989be 100644 --- a/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile2.js.diff +++ b/testdata/baselines/reference/submodule/compiler/emitClassExpressionInDeclarationFile2.js.diff @@ -25,7 +25,7 @@ + new (...args: any[]): { + tags(): void; + foo(): void; -+ name?: string | undefined; ++ name?: string; + property: string; + }; + getTags(): void; @@ -34,7 +34,7 @@ + new (...args: any[]): { + tags(): void; + foo(): void; -+ name?: string | undefined; ++ name?: string; + property: string; + }; + getTags(): void; diff --git a/testdata/baselines/reference/submodule/compiler/emitMethodCalledNew.js b/testdata/baselines/reference/submodule/compiler/emitMethodCalledNew.js index 78289a6202a..efdabd60c80 100644 --- a/testdata/baselines/reference/submodule/compiler/emitMethodCalledNew.js +++ b/testdata/baselines/reference/submodule/compiler/emitMethodCalledNew.js @@ -35,5 +35,5 @@ export declare const b: { "new"(x: number): number; }; export declare const c: { - "new"(x: number): number; + ["new"](x: number): number; }; diff --git a/testdata/baselines/reference/submodule/compiler/emitMethodCalledNew.js.diff b/testdata/baselines/reference/submodule/compiler/emitMethodCalledNew.js.diff new file mode 100644 index 00000000000..ed1cf0b9247 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/emitMethodCalledNew.js.diff @@ -0,0 +1,9 @@ +--- old.emitMethodCalledNew.js ++++ new.emitMethodCalledNew.js +@@= skipped -34, +34 lines =@@ + "new"(x: number): number; + }; + export declare const c: { +- "new"(x: number): number; ++ ["new"](x: number): number; + }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/emptyOptionalBindingPatternInDeclarationSignature.types b/testdata/baselines/reference/submodule/compiler/emptyOptionalBindingPatternInDeclarationSignature.types index 72506dc54c5..d95eb4946db 100644 --- a/testdata/baselines/reference/submodule/compiler/emptyOptionalBindingPatternInDeclarationSignature.types +++ b/testdata/baselines/reference/submodule/compiler/emptyOptionalBindingPatternInDeclarationSignature.types @@ -4,48 +4,48 @@ // #50791 declare function fn1({}?: { x: string }): void; ->fn1 : ({}?: { x: string; } | undefined) => void +>fn1 : ({}?: { x: string; }) => void >x : string declare function fn2({ x }?: { x: string }): void; ->fn2 : ({ x }?: { x: string; } | undefined) => void +>fn2 : ({ x }?: { x: string; }) => void >x : string >x : string declare function fn3([]?: [ x: string ]): void; ->fn3 : ([]?: [x: string] | undefined) => void +>fn3 : ([]?: [x: string]) => void declare function fn4([ x ]?: [ x: string ]): void; ->fn4 : ([x]?: [x: string] | undefined) => void +>fn4 : ([x]?: [x: string]) => void >x : string declare class C1 { >C1 : C1 method({}?: { x: string }): void ->method : ({}?: { x: string; } | undefined) => void +>method : ({}?: { x: string; }) => void >x : string static method2({}?: { x: string }): void ->method2 : ({}?: { x: string; } | undefined) => void +>method2 : ({}?: { x: string; }) => void >x : string static field: ({}?: { x: string }) => void ->field : ({}?: { x: string; } | undefined) => void +>field : ({}?: { x: string; }) => void >x : string static field2: ({}?: { x: string }) => void ->field2 : ({}?: { x: string; } | undefined) => void +>field2 : ({}?: { x: string; }) => void >x : string } interface I1 { method({}?: { x: string }): void ->method : ({}?: { x: string; } | undefined) => void +>method : ({}?: { x: string; }) => void >x : string method2: ({}?: { x: string }) => void ->method2 : ({}?: { x: string; } | undefined) => void +>method2 : ({}?: { x: string; }) => void >x : string } @@ -57,27 +57,27 @@ type T2 = { >T2 : T2 method({}?: { x: string }): void ->method : ({}?: { x: string; } | undefined) => void +>method : ({}?: { x: string; }) => void >x : string method2: ({}?: { x: string }) => void ->method2 : ({}?: { x: string; } | undefined) => void +>method2 : ({}?: { x: string; }) => void >x : string } declare const val1: ({}?: { x: string }) => void ->val1 : ({}?: { x: string; } | undefined) => void +>val1 : ({}?: { x: string; }) => void >x : string declare const val2: { ->val2 : { method({}?: { x: string; } | undefined): void; method2: ({}?: { x: string; } | undefined) => void; } +>val2 : { method({}?: { x: string; }): void; method2: ({}?: { x: string; }) => void; } method({}?: { x: string }): void ->method : ({}?: { x: string; } | undefined) => void +>method : ({}?: { x: string; }) => void >x : string method2: ({}?: { x: string }) => void ->method2 : ({}?: { x: string; } | undefined) => void +>method2 : ({}?: { x: string; }) => void >x : string } diff --git a/testdata/baselines/reference/submodule/compiler/emptyOptionalBindingPatternInDeclarationSignature.types.diff b/testdata/baselines/reference/submodule/compiler/emptyOptionalBindingPatternInDeclarationSignature.types.diff deleted file mode 100644 index d988636afc6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/emptyOptionalBindingPatternInDeclarationSignature.types.diff +++ /dev/null @@ -1,94 +0,0 @@ ---- old.emptyOptionalBindingPatternInDeclarationSignature.types -+++ new.emptyOptionalBindingPatternInDeclarationSignature.types -@@= skipped -3, +3 lines =@@ - // #50791 - - declare function fn1({}?: { x: string }): void; -->fn1 : ({}?: { x: string; }) => void -+>fn1 : ({}?: { x: string; } | undefined) => void - >x : string - - declare function fn2({ x }?: { x: string }): void; -->fn2 : ({ x }?: { x: string; }) => void -+>fn2 : ({ x }?: { x: string; } | undefined) => void - >x : string - >x : string - - declare function fn3([]?: [ x: string ]): void; -->fn3 : ([]?: [x: string]) => void -+>fn3 : ([]?: [x: string] | undefined) => void - - declare function fn4([ x ]?: [ x: string ]): void; -->fn4 : ([x]?: [x: string]) => void -+>fn4 : ([x]?: [x: string] | undefined) => void - >x : string - - declare class C1 { - >C1 : C1 - - method({}?: { x: string }): void -->method : ({}?: { x: string; }) => void -+>method : ({}?: { x: string; } | undefined) => void - >x : string - - static method2({}?: { x: string }): void -->method2 : ({}?: { x: string; }) => void -+>method2 : ({}?: { x: string; } | undefined) => void - >x : string - - static field: ({}?: { x: string }) => void -->field : ({}?: { x: string; }) => void -+>field : ({}?: { x: string; } | undefined) => void - >x : string - - static field2: ({}?: { x: string }) => void -->field2 : ({}?: { x: string; }) => void -+>field2 : ({}?: { x: string; } | undefined) => void - >x : string - } - - interface I1 { - method({}?: { x: string }): void -->method : ({}?: { x: string; }) => void -+>method : ({}?: { x: string; } | undefined) => void - >x : string - - method2: ({}?: { x: string }) => void -->method2 : ({}?: { x: string; }) => void -+>method2 : ({}?: { x: string; } | undefined) => void - >x : string - } - -@@= skipped -53, +53 lines =@@ - >T2 : T2 - - method({}?: { x: string }): void -->method : ({}?: { x: string; }) => void -+>method : ({}?: { x: string; } | undefined) => void - >x : string - - method2: ({}?: { x: string }) => void -->method2 : ({}?: { x: string; }) => void -+>method2 : ({}?: { x: string; } | undefined) => void - >x : string - } - - declare const val1: ({}?: { x: string }) => void -->val1 : ({}?: { x: string; }) => void -+>val1 : ({}?: { x: string; } | undefined) => void - >x : string - - declare const val2: { -->val2 : { method({}?: { x: string; }): void; method2: ({}?: { x: string; }) => void; } -+>val2 : { method({}?: { x: string; } | undefined): void; method2: ({}?: { x: string; } | undefined) => void; } - - method({}?: { x: string }): void -->method : ({}?: { x: string; }) => void -+>method : ({}?: { x: string; } | undefined) => void - >x : string - - method2: ({}?: { x: string }) => void -->method2 : ({}?: { x: string; }) => void -+>method2 : ({}?: { x: string; } | undefined) => void - >x : string - } diff --git a/testdata/baselines/reference/submodule/compiler/enumMemberReduction.types b/testdata/baselines/reference/submodule/compiler/enumMemberReduction.types index 39d9e0ce420..c9667d3d087 100644 --- a/testdata/baselines/reference/submodule/compiler/enumMemberReduction.types +++ b/testdata/baselines/reference/submodule/compiler/enumMemberReduction.types @@ -71,7 +71,7 @@ export function fn2(optionalEnum: MyEnum | undefined) { } export function fn3(optionalEnum?: MyEnum) { ->fn3 : (optionalEnum?: MyEnum | undefined) => MyEnum +>fn3 : (optionalEnum?: MyEnum) => MyEnum >optionalEnum : MyEnum | undefined return optionalEnum ?? MyEnum.A; @@ -83,7 +83,7 @@ export function fn3(optionalEnum?: MyEnum) { } export function fn4(optionalEnum?: MyEnum) { ->fn4 : (optionalEnum?: MyEnum | undefined) => MyEnum.B | MyEnum.C +>fn4 : (optionalEnum?: MyEnum) => MyEnum.B | MyEnum.C >optionalEnum : MyEnum | undefined return optionalEnum || MyEnum.B; @@ -95,7 +95,7 @@ export function fn4(optionalEnum?: MyEnum) { } export function fn5(optionalEnum?: MyStringEnum) { ->fn5 : (optionalEnum?: MyStringEnum | undefined) => MyStringEnum +>fn5 : (optionalEnum?: MyStringEnum) => MyStringEnum >optionalEnum : MyStringEnum | undefined return optionalEnum || MyStringEnum.B; @@ -107,7 +107,7 @@ export function fn5(optionalEnum?: MyStringEnum) { } export function fn6(optionalEnum?: MyStringEnumWithEmpty) { ->fn6 : (optionalEnum?: MyStringEnumWithEmpty | undefined) => MyStringEnumWithEmpty.B | MyStringEnumWithEmpty.C +>fn6 : (optionalEnum?: MyStringEnumWithEmpty) => MyStringEnumWithEmpty.B | MyStringEnumWithEmpty.C >optionalEnum : MyStringEnumWithEmpty | undefined return optionalEnum || MyStringEnumWithEmpty.B; diff --git a/testdata/baselines/reference/submodule/compiler/enumMemberReduction.types.diff b/testdata/baselines/reference/submodule/compiler/enumMemberReduction.types.diff deleted file mode 100644 index 8f6a7798b17..00000000000 --- a/testdata/baselines/reference/submodule/compiler/enumMemberReduction.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.enumMemberReduction.types -+++ new.enumMemberReduction.types -@@= skipped -70, +70 lines =@@ - } - - export function fn3(optionalEnum?: MyEnum) { -->fn3 : (optionalEnum?: MyEnum) => MyEnum -+>fn3 : (optionalEnum?: MyEnum | undefined) => MyEnum - >optionalEnum : MyEnum | undefined - - return optionalEnum ?? MyEnum.A; -@@= skipped -12, +12 lines =@@ - } - - export function fn4(optionalEnum?: MyEnum) { -->fn4 : (optionalEnum?: MyEnum) => MyEnum.B | MyEnum.C -+>fn4 : (optionalEnum?: MyEnum | undefined) => MyEnum.B | MyEnum.C - >optionalEnum : MyEnum | undefined - - return optionalEnum || MyEnum.B; -@@= skipped -12, +12 lines =@@ - } - - export function fn5(optionalEnum?: MyStringEnum) { -->fn5 : (optionalEnum?: MyStringEnum) => MyStringEnum -+>fn5 : (optionalEnum?: MyStringEnum | undefined) => MyStringEnum - >optionalEnum : MyStringEnum | undefined - - return optionalEnum || MyStringEnum.B; -@@= skipped -12, +12 lines =@@ - } - - export function fn6(optionalEnum?: MyStringEnumWithEmpty) { -->fn6 : (optionalEnum?: MyStringEnumWithEmpty) => MyStringEnumWithEmpty.B | MyStringEnumWithEmpty.C -+>fn6 : (optionalEnum?: MyStringEnumWithEmpty | undefined) => MyStringEnumWithEmpty.B | MyStringEnumWithEmpty.C - >optionalEnum : MyStringEnumWithEmpty | undefined - - return optionalEnum || MyStringEnumWithEmpty.B; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/enumPropertyAccess.types b/testdata/baselines/reference/submodule/compiler/enumPropertyAccess.types index 1ecd463cc79..4c2807dfdcd 100644 --- a/testdata/baselines/reference/submodule/compiler/enumPropertyAccess.types +++ b/testdata/baselines/reference/submodule/compiler/enumPropertyAccess.types @@ -25,9 +25,9 @@ var p = x.Green; // error x.toFixed(); // ok >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : Colors.Red ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string // Now with generics function fill(f: B) { @@ -41,7 +41,7 @@ function fill(f: B) { f.toFixed(); // ok >f.toFixed() : string ->f.toFixed : (fractionDigits?: number | undefined) => string +>f.toFixed : (fractionDigits?: number) => string >f : Colors ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } diff --git a/testdata/baselines/reference/submodule/compiler/enumPropertyAccess.types.diff b/testdata/baselines/reference/submodule/compiler/enumPropertyAccess.types.diff deleted file mode 100644 index ce4eccb6946..00000000000 --- a/testdata/baselines/reference/submodule/compiler/enumPropertyAccess.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.enumPropertyAccess.types -+++ new.enumPropertyAccess.types -@@= skipped -24, +24 lines =@@ - - x.toFixed(); // ok - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : Colors.Red -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - // Now with generics - function fill(f: B) { -@@= skipped -16, +16 lines =@@ - - f.toFixed(); // ok - >f.toFixed() : string -->f.toFixed : (fractionDigits?: number) => string -+>f.toFixed : (fractionDigits?: number | undefined) => string - >f : Colors -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/errorConstructorSubtypes.types b/testdata/baselines/reference/submodule/compiler/errorConstructorSubtypes.types index 3a3319329e2..ff5ca68c1da 100644 --- a/testdata/baselines/reference/submodule/compiler/errorConstructorSubtypes.types +++ b/testdata/baselines/reference/submodule/compiler/errorConstructorSubtypes.types @@ -4,7 +4,7 @@ // In Node, ErrorConstructor is augmented with extra properties. Excerpted below. interface ErrorConstructor { captureStackTrace(targetObject: Object, constructorOpt?: Function): void; ->captureStackTrace : (targetObject: Object, constructorOpt?: Function | undefined) => void +>captureStackTrace : (targetObject: Object, constructorOpt?: Function) => void >targetObject : Object >constructorOpt : Function | undefined } @@ -29,7 +29,7 @@ new x().message >message : string x.captureStackTrace ->x.captureStackTrace : (targetObject: Object, constructorOpt?: Function | undefined) => void +>x.captureStackTrace : (targetObject: Object, constructorOpt?: Function) => void >x : ErrorConstructor ->captureStackTrace : (targetObject: Object, constructorOpt?: Function | undefined) => void +>captureStackTrace : (targetObject: Object, constructorOpt?: Function) => void diff --git a/testdata/baselines/reference/submodule/compiler/errorConstructorSubtypes.types.diff b/testdata/baselines/reference/submodule/compiler/errorConstructorSubtypes.types.diff deleted file mode 100644 index b122c42339c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/errorConstructorSubtypes.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.errorConstructorSubtypes.types -+++ new.errorConstructorSubtypes.types -@@= skipped -3, +3 lines =@@ - // In Node, ErrorConstructor is augmented with extra properties. Excerpted below. - interface ErrorConstructor { - captureStackTrace(targetObject: Object, constructorOpt?: Function): void; -->captureStackTrace : (targetObject: Object, constructorOpt?: Function) => void -+>captureStackTrace : (targetObject: Object, constructorOpt?: Function | undefined) => void - >targetObject : Object - >constructorOpt : Function | undefined - } -@@= skipped -25, +25 lines =@@ - >message : string - - x.captureStackTrace -->x.captureStackTrace : (targetObject: Object, constructorOpt?: Function) => void -+>x.captureStackTrace : (targetObject: Object, constructorOpt?: Function | undefined) => void - >x : ErrorConstructor -->captureStackTrace : (targetObject: Object, constructorOpt?: Function) => void -+>captureStackTrace : (targetObject: Object, constructorOpt?: Function | undefined) => void diff --git a/testdata/baselines/reference/submodule/compiler/errorElaboration.types b/testdata/baselines/reference/submodule/compiler/errorElaboration.types index 111d2183180..e0a3b6dc05b 100644 --- a/testdata/baselines/reference/submodule/compiler/errorElaboration.types +++ b/testdata/baselines/reference/submodule/compiler/errorElaboration.types @@ -29,7 +29,7 @@ foo(a); // Repro for #25498 function test(): {[A in "foo"]: A} { ->test : () => { foo: "foo"; } +>test : () => { [A in "foo"]: A; } return {foo: "bar"}; >{foo: "bar"} : { foo: "bar"; } diff --git a/testdata/baselines/reference/submodule/compiler/errorElaboration.types.diff b/testdata/baselines/reference/submodule/compiler/errorElaboration.types.diff deleted file mode 100644 index 0d1914beb48..00000000000 --- a/testdata/baselines/reference/submodule/compiler/errorElaboration.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.errorElaboration.types -+++ new.errorElaboration.types -@@= skipped -28, +28 lines =@@ - // Repro for #25498 - - function test(): {[A in "foo"]: A} { -->test : () => { [A in "foo"]: A; } -+>test : () => { foo: "foo"; } - - return {foo: "bar"}; - >{foo: "bar"} : { foo: "bar"; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/errorForUsingPropertyOfTypeAsType03.types b/testdata/baselines/reference/submodule/compiler/errorForUsingPropertyOfTypeAsType03.types index 8539e6aea59..4180d3757fb 100644 --- a/testdata/baselines/reference/submodule/compiler/errorForUsingPropertyOfTypeAsType03.types +++ b/testdata/baselines/reference/submodule/compiler/errorForUsingPropertyOfTypeAsType03.types @@ -30,7 +30,7 @@ namespace Test1 { >Red : any let a2: Color.Red["toString"]; ->a2 : (radix?: number | undefined) => string +>a2 : (radix?: number) => string >Color : any let a3: Color["Red"]["toString"]; @@ -39,7 +39,7 @@ namespace Test1 { //let b1: (typeof Color).Red.toString; //let b2: (typeof Color).Red["toString"]; let b3: (typeof Color)["Red"]["toString"]; ->b3 : (radix?: number | undefined) => string +>b3 : (radix?: number) => string >Color : typeof Color let c1: C1.Red.toString; @@ -64,5 +64,5 @@ namespace Test1 { >C2 : any let d3: C2["Red"]["toString"]; ->d3 : (radix?: number | undefined) => string +>d3 : (radix?: number) => string } diff --git a/testdata/baselines/reference/submodule/compiler/errorForUsingPropertyOfTypeAsType03.types.diff b/testdata/baselines/reference/submodule/compiler/errorForUsingPropertyOfTypeAsType03.types.diff deleted file mode 100644 index 389d7f6a329..00000000000 --- a/testdata/baselines/reference/submodule/compiler/errorForUsingPropertyOfTypeAsType03.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.errorForUsingPropertyOfTypeAsType03.types -+++ new.errorForUsingPropertyOfTypeAsType03.types -@@= skipped -29, +29 lines =@@ - >Red : any - - let a2: Color.Red["toString"]; -->a2 : (radix?: number) => string -+>a2 : (radix?: number | undefined) => string - >Color : any - - let a3: Color["Red"]["toString"]; -@@= skipped -9, +9 lines =@@ - //let b1: (typeof Color).Red.toString; - //let b2: (typeof Color).Red["toString"]; - let b3: (typeof Color)["Red"]["toString"]; -->b3 : (radix?: number) => string -+>b3 : (radix?: number | undefined) => string - >Color : typeof Color - - let c1: C1.Red.toString; -@@= skipped -25, +25 lines =@@ - >C2 : any - - let d3: C2["Red"]["toString"]; -->d3 : (radix?: number) => string -+>d3 : (radix?: number | undefined) => string - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate.types b/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate.types index 274bfd0df6a..1f2267e6c3f 100644 --- a/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate.types +++ b/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate.types @@ -37,7 +37,7 @@ interface Stuff { } function foo(): Stuff | string { ->foo : () => string | Stuff +>foo : () => Stuff | string return { >{ a() { return [123] }, b: () => "hello", c: () => "hello", d: () => "hello", e: () => "hello", f: () => "hello", g: () => "hello", h: () => "hello", i: () => "hello", j: () => "hello", k: () => 123 } : { a(): number[]; b: () => string; c: () => string; d: () => string; e: () => string; f: () => string; g: () => string; h: () => string; i: () => string; j: () => string; k: () => number; } diff --git a/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate.types.diff b/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate.types.diff deleted file mode 100644 index 00eee711b81..00000000000 --- a/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.errorOnUnionVsObjectShouldDeeplyDisambiguate.types -+++ new.errorOnUnionVsObjectShouldDeeplyDisambiguate.types -@@= skipped -36, +36 lines =@@ - } - - function foo(): Stuff | string { -->foo : () => Stuff | string -+>foo : () => string | Stuff - - return { - >{ a() { return [123] }, b: () => "hello", c: () => "hello", d: () => "hello", e: () => "hello", f: () => "hello", g: () => "hello", h: () => "hello", i: () => "hello", j: () => "hello", k: () => 123 } : { a(): number[]; b: () => string; c: () => string; d: () => string; e: () => string; f: () => string; g: () => string; h: () => string; i: () => string; j: () => string; k: () => number; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types b/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types index bb08ec6a748..abe1f5b3351 100644 --- a/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types +++ b/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types @@ -37,7 +37,7 @@ interface Stuff { } function foo(): Stuff | Date { ->foo : () => Date | Stuff +>foo : () => Stuff | Date return { >{ a() { return [123] }, b: () => "hello", c: () => "hello", d: () => "hello", e: () => "hello", f: () => "hello", g: () => "hello", h: () => "hello", i: () => "hello", j: () => "hello", k: () => 123 } : { a(): number[]; b: () => string; c: () => string; d: () => string; e: () => string; f: () => string; g: () => string; h: () => string; i: () => string; j: () => string; k: () => number; } diff --git a/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types.diff b/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types.diff deleted file mode 100644 index 60a36814dd4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.errorOnUnionVsObjectShouldDeeplyDisambiguate2.types -+++ new.errorOnUnionVsObjectShouldDeeplyDisambiguate2.types -@@= skipped -36, +36 lines =@@ - } - - function foo(): Stuff | Date { -->foo : () => Stuff | Date -+>foo : () => Date | Stuff - - return { - >{ a() { return [123] }, b: () => "hello", c: () => "hello", d: () => "hello", e: () => "hello", f: () => "hello", g: () => "hello", h: () => "hello", i: () => "hello", j: () => "hello", k: () => 123 } : { a(): number[]; b: () => string; c: () => string; d: () => string; e: () => string; f: () => string; g: () => string; h: () => string; i: () => string; j: () => string; k: () => number; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/errorsOnUnionsOfOverlappingObjects01.types b/testdata/baselines/reference/submodule/compiler/errorsOnUnionsOfOverlappingObjects01.types index f90d37b6697..0430decb4e3 100644 --- a/testdata/baselines/reference/submodule/compiler/errorsOnUnionsOfOverlappingObjects01.types +++ b/testdata/baselines/reference/submodule/compiler/errorsOnUnionsOfOverlappingObjects01.types @@ -65,17 +65,17 @@ g({ a: '', b: '' }) >'' : "" declare function h(x: Foo | Bar | Other): any; ->h : (x: Bar | Foo | Other) => any +>h : (x: Foo | Bar | Other) => any >x : Bar | Foo | Other h(x); >h(x) : any ->h : (x: Bar | Foo | Other) => any +>h : (x: Foo | Bar | Other) => any >x : { a: string; b: string; } h({ a: '', b: '' }) >h({ a: '', b: '' }) : any ->h : (x: Bar | Foo | Other) => any +>h : (x: Foo | Bar | Other) => any >{ a: '', b: '' } : { a: string; b: string; } >a : string >'' : "" diff --git a/testdata/baselines/reference/submodule/compiler/errorsOnUnionsOfOverlappingObjects01.types.diff b/testdata/baselines/reference/submodule/compiler/errorsOnUnionsOfOverlappingObjects01.types.diff deleted file mode 100644 index 9a9f5001de7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/errorsOnUnionsOfOverlappingObjects01.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.errorsOnUnionsOfOverlappingObjects01.types -+++ new.errorsOnUnionsOfOverlappingObjects01.types -@@= skipped -64, +64 lines =@@ - >'' : "" - - declare function h(x: Foo | Bar | Other): any; -->h : (x: Foo | Bar | Other) => any -+>h : (x: Bar | Foo | Other) => any - >x : Bar | Foo | Other - - h(x); - >h(x) : any -->h : (x: Foo | Bar | Other) => any -+>h : (x: Bar | Foo | Other) => any - >x : { a: string; b: string; } - - h({ a: '', b: '' }) - >h({ a: '', b: '' }) : any -->h : (x: Foo | Bar | Other) => any -+>h : (x: Bar | Foo | Other) => any - >{ a: '', b: '' } : { a: string; b: string; } - >a : string - >'' : "" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/es2018ObjectAssign.types b/testdata/baselines/reference/submodule/compiler/es2018ObjectAssign.types index 63e7b454365..35054c22084 100644 --- a/testdata/baselines/reference/submodule/compiler/es2018ObjectAssign.types +++ b/testdata/baselines/reference/submodule/compiler/es2018ObjectAssign.types @@ -17,7 +17,7 @@ declare const p: Promise; p.finally(); >p.finally() : Promise ->p.finally : (onfinally?: (() => void) | null | undefined) => Promise +>p.finally : (onfinally?: (() => void) | undefined | null) => Promise >p : Promise ->finally : (onfinally?: (() => void) | null | undefined) => Promise +>finally : (onfinally?: (() => void) | undefined | null) => Promise diff --git a/testdata/baselines/reference/submodule/compiler/es2018ObjectAssign.types.diff b/testdata/baselines/reference/submodule/compiler/es2018ObjectAssign.types.diff new file mode 100644 index 00000000000..e8289096f8e --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/es2018ObjectAssign.types.diff @@ -0,0 +1,11 @@ +--- old.es2018ObjectAssign.types ++++ new.es2018ObjectAssign.types +@@= skipped -16, +16 lines =@@ + + p.finally(); + >p.finally() : Promise +->p.finally : (onfinally?: (() => void) | null | undefined) => Promise ++>p.finally : (onfinally?: (() => void) | undefined | null) => Promise + >p : Promise +->finally : (onfinally?: (() => void) | null | undefined) => Promise ++>finally : (onfinally?: (() => void) | undefined | null) => Promise diff --git a/testdata/baselines/reference/submodule/compiler/es5-importHelpersAsyncFunctions(target=es2015).types b/testdata/baselines/reference/submodule/compiler/es5-importHelpersAsyncFunctions(target=es2015).types index 1c613757c96..45451084b73 100644 --- a/testdata/baselines/reference/submodule/compiler/es5-importHelpersAsyncFunctions(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/es5-importHelpersAsyncFunctions(target=es2015).types @@ -22,7 +22,7 @@ export declare function __assign(t: any, ...sources: any[]): any; >sources : any[] export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; ->__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any +>__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any >decorators : Function[] >target : any >key : string | symbol | undefined diff --git a/testdata/baselines/reference/submodule/compiler/es5-importHelpersAsyncFunctions(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/es5-importHelpersAsyncFunctions(target=es2015).types.diff deleted file mode 100644 index f04ce2e21d1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/es5-importHelpersAsyncFunctions(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.es5-importHelpersAsyncFunctions(target=es2015).types -+++ new.es5-importHelpersAsyncFunctions(target=es2015).types -@@= skipped -21, +21 lines =@@ - >sources : any[] - - export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; -->__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -+>__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any - >decorators : Function[] - >target : any - >key : string | symbol | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/esNextWeakRefs_IterableWeakMap.types b/testdata/baselines/reference/submodule/compiler/esNextWeakRefs_IterableWeakMap.types index 9d20844119a..ee5f9367b1b 100644 --- a/testdata/baselines/reference/submodule/compiler/esNextWeakRefs_IterableWeakMap.types +++ b/testdata/baselines/reference/submodule/compiler/esNextWeakRefs_IterableWeakMap.types @@ -129,10 +129,10 @@ export class IterableWeakMap implements WeakMap { this.#finalizationGroup.register(key, { >this.#finalizationGroup.register(key, { set: this.#refSet, ref, }, ref) : void ->this.#finalizationGroup.register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey | undefined) => void +>this.#finalizationGroup.register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey) => void >this.#finalizationGroup : FinalizationRegistry<{ readonly ref: WeakRef; readonly set: Set>; }> >this : this ->register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey | undefined) => void +>register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey) => void >key : K >{ set: this.#refSet, ref, } : { set: Set>; ref: WeakRef; } @@ -313,7 +313,7 @@ export class IterableWeakMap implements WeakMap { >iterator : unique symbol *entries(): Generator<[key: K, value: V], void> { ->entries : () => Generator<[key: K, value: V], void, any> +>entries : () => Generator<[key: K, value: V], void> for (const ref of this.#refSet) { >ref : WeakRef diff --git a/testdata/baselines/reference/submodule/compiler/esNextWeakRefs_IterableWeakMap.types.diff b/testdata/baselines/reference/submodule/compiler/esNextWeakRefs_IterableWeakMap.types.diff deleted file mode 100644 index 4ab2f470c21..00000000000 --- a/testdata/baselines/reference/submodule/compiler/esNextWeakRefs_IterableWeakMap.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.esNextWeakRefs_IterableWeakMap.types -+++ new.esNextWeakRefs_IterableWeakMap.types -@@= skipped -128, +128 lines =@@ - - this.#finalizationGroup.register(key, { - >this.#finalizationGroup.register(key, { set: this.#refSet, ref, }, ref) : void -->this.#finalizationGroup.register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey) => void -+>this.#finalizationGroup.register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey | undefined) => void - >this.#finalizationGroup : FinalizationRegistry<{ readonly ref: WeakRef; readonly set: Set>; }> - >this : this -->register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey) => void -+>register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey | undefined) => void - >key : K - >{ set: this.#refSet, ref, } : { set: Set>; ref: WeakRef; } - -@@= skipped -184, +184 lines =@@ - >iterator : unique symbol - - *entries(): Generator<[key: K, value: V], void> { -->entries : () => Generator<[key: K, value: V], void> -+>entries : () => Generator<[key: K, value: V], void, any> - - for (const ref of this.#refSet) { - >ref : WeakRef \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/escapedReservedCompilerNamedIdentifier.js b/testdata/baselines/reference/submodule/compiler/escapedReservedCompilerNamedIdentifier.js index b3421b977a7..f0e1a76bec7 100644 --- a/testdata/baselines/reference/submodule/compiler/escapedReservedCompilerNamedIdentifier.js +++ b/testdata/baselines/reference/submodule/compiler/escapedReservedCompilerNamedIdentifier.js @@ -69,7 +69,7 @@ var b5 = o5["_proto__"]; //// [escapedReservedCompilerNamedIdentifier.d.ts] declare var __proto__: number; declare var o: { - __proto__: number; + "__proto__": number; }; declare var b: number; declare var o1: { @@ -78,7 +78,7 @@ declare var o1: { declare var b1: number; declare var ___proto__: number; declare var o2: { - ___proto__: number; + "___proto__": number; }; declare var b2: number; declare var o3: { @@ -87,7 +87,7 @@ declare var o3: { declare var b3: number; declare var _proto__: number; declare var o4: { - _proto__: number; + "_proto__": number; }; declare var b4: number; declare var o5: { diff --git a/testdata/baselines/reference/submodule/compiler/escapedReservedCompilerNamedIdentifier.js.diff b/testdata/baselines/reference/submodule/compiler/escapedReservedCompilerNamedIdentifier.js.diff new file mode 100644 index 00000000000..09817ace6ee --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/escapedReservedCompilerNamedIdentifier.js.diff @@ -0,0 +1,29 @@ +--- old.escapedReservedCompilerNamedIdentifier.js ++++ new.escapedReservedCompilerNamedIdentifier.js +@@= skipped -68, +68 lines =@@ + //// [escapedReservedCompilerNamedIdentifier.d.ts] + declare var __proto__: number; + declare var o: { +- __proto__: number; ++ "__proto__": number; + }; + declare var b: number; + declare var o1: { +@@= skipped -9, +9 lines =@@ + declare var b1: number; + declare var ___proto__: number; + declare var o2: { +- ___proto__: number; ++ "___proto__": number; + }; + declare var b2: number; + declare var o3: { +@@= skipped -9, +9 lines =@@ + declare var b3: number; + declare var _proto__: number; + declare var o4: { +- _proto__: number; ++ "_proto__": number; + }; + declare var b4: number; + declare var o5: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.errors.txt b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.errors.txt index faf11254bbc..7ce33b2a702 100644 --- a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.errors.txt @@ -1,7 +1,7 @@ excessPropertyCheckIntersectionWithRecursiveType.ts(13,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: Schema1; }'. -excessPropertyCheckIntersectionWithRecursiveType.ts(26,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }'. +excessPropertyCheckIntersectionWithRecursiveType.ts(26,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }'. excessPropertyCheckIntersectionWithRecursiveType.ts(39,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: Schema3; }'. -excessPropertyCheckIntersectionWithRecursiveType.ts(52,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type 'Example<{ l2: boolean; }> & { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }'. +excessPropertyCheckIntersectionWithRecursiveType.ts(52,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type 'Example<{ l2: boolean; }> & { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }'. excessPropertyCheckIntersectionWithRecursiveType.ts(86,11): error TS2353: Object literal may only specify known properties, and 'children' does not exist in type 'User'. excessPropertyCheckIntersectionWithRecursiveType.ts(102,35): error TS2339: Property 'children' does not exist on type 'User'. @@ -37,8 +37,8 @@ excessPropertyCheckIntersectionWithRecursiveType.ts(102,35): error TS2339: Prope l2: { type: 'boolean' }, invalid: false, ~~~~~~~ -!!! error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }'. -!!! related TS6500 excessPropertyCheckIntersectionWithRecursiveType.ts:19:78: The expected type comes from property 'props' which is declared here on type '{ props: { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; } & Example<{ l2: boolean; }>' +!!! error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }'. +!!! related TS6500 excessPropertyCheckIntersectionWithRecursiveType.ts:19:78: The expected type comes from property 'props' which is declared here on type '{ props: { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }; } & Example<{ l2: boolean; }>' }, }, }, @@ -69,8 +69,8 @@ excessPropertyCheckIntersectionWithRecursiveType.ts(102,35): error TS2339: Prope l2: { type: 'boolean' }, invalid: false, ~~~~~~~ -!!! error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type 'Example<{ l2: boolean; }> & { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }'. -!!! related TS6500 excessPropertyCheckIntersectionWithRecursiveType.ts:45:78: The expected type comes from property 'props' which is declared here on type '{ props: Example<{ l2: boolean; }> & { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; }' +!!! error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type 'Example<{ l2: boolean; }> & { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }'. +!!! related TS6500 excessPropertyCheckIntersectionWithRecursiveType.ts:45:78: The expected type comes from property 'props' which is declared here on type '{ props: Example<{ l2: boolean; }> & { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }; }' }, }, }, diff --git a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.errors.txt.diff new file mode 100644 index 00000000000..94481b31a60 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.errors.txt.diff @@ -0,0 +1,34 @@ +--- old.excessPropertyCheckIntersectionWithRecursiveType.errors.txt ++++ new.excessPropertyCheckIntersectionWithRecursiveType.errors.txt +@@= skipped -0, +0 lines =@@ + excessPropertyCheckIntersectionWithRecursiveType.ts(13,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: Schema1; }'. +-excessPropertyCheckIntersectionWithRecursiveType.ts(26,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }'. ++excessPropertyCheckIntersectionWithRecursiveType.ts(26,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }'. + excessPropertyCheckIntersectionWithRecursiveType.ts(39,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: Schema3; }'. +-excessPropertyCheckIntersectionWithRecursiveType.ts(52,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type 'Example<{ l2: boolean; }> & { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }'. ++excessPropertyCheckIntersectionWithRecursiveType.ts(52,9): error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type 'Example<{ l2: boolean; }> & { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }'. + excessPropertyCheckIntersectionWithRecursiveType.ts(86,11): error TS2353: Object literal may only specify known properties, and 'children' does not exist in type 'User'. + excessPropertyCheckIntersectionWithRecursiveType.ts(102,35): error TS2339: Property 'children' does not exist on type 'User'. + +@@= skipped -36, +36 lines =@@ + l2: { type: 'boolean' }, + invalid: false, + ~~~~~~~ +-!!! error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }'. +-!!! related TS6500 excessPropertyCheckIntersectionWithRecursiveType.ts:19:78: The expected type comes from property 'props' which is declared here on type '{ props: { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; } & Example<{ l2: boolean; }>' ++!!! error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type '{ l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }'. ++!!! related TS6500 excessPropertyCheckIntersectionWithRecursiveType.ts:19:78: The expected type comes from property 'props' which is declared here on type '{ props: { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }; } & Example<{ l2: boolean; }>' + }, + }, + }, +@@= skipped -32, +32 lines =@@ + l2: { type: 'boolean' }, + invalid: false, + ~~~~~~~ +-!!! error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type 'Example<{ l2: boolean; }> & { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }'. +-!!! related TS6500 excessPropertyCheckIntersectionWithRecursiveType.ts:45:78: The expected type comes from property 'props' which is declared here on type '{ props: Example<{ l2: boolean; }> & { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; }' ++!!! error TS2353: Object literal may only specify known properties, and 'invalid' does not exist in type 'Example<{ l2: boolean; }> & { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }'. ++!!! related TS6500 excessPropertyCheckIntersectionWithRecursiveType.ts:45:78: The expected type comes from property 'props' which is declared here on type '{ props: Example<{ l2: boolean; }> & { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }; }' + }, + }, + }, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.types b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.types index 4430e1b7f66..33053e4d4d0 100644 --- a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.types +++ b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.types @@ -54,7 +54,7 @@ type Schema2 = (T extends boolean ? { type: 'boolean'; } & Example : { pro >props : { [P in keyof T]: Schema2; } export const schemaObj2: Schema2 = { ->schemaObj2 : { props: { l1: { props: { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; } & Example<{ l2: boolean; }>; }; } & Example +>schemaObj2 : { props: { l1: { props: { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }; } & Example<{ l2: boolean; }>; }; } & Example >{ props: { l1: { props: { l2: { type: 'boolean' }, invalid: false, }, }, },} : { props: { l1: { props: { l2: { type: "boolean"; }; invalid: boolean; }; }; }; } props: { @@ -126,7 +126,7 @@ type Schema4 = (T extends boolean ? { type: 'boolean'; } & Example : { pro >props : Example & { [P in keyof T]: Schema4; } export const schemaObj4: Schema4 = { ->schemaObj4 : { props: Example & { l1: { props: Example<{ l2: boolean; }> & { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; }; }; } +>schemaObj4 : { props: Example & { l1: { props: Example<{ l2: boolean; }> & { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }; }; }; } >{ props: { l1: { props: { l2: { type: 'boolean' }, invalid: false, }, }, },} : { props: { l1: { props: { l2: { type: "boolean"; }; invalid: boolean; }; }; }; } props: { @@ -182,7 +182,7 @@ type BuildTree = { >1 : T 0: T & { children: BuildTree>[] }; ->0 : T & { children: BuildTree[]; } +>0 : T & { children: BuildTree>[]; } >children : BuildTree[] }[Length extends N ? 1 : 0]; diff --git a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.types.diff b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.types.diff index 631d02a87ed..3c8c060eacc 100644 --- a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.types.diff +++ b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckIntersectionWithRecursiveType.types.diff @@ -1,11 +1,20 @@ --- old.excessPropertyCheckIntersectionWithRecursiveType.types +++ new.excessPropertyCheckIntersectionWithRecursiveType.types -@@= skipped -181, +181 lines =@@ - >1 : T +@@= skipped -53, +53 lines =@@ + >props : { [P in keyof T]: Schema2; } - 0: T & { children: BuildTree>[] }; -->0 : T & { children: BuildTree>[]; } -+>0 : T & { children: BuildTree[]; } - >children : BuildTree[] + export const schemaObj2: Schema2 = { +->schemaObj2 : { props: { l1: { props: { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; } & Example<{ l2: boolean; }>; }; } & Example ++>schemaObj2 : { props: { l1: { props: { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }; } & Example<{ l2: boolean; }>; }; } & Example + >{ props: { l1: { props: { l2: { type: 'boolean' }, invalid: false, }, }, },} : { props: { l1: { props: { l2: { type: "boolean"; }; invalid: boolean; }; }; }; } - }[Length extends N ? 1 : 0]; \ No newline at end of file + props: { +@@= skipped -72, +72 lines =@@ + >props : Example & { [P in keyof T]: Schema4; } + + export const schemaObj4: Schema4 = { +->schemaObj4 : { props: Example & { l1: { props: Example<{ l2: boolean; }> & { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; }; }; } ++>schemaObj4 : { props: Example & { l1: { props: Example<{ l2: boolean; }> & { l2: ({ type: 'boolean'; } & Example) | ({ type: 'boolean'; } & Example); }; }; }; } + >{ props: { l1: { props: { l2: { type: 'boolean' }, invalid: false, }, }, },} : { props: { l1: { props: { l2: { type: "boolean"; }; invalid: boolean; }; }; }; } + + props: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckWithMultipleDiscriminants.errors.txt b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckWithMultipleDiscriminants.errors.txt index 66d57c2dae1..26c49f80573 100644 --- a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckWithMultipleDiscriminants.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckWithMultipleDiscriminants.errors.txt @@ -1,7 +1,7 @@ excessPropertyCheckWithMultipleDiscriminants.ts(30,5): error TS2353: Object literal may only specify known properties, and 'multipleOf' does not exist in type 'Float'. -excessPropertyCheckWithMultipleDiscriminants.ts(41,5): error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: "left"; p2: boolean; }'. -excessPropertyCheckWithMultipleDiscriminants.ts(50,5): error TS2353: Object literal may only specify known properties, and 'p4' does not exist in type '{ p1: "left"; p2: true; p3: number; } | { p1: "left"; p2: boolean; }'. -excessPropertyCheckWithMultipleDiscriminants.ts(57,5): error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: "right"; p2: false; p4: string; }'. +excessPropertyCheckWithMultipleDiscriminants.ts(41,5): error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: 'left'; p2: boolean; }'. +excessPropertyCheckWithMultipleDiscriminants.ts(50,5): error TS2353: Object literal may only specify known properties, and 'p4' does not exist in type '{ p1: 'left'; p2: true; p3: number; } | { p1: 'left'; p2: boolean; }'. +excessPropertyCheckWithMultipleDiscriminants.ts(57,5): error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: 'right'; p2: false; p4: string; }'. excessPropertyCheckWithMultipleDiscriminants.ts(83,5): error TS2353: Object literal may only specify known properties, and 'b' does not exist in type 'Common | (Common & A)'. excessPropertyCheckWithMultipleDiscriminants.ts(93,5): error TS2353: Object literal may only specify known properties, and 'b' does not exist in type 'A | Common'. excessPropertyCheckWithMultipleDiscriminants.ts(131,5): error TS2353: Object literal may only specify known properties, and 'autoIncrement' does not exist in type 'OneToOneAttribute | StringAttribute'. @@ -53,7 +53,7 @@ excessPropertyCheckWithMultipleDiscriminants.ts(137,5): error TS2353: Object lit p2: false, p3: 42, ~~ -!!! error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: "left"; p2: boolean; }'. +!!! error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: 'left'; p2: boolean; }'. p4: "hello" }; @@ -64,7 +64,7 @@ excessPropertyCheckWithMultipleDiscriminants.ts(137,5): error TS2353: Object lit p3: 42, p4: "hello" ~~ -!!! error TS2353: Object literal may only specify known properties, and 'p4' does not exist in type '{ p1: "left"; p2: true; p3: number; } | { p1: "left"; p2: boolean; }'. +!!! error TS2353: Object literal may only specify known properties, and 'p4' does not exist in type '{ p1: 'left'; p2: true; p3: number; } | { p1: 'left'; p2: boolean; }'. }; // This has excess error because variant two is the only applicable case @@ -73,7 +73,7 @@ excessPropertyCheckWithMultipleDiscriminants.ts(137,5): error TS2353: Object lit p2: false, p3: 42, ~~ -!!! error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: "right"; p2: false; p4: string; }'. +!!! error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: 'right'; p2: false; p4: string; }'. p4: "hello" }; diff --git a/testdata/baselines/reference/submodule/compiler/excessPropertyCheckWithMultipleDiscriminants.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckWithMultipleDiscriminants.errors.txt.diff new file mode 100644 index 00000000000..5ec269a344c --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/excessPropertyCheckWithMultipleDiscriminants.errors.txt.diff @@ -0,0 +1,40 @@ +--- old.excessPropertyCheckWithMultipleDiscriminants.errors.txt ++++ new.excessPropertyCheckWithMultipleDiscriminants.errors.txt +@@= skipped -0, +0 lines =@@ + excessPropertyCheckWithMultipleDiscriminants.ts(30,5): error TS2353: Object literal may only specify known properties, and 'multipleOf' does not exist in type 'Float'. +-excessPropertyCheckWithMultipleDiscriminants.ts(41,5): error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: "left"; p2: boolean; }'. +-excessPropertyCheckWithMultipleDiscriminants.ts(50,5): error TS2353: Object literal may only specify known properties, and 'p4' does not exist in type '{ p1: "left"; p2: true; p3: number; } | { p1: "left"; p2: boolean; }'. +-excessPropertyCheckWithMultipleDiscriminants.ts(57,5): error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: "right"; p2: false; p4: string; }'. ++excessPropertyCheckWithMultipleDiscriminants.ts(41,5): error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: 'left'; p2: boolean; }'. ++excessPropertyCheckWithMultipleDiscriminants.ts(50,5): error TS2353: Object literal may only specify known properties, and 'p4' does not exist in type '{ p1: 'left'; p2: true; p3: number; } | { p1: 'left'; p2: boolean; }'. ++excessPropertyCheckWithMultipleDiscriminants.ts(57,5): error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: 'right'; p2: false; p4: string; }'. + excessPropertyCheckWithMultipleDiscriminants.ts(83,5): error TS2353: Object literal may only specify known properties, and 'b' does not exist in type 'Common | (Common & A)'. + excessPropertyCheckWithMultipleDiscriminants.ts(93,5): error TS2353: Object literal may only specify known properties, and 'b' does not exist in type 'A | Common'. + excessPropertyCheckWithMultipleDiscriminants.ts(131,5): error TS2353: Object literal may only specify known properties, and 'autoIncrement' does not exist in type 'OneToOneAttribute | StringAttribute'. +@@= skipped -52, +52 lines =@@ + p2: false, + p3: 42, + ~~ +-!!! error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: "left"; p2: boolean; }'. ++!!! error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: 'left'; p2: boolean; }'. + p4: "hello" + }; + +@@= skipped -11, +11 lines =@@ + p3: 42, + p4: "hello" + ~~ +-!!! error TS2353: Object literal may only specify known properties, and 'p4' does not exist in type '{ p1: "left"; p2: true; p3: number; } | { p1: "left"; p2: boolean; }'. ++!!! error TS2353: Object literal may only specify known properties, and 'p4' does not exist in type '{ p1: 'left'; p2: true; p3: number; } | { p1: 'left'; p2: boolean; }'. + }; + + // This has excess error because variant two is the only applicable case +@@= skipped -9, +9 lines =@@ + p2: false, + p3: 42, + ~~ +-!!! error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: "right"; p2: false; p4: string; }'. ++!!! error TS2353: Object literal may only specify known properties, and 'p3' does not exist in type '{ p1: 'right'; p2: false; p4: string; }'. + p4: "hello" + }; + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/exportAssignmentMembersVisibleInAugmentation.types b/testdata/baselines/reference/submodule/compiler/exportAssignmentMembersVisibleInAugmentation.types index 47f8f9cd9a1..2c540d46648 100644 --- a/testdata/baselines/reference/submodule/compiler/exportAssignmentMembersVisibleInAugmentation.types +++ b/testdata/baselines/reference/submodule/compiler/exportAssignmentMembersVisibleInAugmentation.types @@ -17,7 +17,7 @@ declare module "foo" { >"foo" : typeof foo export function f(): T; // OK ->f : () => number +>f : () => T } === /b.ts === @@ -28,7 +28,7 @@ declare module "foo" { >"foo" : typeof foo export function g(): foo.T; // OK ->g : () => number +>g : () => foo.T >foo : any } diff --git a/testdata/baselines/reference/submodule/compiler/exportAssignmentMembersVisibleInAugmentation.types.diff b/testdata/baselines/reference/submodule/compiler/exportAssignmentMembersVisibleInAugmentation.types.diff deleted file mode 100644 index cb94a7df6d0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/exportAssignmentMembersVisibleInAugmentation.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.exportAssignmentMembersVisibleInAugmentation.types -+++ new.exportAssignmentMembersVisibleInAugmentation.types -@@= skipped -16, +16 lines =@@ - >"foo" : typeof foo - - export function f(): T; // OK -->f : () => T -+>f : () => number - } - - === /b.ts === -@@= skipped -11, +11 lines =@@ - >"foo" : typeof foo - - export function g(): foo.T; // OK -->g : () => foo.T -+>g : () => number - >foo : any - } diff --git a/testdata/baselines/reference/submodule/compiler/exportDefaultAbstractClass.types b/testdata/baselines/reference/submodule/compiler/exportDefaultAbstractClass.types index ee77f355e87..efbcf0a2aa9 100644 --- a/testdata/baselines/reference/submodule/compiler/exportDefaultAbstractClass.types +++ b/testdata/baselines/reference/submodule/compiler/exportDefaultAbstractClass.types @@ -11,12 +11,12 @@ class B extends A {} new B().a.toExponential(); >new B().a.toExponential() : string ->new B().a.toExponential : (fractionDigits?: number | undefined) => string +>new B().a.toExponential : (fractionDigits?: number) => string >new B().a : number >new B() : B >B : typeof B >a : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string === b.ts === import A from './a'; @@ -28,10 +28,10 @@ class C extends A {} new C().a.toExponential(); >new C().a.toExponential() : string ->new C().a.toExponential : (fractionDigits?: number | undefined) => string +>new C().a.toExponential : (fractionDigits?: number) => string >new C().a : number >new C() : C >C : typeof C >a : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/exportDefaultAbstractClass.types.diff b/testdata/baselines/reference/submodule/compiler/exportDefaultAbstractClass.types.diff deleted file mode 100644 index 1367e8110b6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/exportDefaultAbstractClass.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.exportDefaultAbstractClass.types -+++ new.exportDefaultAbstractClass.types -@@= skipped -10, +10 lines =@@ - - new B().a.toExponential(); - >new B().a.toExponential() : string -->new B().a.toExponential : (fractionDigits?: number) => string -+>new B().a.toExponential : (fractionDigits?: number | undefined) => string - >new B().a : number - >new B() : B - >B : typeof B - >a : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - === b.ts === - import A from './a'; -@@= skipped -17, +17 lines =@@ - - new C().a.toExponential(); - >new C().a.toExponential() : string -->new C().a.toExponential : (fractionDigits?: number) => string -+>new C().a.toExponential : (fractionDigits?: number | undefined) => string - >new C().a : number - >new C() : C - >C : typeof C - >a : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/exportDefaultInterface.types b/testdata/baselines/reference/submodule/compiler/exportDefaultInterface.types index d56f09cff1d..b39a1516263 100644 --- a/testdata/baselines/reference/submodule/compiler/exportDefaultInterface.types +++ b/testdata/baselines/reference/submodule/compiler/exportDefaultInterface.types @@ -9,11 +9,11 @@ var a: A; a.value.toExponential(); >a.value.toExponential() : string ->a.value.toExponential : (fractionDigits?: number | undefined) => string +>a.value.toExponential : (fractionDigits?: number) => string >a.value : number >a : A >value : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string === b.ts === import A from './a'; @@ -24,9 +24,9 @@ var a: A; a.value.toExponential(); >a.value.toExponential() : string ->a.value.toExponential : (fractionDigits?: number | undefined) => string +>a.value.toExponential : (fractionDigits?: number) => string >a.value : number >a : A >value : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/exportDefaultInterface.types.diff b/testdata/baselines/reference/submodule/compiler/exportDefaultInterface.types.diff deleted file mode 100644 index 4e0a56dd01d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/exportDefaultInterface.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.exportDefaultInterface.types -+++ new.exportDefaultInterface.types -@@= skipped -8, +8 lines =@@ - - a.value.toExponential(); - >a.value.toExponential() : string -->a.value.toExponential : (fractionDigits?: number) => string -+>a.value.toExponential : (fractionDigits?: number | undefined) => string - >a.value : number - >a : A - >value : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - === b.ts === - import A from './a'; -@@= skipped -15, +15 lines =@@ - - a.value.toExponential(); - >a.value.toExponential() : string -->a.value.toExponential : (fractionDigits?: number) => string -+>a.value.toExponential : (fractionDigits?: number | undefined) => string - >a.value : number - >a : A - >value : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.errors.txt b/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.errors.txt index 0f0d32f173d..2d47a70ce75 100644 --- a/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.errors.txt @@ -1,4 +1,4 @@ -exportEqualErrorType_1.ts(3,23): error TS2339: Property 'static' does not exist on type '{ (): connectExport; foo: Date; }'. +exportEqualErrorType_1.ts(3,23): error TS2339: Property 'static' does not exist on type '{ (): server.connectExport; foo: Date; }'. ==== exportEqualErrorType_1.ts (1 errors) ==== @@ -6,7 +6,7 @@ exportEqualErrorType_1.ts(3,23): error TS2339: Property 'static' does not exist import connect = require('./exportEqualErrorType_0'); connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. ~~~~~~ -!!! error TS2339: Property 'static' does not exist on type '{ (): connectExport; foo: Date; }'. +!!! error TS2339: Property 'static' does not exist on type '{ (): server.connectExport; foo: Date; }'. ==== exportEqualErrorType_0.ts (0 errors) ==== namespace server { diff --git a/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.errors.txt.diff new file mode 100644 index 00000000000..b0730c28d95 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.exportEqualErrorType.errors.txt ++++ new.exportEqualErrorType.errors.txt +@@= skipped -0, +0 lines =@@ +-exportEqualErrorType_1.ts(3,23): error TS2339: Property 'static' does not exist on type '{ (): connectExport; foo: Date; }'. ++exportEqualErrorType_1.ts(3,23): error TS2339: Property 'static' does not exist on type '{ (): server.connectExport; foo: Date; }'. + + + ==== exportEqualErrorType_1.ts (1 errors) ==== +@@= skipped -5, +5 lines =@@ + import connect = require('./exportEqualErrorType_0'); + connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. + ~~~~~~ +-!!! error TS2339: Property 'static' does not exist on type '{ (): connectExport; foo: Date; }'. ++!!! error TS2339: Property 'static' does not exist on type '{ (): server.connectExport; foo: Date; }'. + + ==== exportEqualErrorType_0.ts (0 errors) ==== + namespace server { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.types b/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.types index 8ac69413287..54deea305a3 100644 --- a/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.types +++ b/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.types @@ -32,7 +32,7 @@ namespace server { } } declare var server: { ->server : { (): import("./exportEqualErrorType_0").connectExport; foo: Date; } +>server : { (): server.connectExport; foo: Date; } (): server.connectExport; >server : any @@ -42,5 +42,5 @@ declare var server: { }; export = server; ->server : { (): import("./exportEqualErrorType_0").connectExport; foo: Date; } +>server : { (): server.connectExport; foo: Date; } diff --git a/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.types.diff b/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.types.diff deleted file mode 100644 index 565e0426e70..00000000000 --- a/testdata/baselines/reference/submodule/compiler/exportEqualErrorType.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.exportEqualErrorType.types -+++ new.exportEqualErrorType.types -@@= skipped -31, +31 lines =@@ - } - } - declare var server: { -->server : { (): server.connectExport; foo: Date; } -+>server : { (): import("./exportEqualErrorType_0").connectExport; foo: Date; } - - (): server.connectExport; - >server : any -@@= skipped -10, +10 lines =@@ - - }; - export = server; -->server : { (): server.connectExport; foo: Date; } -+>server : { (): import("./exportEqualErrorType_0").connectExport; foo: Date; } - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.errors.txt b/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.errors.txt index b406b8d764d..2e930ad5715 100644 --- a/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.errors.txt @@ -1,4 +1,4 @@ -exportEqualMemberMissing_1.ts(3,23): error TS2339: Property 'static' does not exist on type '{ (): connectExport; foo: Date; }'. +exportEqualMemberMissing_1.ts(3,23): error TS2339: Property 'static' does not exist on type '{ (): server.connectExport; foo: Date; }'. ==== exportEqualMemberMissing_1.ts (1 errors) ==== @@ -6,7 +6,7 @@ exportEqualMemberMissing_1.ts(3,23): error TS2339: Property 'static' does not ex import connect = require('./exportEqualMemberMissing_0'); connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. ~~~~~~ -!!! error TS2339: Property 'static' does not exist on type '{ (): connectExport; foo: Date; }'. +!!! error TS2339: Property 'static' does not exist on type '{ (): server.connectExport; foo: Date; }'. ==== exportEqualMemberMissing_0.ts (0 errors) ==== namespace server { diff --git a/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.errors.txt.diff new file mode 100644 index 00000000000..9e038d28822 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.exportEqualMemberMissing.errors.txt ++++ new.exportEqualMemberMissing.errors.txt +@@= skipped -0, +0 lines =@@ +-exportEqualMemberMissing_1.ts(3,23): error TS2339: Property 'static' does not exist on type '{ (): connectExport; foo: Date; }'. ++exportEqualMemberMissing_1.ts(3,23): error TS2339: Property 'static' does not exist on type '{ (): server.connectExport; foo: Date; }'. + + + ==== exportEqualMemberMissing_1.ts (1 errors) ==== +@@= skipped -5, +5 lines =@@ + import connect = require('./exportEqualMemberMissing_0'); + connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. + ~~~~~~ +-!!! error TS2339: Property 'static' does not exist on type '{ (): connectExport; foo: Date; }'. ++!!! error TS2339: Property 'static' does not exist on type '{ (): server.connectExport; foo: Date; }'. + + ==== exportEqualMemberMissing_0.ts (0 errors) ==== + namespace server { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.types b/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.types index 7aa66c39403..6ce053fb239 100644 --- a/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.types +++ b/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.types @@ -32,7 +32,7 @@ namespace server { } } declare var server: { ->server : { (): import("./exportEqualMemberMissing_0").connectExport; foo: Date; } +>server : { (): server.connectExport; foo: Date; } (): server.connectExport; >server : any @@ -42,5 +42,5 @@ declare var server: { }; export = server; ->server : { (): import("./exportEqualMemberMissing_0").connectExport; foo: Date; } +>server : { (): server.connectExport; foo: Date; } diff --git a/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.types.diff b/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.types.diff deleted file mode 100644 index 917d4e07841..00000000000 --- a/testdata/baselines/reference/submodule/compiler/exportEqualMemberMissing.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.exportEqualMemberMissing.types -+++ new.exportEqualMemberMissing.types -@@= skipped -31, +31 lines =@@ - } - } - declare var server: { -->server : { (): server.connectExport; foo: Date; } -+>server : { (): import("./exportEqualMemberMissing_0").connectExport; foo: Date; } - - (): server.connectExport; - >server : any -@@= skipped -10, +10 lines =@@ - - }; - export = server; -->server : { (): server.connectExport; foo: Date; } -+>server : { (): import("./exportEqualMemberMissing_0").connectExport; foo: Date; } diff --git a/testdata/baselines/reference/submodule/compiler/expressionWithJSDocTypeArguments.types b/testdata/baselines/reference/submodule/compiler/expressionWithJSDocTypeArguments.types index 5cbf949f046..e04f5ec9a48 100644 --- a/testdata/baselines/reference/submodule/compiler/expressionWithJSDocTypeArguments.types +++ b/testdata/baselines/reference/submodule/compiler/expressionWithJSDocTypeArguments.types @@ -35,19 +35,19 @@ const ComeOnFoo = foo; >foo : (x: T) => T type TWhatFoo = typeof foo; ->TWhatFoo : (x: any) => any +>TWhatFoo : typeof foo >foo : (x: T) => T type THuhFoo = typeof foo; ->THuhFoo : (x: string | null) => string | null +>THuhFoo : typeof foo >foo : (x: T) => T type TNopeFoo = typeof foo; ->TNopeFoo : (x: string | null) => string | null +>TNopeFoo : typeof foo >foo : (x: T) => T type TComeOnFoo = typeof foo; ->TComeOnFoo : (x: string | null) => string | null +>TComeOnFoo : typeof foo<(string | null) | null> >foo : (x: T) => T const WhatBar = Bar; @@ -71,18 +71,18 @@ const ComeOnBar = Bar; >Bar : typeof Bar type TWhatBar = typeof Bar; ->TWhatBar : { new (x: any): Bar; prototype: Bar; } +>TWhatBar : typeof Bar >Bar : typeof Bar type THuhBar = typeof Bar; ->THuhBar : { new (x: string | null): Bar; prototype: Bar; } +>THuhBar : typeof Bar >Bar : typeof Bar type TNopeBar = typeof Bar; ->TNopeBar : { new (x: string | null): Bar; prototype: Bar; } +>TNopeBar : typeof Bar >Bar : typeof Bar type TComeOnBar = typeof Bar; ->TComeOnBar : { new (x: string | null): Bar; prototype: Bar; } +>TComeOnBar : typeof Bar<(string | null) | null> >Bar : typeof Bar diff --git a/testdata/baselines/reference/submodule/compiler/expressionWithJSDocTypeArguments.types.diff b/testdata/baselines/reference/submodule/compiler/expressionWithJSDocTypeArguments.types.diff index e4299fd55fe..40b40463b36 100644 --- a/testdata/baselines/reference/submodule/compiler/expressionWithJSDocTypeArguments.types.diff +++ b/testdata/baselines/reference/submodule/compiler/expressionWithJSDocTypeArguments.types.diff @@ -5,44 +5,16 @@ type TWhatFoo = typeof foo; ->TWhatFoo : typeof foo -+>TWhatFoo : (x: any) => any ++>TWhatFoo : typeof foo >foo : (x: T) => T type THuhFoo = typeof foo; -->THuhFoo : typeof foo -+>THuhFoo : (x: string | null) => string | null - >foo : (x: T) => T - - type TNopeFoo = typeof foo; -->TNopeFoo : typeof foo -+>TNopeFoo : (x: string | null) => string | null - >foo : (x: T) => T - - type TComeOnFoo = typeof foo; -->TComeOnFoo : typeof foo<(string | null) | null> -+>TComeOnFoo : (x: string | null) => string | null - >foo : (x: T) => T - - const WhatBar = Bar; @@= skipped -36, +36 lines =@@ >Bar : typeof Bar type TWhatBar = typeof Bar; ->TWhatBar : typeof Bar -+>TWhatBar : { new (x: any): Bar; prototype: Bar; } ++>TWhatBar : typeof Bar >Bar : typeof Bar - type THuhBar = typeof Bar; -->THuhBar : typeof Bar -+>THuhBar : { new (x: string | null): Bar; prototype: Bar; } - >Bar : typeof Bar - - type TNopeBar = typeof Bar; -->TNopeBar : typeof Bar -+>TNopeBar : { new (x: string | null): Bar; prototype: Bar; } - >Bar : typeof Bar - - type TComeOnBar = typeof Bar; -->TComeOnBar : typeof Bar<(string | null) | null> -+>TComeOnBar : { new (x: string | null): Bar; prototype: Bar; } - >Bar : typeof Bar + type THuhBar = typeof Bar; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/externFunc.types b/testdata/baselines/reference/submodule/compiler/externFunc.types index 27241915039..69e18bb7203 100644 --- a/testdata/baselines/reference/submodule/compiler/externFunc.types +++ b/testdata/baselines/reference/submodule/compiler/externFunc.types @@ -2,11 +2,11 @@ === externFunc.ts === declare function parseInt(s:string):number; ->parseInt : { (string: string, radix?: number | undefined): number; (s: string): number; } +>parseInt : { (string: string, radix?: number): number; (s: string): number; } >s : string parseInt("2"); >parseInt("2") : number ->parseInt : { (string: string, radix?: number | undefined): number; (s: string): number; } +>parseInt : { (string: string, radix?: number): number; (s: string): number; } >"2" : "2" diff --git a/testdata/baselines/reference/submodule/compiler/externFunc.types.diff b/testdata/baselines/reference/submodule/compiler/externFunc.types.diff deleted file mode 100644 index 93e16d45a28..00000000000 --- a/testdata/baselines/reference/submodule/compiler/externFunc.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.externFunc.types -+++ new.externFunc.types -@@= skipped -1, +1 lines =@@ - - === externFunc.ts === - declare function parseInt(s:string):number; -->parseInt : { (string: string, radix?: number): number; (s: string): number; } -+>parseInt : { (string: string, radix?: number | undefined): number; (s: string): number; } - >s : string - - parseInt("2"); - >parseInt("2") : number -->parseInt : { (string: string, radix?: number): number; (s: string): number; } -+>parseInt : { (string: string, radix?: number | undefined): number; (s: string): number; } - >"2" : "2" diff --git a/testdata/baselines/reference/submodule/compiler/externModuleClobber.types b/testdata/baselines/reference/submodule/compiler/externModuleClobber.types index a19e7a2bd3c..c7718b034f5 100644 --- a/testdata/baselines/reference/submodule/compiler/externModuleClobber.types +++ b/testdata/baselines/reference/submodule/compiler/externModuleClobber.types @@ -11,7 +11,7 @@ declare namespace EM { >EC : EC public getPosition() : EM.Position; ->getPosition : () => Position +>getPosition : () => EM.Position >EM : any } } diff --git a/testdata/baselines/reference/submodule/compiler/externModuleClobber.types.diff b/testdata/baselines/reference/submodule/compiler/externModuleClobber.types.diff deleted file mode 100644 index 526f861de06..00000000000 --- a/testdata/baselines/reference/submodule/compiler/externModuleClobber.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.externModuleClobber.types -+++ new.externModuleClobber.types -@@= skipped -10, +10 lines =@@ - >EC : EC - - public getPosition() : EM.Position; -->getPosition : () => EM.Position -+>getPosition : () => Position - >EM : any - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/fatarrowfunctionsOptionalArgs.types b/testdata/baselines/reference/submodule/compiler/fatarrowfunctionsOptionalArgs.types index dccf5726618..89e2667a15f 100644 --- a/testdata/baselines/reference/submodule/compiler/fatarrowfunctionsOptionalArgs.types +++ b/testdata/baselines/reference/submodule/compiler/fatarrowfunctionsOptionalArgs.types @@ -48,7 +48,7 @@ arg => 2; // optional param (arg?: number) => 7; ->(arg?: number) => 7 : (arg?: number | undefined) => number +>(arg?: number) => 7 : (arg?: number) => number >arg : number | undefined >7 : 7 @@ -94,7 +94,7 @@ arg => 2; >16 : 16 (arg1?: number, arg2?: number) => 17; ->(arg1?: number, arg2?: number) => 17 : (arg1?: number | undefined, arg2?: number | undefined) => number +>(arg1?: number, arg2?: number) => 17 : (arg1?: number, arg2?: number) => number >arg1 : number | undefined >arg2 : number | undefined >17 : 17 @@ -106,7 +106,7 @@ arg => 2; >18 : 18 (arg1, arg2?: number) => 19; ->(arg1, arg2?: number) => 19 : (arg1: any, arg2?: number | undefined) => number +>(arg1, arg2?: number) => 19 : (arg1: any, arg2?: number) => number >arg1 : any >arg2 : number | undefined >19 : 19 @@ -150,8 +150,8 @@ arg => 2; >26 : 26 ((arg?: number) => 27); ->((arg?: number) => 27) : (arg?: number | undefined) => number ->(arg?: number) => 27 : (arg?: number | undefined) => number +>((arg?: number) => 27) : (arg?: number) => number +>(arg?: number) => 27 : (arg?: number) => number >arg : number | undefined >27 : 27 @@ -208,16 +208,16 @@ false ? (arg: number) => 45 : null; >45 : 45 false ? (arg?: number) => 46 : null; ->false ? (arg?: number) => 46 : null : ((arg?: number | undefined) => number) | null +>false ? (arg?: number) => 46 : null : ((arg?: number) => number) | null >false : false ->(arg?: number) => 46 : (arg?: number | undefined) => number +>(arg?: number) => 46 : (arg?: number) => number >arg : number | undefined >46 : 46 false ? (arg?: number = 0) => 47 : null; ->false ? (arg?: number = 0) => 47 : null : ((arg?: number | undefined) => number) | null +>false ? (arg?: number = 0) => 47 : null : ((arg?: number) => number) | null >false : false ->(arg?: number = 0) => 47 : (arg?: number | undefined) => number +>(arg?: number = 0) => 47 : (arg?: number) => number >arg : number | undefined >0 : 0 >47 : 47 @@ -271,18 +271,18 @@ false ? ((arg: number) => 55) : null; >55 : 55 false ? ((arg?: number) => 56) : null; ->false ? ((arg?: number) => 56) : null : ((arg?: number | undefined) => number) | null +>false ? ((arg?: number) => 56) : null : ((arg?: number) => number) | null >false : false ->((arg?: number) => 56) : (arg?: number | undefined) => number ->(arg?: number) => 56 : (arg?: number | undefined) => number +>((arg?: number) => 56) : (arg?: number) => number +>(arg?: number) => 56 : (arg?: number) => number >arg : number | undefined >56 : 56 false ? ((arg?: number = 0) => 57) : null; ->false ? ((arg?: number = 0) => 57) : null : ((arg?: number | undefined) => number) | null +>false ? ((arg?: number = 0) => 57) : null : ((arg?: number) => number) | null >false : false ->((arg?: number = 0) => 57) : (arg?: number | undefined) => number ->(arg?: number = 0) => 57 : (arg?: number | undefined) => number +>((arg?: number = 0) => 57) : (arg?: number) => number +>(arg?: number = 0) => 57 : (arg?: number) => number >arg : number | undefined >0 : 0 >57 : 57 @@ -332,16 +332,16 @@ false ? null : (arg: number) => 65; >65 : 65 false ? null : (arg?: number) => 66; ->false ? null : (arg?: number) => 66 : ((arg?: number | undefined) => number) | null +>false ? null : (arg?: number) => 66 : ((arg?: number) => number) | null >false : false ->(arg?: number) => 66 : (arg?: number | undefined) => number +>(arg?: number) => 66 : (arg?: number) => number >arg : number | undefined >66 : 66 false ? null : (arg?: number = 0) => 67; ->false ? null : (arg?: number = 0) => 67 : ((arg?: number | undefined) => number) | null +>false ? null : (arg?: number = 0) => 67 : ((arg?: number) => number) | null >false : false ->(arg?: number = 0) => 67 : (arg?: number | undefined) => number +>(arg?: number = 0) => 67 : (arg?: number) => number >arg : number | undefined >0 : 0 >67 : 67 @@ -430,8 +430,8 @@ false ? null : (...arg: number[]) => 68; ((arg?: number) => 95) instanceof Function; >((arg?: number) => 95) instanceof Function : boolean ->((arg?: number) => 95) : (arg?: number | undefined) => number ->(arg?: number) => 95 : (arg?: number | undefined) => number +>((arg?: number) => 95) : (arg?: number) => number +>(arg?: number) => 95 : (arg?: number) => number >arg : number | undefined >95 : 95 >Function : FunctionConstructor @@ -524,14 +524,14 @@ false ? null : (...arg: number[]) => 68; ((arg?:number = 1) => 0) + '' + ((arg?:number = 2) => 106); >((arg?:number = 1) => 0) + '' + ((arg?:number = 2) => 106) : string >((arg?:number = 1) => 0) + '' : string ->((arg?:number = 1) => 0) : (arg?: number | undefined) => number ->(arg?:number = 1) => 0 : (arg?: number | undefined) => number +>((arg?:number = 1) => 0) : (arg?: number) => number +>(arg?:number = 1) => 0 : (arg?: number) => number >arg : number | undefined >1 : 1 >0 : 0 >'' : "" ->((arg?:number = 2) => 106) : (arg?: number | undefined) => number ->(arg?:number = 2) => 106 : (arg?: number | undefined) => number +>((arg?:number = 2) => 106) : (arg?: number) => number +>(arg?:number = 2) => 106 : (arg?: number) => number >arg : number | undefined >2 : 2 >106 : 106 @@ -637,7 +637,7 @@ foo( >117 : 117 (a?: number = 0) => 118, ->(a?: number = 0) => 118 : (a?: number | undefined) => number +>(a?: number = 0) => 118 : (a?: number) => number >a : number | undefined >0 : 0 >118 : 118 diff --git a/testdata/baselines/reference/submodule/compiler/fatarrowfunctionsOptionalArgs.types.diff b/testdata/baselines/reference/submodule/compiler/fatarrowfunctionsOptionalArgs.types.diff deleted file mode 100644 index 9b64aa115f9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/fatarrowfunctionsOptionalArgs.types.diff +++ /dev/null @@ -1,146 +0,0 @@ ---- old.fatarrowfunctionsOptionalArgs.types -+++ new.fatarrowfunctionsOptionalArgs.types -@@= skipped -47, +47 lines =@@ - - // optional param - (arg?: number) => 7; -->(arg?: number) => 7 : (arg?: number) => number -+>(arg?: number) => 7 : (arg?: number | undefined) => number - >arg : number | undefined - >7 : 7 - -@@= skipped -46, +46 lines =@@ - >16 : 16 - - (arg1?: number, arg2?: number) => 17; -->(arg1?: number, arg2?: number) => 17 : (arg1?: number, arg2?: number) => number -+>(arg1?: number, arg2?: number) => 17 : (arg1?: number | undefined, arg2?: number | undefined) => number - >arg1 : number | undefined - >arg2 : number | undefined - >17 : 17 -@@= skipped -12, +12 lines =@@ - >18 : 18 - - (arg1, arg2?: number) => 19; -->(arg1, arg2?: number) => 19 : (arg1: any, arg2?: number) => number -+>(arg1, arg2?: number) => 19 : (arg1: any, arg2?: number | undefined) => number - >arg1 : any - >arg2 : number | undefined - >19 : 19 -@@= skipped -44, +44 lines =@@ - >26 : 26 - - ((arg?: number) => 27); -->((arg?: number) => 27) : (arg?: number) => number -->(arg?: number) => 27 : (arg?: number) => number -+>((arg?: number) => 27) : (arg?: number | undefined) => number -+>(arg?: number) => 27 : (arg?: number | undefined) => number - >arg : number | undefined - >27 : 27 - -@@= skipped -58, +58 lines =@@ - >45 : 45 - - false ? (arg?: number) => 46 : null; -->false ? (arg?: number) => 46 : null : ((arg?: number) => number) | null -+>false ? (arg?: number) => 46 : null : ((arg?: number | undefined) => number) | null - >false : false -->(arg?: number) => 46 : (arg?: number) => number -+>(arg?: number) => 46 : (arg?: number | undefined) => number - >arg : number | undefined - >46 : 46 - - false ? (arg?: number = 0) => 47 : null; -->false ? (arg?: number = 0) => 47 : null : ((arg?: number) => number) | null -+>false ? (arg?: number = 0) => 47 : null : ((arg?: number | undefined) => number) | null - >false : false -->(arg?: number = 0) => 47 : (arg?: number) => number -+>(arg?: number = 0) => 47 : (arg?: number | undefined) => number - >arg : number | undefined - >0 : 0 - >47 : 47 -@@= skipped -63, +63 lines =@@ - >55 : 55 - - false ? ((arg?: number) => 56) : null; -->false ? ((arg?: number) => 56) : null : ((arg?: number) => number) | null -+>false ? ((arg?: number) => 56) : null : ((arg?: number | undefined) => number) | null - >false : false -->((arg?: number) => 56) : (arg?: number) => number -->(arg?: number) => 56 : (arg?: number) => number -+>((arg?: number) => 56) : (arg?: number | undefined) => number -+>(arg?: number) => 56 : (arg?: number | undefined) => number - >arg : number | undefined - >56 : 56 - - false ? ((arg?: number = 0) => 57) : null; -->false ? ((arg?: number = 0) => 57) : null : ((arg?: number) => number) | null -+>false ? ((arg?: number = 0) => 57) : null : ((arg?: number | undefined) => number) | null - >false : false -->((arg?: number = 0) => 57) : (arg?: number) => number -->(arg?: number = 0) => 57 : (arg?: number) => number -+>((arg?: number = 0) => 57) : (arg?: number | undefined) => number -+>(arg?: number = 0) => 57 : (arg?: number | undefined) => number - >arg : number | undefined - >0 : 0 - >57 : 57 -@@= skipped -61, +61 lines =@@ - >65 : 65 - - false ? null : (arg?: number) => 66; -->false ? null : (arg?: number) => 66 : ((arg?: number) => number) | null -+>false ? null : (arg?: number) => 66 : ((arg?: number | undefined) => number) | null - >false : false -->(arg?: number) => 66 : (arg?: number) => number -+>(arg?: number) => 66 : (arg?: number | undefined) => number - >arg : number | undefined - >66 : 66 - - false ? null : (arg?: number = 0) => 67; -->false ? null : (arg?: number = 0) => 67 : ((arg?: number) => number) | null -+>false ? null : (arg?: number = 0) => 67 : ((arg?: number | undefined) => number) | null - >false : false -->(arg?: number = 0) => 67 : (arg?: number) => number -+>(arg?: number = 0) => 67 : (arg?: number | undefined) => number - >arg : number | undefined - >0 : 0 - >67 : 67 -@@= skipped -98, +98 lines =@@ - - ((arg?: number) => 95) instanceof Function; - >((arg?: number) => 95) instanceof Function : boolean -->((arg?: number) => 95) : (arg?: number) => number -->(arg?: number) => 95 : (arg?: number) => number -+>((arg?: number) => 95) : (arg?: number | undefined) => number -+>(arg?: number) => 95 : (arg?: number | undefined) => number - >arg : number | undefined - >95 : 95 - >Function : FunctionConstructor -@@= skipped -94, +94 lines =@@ - ((arg?:number = 1) => 0) + '' + ((arg?:number = 2) => 106); - >((arg?:number = 1) => 0) + '' + ((arg?:number = 2) => 106) : string - >((arg?:number = 1) => 0) + '' : string -->((arg?:number = 1) => 0) : (arg?: number) => number -->(arg?:number = 1) => 0 : (arg?: number) => number -+>((arg?:number = 1) => 0) : (arg?: number | undefined) => number -+>(arg?:number = 1) => 0 : (arg?: number | undefined) => number - >arg : number | undefined - >1 : 1 - >0 : 0 - >'' : "" -->((arg?:number = 2) => 106) : (arg?: number) => number -->(arg?:number = 2) => 106 : (arg?: number) => number -+>((arg?:number = 2) => 106) : (arg?: number | undefined) => number -+>(arg?:number = 2) => 106 : (arg?: number | undefined) => number - >arg : number | undefined - >2 : 2 - >106 : 106 -@@= skipped -113, +113 lines =@@ - >117 : 117 - - (a?: number = 0) => 118, -->(a?: number = 0) => 118 : (a?: number) => number -+>(a?: number = 0) => 118 : (a?: number | undefined) => number - >a : number | undefined - >0 : 0 - >118 : 118 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/findLast(target=esnext).types b/testdata/baselines/reference/submodule/compiler/findLast(target=esnext).types index f6232acb413..4c1df299990 100644 --- a/testdata/baselines/reference/submodule/compiler/findLast(target=esnext).types +++ b/testdata/baselines/reference/submodule/compiler/findLast(target=esnext).types @@ -29,10 +29,10 @@ const itemString: string | undefined = ["string"].findLast((item) => item === "s new Int8Array().findLast((item) => item === 0); >new Int8Array().findLast((item) => item === 0) : 0 ->new Int8Array().findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number; } +>new Int8Array().findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number | undefined; } >new Int8Array() : Int8Array >Int8Array : Int8ArrayConstructor ->findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number; } +>findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number | undefined; } >(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean @@ -41,10 +41,10 @@ new Int8Array().findLast((item) => item === 0); new Uint8Array().findLast((item) => item === 0); >new Uint8Array().findLast((item) => item === 0) : 0 ->new Uint8Array().findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number; } +>new Uint8Array().findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number | undefined; } >new Uint8Array() : Uint8Array >Uint8Array : Uint8ArrayConstructor ->findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number; } +>findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number | undefined; } >(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean @@ -53,10 +53,10 @@ new Uint8Array().findLast((item) => item === 0); new Uint8ClampedArray().findLast((item) => item === 0); >new Uint8ClampedArray().findLast((item) => item === 0) : 0 ->new Uint8ClampedArray().findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number; } +>new Uint8ClampedArray().findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number | undefined; } >new Uint8ClampedArray() : Uint8ClampedArray >Uint8ClampedArray : Uint8ClampedArrayConstructor ->findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number; } +>findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number | undefined; } >(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean @@ -65,10 +65,10 @@ new Uint8ClampedArray().findLast((item) => item === 0); new Int16Array().findLast((item) => item === 0); >new Int16Array().findLast((item) => item === 0) : 0 ->new Int16Array().findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number; } +>new Int16Array().findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number | undefined; } >new Int16Array() : Int16Array >Int16Array : Int16ArrayConstructor ->findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number; } +>findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number | undefined; } >(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean @@ -77,10 +77,10 @@ new Int16Array().findLast((item) => item === 0); new Uint16Array().findLast((item) => item === 0); >new Uint16Array().findLast((item) => item === 0) : 0 ->new Uint16Array().findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number; } +>new Uint16Array().findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number | undefined; } >new Uint16Array() : Uint16Array >Uint16Array : Uint16ArrayConstructor ->findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number; } +>findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number | undefined; } >(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean @@ -89,10 +89,10 @@ new Uint16Array().findLast((item) => item === 0); new Int32Array().findLast((item) => item === 0); >new Int32Array().findLast((item) => item === 0) : 0 ->new Int32Array().findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number; } +>new Int32Array().findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number | undefined; } >new Int32Array() : Int32Array >Int32Array : Int32ArrayConstructor ->findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number; } +>findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number | undefined; } >(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean @@ -101,10 +101,10 @@ new Int32Array().findLast((item) => item === 0); new Uint32Array().findLast((item) => item === 0); >new Uint32Array().findLast((item) => item === 0) : 0 ->new Uint32Array().findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number; } +>new Uint32Array().findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number | undefined; } >new Uint32Array() : Uint32Array >Uint32Array : Uint32ArrayConstructor ->findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number; } +>findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number | undefined; } >(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean @@ -113,10 +113,10 @@ new Uint32Array().findLast((item) => item === 0); new Float32Array().findLast((item) => item === 0); >new Float32Array().findLast((item) => item === 0) : 0 ->new Float32Array().findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number; } +>new Float32Array().findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number | undefined; } >new Float32Array() : Float32Array >Float32Array : Float32ArrayConstructor ->findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number; } +>findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number | undefined; } >(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean @@ -125,10 +125,10 @@ new Float32Array().findLast((item) => item === 0); new Float64Array().findLast((item) => item === 0); >new Float64Array().findLast((item) => item === 0) : 0 ->new Float64Array().findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number; } +>new Float64Array().findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number | undefined; } >new Float64Array() : Float64Array >Float64Array : Float64ArrayConstructor ->findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number; } +>findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number | undefined; } >(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean @@ -137,10 +137,10 @@ new Float64Array().findLast((item) => item === 0); new BigInt64Array().findLast((item) => item === BigInt(0)); >new BigInt64Array().findLast((item) => item === BigInt(0)) : bigint ->new BigInt64Array().findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint; } +>new BigInt64Array().findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint | undefined; } >new BigInt64Array() : BigInt64Array >BigInt64Array : BigInt64ArrayConstructor ->findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint; } +>findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint | undefined; } >(item) => item === BigInt(0) : (item: bigint) => boolean >item : bigint >item === BigInt(0) : boolean @@ -151,10 +151,10 @@ new BigInt64Array().findLast((item) => item === BigInt(0)); new BigUint64Array().findLast((item) => item === BigInt(0)); >new BigUint64Array().findLast((item) => item === BigInt(0)) : bigint ->new BigUint64Array().findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint; } +>new BigUint64Array().findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint | undefined; } >new BigUint64Array() : BigUint64Array >BigUint64Array : BigUint64ArrayConstructor ->findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint; } +>findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint | undefined; } >(item) => item === BigInt(0) : (item: bigint) => boolean >item : bigint >item === BigInt(0) : boolean diff --git a/testdata/baselines/reference/submodule/compiler/findLast(target=esnext).types.diff b/testdata/baselines/reference/submodule/compiler/findLast(target=esnext).types.diff deleted file mode 100644 index caab7e3ad53..00000000000 --- a/testdata/baselines/reference/submodule/compiler/findLast(target=esnext).types.diff +++ /dev/null @@ -1,145 +0,0 @@ ---- old.findLast(target=esnext).types -+++ new.findLast(target=esnext).types -@@= skipped -28, +28 lines =@@ - - new Int8Array().findLast((item) => item === 0); - >new Int8Array().findLast((item) => item === 0) : 0 -->new Int8Array().findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number | undefined; } -+>new Int8Array().findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number; } - >new Int8Array() : Int8Array - >Int8Array : Int8ArrayConstructor -->findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number | undefined; } -+>findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number; } - >(item) => item === 0 : (item: number) => item is 0 - >item : number - >item === 0 : boolean -@@= skipped -12, +12 lines =@@ - - new Uint8Array().findLast((item) => item === 0); - >new Uint8Array().findLast((item) => item === 0) : 0 -->new Uint8Array().findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number | undefined; } -+>new Uint8Array().findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number; } - >new Uint8Array() : Uint8Array - >Uint8Array : Uint8ArrayConstructor -->findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number | undefined; } -+>findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number; } - >(item) => item === 0 : (item: number) => item is 0 - >item : number - >item === 0 : boolean -@@= skipped -12, +12 lines =@@ - - new Uint8ClampedArray().findLast((item) => item === 0); - >new Uint8ClampedArray().findLast((item) => item === 0) : 0 -->new Uint8ClampedArray().findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number | undefined; } -+>new Uint8ClampedArray().findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number; } - >new Uint8ClampedArray() : Uint8ClampedArray - >Uint8ClampedArray : Uint8ClampedArrayConstructor -->findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number | undefined; } -+>findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number; } - >(item) => item === 0 : (item: number) => item is 0 - >item : number - >item === 0 : boolean -@@= skipped -12, +12 lines =@@ - - new Int16Array().findLast((item) => item === 0); - >new Int16Array().findLast((item) => item === 0) : 0 -->new Int16Array().findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number | undefined; } -+>new Int16Array().findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number; } - >new Int16Array() : Int16Array - >Int16Array : Int16ArrayConstructor -->findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number | undefined; } -+>findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number; } - >(item) => item === 0 : (item: number) => item is 0 - >item : number - >item === 0 : boolean -@@= skipped -12, +12 lines =@@ - - new Uint16Array().findLast((item) => item === 0); - >new Uint16Array().findLast((item) => item === 0) : 0 -->new Uint16Array().findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number | undefined; } -+>new Uint16Array().findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number; } - >new Uint16Array() : Uint16Array - >Uint16Array : Uint16ArrayConstructor -->findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number | undefined; } -+>findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number; } - >(item) => item === 0 : (item: number) => item is 0 - >item : number - >item === 0 : boolean -@@= skipped -12, +12 lines =@@ - - new Int32Array().findLast((item) => item === 0); - >new Int32Array().findLast((item) => item === 0) : 0 -->new Int32Array().findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number | undefined; } -+>new Int32Array().findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number; } - >new Int32Array() : Int32Array - >Int32Array : Int32ArrayConstructor -->findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number | undefined; } -+>findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number; } - >(item) => item === 0 : (item: number) => item is 0 - >item : number - >item === 0 : boolean -@@= skipped -12, +12 lines =@@ - - new Uint32Array().findLast((item) => item === 0); - >new Uint32Array().findLast((item) => item === 0) : 0 -->new Uint32Array().findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number | undefined; } -+>new Uint32Array().findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number; } - >new Uint32Array() : Uint32Array - >Uint32Array : Uint32ArrayConstructor -->findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number | undefined; } -+>findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number; } - >(item) => item === 0 : (item: number) => item is 0 - >item : number - >item === 0 : boolean -@@= skipped -12, +12 lines =@@ - - new Float32Array().findLast((item) => item === 0); - >new Float32Array().findLast((item) => item === 0) : 0 -->new Float32Array().findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number | undefined; } -+>new Float32Array().findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number; } - >new Float32Array() : Float32Array - >Float32Array : Float32ArrayConstructor -->findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number | undefined; } -+>findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number; } - >(item) => item === 0 : (item: number) => item is 0 - >item : number - >item === 0 : boolean -@@= skipped -12, +12 lines =@@ - - new Float64Array().findLast((item) => item === 0); - >new Float64Array().findLast((item) => item === 0) : 0 -->new Float64Array().findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number | undefined; } -+>new Float64Array().findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number; } - >new Float64Array() : Float64Array - >Float64Array : Float64ArrayConstructor -->findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number | undefined; } -+>findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number; } - >(item) => item === 0 : (item: number) => item is 0 - >item : number - >item === 0 : boolean -@@= skipped -12, +12 lines =@@ - - new BigInt64Array().findLast((item) => item === BigInt(0)); - >new BigInt64Array().findLast((item) => item === BigInt(0)) : bigint -->new BigInt64Array().findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint | undefined; } -+>new BigInt64Array().findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint; } - >new BigInt64Array() : BigInt64Array - >BigInt64Array : BigInt64ArrayConstructor -->findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint | undefined; } -+>findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint; } - >(item) => item === BigInt(0) : (item: bigint) => boolean - >item : bigint - >item === BigInt(0) : boolean -@@= skipped -14, +14 lines =@@ - - new BigUint64Array().findLast((item) => item === BigInt(0)); - >new BigUint64Array().findLast((item) => item === BigInt(0)) : bigint -->new BigUint64Array().findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint | undefined; } -+>new BigUint64Array().findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint; } - >new BigUint64Array() : BigUint64Array - >BigUint64Array : BigUint64ArrayConstructor -->findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint | undefined; } -+>findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint; } - >(item) => item === BigInt(0) : (item: bigint) => boolean - >item : bigint - >item === BigInt(0) : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/forAwaitForUnion.types b/testdata/baselines/reference/submodule/compiler/forAwaitForUnion.types index 5ff7f76526c..9e1485cbf6c 100644 --- a/testdata/baselines/reference/submodule/compiler/forAwaitForUnion.types +++ b/testdata/baselines/reference/submodule/compiler/forAwaitForUnion.types @@ -2,7 +2,7 @@ === forAwaitForUnion.ts === async function f(source: Iterable | AsyncIterable) { ->f : (source: AsyncIterable | Iterable) => Promise +>f : (source: Iterable | AsyncIterable) => Promise >source : AsyncIterable | Iterable for await (const x of source) { diff --git a/testdata/baselines/reference/submodule/compiler/forAwaitForUnion.types.diff b/testdata/baselines/reference/submodule/compiler/forAwaitForUnion.types.diff deleted file mode 100644 index 4e80a00f7cf..00000000000 --- a/testdata/baselines/reference/submodule/compiler/forAwaitForUnion.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.forAwaitForUnion.types -+++ new.forAwaitForUnion.types -@@= skipped -1, +1 lines =@@ - - === forAwaitForUnion.ts === - async function f(source: Iterable | AsyncIterable) { -->f : (source: Iterable | AsyncIterable) => Promise -+>f : (source: AsyncIterable | Iterable) => Promise - >source : AsyncIterable | Iterable - - for await (const x of source) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/forOfTransformsExpression.types b/testdata/baselines/reference/submodule/compiler/forOfTransformsExpression.types index f5e6b34f916..e4d3a21f156 100644 --- a/testdata/baselines/reference/submodule/compiler/forOfTransformsExpression.types +++ b/testdata/baselines/reference/submodule/compiler/forOfTransformsExpression.types @@ -25,11 +25,11 @@ for (var item of items.sort((a, b) => a.name.localeCompare(b.name))) { >a : { name: string; } >b : { name: string; } >a.name.localeCompare(b.name) : number ->a.name.localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; } +>a.name.localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; } >a.name : string >a : { name: string; } >name : string ->localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; } +>localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; } >b.name : string >b : { name: string; } >name : string diff --git a/testdata/baselines/reference/submodule/compiler/forOfTransformsExpression.types.diff b/testdata/baselines/reference/submodule/compiler/forOfTransformsExpression.types.diff deleted file mode 100644 index e027015e1c0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/forOfTransformsExpression.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.forOfTransformsExpression.types -+++ new.forOfTransformsExpression.types -@@= skipped -24, +24 lines =@@ - >a : { name: string; } - >b : { name: string; } - >a.name.localeCompare(b.name) : number -->a.name.localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; } -+>a.name.localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; } - >a.name : string - >a : { name: string; } - >name : string -->localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; } -+>localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; } - >b.name : string - >b : { name: string; } - >name : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/formatToPartsFractionalSecond.types b/testdata/baselines/reference/submodule/compiler/formatToPartsFractionalSecond.types index 83432e8ebe7..06f9cb37816 100644 --- a/testdata/baselines/reference/submodule/compiler/formatToPartsFractionalSecond.types +++ b/testdata/baselines/reference/submodule/compiler/formatToPartsFractionalSecond.types @@ -5,12 +5,12 @@ new Intl.DateTimeFormat().formatToParts().find((val) => val.type === 'fractional >new Intl.DateTimeFormat().formatToParts().find((val) => val.type === 'fractionalSecond') : Intl.DateTimeFormatPart | undefined >new Intl.DateTimeFormat().formatToParts().find : { (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => unknown, thisArg?: any): Intl.DateTimeFormatPart | undefined; } >new Intl.DateTimeFormat().formatToParts() : Intl.DateTimeFormatPart[] ->new Intl.DateTimeFormat().formatToParts : { (date?: number | Date | undefined): Intl.DateTimeFormatPart[]; (date?: number | Date | Intl.FormattableTemporalObject | undefined): Intl.DateTimeFormatPart[]; } +>new Intl.DateTimeFormat().formatToParts : { (date?: Date | number): Intl.DateTimeFormatPart[]; (date?: Intl.FormattableTemporalObject | Date | number): Intl.DateTimeFormatPart[]; } >new Intl.DateTimeFormat() : Intl.DateTimeFormat >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor >Intl : typeof Intl >DateTimeFormat : Intl.DateTimeFormatConstructor ->formatToParts : { (date?: number | Date | undefined): Intl.DateTimeFormatPart[]; (date?: number | Date | Intl.FormattableTemporalObject | undefined): Intl.DateTimeFormatPart[]; } +>formatToParts : { (date?: Date | number): Intl.DateTimeFormatPart[]; (date?: Intl.FormattableTemporalObject | Date | number): Intl.DateTimeFormatPart[]; } >find : { (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => unknown, thisArg?: any): Intl.DateTimeFormatPart | undefined; } >(val) => val.type === 'fractionalSecond' : (val: Intl.DateTimeFormatPart) => boolean >val : Intl.DateTimeFormatPart diff --git a/testdata/baselines/reference/submodule/compiler/formatToPartsFractionalSecond.types.diff b/testdata/baselines/reference/submodule/compiler/formatToPartsFractionalSecond.types.diff deleted file mode 100644 index 34f39e70a4d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/formatToPartsFractionalSecond.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.formatToPartsFractionalSecond.types -+++ new.formatToPartsFractionalSecond.types -@@= skipped -4, +4 lines =@@ - >new Intl.DateTimeFormat().formatToParts().find((val) => val.type === 'fractionalSecond') : Intl.DateTimeFormatPart | undefined - >new Intl.DateTimeFormat().formatToParts().find : { (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => unknown, thisArg?: any): Intl.DateTimeFormatPart | undefined; } - >new Intl.DateTimeFormat().formatToParts() : Intl.DateTimeFormatPart[] -->new Intl.DateTimeFormat().formatToParts : { (date?: Date | number): Intl.DateTimeFormatPart[]; (date?: Intl.FormattableTemporalObject | Date | number): Intl.DateTimeFormatPart[]; } -+>new Intl.DateTimeFormat().formatToParts : { (date?: number | Date | undefined): Intl.DateTimeFormatPart[]; (date?: number | Date | Intl.FormattableTemporalObject | undefined): Intl.DateTimeFormatPart[]; } - >new Intl.DateTimeFormat() : Intl.DateTimeFormat - >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor - >Intl : typeof Intl - >DateTimeFormat : Intl.DateTimeFormatConstructor -->formatToParts : { (date?: Date | number): Intl.DateTimeFormatPart[]; (date?: Intl.FormattableTemporalObject | Date | number): Intl.DateTimeFormatPart[]; } -+>formatToParts : { (date?: number | Date | undefined): Intl.DateTimeFormatPart[]; (date?: number | Date | Intl.FormattableTemporalObject | undefined): Intl.DateTimeFormatPart[]; } - >find : { (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => unknown, thisArg?: any): Intl.DateTimeFormatPart | undefined; } - >(val) => val.type === 'fractionalSecond' : (val: Intl.DateTimeFormatPart) => boolean - >val : Intl.DateTimeFormatPart \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=false).types b/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=false).types index 14ca1404f97..4a079cbd164 100644 --- a/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=false).types +++ b/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=false).types @@ -61,11 +61,11 @@ interface Foo6 { [Cls1.a]: number; [Cls2.b]: number; [obj1.c]: number; [obj2.d]: >b : "b" >[obj1.c] : number >obj1.c : "c" ->obj1 : { c: "c"; } +>obj1 : { c: 'c'; } >c : "c" >[obj2.d] : number >obj2.d : "d" ->obj2 : { readonly d: "d"; } +>obj2 : { readonly d: 'd'; } >d : "d" declare class Cls1 { static a: "a"; } @@ -79,13 +79,13 @@ class Cls2 { static b = "b" as const; } >"b" : "b" declare const obj1: { c: 'c' } ->obj1 : { c: "c"; } +>obj1 : { c: 'c'; } >c : "c" const obj2 = { d: 'd' } as const ->obj2 : { readonly d: "d"; } ->{ d: 'd' } as const : { readonly d: "d"; } ->{ d: 'd' } : { readonly d: "d"; } +>obj2 : { readonly d: 'd'; } +>{ d: 'd' } as const : { readonly d: 'd'; } +>{ d: 'd' } : { readonly d: 'd'; } >d : "d" >'d' : "d" diff --git a/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=false).types.diff b/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=false).types.diff new file mode 100644 index 00000000000..f8c1c097fa6 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=false).types.diff @@ -0,0 +1,33 @@ +--- old.forwardRefInTypeDeclaration(strict=false).types ++++ new.forwardRefInTypeDeclaration(strict=false).types +@@= skipped -60, +60 lines =@@ + >b : "b" + >[obj1.c] : number + >obj1.c : "c" +->obj1 : { c: "c"; } ++>obj1 : { c: 'c'; } + >c : "c" + >[obj2.d] : number + >obj2.d : "d" +->obj2 : { readonly d: "d"; } ++>obj2 : { readonly d: 'd'; } + >d : "d" + + declare class Cls1 { static a: "a"; } +@@= skipped -18, +18 lines =@@ + >"b" : "b" + + declare const obj1: { c: 'c' } +->obj1 : { c: "c"; } ++>obj1 : { c: 'c'; } + >c : "c" + + const obj2 = { d: 'd' } as const +->obj2 : { readonly d: "d"; } +->{ d: 'd' } as const : { readonly d: "d"; } +->{ d: 'd' } : { readonly d: "d"; } ++>obj2 : { readonly d: 'd'; } ++>{ d: 'd' } as const : { readonly d: 'd'; } ++>{ d: 'd' } : { readonly d: 'd'; } + >d : "d" + >'d' : "d" diff --git a/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=true).types b/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=true).types index 14ca1404f97..4a079cbd164 100644 --- a/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=true).types +++ b/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=true).types @@ -61,11 +61,11 @@ interface Foo6 { [Cls1.a]: number; [Cls2.b]: number; [obj1.c]: number; [obj2.d]: >b : "b" >[obj1.c] : number >obj1.c : "c" ->obj1 : { c: "c"; } +>obj1 : { c: 'c'; } >c : "c" >[obj2.d] : number >obj2.d : "d" ->obj2 : { readonly d: "d"; } +>obj2 : { readonly d: 'd'; } >d : "d" declare class Cls1 { static a: "a"; } @@ -79,13 +79,13 @@ class Cls2 { static b = "b" as const; } >"b" : "b" declare const obj1: { c: 'c' } ->obj1 : { c: "c"; } +>obj1 : { c: 'c'; } >c : "c" const obj2 = { d: 'd' } as const ->obj2 : { readonly d: "d"; } ->{ d: 'd' } as const : { readonly d: "d"; } ->{ d: 'd' } : { readonly d: "d"; } +>obj2 : { readonly d: 'd'; } +>{ d: 'd' } as const : { readonly d: 'd'; } +>{ d: 'd' } : { readonly d: 'd'; } >d : "d" >'d' : "d" diff --git a/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=true).types.diff b/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=true).types.diff new file mode 100644 index 00000000000..05d2874742f --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/forwardRefInTypeDeclaration(strict=true).types.diff @@ -0,0 +1,33 @@ +--- old.forwardRefInTypeDeclaration(strict=true).types ++++ new.forwardRefInTypeDeclaration(strict=true).types +@@= skipped -60, +60 lines =@@ + >b : "b" + >[obj1.c] : number + >obj1.c : "c" +->obj1 : { c: "c"; } ++>obj1 : { c: 'c'; } + >c : "c" + >[obj2.d] : number + >obj2.d : "d" +->obj2 : { readonly d: "d"; } ++>obj2 : { readonly d: 'd'; } + >d : "d" + + declare class Cls1 { static a: "a"; } +@@= skipped -18, +18 lines =@@ + >"b" : "b" + + declare const obj1: { c: 'c' } +->obj1 : { c: "c"; } ++>obj1 : { c: 'c'; } + >c : "c" + + const obj2 = { d: 'd' } as const +->obj2 : { readonly d: "d"; } +->{ d: 'd' } as const : { readonly d: "d"; } +->{ d: 'd' } : { readonly d: "d"; } ++>obj2 : { readonly d: 'd'; } ++>{ d: 'd' } as const : { readonly d: 'd'; } ++>{ d: 'd' } : { readonly d: 'd'; } + >d : "d" + >'d' : "d" diff --git a/testdata/baselines/reference/submodule/compiler/functionCall11.types b/testdata/baselines/reference/submodule/compiler/functionCall11.types index 8a507f12d07..04ac0ff737b 100644 --- a/testdata/baselines/reference/submodule/compiler/functionCall11.types +++ b/testdata/baselines/reference/submodule/compiler/functionCall11.types @@ -2,34 +2,34 @@ === functionCall11.ts === function foo(a:string, b?:number){} ->foo : (a: string, b?: number | undefined) => void +>foo : (a: string, b?: number) => void >a : string >b : number | undefined foo('foo', 1); >foo('foo', 1) : void ->foo : (a: string, b?: number | undefined) => void +>foo : (a: string, b?: number) => void >'foo' : "foo" >1 : 1 foo('foo'); >foo('foo') : void ->foo : (a: string, b?: number | undefined) => void +>foo : (a: string, b?: number) => void >'foo' : "foo" foo(); >foo() : void ->foo : (a: string, b?: number | undefined) => void +>foo : (a: string, b?: number) => void foo(1, 'bar'); >foo(1, 'bar') : void ->foo : (a: string, b?: number | undefined) => void +>foo : (a: string, b?: number) => void >1 : 1 >'bar' : "bar" foo('foo', 1, 'bar'); >foo('foo', 1, 'bar') : void ->foo : (a: string, b?: number | undefined) => void +>foo : (a: string, b?: number) => void >'foo' : "foo" >1 : 1 >'bar' : "bar" diff --git a/testdata/baselines/reference/submodule/compiler/functionCall11.types.diff b/testdata/baselines/reference/submodule/compiler/functionCall11.types.diff deleted file mode 100644 index 1ddfdb9e92d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionCall11.types.diff +++ /dev/null @@ -1,43 +0,0 @@ ---- old.functionCall11.types -+++ new.functionCall11.types -@@= skipped -1, +1 lines =@@ - - === functionCall11.ts === - function foo(a:string, b?:number){} -->foo : (a: string, b?: number) => void -+>foo : (a: string, b?: number | undefined) => void - >a : string - >b : number | undefined - - foo('foo', 1); - >foo('foo', 1) : void -->foo : (a: string, b?: number) => void -+>foo : (a: string, b?: number | undefined) => void - >'foo' : "foo" - >1 : 1 - - foo('foo'); - >foo('foo') : void -->foo : (a: string, b?: number) => void -+>foo : (a: string, b?: number | undefined) => void - >'foo' : "foo" - - foo(); - >foo() : void -->foo : (a: string, b?: number) => void -+>foo : (a: string, b?: number | undefined) => void - - foo(1, 'bar'); - >foo(1, 'bar') : void -->foo : (a: string, b?: number) => void -+>foo : (a: string, b?: number | undefined) => void - >1 : 1 - >'bar' : "bar" - - foo('foo', 1, 'bar'); - >foo('foo', 1, 'bar') : void -->foo : (a: string, b?: number) => void -+>foo : (a: string, b?: number | undefined) => void - >'foo' : "foo" - >1 : 1 - >'bar' : "bar" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionCall12.types b/testdata/baselines/reference/submodule/compiler/functionCall12.types index 3d74b369218..bde3aa9c28a 100644 --- a/testdata/baselines/reference/submodule/compiler/functionCall12.types +++ b/testdata/baselines/reference/submodule/compiler/functionCall12.types @@ -2,42 +2,42 @@ === functionCall12.ts === function foo(a:string, b?:number, c?:string){} ->foo : (a: string, b?: number | undefined, c?: string | undefined) => void +>foo : (a: string, b?: number, c?: string) => void >a : string >b : number | undefined >c : string | undefined foo('foo', 1); >foo('foo', 1) : void ->foo : (a: string, b?: number | undefined, c?: string | undefined) => void +>foo : (a: string, b?: number, c?: string) => void >'foo' : "foo" >1 : 1 foo('foo'); >foo('foo') : void ->foo : (a: string, b?: number | undefined, c?: string | undefined) => void +>foo : (a: string, b?: number, c?: string) => void >'foo' : "foo" foo(); >foo() : void ->foo : (a: string, b?: number | undefined, c?: string | undefined) => void +>foo : (a: string, b?: number, c?: string) => void foo(1, 'bar'); >foo(1, 'bar') : void ->foo : (a: string, b?: number | undefined, c?: string | undefined) => void +>foo : (a: string, b?: number, c?: string) => void >1 : 1 >'bar' : "bar" foo('foo', 1, 'bar'); >foo('foo', 1, 'bar') : void ->foo : (a: string, b?: number | undefined, c?: string | undefined) => void +>foo : (a: string, b?: number, c?: string) => void >'foo' : "foo" >1 : 1 >'bar' : "bar" foo('foo', 1, 3); >foo('foo', 1, 3) : void ->foo : (a: string, b?: number | undefined, c?: string | undefined) => void +>foo : (a: string, b?: number, c?: string) => void >'foo' : "foo" >1 : 1 >3 : 3 diff --git a/testdata/baselines/reference/submodule/compiler/functionCall12.types.diff b/testdata/baselines/reference/submodule/compiler/functionCall12.types.diff deleted file mode 100644 index 9d09537946e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionCall12.types.diff +++ /dev/null @@ -1,52 +0,0 @@ ---- old.functionCall12.types -+++ new.functionCall12.types -@@= skipped -1, +1 lines =@@ - - === functionCall12.ts === - function foo(a:string, b?:number, c?:string){} -->foo : (a: string, b?: number, c?: string) => void -+>foo : (a: string, b?: number | undefined, c?: string | undefined) => void - >a : string - >b : number | undefined - >c : string | undefined - - foo('foo', 1); - >foo('foo', 1) : void -->foo : (a: string, b?: number, c?: string) => void -+>foo : (a: string, b?: number | undefined, c?: string | undefined) => void - >'foo' : "foo" - >1 : 1 - - foo('foo'); - >foo('foo') : void -->foo : (a: string, b?: number, c?: string) => void -+>foo : (a: string, b?: number | undefined, c?: string | undefined) => void - >'foo' : "foo" - - foo(); - >foo() : void -->foo : (a: string, b?: number, c?: string) => void -+>foo : (a: string, b?: number | undefined, c?: string | undefined) => void - - foo(1, 'bar'); - >foo(1, 'bar') : void -->foo : (a: string, b?: number, c?: string) => void -+>foo : (a: string, b?: number | undefined, c?: string | undefined) => void - >1 : 1 - >'bar' : "bar" - - foo('foo', 1, 'bar'); - >foo('foo', 1, 'bar') : void -->foo : (a: string, b?: number, c?: string) => void -+>foo : (a: string, b?: number | undefined, c?: string | undefined) => void - >'foo' : "foo" - >1 : 1 - >'bar' : "bar" - - foo('foo', 1, 3); - >foo('foo', 1, 3) : void -->foo : (a: string, b?: number, c?: string) => void -+>foo : (a: string, b?: number | undefined, c?: string | undefined) => void - >'foo' : "foo" - >1 : 1 - >3 : 3 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionCall14.types b/testdata/baselines/reference/submodule/compiler/functionCall14.types index bf61c571e17..cee60b0fbd5 100644 --- a/testdata/baselines/reference/submodule/compiler/functionCall14.types +++ b/testdata/baselines/reference/submodule/compiler/functionCall14.types @@ -2,34 +2,34 @@ === functionCall14.ts === function foo(a?:string, ...b:number[]){} ->foo : (a?: string | undefined, ...b: number[]) => void +>foo : (a?: string, ...b: number[]) => void >a : string | undefined >b : number[] foo('foo', 1); >foo('foo', 1) : void ->foo : (a?: string | undefined, ...b: number[]) => void +>foo : (a?: string, ...b: number[]) => void >'foo' : "foo" >1 : 1 foo('foo'); >foo('foo') : void ->foo : (a?: string | undefined, ...b: number[]) => void +>foo : (a?: string, ...b: number[]) => void >'foo' : "foo" foo(); >foo() : void ->foo : (a?: string | undefined, ...b: number[]) => void +>foo : (a?: string, ...b: number[]) => void foo(1, 'bar'); >foo(1, 'bar') : void ->foo : (a?: string | undefined, ...b: number[]) => void +>foo : (a?: string, ...b: number[]) => void >1 : 1 >'bar' : "bar" foo('foo', 1, 3); >foo('foo', 1, 3) : void ->foo : (a?: string | undefined, ...b: number[]) => void +>foo : (a?: string, ...b: number[]) => void >'foo' : "foo" >1 : 1 >3 : 3 diff --git a/testdata/baselines/reference/submodule/compiler/functionCall14.types.diff b/testdata/baselines/reference/submodule/compiler/functionCall14.types.diff deleted file mode 100644 index 9189a8f068d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionCall14.types.diff +++ /dev/null @@ -1,43 +0,0 @@ ---- old.functionCall14.types -+++ new.functionCall14.types -@@= skipped -1, +1 lines =@@ - - === functionCall14.ts === - function foo(a?:string, ...b:number[]){} -->foo : (a?: string, ...b: number[]) => void -+>foo : (a?: string | undefined, ...b: number[]) => void - >a : string | undefined - >b : number[] - - foo('foo', 1); - >foo('foo', 1) : void -->foo : (a?: string, ...b: number[]) => void -+>foo : (a?: string | undefined, ...b: number[]) => void - >'foo' : "foo" - >1 : 1 - - foo('foo'); - >foo('foo') : void -->foo : (a?: string, ...b: number[]) => void -+>foo : (a?: string | undefined, ...b: number[]) => void - >'foo' : "foo" - - foo(); - >foo() : void -->foo : (a?: string, ...b: number[]) => void -+>foo : (a?: string | undefined, ...b: number[]) => void - - foo(1, 'bar'); - >foo(1, 'bar') : void -->foo : (a?: string, ...b: number[]) => void -+>foo : (a?: string | undefined, ...b: number[]) => void - >1 : 1 - >'bar' : "bar" - - foo('foo', 1, 3); - >foo('foo', 1, 3) : void -->foo : (a?: string, ...b: number[]) => void -+>foo : (a?: string | undefined, ...b: number[]) => void - >'foo' : "foo" - >1 : 1 - >3 : 3 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionCall15.types b/testdata/baselines/reference/submodule/compiler/functionCall15.types index b29ed0bab16..8f9a5d5bbb6 100644 --- a/testdata/baselines/reference/submodule/compiler/functionCall15.types +++ b/testdata/baselines/reference/submodule/compiler/functionCall15.types @@ -2,7 +2,7 @@ === functionCall15.ts === function foo(a?:string, b?:number, ...b:number[]){} ->foo : (a?: string | undefined, b?: number | undefined, ...b: number[]) => void +>foo : (a?: string, b?: number, ...b: number[]) => void >a : string | undefined >b : number | undefined >b : number[] diff --git a/testdata/baselines/reference/submodule/compiler/functionCall15.types.diff b/testdata/baselines/reference/submodule/compiler/functionCall15.types.diff deleted file mode 100644 index 6683f28ec10..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionCall15.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.functionCall15.types -+++ new.functionCall15.types -@@= skipped -1, +1 lines =@@ - - === functionCall15.ts === - function foo(a?:string, b?:number, ...b:number[]){} -->foo : (a?: string, b?: number, ...b: number[]) => void -+>foo : (a?: string | undefined, b?: number | undefined, ...b: number[]) => void - >a : string | undefined - >b : number | undefined - >b : number[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionCall16.types b/testdata/baselines/reference/submodule/compiler/functionCall16.types index ad5ec9fd125..ab3be9c9378 100644 --- a/testdata/baselines/reference/submodule/compiler/functionCall16.types +++ b/testdata/baselines/reference/submodule/compiler/functionCall16.types @@ -2,41 +2,41 @@ === functionCall16.ts === function foo(a:string, b?:string, ...c:number[]){} ->foo : (a: string, b?: string | undefined, ...c: number[]) => void +>foo : (a: string, b?: string, ...c: number[]) => void >a : string >b : string | undefined >c : number[] foo('foo', 1); >foo('foo', 1) : void ->foo : (a: string, b?: string | undefined, ...c: number[]) => void +>foo : (a: string, b?: string, ...c: number[]) => void >'foo' : "foo" >1 : 1 foo('foo'); >foo('foo') : void ->foo : (a: string, b?: string | undefined, ...c: number[]) => void +>foo : (a: string, b?: string, ...c: number[]) => void >'foo' : "foo" foo('foo', 'bar'); >foo('foo', 'bar') : void ->foo : (a: string, b?: string | undefined, ...c: number[]) => void +>foo : (a: string, b?: string, ...c: number[]) => void >'foo' : "foo" >'bar' : "bar" foo(); >foo() : void ->foo : (a: string, b?: string | undefined, ...c: number[]) => void +>foo : (a: string, b?: string, ...c: number[]) => void foo(1, 'bar'); >foo(1, 'bar') : void ->foo : (a: string, b?: string | undefined, ...c: number[]) => void +>foo : (a: string, b?: string, ...c: number[]) => void >1 : 1 >'bar' : "bar" foo('foo', 'bar', 3); >foo('foo', 'bar', 3) : void ->foo : (a: string, b?: string | undefined, ...c: number[]) => void +>foo : (a: string, b?: string, ...c: number[]) => void >'foo' : "foo" >'bar' : "bar" >3 : 3 diff --git a/testdata/baselines/reference/submodule/compiler/functionCall16.types.diff b/testdata/baselines/reference/submodule/compiler/functionCall16.types.diff deleted file mode 100644 index c3acf070450..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionCall16.types.diff +++ /dev/null @@ -1,51 +0,0 @@ ---- old.functionCall16.types -+++ new.functionCall16.types -@@= skipped -1, +1 lines =@@ - - === functionCall16.ts === - function foo(a:string, b?:string, ...c:number[]){} -->foo : (a: string, b?: string, ...c: number[]) => void -+>foo : (a: string, b?: string | undefined, ...c: number[]) => void - >a : string - >b : string | undefined - >c : number[] - - foo('foo', 1); - >foo('foo', 1) : void -->foo : (a: string, b?: string, ...c: number[]) => void -+>foo : (a: string, b?: string | undefined, ...c: number[]) => void - >'foo' : "foo" - >1 : 1 - - foo('foo'); - >foo('foo') : void -->foo : (a: string, b?: string, ...c: number[]) => void -+>foo : (a: string, b?: string | undefined, ...c: number[]) => void - >'foo' : "foo" - - foo('foo', 'bar'); - >foo('foo', 'bar') : void -->foo : (a: string, b?: string, ...c: number[]) => void -+>foo : (a: string, b?: string | undefined, ...c: number[]) => void - >'foo' : "foo" - >'bar' : "bar" - - foo(); - >foo() : void -->foo : (a: string, b?: string, ...c: number[]) => void -+>foo : (a: string, b?: string | undefined, ...c: number[]) => void - - foo(1, 'bar'); - >foo(1, 'bar') : void -->foo : (a: string, b?: string, ...c: number[]) => void -+>foo : (a: string, b?: string | undefined, ...c: number[]) => void - >1 : 1 - >'bar' : "bar" - - foo('foo', 'bar', 3); - >foo('foo', 'bar', 3) : void -->foo : (a: string, b?: string, ...c: number[]) => void -+>foo : (a: string, b?: string | undefined, ...c: number[]) => void - >'foo' : "foo" - >'bar' : "bar" - >3 : 3 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionCall17.types b/testdata/baselines/reference/submodule/compiler/functionCall17.types index 9e514dbc854..c057db5ab95 100644 --- a/testdata/baselines/reference/submodule/compiler/functionCall17.types +++ b/testdata/baselines/reference/submodule/compiler/functionCall17.types @@ -2,7 +2,7 @@ === functionCall17.ts === function foo(a:string, b?:string, c?:number, ...d:number[]){} ->foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void +>foo : (a: string, b?: string, c?: number, ...d: number[]) => void >a : string >b : string | undefined >c : number | undefined @@ -10,35 +10,35 @@ function foo(a:string, b?:string, c?:number, ...d:number[]){} foo('foo', 1); >foo('foo', 1) : void ->foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void +>foo : (a: string, b?: string, c?: number, ...d: number[]) => void >'foo' : "foo" >1 : 1 foo('foo'); >foo('foo') : void ->foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void +>foo : (a: string, b?: string, c?: number, ...d: number[]) => void >'foo' : "foo" foo(); >foo() : void ->foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void +>foo : (a: string, b?: string, c?: number, ...d: number[]) => void foo(1, 'bar'); >foo(1, 'bar') : void ->foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void +>foo : (a: string, b?: string, c?: number, ...d: number[]) => void >1 : 1 >'bar' : "bar" foo('foo', 1, 3); >foo('foo', 1, 3) : void ->foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void +>foo : (a: string, b?: string, c?: number, ...d: number[]) => void >'foo' : "foo" >1 : 1 >3 : 3 foo('foo', 'bar', 3, 4); >foo('foo', 'bar', 3, 4) : void ->foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void +>foo : (a: string, b?: string, c?: number, ...d: number[]) => void >'foo' : "foo" >'bar' : "bar" >3 : 3 diff --git a/testdata/baselines/reference/submodule/compiler/functionCall17.types.diff b/testdata/baselines/reference/submodule/compiler/functionCall17.types.diff deleted file mode 100644 index 05015bdc8e6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionCall17.types.diff +++ /dev/null @@ -1,53 +0,0 @@ ---- old.functionCall17.types -+++ new.functionCall17.types -@@= skipped -1, +1 lines =@@ - - === functionCall17.ts === - function foo(a:string, b?:string, c?:number, ...d:number[]){} -->foo : (a: string, b?: string, c?: number, ...d: number[]) => void -+>foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void - >a : string - >b : string | undefined - >c : number | undefined -@@= skipped -8, +8 lines =@@ - - foo('foo', 1); - >foo('foo', 1) : void -->foo : (a: string, b?: string, c?: number, ...d: number[]) => void -+>foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void - >'foo' : "foo" - >1 : 1 - - foo('foo'); - >foo('foo') : void -->foo : (a: string, b?: string, c?: number, ...d: number[]) => void -+>foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void - >'foo' : "foo" - - foo(); - >foo() : void -->foo : (a: string, b?: string, c?: number, ...d: number[]) => void -+>foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void - - foo(1, 'bar'); - >foo(1, 'bar') : void -->foo : (a: string, b?: string, c?: number, ...d: number[]) => void -+>foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void - >1 : 1 - >'bar' : "bar" - - foo('foo', 1, 3); - >foo('foo', 1, 3) : void -->foo : (a: string, b?: string, c?: number, ...d: number[]) => void -+>foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void - >'foo' : "foo" - >1 : 1 - >3 : 3 - - foo('foo', 'bar', 3, 4); - >foo('foo', 'bar', 3, 4) : void -->foo : (a: string, b?: string, c?: number, ...d: number[]) => void -+>foo : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void - >'foo' : "foo" - >'bar' : "bar" - >3 : 3 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionCall8.types b/testdata/baselines/reference/submodule/compiler/functionCall8.types index 7a4db2a299a..13bb063262e 100644 --- a/testdata/baselines/reference/submodule/compiler/functionCall8.types +++ b/testdata/baselines/reference/submodule/compiler/functionCall8.types @@ -2,26 +2,26 @@ === functionCall8.ts === function foo(a?:string){} ->foo : (a?: string | undefined) => void +>foo : (a?: string) => void >a : string | undefined foo('foo'); >foo('foo') : void ->foo : (a?: string | undefined) => void +>foo : (a?: string) => void >'foo' : "foo" foo('foo', 'bar'); >foo('foo', 'bar') : void ->foo : (a?: string | undefined) => void +>foo : (a?: string) => void >'foo' : "foo" >'bar' : "bar" foo(4); >foo(4) : void ->foo : (a?: string | undefined) => void +>foo : (a?: string) => void >4 : 4 foo(); >foo() : void ->foo : (a?: string | undefined) => void +>foo : (a?: string) => void diff --git a/testdata/baselines/reference/submodule/compiler/functionCall8.types.diff b/testdata/baselines/reference/submodule/compiler/functionCall8.types.diff deleted file mode 100644 index 64f0e34a321..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionCall8.types.diff +++ /dev/null @@ -1,33 +0,0 @@ ---- old.functionCall8.types -+++ new.functionCall8.types -@@= skipped -1, +1 lines =@@ - - === functionCall8.ts === - function foo(a?:string){} -->foo : (a?: string) => void -+>foo : (a?: string | undefined) => void - >a : string | undefined - - foo('foo'); - >foo('foo') : void -->foo : (a?: string) => void -+>foo : (a?: string | undefined) => void - >'foo' : "foo" - - foo('foo', 'bar'); - >foo('foo', 'bar') : void -->foo : (a?: string) => void -+>foo : (a?: string | undefined) => void - >'foo' : "foo" - >'bar' : "bar" - - foo(4); - >foo(4) : void -->foo : (a?: string) => void -+>foo : (a?: string | undefined) => void - >4 : 4 - - foo(); - >foo() : void -->foo : (a?: string) => void -+>foo : (a?: string | undefined) => void diff --git a/testdata/baselines/reference/submodule/compiler/functionCall9.types b/testdata/baselines/reference/submodule/compiler/functionCall9.types index bb860a02263..52087cec6f0 100644 --- a/testdata/baselines/reference/submodule/compiler/functionCall9.types +++ b/testdata/baselines/reference/submodule/compiler/functionCall9.types @@ -2,35 +2,35 @@ === functionCall9.ts === function foo(a?:string, b?:number){}; ->foo : (a?: string | undefined, b?: number | undefined) => void +>foo : (a?: string, b?: number) => void >a : string | undefined >b : number | undefined foo('foo', 1); >foo('foo', 1) : void ->foo : (a?: string | undefined, b?: number | undefined) => void +>foo : (a?: string, b?: number) => void >'foo' : "foo" >1 : 1 foo('foo'); >foo('foo') : void ->foo : (a?: string | undefined, b?: number | undefined) => void +>foo : (a?: string, b?: number) => void >'foo' : "foo" foo('foo','bar'); >foo('foo','bar') : void ->foo : (a?: string | undefined, b?: number | undefined) => void +>foo : (a?: string, b?: number) => void >'foo' : "foo" >'bar' : "bar" foo('foo', 1, 'bar'); >foo('foo', 1, 'bar') : void ->foo : (a?: string | undefined, b?: number | undefined) => void +>foo : (a?: string, b?: number) => void >'foo' : "foo" >1 : 1 >'bar' : "bar" foo(); >foo() : void ->foo : (a?: string | undefined, b?: number | undefined) => void +>foo : (a?: string, b?: number) => void diff --git a/testdata/baselines/reference/submodule/compiler/functionCall9.types.diff b/testdata/baselines/reference/submodule/compiler/functionCall9.types.diff deleted file mode 100644 index 540fc33ab40..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionCall9.types.diff +++ /dev/null @@ -1,43 +0,0 @@ ---- old.functionCall9.types -+++ new.functionCall9.types -@@= skipped -1, +1 lines =@@ - - === functionCall9.ts === - function foo(a?:string, b?:number){}; -->foo : (a?: string, b?: number) => void -+>foo : (a?: string | undefined, b?: number | undefined) => void - >a : string | undefined - >b : number | undefined - - foo('foo', 1); - >foo('foo', 1) : void -->foo : (a?: string, b?: number) => void -+>foo : (a?: string | undefined, b?: number | undefined) => void - >'foo' : "foo" - >1 : 1 - - foo('foo'); - >foo('foo') : void -->foo : (a?: string, b?: number) => void -+>foo : (a?: string | undefined, b?: number | undefined) => void - >'foo' : "foo" - - foo('foo','bar'); - >foo('foo','bar') : void -->foo : (a?: string, b?: number) => void -+>foo : (a?: string | undefined, b?: number | undefined) => void - >'foo' : "foo" - >'bar' : "bar" - - foo('foo', 1, 'bar'); - >foo('foo', 1, 'bar') : void -->foo : (a?: string, b?: number) => void -+>foo : (a?: string | undefined, b?: number | undefined) => void - >'foo' : "foo" - >1 : 1 - >'bar' : "bar" - - foo(); - >foo() : void -->foo : (a?: string, b?: number) => void -+>foo : (a?: string | undefined, b?: number | undefined) => void diff --git a/testdata/baselines/reference/submodule/compiler/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types b/testdata/baselines/reference/submodule/compiler/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types index 0fcad4f3b53..700eb4d69c0 100644 --- a/testdata/baselines/reference/submodule/compiler/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types +++ b/testdata/baselines/reference/submodule/compiler/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types @@ -2,7 +2,7 @@ === functionDeclarationWithArgumentOfTypeFunctionTypeArray.ts === function foo(args: { (x): number }[]) { ->foo : (args: ((x: any) => number)[]) => number +>foo : (args: { (x: any): number; }[]) => number >args : ((x: any) => number)[] >x : any diff --git a/testdata/baselines/reference/submodule/compiler/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types.diff b/testdata/baselines/reference/submodule/compiler/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types.diff deleted file mode 100644 index 2f293e0ffd3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.functionDeclarationWithArgumentOfTypeFunctionTypeArray.types -+++ new.functionDeclarationWithArgumentOfTypeFunctionTypeArray.types -@@= skipped -1, +1 lines =@@ - - === functionDeclarationWithArgumentOfTypeFunctionTypeArray.ts === - function foo(args: { (x): number }[]) { -->foo : (args: { (x: any): number; }[]) => number -+>foo : (args: ((x: any) => number)[]) => number - >args : ((x: any) => number)[] - >x : any diff --git a/testdata/baselines/reference/submodule/compiler/functionExpressionReturningItself.js b/testdata/baselines/reference/submodule/compiler/functionExpressionReturningItself.js index fc5e6eae2f0..279364408b5 100644 --- a/testdata/baselines/reference/submodule/compiler/functionExpressionReturningItself.js +++ b/testdata/baselines/reference/submodule/compiler/functionExpressionReturningItself.js @@ -9,4 +9,4 @@ var x = function somefn() { return somefn; }; //// [functionExpressionReturningItself.d.ts] -declare var x: () => /*elided*/ any; +declare var x: () => () => /*elided*/ any; diff --git a/testdata/baselines/reference/submodule/compiler/functionExpressionReturningItself.js.diff b/testdata/baselines/reference/submodule/compiler/functionExpressionReturningItself.js.diff deleted file mode 100644 index 8afd6fa99be..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionExpressionReturningItself.js.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.functionExpressionReturningItself.js -+++ new.functionExpressionReturningItself.js -@@= skipped -8, +8 lines =@@ - - - //// [functionExpressionReturningItself.d.ts] --declare var x: () => () => /*elided*/ any; -+declare var x: () => /*elided*/ any; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionExpressionShadowedByParams.types b/testdata/baselines/reference/submodule/compiler/functionExpressionShadowedByParams.types index ea47ea2a0e3..48a9e1943bc 100644 --- a/testdata/baselines/reference/submodule/compiler/functionExpressionShadowedByParams.types +++ b/testdata/baselines/reference/submodule/compiler/functionExpressionShadowedByParams.types @@ -7,9 +7,9 @@ function b1(b1: number) { b1.toPrecision(2); // should not error >b1.toPrecision(2) : string ->b1.toPrecision : (precision?: number | undefined) => string +>b1.toPrecision : (precision?: number) => string >b1 : number ->toPrecision : (precision?: number | undefined) => string +>toPrecision : (precision?: number) => string >2 : 2 b1(12); // should error @@ -31,9 +31,9 @@ var x = { b.toPrecision(2); // should not error >b.toPrecision(2) : string ->b.toPrecision : (precision?: number | undefined) => string +>b.toPrecision : (precision?: number) => string >b : number ->toPrecision : (precision?: number | undefined) => string +>toPrecision : (precision?: number) => string >2 : 2 b.apply(null, null); // should error diff --git a/testdata/baselines/reference/submodule/compiler/functionExpressionShadowedByParams.types.diff b/testdata/baselines/reference/submodule/compiler/functionExpressionShadowedByParams.types.diff deleted file mode 100644 index 0037c9c679d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionExpressionShadowedByParams.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.functionExpressionShadowedByParams.types -+++ new.functionExpressionShadowedByParams.types -@@= skipped -6, +6 lines =@@ - - b1.toPrecision(2); // should not error - >b1.toPrecision(2) : string -->b1.toPrecision : (precision?: number) => string -+>b1.toPrecision : (precision?: number | undefined) => string - >b1 : number -->toPrecision : (precision?: number) => string -+>toPrecision : (precision?: number | undefined) => string - >2 : 2 - - b1(12); // should error -@@= skipped -24, +24 lines =@@ - - b.toPrecision(2); // should not error - >b.toPrecision(2) : string -->b.toPrecision : (precision?: number) => string -+>b.toPrecision : (precision?: number | undefined) => string - >b : number -->toPrecision : (precision?: number) => string -+>toPrecision : (precision?: number | undefined) => string - >2 : 2 - - b.apply(null, null); // should error \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionOverloads43.types b/testdata/baselines/reference/submodule/compiler/functionOverloads43.types index 72ccf994f01..b0a52a4e30a 100644 --- a/testdata/baselines/reference/submodule/compiler/functionOverloads43.types +++ b/testdata/baselines/reference/submodule/compiler/functionOverloads43.types @@ -13,15 +13,15 @@ function foo(bar: { a:string }[]): string; function foo([x]: { a:number | string }[]): string | number { >foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; } ->x : { a: string | number; } +>x : { a: number | string; } >a : string | number if (x) { ->x : { a: string | number; } +>x : { a: number | string; } return x.a; >x.a : string | number ->x : { a: string | number; } +>x : { a: number | string; } >a : string | number } diff --git a/testdata/baselines/reference/submodule/compiler/functionOverloads43.types.diff b/testdata/baselines/reference/submodule/compiler/functionOverloads43.types.diff deleted file mode 100644 index 872a7235b85..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionOverloads43.types.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.functionOverloads43.types -+++ new.functionOverloads43.types -@@= skipped -12, +12 lines =@@ - - function foo([x]: { a:number | string }[]): string | number { - >foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; } -->x : { a: number | string; } -+>x : { a: string | number; } - >a : string | number - - if (x) { -->x : { a: number | string; } -+>x : { a: string | number; } - - return x.a; - >x.a : string | number -->x : { a: number | string; } -+>x : { a: string | number; } - >a : string | number - } - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionOverloads44.types b/testdata/baselines/reference/submodule/compiler/functionOverloads44.types index 2322b8f500a..c8c8d144c55 100644 --- a/testdata/baselines/reference/submodule/compiler/functionOverloads44.types +++ b/testdata/baselines/reference/submodule/compiler/functionOverloads44.types @@ -22,7 +22,7 @@ function foo1(bar: { a:string }[]): Animal; function foo1([x]: { a:number | string }[]): Dog { >foo1 : { (bar: { a: number; }[]): Dog; (bar: { a: string; }[]): Animal; } ->x : { a: string | number; } +>x : { a: number | string; } >a : string | number return undefined; @@ -41,7 +41,7 @@ function foo2(bar: { a:string }[]): Cat | Dog; function foo2([x]: { a:number | string }[]): Cat { >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Cat | Dog; } ->x : { a: string | number; } +>x : { a: number | string; } >a : string | number return undefined; diff --git a/testdata/baselines/reference/submodule/compiler/functionOverloads44.types.diff b/testdata/baselines/reference/submodule/compiler/functionOverloads44.types.diff deleted file mode 100644 index 4c1eae5d384..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionOverloads44.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.functionOverloads44.types -+++ new.functionOverloads44.types -@@= skipped -21, +21 lines =@@ - - function foo1([x]: { a:number | string }[]): Dog { - >foo1 : { (bar: { a: number; }[]): Dog; (bar: { a: string; }[]): Animal; } -->x : { a: number | string; } -+>x : { a: string | number; } - >a : string | number - - return undefined; -@@= skipped -19, +19 lines =@@ - - function foo2([x]: { a:number | string }[]): Cat { - >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Cat | Dog; } -->x : { a: number | string; } -+>x : { a: string | number; } - >a : string | number - - return undefined; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionOverloads45.types b/testdata/baselines/reference/submodule/compiler/functionOverloads45.types index 92c44b224a2..d8add3b3185 100644 --- a/testdata/baselines/reference/submodule/compiler/functionOverloads45.types +++ b/testdata/baselines/reference/submodule/compiler/functionOverloads45.types @@ -22,7 +22,7 @@ function foo1(bar: { a:string }[]): Dog; function foo1([x]: { a:number | string }[]): Animal { >foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } ->x : { a: string | number; } +>x : { a: number | string; } >a : string | number return undefined; @@ -41,7 +41,7 @@ function foo2(bar: { a:string }[]): Dog; function foo2([x]: { a:number | string }[]): Cat | Dog { >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } ->x : { a: string | number; } +>x : { a: number | string; } >a : string | number return undefined; diff --git a/testdata/baselines/reference/submodule/compiler/functionOverloads45.types.diff b/testdata/baselines/reference/submodule/compiler/functionOverloads45.types.diff deleted file mode 100644 index 9ab9b219a33..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionOverloads45.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.functionOverloads45.types -+++ new.functionOverloads45.types -@@= skipped -21, +21 lines =@@ - - function foo1([x]: { a:number | string }[]): Animal { - >foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -->x : { a: number | string; } -+>x : { a: string | number; } - >a : string | number - - return undefined; -@@= skipped -19, +19 lines =@@ - - function foo2([x]: { a:number | string }[]): Cat | Dog { - >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -->x : { a: number | string; } -+>x : { a: string | number; } - >a : string | number - - return undefined; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionReturnTypeQuery.types b/testdata/baselines/reference/submodule/compiler/functionReturnTypeQuery.types index e4bb387efb8..37ceb306f65 100644 --- a/testdata/baselines/reference/submodule/compiler/functionReturnTypeQuery.types +++ b/testdata/baselines/reference/submodule/compiler/functionReturnTypeQuery.types @@ -5,14 +5,14 @@ declare let foo: number; >foo : number declare function test1(foo: string, bar: typeof foo): typeof foo; ->test1 : (foo: string, bar: string) => string +>test1 : (foo: string, bar: typeof foo) => typeof foo >foo : string >bar : string >foo : string >foo : string declare function test2({foo}: {foo: string}, bar: typeof foo): typeof foo; ->test2 : ({ foo }: { foo: string; }, bar: string) => string +>test2 : ({ foo }: { foo: string; }, bar: typeof foo) => typeof foo >foo : string >foo : string >bar : string diff --git a/testdata/baselines/reference/submodule/compiler/functionReturnTypeQuery.types.diff b/testdata/baselines/reference/submodule/compiler/functionReturnTypeQuery.types.diff deleted file mode 100644 index b3a71646947..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionReturnTypeQuery.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.functionReturnTypeQuery.types -+++ new.functionReturnTypeQuery.types -@@= skipped -4, +4 lines =@@ - >foo : number - - declare function test1(foo: string, bar: typeof foo): typeof foo; -->test1 : (foo: string, bar: typeof foo) => typeof foo -+>test1 : (foo: string, bar: string) => string - >foo : string - >bar : string - >foo : string - >foo : string - - declare function test2({foo}: {foo: string}, bar: typeof foo): typeof foo; -->test2 : ({ foo }: { foo: string; }, bar: typeof foo) => typeof foo -+>test2 : ({ foo }: { foo: string; }, bar: string) => string - >foo : string - >foo : string - >bar : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.errors.txt b/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.errors.txt index 22b89334722..988841db3e3 100644 --- a/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.errors.txt @@ -1,4 +1,4 @@ -functionSignatureAssignmentCompat1.ts(10,21): error TS2322: Type '(delimiter?: string | undefined) => ParserFunc' is not assignable to type 'ParserFunc'. +functionSignatureAssignmentCompat1.ts(10,21): error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. Types of parameters 'delimiter' and 'eventEmitter' are incompatible. Type 'number' is not assignable to type 'string'. @@ -15,7 +15,7 @@ functionSignatureAssignmentCompat1.ts(10,21): error TS2322: Type '(delimiter?: s var c: ParserFunc = parsers.raw; // ok! var d: ParserFunc = parsers.readline; // not ok ~~~~~~~~~~~~~~~~ -!!! error TS2322: Type '(delimiter?: string | undefined) => ParserFunc' is not assignable to type 'ParserFunc'. +!!! error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. !!! error TS2322: Types of parameters 'delimiter' and 'eventEmitter' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. !!! related TS6212 functionSignatureAssignmentCompat1.ts:10:21: Did you mean to call this expression? diff --git a/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.errors.txt.diff new file mode 100644 index 00000000000..d243b28c865 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.functionSignatureAssignmentCompat1.errors.txt ++++ new.functionSignatureAssignmentCompat1.errors.txt +@@= skipped -0, +0 lines =@@ +-functionSignatureAssignmentCompat1.ts(10,21): error TS2322: Type '(delimiter?: string | undefined) => ParserFunc' is not assignable to type 'ParserFunc'. ++functionSignatureAssignmentCompat1.ts(10,21): error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. + Types of parameters 'delimiter' and 'eventEmitter' are incompatible. + Type 'number' is not assignable to type 'string'. + +@@= skipped -14, +14 lines =@@ + var c: ParserFunc = parsers.raw; // ok! + var d: ParserFunc = parsers.readline; // not ok + ~~~~~~~~~~~~~~~~ +-!!! error TS2322: Type '(delimiter?: string | undefined) => ParserFunc' is not assignable to type 'ParserFunc'. ++!!! error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. + !!! error TS2322: Types of parameters 'delimiter' and 'eventEmitter' are incompatible. + !!! error TS2322: Type 'number' is not assignable to type 'string'. + !!! related TS6212 functionSignatureAssignmentCompat1.ts:10:21: Did you mean to call this expression? \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.types b/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.types index ae3c2487bb7..1faf174606f 100644 --- a/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.types +++ b/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.types @@ -11,7 +11,7 @@ interface Parsers { >raw : ParserFunc readline(delimiter?: string): ParserFunc; ->readline : (delimiter?: string | undefined) => ParserFunc +>readline : (delimiter?: string) => ParserFunc >delimiter : string | undefined } declare var parsers: Parsers; @@ -25,14 +25,14 @@ var c: ParserFunc = parsers.raw; // ok! var d: ParserFunc = parsers.readline; // not ok >d : ParserFunc ->parsers.readline : (delimiter?: string | undefined) => ParserFunc +>parsers.readline : (delimiter?: string) => ParserFunc >parsers : Parsers ->readline : (delimiter?: string | undefined) => ParserFunc +>readline : (delimiter?: string) => ParserFunc var e: ParserFunc = parsers.readline(); // ok >e : ParserFunc >parsers.readline() : ParserFunc ->parsers.readline : (delimiter?: string | undefined) => ParserFunc +>parsers.readline : (delimiter?: string) => ParserFunc >parsers : Parsers ->readline : (delimiter?: string | undefined) => ParserFunc +>readline : (delimiter?: string) => ParserFunc diff --git a/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.types.diff b/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.types.diff deleted file mode 100644 index 808b69109fb..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionSignatureAssignmentCompat1.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.functionSignatureAssignmentCompat1.types -+++ new.functionSignatureAssignmentCompat1.types -@@= skipped -10, +10 lines =@@ - >raw : ParserFunc - - readline(delimiter?: string): ParserFunc; -->readline : (delimiter?: string) => ParserFunc -+>readline : (delimiter?: string | undefined) => ParserFunc - >delimiter : string | undefined - } - declare var parsers: Parsers; -@@= skipped -14, +14 lines =@@ - - var d: ParserFunc = parsers.readline; // not ok - >d : ParserFunc -->parsers.readline : (delimiter?: string) => ParserFunc -+>parsers.readline : (delimiter?: string | undefined) => ParserFunc - >parsers : Parsers -->readline : (delimiter?: string) => ParserFunc -+>readline : (delimiter?: string | undefined) => ParserFunc - - var e: ParserFunc = parsers.readline(); // ok - >e : ParserFunc - >parsers.readline() : ParserFunc -->parsers.readline : (delimiter?: string) => ParserFunc -+>parsers.readline : (delimiter?: string | undefined) => ParserFunc - >parsers : Parsers -->readline : (delimiter?: string) => ParserFunc -+>readline : (delimiter?: string | undefined) => ParserFunc diff --git a/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressions(target=es2015).types b/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressions(target=es2015).types index 4bf7bc3a2f5..9c157841531 100644 --- a/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressions(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressions(target=es2015).types @@ -145,13 +145,13 @@ function f19(): void | number { } function f20(): any | number { ->f20 : () => any +>f20 : () => any | number // Okay; function return type is union containing any } function f21(): number | string { ->f21 : () => string | number +>f21 : () => number | string // Not okay; union does not contain void or any } @@ -163,7 +163,7 @@ function f22(): undefined { } function f23(): undefined | number { ->f23 : () => number | undefined +>f23 : () => undefined | number // Error; because `undefined | number` becomes `number` without strictNullChecks. } @@ -184,14 +184,14 @@ const f31: () => undefined = () => { } const f32: () => undefined | number = () => { ->f32 : () => number | undefined +>f32 : () => undefined | number >() => { // Error, contextual type for implicit return isn't just `undefined`} : () => undefined // Error, contextual type for implicit return isn't just `undefined` } const f33: () => undefined | number = () => { ->f33 : () => number | undefined +>f33 : () => undefined | number >() => { // Error, contextual type for expression-less return isn't just `undefined` return;} : () => undefined // Error, contextual type for expression-less return isn't just `undefined` diff --git a/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressions(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressions(target=es2015).types.diff deleted file mode 100644 index 15a204c7a0d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressions(target=es2015).types.diff +++ /dev/null @@ -1,44 +0,0 @@ ---- old.functionsMissingReturnStatementsAndExpressions(target=es2015).types -+++ new.functionsMissingReturnStatementsAndExpressions(target=es2015).types -@@= skipped -144, +144 lines =@@ - } - - function f20(): any | number { -->f20 : () => any | number -+>f20 : () => any - - // Okay; function return type is union containing any - } - - function f21(): number | string { -->f21 : () => number | string -+>f21 : () => string | number - - // Not okay; union does not contain void or any - } -@@= skipped -18, +18 lines =@@ - } - - function f23(): undefined | number { -->f23 : () => undefined | number -+>f23 : () => number | undefined - - // Error; because `undefined | number` becomes `number` without strictNullChecks. - } -@@= skipped -21, +21 lines =@@ - } - - const f32: () => undefined | number = () => { -->f32 : () => undefined | number -+>f32 : () => number | undefined - >() => { // Error, contextual type for implicit return isn't just `undefined`} : () => undefined - - // Error, contextual type for implicit return isn't just `undefined` - } - - const f33: () => undefined | number = () => { -->f33 : () => undefined | number -+>f33 : () => number | undefined - >() => { // Error, contextual type for expression-less return isn't just `undefined` return;} : () => undefined - - // Error, contextual type for expression-less return isn't just `undefined` \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types b/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types index a3ae11b0abe..7c3487a64da 100644 --- a/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types +++ b/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types @@ -8,7 +8,7 @@ function f10(): undefined { } function f11(): undefined | number { ->f11 : () => number | undefined +>f11 : () => undefined | number // Error, return type isn't just undefined } @@ -27,7 +27,7 @@ const f20: () => undefined = () => { } const f21: () => undefined | number = () => { ->f21 : () => number | undefined +>f21 : () => undefined | number >() => { // Ok, contextual type for implicit return contains undefined} : () => undefined // Ok, contextual type for implicit return contains undefined @@ -47,7 +47,7 @@ async function f30(): Promise { } async function f31(): Promise { ->f31 : () => Promise +>f31 : () => Promise // Error, return type isn't just undefined } diff --git a/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types.diff b/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types.diff deleted file mode 100644 index 0c745aa6711..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types -+++ new.functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types -@@= skipped -7, +7 lines =@@ - } - - function f11(): undefined | number { -->f11 : () => undefined | number -+>f11 : () => number | undefined - - // Error, return type isn't just undefined - } -@@= skipped -19, +19 lines =@@ - } - - const f21: () => undefined | number = () => { -->f21 : () => undefined | number -+>f21 : () => number | undefined - >() => { // Ok, contextual type for implicit return contains undefined} : () => undefined - - // Ok, contextual type for implicit return contains undefined -@@= skipped -20, +20 lines =@@ - } - - async function f31(): Promise { -->f31 : () => Promise -+>f31 : () => Promise - - // Error, return type isn't just undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types b/testdata/baselines/reference/submodule/compiler/functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types index 925638e325f..fd36959636f 100644 --- a/testdata/baselines/reference/submodule/compiler/functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types +++ b/testdata/baselines/reference/submodule/compiler/functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types @@ -94,7 +94,7 @@ function f7(): null { } function f8(): string | null { ->f8 : () => string +>f8 : () => string | null if (Math.random() < 0.5) return "foo"; >Math.random() < 0.5 : boolean diff --git a/testdata/baselines/reference/submodule/compiler/functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types.diff b/testdata/baselines/reference/submodule/compiler/functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types.diff deleted file mode 100644 index 6d7d769b53d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types -+++ new.functionsWithImplicitReturnTypeAssignableToUndefined(strictnullchecks=false).types -@@= skipped -93, +93 lines =@@ - } - - function f8(): string | null { -->f8 : () => string | null -+>f8 : () => string - - if (Math.random() < 0.5) return "foo"; - >Math.random() < 0.5 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/generatorReturnExpressionIsChecked.types b/testdata/baselines/reference/submodule/compiler/generatorReturnExpressionIsChecked.types index 2a8df2072cc..237902df8b7 100644 --- a/testdata/baselines/reference/submodule/compiler/generatorReturnExpressionIsChecked.types +++ b/testdata/baselines/reference/submodule/compiler/generatorReturnExpressionIsChecked.types @@ -2,7 +2,7 @@ === generatorReturnExpressionIsChecked.ts === function* f(): Iterator { ->f : () => Iterator +>f : () => Iterator return invalid; >invalid : any diff --git a/testdata/baselines/reference/submodule/compiler/generatorReturnExpressionIsChecked.types.diff b/testdata/baselines/reference/submodule/compiler/generatorReturnExpressionIsChecked.types.diff deleted file mode 100644 index 977b233c8eb..00000000000 --- a/testdata/baselines/reference/submodule/compiler/generatorReturnExpressionIsChecked.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.generatorReturnExpressionIsChecked.types -+++ new.generatorReturnExpressionIsChecked.types -@@= skipped -1, +1 lines =@@ - - === generatorReturnExpressionIsChecked.ts === - function* f(): Iterator { -->f : () => Iterator -+>f : () => Iterator - - return invalid; - >invalid : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericArgumentCallSigAssignmentCompat.types b/testdata/baselines/reference/submodule/compiler/genericArgumentCallSigAssignmentCompat.types index e7943d7ef1b..b2824ea0d1d 100644 --- a/testdata/baselines/reference/submodule/compiler/genericArgumentCallSigAssignmentCompat.types +++ b/testdata/baselines/reference/submodule/compiler/genericArgumentCallSigAssignmentCompat.types @@ -11,7 +11,7 @@ namespace Underscore { export interface Static { all(list: T[], iterator?: Iterator, context?: any): boolean; ->all : (list: T[], iterator?: Iterator | undefined, context?: any) => boolean +>all : (list: T[], iterator?: Iterator, context?: any) => boolean >list : T[] >iterator : Iterator | undefined >context : any @@ -30,9 +30,9 @@ declare var _: Underscore.Static; // Ideally, we would not have a generic signature here, because it should be instantiated with {} during inferential typing _.all([true, 1, null, 'yes'], _.identity); >_.all([true, 1, null, 'yes'], _.identity) : boolean ->_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => boolean +>_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean >_ : Underscore.Static ->all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => boolean +>all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean >[true, 1, null, 'yes'] : (string | number | true | null)[] >true : true >1 : 1 @@ -44,9 +44,9 @@ _.all([true, 1, null, 'yes'], _.identity); // Ok, because fixing makes us infer boolean for T _.all([true], _.identity); >_.all([true], _.identity) : boolean ->_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => boolean +>_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean >_ : Underscore.Static ->all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => boolean +>all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean >[true] : true[] >true : true >_.identity : (value: T) => T diff --git a/testdata/baselines/reference/submodule/compiler/genericArgumentCallSigAssignmentCompat.types.diff b/testdata/baselines/reference/submodule/compiler/genericArgumentCallSigAssignmentCompat.types.diff deleted file mode 100644 index 13fe5e109fc..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericArgumentCallSigAssignmentCompat.types.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- old.genericArgumentCallSigAssignmentCompat.types -+++ new.genericArgumentCallSigAssignmentCompat.types -@@= skipped -10, +10 lines =@@ - - export interface Static { - all(list: T[], iterator?: Iterator, context?: any): boolean; -->all : (list: T[], iterator?: Iterator, context?: any) => boolean -+>all : (list: T[], iterator?: Iterator | undefined, context?: any) => boolean - >list : T[] - >iterator : Iterator | undefined - >context : any -@@= skipped -19, +19 lines =@@ - // Ideally, we would not have a generic signature here, because it should be instantiated with {} during inferential typing - _.all([true, 1, null, 'yes'], _.identity); - >_.all([true, 1, null, 'yes'], _.identity) : boolean -->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean -+>_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => boolean - >_ : Underscore.Static -->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean -+>all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => boolean - >[true, 1, null, 'yes'] : (string | number | true | null)[] - >true : true - >1 : 1 -@@= skipped -14, +14 lines =@@ - // Ok, because fixing makes us infer boolean for T - _.all([true], _.identity); - >_.all([true], _.identity) : boolean -->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean -+>_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => boolean - >_ : Underscore.Static -->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean -+>all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => boolean - >[true] : true[] - >true : true - >_.identity : (value: T) => T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericArrayMethods1.types b/testdata/baselines/reference/submodule/compiler/genericArrayMethods1.types index 498b7c1991b..ac324bb7e78 100644 --- a/testdata/baselines/reference/submodule/compiler/genericArrayMethods1.types +++ b/testdata/baselines/reference/submodule/compiler/genericArrayMethods1.types @@ -4,10 +4,10 @@ var x:string[] = [0,1].slice(0); // this should be an error >x : string[] >[0,1].slice(0) : number[] ->[0,1].slice : (start?: number | undefined, end?: number | undefined) => number[] +>[0,1].slice : (start?: number, end?: number) => number[] >[0,1] : number[] >0 : 0 >1 : 1 ->slice : (start?: number | undefined, end?: number | undefined) => number[] +>slice : (start?: number, end?: number) => number[] >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/genericArrayMethods1.types.diff b/testdata/baselines/reference/submodule/compiler/genericArrayMethods1.types.diff deleted file mode 100644 index cec07113d90..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericArrayMethods1.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.genericArrayMethods1.types -+++ new.genericArrayMethods1.types -@@= skipped -3, +3 lines =@@ - var x:string[] = [0,1].slice(0); // this should be an error - >x : string[] - >[0,1].slice(0) : number[] -->[0,1].slice : (start?: number, end?: number) => number[] -+>[0,1].slice : (start?: number | undefined, end?: number | undefined) => number[] - >[0,1] : number[] - >0 : 0 - >1 : 1 -->slice : (start?: number, end?: number) => number[] -+>slice : (start?: number | undefined, end?: number | undefined) => number[] - >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/genericArrayWithoutTypeAnnotation.types b/testdata/baselines/reference/submodule/compiler/genericArrayWithoutTypeAnnotation.types index 0a4179e0c13..5076c6d978e 100644 --- a/testdata/baselines/reference/submodule/compiler/genericArrayWithoutTypeAnnotation.types +++ b/testdata/baselines/reference/submodule/compiler/genericArrayWithoutTypeAnnotation.types @@ -7,7 +7,7 @@ class Bar { >Bar : Bar public getBar(foo: IFoo[]) { ->getBar : (foo: any[]) => void +>getBar : (foo: IFoo[]) => void >foo : any[] } } diff --git a/testdata/baselines/reference/submodule/compiler/genericArrayWithoutTypeAnnotation.types.diff b/testdata/baselines/reference/submodule/compiler/genericArrayWithoutTypeAnnotation.types.diff deleted file mode 100644 index 8079da8b274..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericArrayWithoutTypeAnnotation.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.genericArrayWithoutTypeAnnotation.types -+++ new.genericArrayWithoutTypeAnnotation.types -@@= skipped -6, +6 lines =@@ - >Bar : Bar - - public getBar(foo: IFoo[]) { -->getBar : (foo: IFoo[]) => void -+>getBar : (foo: any[]) => void - >foo : any[] - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall1.types b/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall1.types index fc23bf05152..74a8cf0d938 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall1.types +++ b/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall1.types @@ -2,20 +2,20 @@ === genericCallAtYieldExpressionInGenericCall1.ts === declare const inner: { ->inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } (value: A): { >value : A (): A; [Symbol.iterator](): { ->[Symbol.iterator] : () => { next(...args: readonly any[]): IteratorResult; } +>[Symbol.iterator] : () => { next(...args: ReadonlyArray): IteratorResult; } >Symbol.iterator : unique symbol >Symbol : SymbolConstructor >iterator : unique symbol next(...args: ReadonlyArray): IteratorResult; ->next : (...args: readonly any[]) => IteratorResult +>next : (...args: ReadonlyArray) => IteratorResult >args : readonly any[] }; @@ -36,8 +36,8 @@ outer(function* (value: T) { const result = yield* inner(value); // ok >result : T >yield* inner(value) : T ->inner(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } ->inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>inner(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } +>inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } >value : T }); @@ -49,15 +49,15 @@ outer(function* (value: T) { >value : T const x = inner(value); ->x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } ->inner(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } ->inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } +>inner(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } +>inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } >value : T const result = yield* x; // ok >result : T >yield* x : T ->x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } }); @@ -85,20 +85,20 @@ outer(function* (value: T) { }); declare const inner3: { ->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } (value: A): { >value : A (): A; [Symbol.iterator](): { ->[Symbol.iterator] : () => { next(...args: readonly any[]): IteratorResult; } +>[Symbol.iterator] : () => { next(...args: ReadonlyArray): IteratorResult; } >Symbol.iterator : unique symbol >Symbol : SymbolConstructor >iterator : unique symbol next(...args: ReadonlyArray): IteratorResult; ->next : (...args: readonly any[]) => IteratorResult +>next : (...args: ReadonlyArray) => IteratorResult >args : readonly any[] }; @@ -120,8 +120,8 @@ const result1 = outer2(function* (value: T) { yield* inner3(value); >yield* inner3(value) : T ->inner3(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } ->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>inner3(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } +>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } >value : T }); @@ -135,14 +135,14 @@ const result2 = outer2(function* (value: T) { >value : T const x = inner3(value); ->x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } ->inner3(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } ->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } +>inner3(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } +>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } >value : T yield* x; >yield* x : T ->x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } }); @@ -164,8 +164,8 @@ outer3(function* (value: T) { yield* inner3(value); >yield* inner3(value) : T ->inner3(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } ->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>inner3(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } +>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } >value : T }); @@ -178,14 +178,14 @@ outer3(function* (value: T) { >value : T const x = inner3(value); ->x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } ->inner3(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } ->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } +>inner3(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } +>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } >value : T yield* x; >yield* x : T ->x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } +>x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } }); diff --git a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall1.types.diff b/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall1.types.diff deleted file mode 100644 index 52406099d64..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall1.types.diff +++ /dev/null @@ -1,140 +0,0 @@ ---- old.genericCallAtYieldExpressionInGenericCall1.types -+++ new.genericCallAtYieldExpressionInGenericCall1.types -@@= skipped -1, +1 lines =@@ - - === genericCallAtYieldExpressionInGenericCall1.ts === - declare const inner: { -->inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - - (value: A): { - >value : A - - (): A; - [Symbol.iterator](): { -->[Symbol.iterator] : () => { next(...args: ReadonlyArray): IteratorResult; } -+>[Symbol.iterator] : () => { next(...args: readonly any[]): IteratorResult; } - >Symbol.iterator : unique symbol - >Symbol : SymbolConstructor - >iterator : unique symbol - - next(...args: ReadonlyArray): IteratorResult; -->next : (...args: ReadonlyArray) => IteratorResult -+>next : (...args: readonly any[]) => IteratorResult - >args : readonly any[] - - }; -@@= skipped -34, +34 lines =@@ - const result = yield* inner(value); // ok - >result : T - >yield* inner(value) : T -->inner(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -->inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>inner(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } -+>inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - >value : T - - }); -@@= skipped -13, +13 lines =@@ - >value : T - - const x = inner(value); -->x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -->inner(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -->inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } -+>inner(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } -+>inner : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - >value : T - - const result = yield* x; // ok - >result : T - >yield* x : T -->x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - - }); - -@@= skipped -36, +36 lines =@@ - }); - - declare const inner3: { -->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - - (value: A): { - >value : A - - (): A; - [Symbol.iterator](): { -->[Symbol.iterator] : () => { next(...args: ReadonlyArray): IteratorResult; } -+>[Symbol.iterator] : () => { next(...args: readonly any[]): IteratorResult; } - >Symbol.iterator : unique symbol - >Symbol : SymbolConstructor - >iterator : unique symbol - - next(...args: ReadonlyArray): IteratorResult; -->next : (...args: ReadonlyArray) => IteratorResult -+>next : (...args: readonly any[]) => IteratorResult - >args : readonly any[] - - }; -@@= skipped -35, +35 lines =@@ - - yield* inner3(value); - >yield* inner3(value) : T -->inner3(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>inner3(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } -+>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - >value : T - - }); -@@= skipped -15, +15 lines =@@ - >value : T - - const x = inner3(value); -->x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -->inner3(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } -+>inner3(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } -+>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - >value : T - - yield* x; - >yield* x : T -->x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - - }); - -@@= skipped -29, +29 lines =@@ - - yield* inner3(value); - >yield* inner3(value) : T -->inner3(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>inner3(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } -+>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - >value : T - - }); -@@= skipped -14, +14 lines =@@ - >value : T - - const x = inner3(value); -->x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -->inner3(value) : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -->inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } -+>inner3(value) : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } -+>inner3 : (value: A) => { (): A; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - >value : T - - yield* x; - >yield* x : T -->x : { (): T; [Symbol.iterator](): { next(...args: ReadonlyArray): IteratorResult; }; } -+>x : { (): T; [Symbol.iterator](): { next(...args: readonly any[]): IteratorResult; }; } - - }); diff --git a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall2.types b/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall2.types index 447899d560f..9f458067a45 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall2.types +++ b/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall2.types @@ -3,13 +3,13 @@ === genericCallAtYieldExpressionInGenericCall2.ts === interface Effect { [Symbol.iterator](): { ->[Symbol.iterator] : () => { next(...args: readonly any[]): IteratorResult; } +>[Symbol.iterator] : () => { next(...args: ReadonlyArray): IteratorResult; } >Symbol.iterator : unique symbol >Symbol : SymbolConstructor >iterator : unique symbol next(...args: ReadonlyArray): IteratorResult; ->next : (...args: readonly any[]) => IteratorResult +>next : (...args: ReadonlyArray) => IteratorResult >args : readonly any[] }; @@ -35,7 +35,7 @@ declare const offer: { }; declare function fn>( ->fn : (body: (...args: Args) => Generator) => (...args: Args) => any +>fn : >(body: (...args: Args) => Generator) => (...args: Args) => any body: (...args: Args) => Generator, >body : (...args: Args) => Generator @@ -46,7 +46,7 @@ declare function fn>( fn(function* (queue: Enqueue, value: T) { >fn(function* (queue: Enqueue, value: T) { yield* offer(queue, value);}) : (queue: Enqueue, value: T) => any ->fn : (body: (...args: Args) => Generator) => (...args: Args) => any +>fn : >(body: (...args: Args) => Generator) => (...args: Args) => any >function* (queue: Enqueue, value: T) { yield* offer(queue, value);} : (queue: Enqueue, value: T) => Generator >queue : Enqueue >value : T @@ -62,7 +62,7 @@ fn(function* (queue: Enqueue, value: T) { fn(function* (queue: Enqueue, value: T) { >fn(function* (queue: Enqueue, value: T) { const x = offer(queue, value); yield* x;}) : (queue: Enqueue, value: T) => any ->fn : (body: (...args: Args) => Generator) => (...args: Args) => any +>fn : >(body: (...args: Args) => Generator) => (...args: Args) => any >function* (queue: Enqueue, value: T) { const x = offer(queue, value); yield* x;} : (queue: Enqueue, value: T) => Generator >queue : Enqueue >value : T diff --git a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall2.types.diff b/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall2.types.diff deleted file mode 100644 index ee77b0af814..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall2.types.diff +++ /dev/null @@ -1,45 +0,0 @@ ---- old.genericCallAtYieldExpressionInGenericCall2.types -+++ new.genericCallAtYieldExpressionInGenericCall2.types -@@= skipped -2, +2 lines =@@ - === genericCallAtYieldExpressionInGenericCall2.ts === - interface Effect { - [Symbol.iterator](): { -->[Symbol.iterator] : () => { next(...args: ReadonlyArray): IteratorResult; } -+>[Symbol.iterator] : () => { next(...args: readonly any[]): IteratorResult; } - >Symbol.iterator : unique symbol - >Symbol : SymbolConstructor - >iterator : unique symbol - - next(...args: ReadonlyArray): IteratorResult; -->next : (...args: ReadonlyArray) => IteratorResult -+>next : (...args: readonly any[]) => IteratorResult - >args : readonly any[] - - }; -@@= skipped -32, +32 lines =@@ - }; - - declare function fn>( -->fn : >(body: (...args: Args) => Generator) => (...args: Args) => any -+>fn : (body: (...args: Args) => Generator) => (...args: Args) => any - - body: (...args: Args) => Generator, - >body : (...args: Args) => Generator -@@= skipped -11, +11 lines =@@ - - fn(function* (queue: Enqueue, value: T) { - >fn(function* (queue: Enqueue, value: T) { yield* offer(queue, value);}) : (queue: Enqueue, value: T) => any -->fn : >(body: (...args: Args) => Generator) => (...args: Args) => any -+>fn : (body: (...args: Args) => Generator) => (...args: Args) => any - >function* (queue: Enqueue, value: T) { yield* offer(queue, value);} : (queue: Enqueue, value: T) => Generator - >queue : Enqueue - >value : T -@@= skipped -16, +16 lines =@@ - - fn(function* (queue: Enqueue, value: T) { - >fn(function* (queue: Enqueue, value: T) { const x = offer(queue, value); yield* x;}) : (queue: Enqueue, value: T) => any -->fn : >(body: (...args: Args) => Generator) => (...args: Args) => any -+>fn : (body: (...args: Args) => Generator) => (...args: Args) => any - >function* (queue: Enqueue, value: T) { const x = offer(queue, value); yield* x;} : (queue: Enqueue, value: T) => Generator - >queue : Enqueue - >value : T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall3.types b/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall3.types index 8e2eb44a523..41d546ff005 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall3.types +++ b/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall3.types @@ -12,7 +12,7 @@ type Success = T extends Micro ? _A : never; interface MicroIterator> { next(...args: ReadonlyArray): IteratorResult>; ->next : (...args: readonly any[]) => IteratorResult> +>next : (...args: ReadonlyArray) => IteratorResult> >args : readonly any[] } @@ -34,7 +34,7 @@ interface Micro { } declare function runPromise(effect: Micro): Promise; ->runPromise : (effect: Micro) => Promise +>runPromise : (effect: Micro) => Promise >effect : Micro declare function gen, AEff>( @@ -71,7 +71,7 @@ declare const traverse: { runPromise( >runPromise( gen(function* () { yield* traverse({ a: 1, b: 2 }, (n) => gen(function* () { return n + 1; }), ); }),) : Promise ->runPromise : (effect: Micro) => Promise +>runPromise : (effect: Micro) => Promise gen(function* () { >gen(function* () { yield* traverse({ a: 1, b: 2 }, (n) => gen(function* () { return n + 1; }), ); }) : Micro diff --git a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall3.types.diff b/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall3.types.diff deleted file mode 100644 index 19c1b51054b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericCallAtYieldExpressionInGenericCall3.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.genericCallAtYieldExpressionInGenericCall3.types -+++ new.genericCallAtYieldExpressionInGenericCall3.types -@@= skipped -11, +11 lines =@@ - - interface MicroIterator> { - next(...args: ReadonlyArray): IteratorResult>; -->next : (...args: ReadonlyArray) => IteratorResult> -+>next : (...args: readonly any[]) => IteratorResult> - >args : readonly any[] - } - -@@= skipped -22, +22 lines =@@ - } - - declare function runPromise(effect: Micro): Promise; -->runPromise : (effect: Micro) => Promise -+>runPromise : (effect: Micro) => Promise - >effect : Micro - - declare function gen, AEff>( -@@= skipped -37, +37 lines =@@ - - runPromise( - >runPromise( gen(function* () { yield* traverse({ a: 1, b: 2 }, (n) => gen(function* () { return n + 1; }), ); }),) : Promise -->runPromise : (effect: Micro) => Promise -+>runPromise : (effect: Micro) => Promise - - gen(function* () { - >gen(function* () { yield* traverse({ a: 1, b: 2 }, (n) => gen(function* () { return n + 1; }), ); }) : Micro \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericCallInferenceConditionalType2.types b/testdata/baselines/reference/submodule/compiler/genericCallInferenceConditionalType2.types index 3b6a156f21e..82dc36c9ccd 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCallInferenceConditionalType2.types +++ b/testdata/baselines/reference/submodule/compiler/genericCallInferenceConditionalType2.types @@ -18,13 +18,13 @@ declare function wrapComponent

( >props : P const WrappedComponent = wrapComponent( ->WrappedComponent : (props: { as?: T | undefined; className?: string | undefined; }) => unknown ->wrapComponent( (props: { as?: T | undefined; className?: string; }) => { return null; },) : (props: { as?: T | undefined; className?: string | undefined; }) => unknown +>WrappedComponent : (props: { as?: T | undefined; className?: string; }) => unknown +>wrapComponent( (props: { as?: T | undefined; className?: string; }) => { return null; },) : (props: { as?: T | undefined; className?: string; }) => unknown >wrapComponent :

(component: (props: P) => unknown) => (props: P) => unknown (props: { ->(props: { as?: T | undefined; className?: string; }) => { return null; } : (props: { as?: T | undefined; className?: string | undefined; }) => null ->props : { as?: T | undefined; className?: string | undefined; } +>(props: { as?: T | undefined; className?: string; }) => { return null; } : (props: { as?: T | undefined; className?: string; }) => null +>props : { as?: T | undefined; className?: string; } as?: T | undefined; >as : T | undefined @@ -38,8 +38,8 @@ const WrappedComponent = wrapComponent( ); type RetrievedProps = ComponentProps; ->RetrievedProps : { as?: string | undefined; className?: string | undefined; } ->WrappedComponent : (props: { as?: T | undefined; className?: string | undefined; }) => unknown +>RetrievedProps : { as?: string | undefined; className?: string; } +>WrappedComponent : (props: { as?: T | undefined; className?: string; }) => unknown declare const f: (f: (x: T) => unknown) => (x: T) => unknown >f : (f: (x: T) => unknown) => (x: T) => unknown diff --git a/testdata/baselines/reference/submodule/compiler/genericCallInferenceConditionalType2.types.diff b/testdata/baselines/reference/submodule/compiler/genericCallInferenceConditionalType2.types.diff deleted file mode 100644 index 03adc6776d0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericCallInferenceConditionalType2.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.genericCallInferenceConditionalType2.types -+++ new.genericCallInferenceConditionalType2.types -@@= skipped -17, +17 lines =@@ - >props : P - - const WrappedComponent = wrapComponent( -->WrappedComponent : (props: { as?: T | undefined; className?: string; }) => unknown -->wrapComponent( (props: { as?: T | undefined; className?: string; }) => { return null; },) : (props: { as?: T | undefined; className?: string; }) => unknown -+>WrappedComponent : (props: { as?: T | undefined; className?: string | undefined; }) => unknown -+>wrapComponent( (props: { as?: T | undefined; className?: string; }) => { return null; },) : (props: { as?: T | undefined; className?: string | undefined; }) => unknown - >wrapComponent :

(component: (props: P) => unknown) => (props: P) => unknown - - (props: { -->(props: { as?: T | undefined; className?: string; }) => { return null; } : (props: { as?: T | undefined; className?: string; }) => null -->props : { as?: T | undefined; className?: string; } -+>(props: { as?: T | undefined; className?: string; }) => { return null; } : (props: { as?: T | undefined; className?: string | undefined; }) => null -+>props : { as?: T | undefined; className?: string | undefined; } - - as?: T | undefined; - >as : T | undefined -@@= skipped -20, +20 lines =@@ - ); - - type RetrievedProps = ComponentProps; -->RetrievedProps : { as?: string | undefined; className?: string; } -->WrappedComponent : (props: { as?: T | undefined; className?: string; }) => unknown -+>RetrievedProps : { as?: string | undefined; className?: string | undefined; } -+>WrappedComponent : (props: { as?: T | undefined; className?: string | undefined; }) => unknown - - declare const f: (f: (x: T) => unknown) => (x: T) => unknown - >f : (f: (x: T) => unknown) => (x: T) => unknown \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericCallInferenceInConditionalTypes1.types b/testdata/baselines/reference/submodule/compiler/genericCallInferenceInConditionalTypes1.types index 303a9ff827c..b3b86f9ebc4 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCallInferenceInConditionalTypes1.types +++ b/testdata/baselines/reference/submodule/compiler/genericCallInferenceInConditionalTypes1.types @@ -34,7 +34,7 @@ type ComponentPropsWithoutRef> = PropsWithoutRef>; declare function forwardRef( ->forwardRef : (component: (props: P, ref: Ref) => unknown) => (props: P & { ref?: Ref | undefined; }) => unknown +>forwardRef : (component: (props: P, ref: Ref) => unknown) => (props: P & { ref?: Ref; }) => unknown component: (props: P, ref: Ref) => unknown, >component : (props: P, ref: Ref) => unknown @@ -42,16 +42,16 @@ declare function forwardRef( >ref : Ref ): (props: P & { ref?: Ref }) => unknown; ->props : P & { ref?: Ref | undefined; } +>props : P & { ref?: Ref; } >ref : Ref | undefined const ComponentWithForwardRef = forwardRef( >ComponentWithForwardRef : >(props: PropsWithoutRef> & { ref?: Ref | undefined; }) => unknown >forwardRef( >( props: ComponentPropsWithoutRef, ref: Ref, ) => { return null; },) : >(props: PropsWithoutRef> & { ref?: Ref | undefined; }) => unknown ->forwardRef : (component: (props: P, ref: Ref) => unknown) => (props: P & { ref?: Ref | undefined; }) => unknown +>forwardRef : (component: (props: P, ref: Ref) => unknown) => (props: P & { ref?: Ref; }) => unknown >( ->>( props: ComponentPropsWithoutRef, ref: Ref, ) => { return null; } : >(props: PropsWithoutRef>, ref: Ref) => null +>>( props: ComponentPropsWithoutRef, ref: Ref, ) => { return null; } : >(props: ComponentPropsWithoutRef, ref: Ref) => null props: ComponentPropsWithoutRef, >props : PropsWithoutRef> @@ -86,10 +86,10 @@ type Result2 = Test<{ component: typeof ComponentWithForwardRef }>; // no `T` le // same as ComponentWithForwardRef above but using a resolved signature instead of a direct inferred result of `forwardRef` declare const ComponentWithForwardRef2: >( ->ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown +>ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown props: PropsWithoutRef> & { ->props : PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; } +>props : PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; } className?: string; >className : string | undefined @@ -105,11 +105,11 @@ declare const ComponentWithForwardRef2: >( ) => unknown; type Result3 = ComponentProps; ->Result3 : Omit & { className?: string | undefined; as?: FunctionComponent | undefined; } & { ref?: Ref | undefined; } ->ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown +>Result3 : Omit & { className?: string; as?: FunctionComponent | undefined; } & { ref?: Ref | undefined; } +>ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown type Result4 = Test<{ component: typeof ComponentWithForwardRef2 }>; ->Result4 : Omit & { className?: string | undefined; as?: FunctionComponent | undefined; } & { ref?: Ref | undefined; } ->component : >(props: PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown ->ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown +>Result4 : Omit & { className?: string; as?: FunctionComponent | undefined; } & { ref?: Ref | undefined; } +>component : >(props: PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown +>ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown diff --git a/testdata/baselines/reference/submodule/compiler/genericCallInferenceInConditionalTypes1.types.diff b/testdata/baselines/reference/submodule/compiler/genericCallInferenceInConditionalTypes1.types.diff deleted file mode 100644 index d581065c3c3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericCallInferenceInConditionalTypes1.types.diff +++ /dev/null @@ -1,60 +0,0 @@ ---- old.genericCallInferenceInConditionalTypes1.types -+++ new.genericCallInferenceInConditionalTypes1.types -@@= skipped -33, +33 lines =@@ - PropsWithoutRef>; - - declare function forwardRef( -->forwardRef : (component: (props: P, ref: Ref) => unknown) => (props: P & { ref?: Ref; }) => unknown -+>forwardRef : (component: (props: P, ref: Ref) => unknown) => (props: P & { ref?: Ref | undefined; }) => unknown - - component: (props: P, ref: Ref) => unknown, - >component : (props: P, ref: Ref) => unknown -@@= skipped -8, +8 lines =@@ - >ref : Ref - - ): (props: P & { ref?: Ref }) => unknown; -->props : P & { ref?: Ref; } -+>props : P & { ref?: Ref | undefined; } - >ref : Ref | undefined - - const ComponentWithForwardRef = forwardRef( - >ComponentWithForwardRef : >(props: PropsWithoutRef> & { ref?: Ref | undefined; }) => unknown - >forwardRef( >( props: ComponentPropsWithoutRef, ref: Ref, ) => { return null; },) : >(props: PropsWithoutRef> & { ref?: Ref | undefined; }) => unknown -->forwardRef : (component: (props: P, ref: Ref) => unknown) => (props: P & { ref?: Ref; }) => unknown -+>forwardRef : (component: (props: P, ref: Ref) => unknown) => (props: P & { ref?: Ref | undefined; }) => unknown - - >( -->>( props: ComponentPropsWithoutRef, ref: Ref, ) => { return null; } : >(props: ComponentPropsWithoutRef, ref: Ref) => null -+>>( props: ComponentPropsWithoutRef, ref: Ref, ) => { return null; } : >(props: PropsWithoutRef>, ref: Ref) => null - - props: ComponentPropsWithoutRef, - >props : PropsWithoutRef> -@@= skipped -44, +44 lines =@@ - - // same as ComponentWithForwardRef above but using a resolved signature instead of a direct inferred result of `forwardRef` - declare const ComponentWithForwardRef2: >( -->ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown -+>ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown - - props: PropsWithoutRef> & { -->props : PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; } -+>props : PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; } - - className?: string; - >className : string | undefined -@@= skipped -19, +19 lines =@@ - ) => unknown; - - type Result3 = ComponentProps; -->Result3 : Omit & { className?: string; as?: FunctionComponent | undefined; } & { ref?: Ref | undefined; } -->ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown -+>Result3 : Omit & { className?: string | undefined; as?: FunctionComponent | undefined; } & { ref?: Ref | undefined; } -+>ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown - - type Result4 = Test<{ component: typeof ComponentWithForwardRef2 }>; -->Result4 : Omit & { className?: string; as?: FunctionComponent | undefined; } & { ref?: Ref | undefined; } -->component : >(props: PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown -->ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown -+>Result4 : Omit & { className?: string | undefined; as?: FunctionComponent | undefined; } & { ref?: Ref | undefined; } -+>component : >(props: PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown -+>ComponentWithForwardRef2 : >(props: PropsWithoutRef> & { className?: string | undefined; as?: T | undefined; } & { ref?: Ref | undefined; }) => unknown diff --git a/testdata/baselines/reference/submodule/compiler/genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types b/testdata/baselines/reference/submodule/compiler/genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types index 48c7125d570..c6a517dc1a0 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types +++ b/testdata/baselines/reference/submodule/compiler/genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types @@ -32,7 +32,7 @@ interface Effect extends Variance {} declare const succeed: (value: A) => Effect; ->succeed : (value: A) => Effect +>succeed : (value: A) => Effect >value : A type F = Y extends { _type: infer Z } @@ -53,7 +53,7 @@ type ProxyMap = { }; declare const implement: () => , X>( ->implement : () => (x: (...i: I) => X) => (...i: I) => F +>implement : () => , X>(x: (...i: I) => X) => (...i: I) => F x: (...i: I) => X, >x : (...i: I) => X @@ -68,12 +68,12 @@ class XXX { log = implement()((n: N) => succeed(n)); >log : (n: N) => F, this> >implement()((n: N) => succeed(n)) : (n: N) => F, this> ->implement() : (x: (...i: I) => X) => (...i: I) => F ->implement : () => (x: (...i: I) => X) => (...i: I) => F +>implement() : , X>(x: (...i: I) => X) => (...i: I) => F +>implement : () => , X>(x: (...i: I) => X) => (...i: I) => F >(n: N) => succeed(n) : (n: N) => Effect >n : N >succeed(n) : Effect ->succeed : (value: A) => Effect +>succeed : (value: A) => Effect >n : N } diff --git a/testdata/baselines/reference/submodule/compiler/genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types.diff b/testdata/baselines/reference/submodule/compiler/genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types.diff index 42b5a5f83bd..8738a5f6825 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types.diff +++ b/testdata/baselines/reference/submodule/compiler/genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types.diff @@ -1,40 +1,6 @@ --- old.genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types +++ new.genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.types -@@= skipped -31, +31 lines =@@ - extends Variance {} - - declare const succeed: (value: A) => Effect; -->succeed : (value: A) => Effect -+>succeed : (value: A) => Effect - >value : A - - type F = Y extends { _type: infer Z } -@@= skipped -21, +21 lines =@@ - }; - - declare const implement: () => , X>( -->implement : () => , X>(x: (...i: I) => X) => (...i: I) => F -+>implement : () => (x: (...i: I) => X) => (...i: I) => F - - x: (...i: I) => X, - >x : (...i: I) => X -@@= skipped -15, +15 lines =@@ - log = implement()((n: N) => succeed(n)); - >log : (n: N) => F, this> - >implement()((n: N) => succeed(n)) : (n: N) => F, this> -->implement() : , X>(x: (...i: I) => X) => (...i: I) => F -->implement : () => , X>(x: (...i: I) => X) => (...i: I) => F -+>implement() : (x: (...i: I) => X) => (...i: I) => F -+>implement : () => (x: (...i: I) => X) => (...i: I) => F - >(n: N) => succeed(n) : (n: N) => Effect - >n : N - >succeed(n) : Effect -->succeed : (value: A) => Effect -+>succeed : (value: A) => Effect - >n : N - } - -@@= skipped -16, +16 lines =@@ +@@= skipped -83, +83 lines =@@ >outer : ProxyMap export const a = inner.log(100); // Effect<100, never, never> diff --git a/testdata/baselines/reference/submodule/compiler/genericCallOnMemberReturningClosedOverObject.types b/testdata/baselines/reference/submodule/compiler/genericCallOnMemberReturningClosedOverObject.types index d57c25479ad..20603cd506b 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCallOnMemberReturningClosedOverObject.types +++ b/testdata/baselines/reference/submodule/compiler/genericCallOnMemberReturningClosedOverObject.types @@ -8,17 +8,17 @@ function example() { let x = { >x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } ->{ foo: (t2: T2) => x, bar: (t1: T1) => x, } : { foo: (t2: T2) => { foo: any; bar: (t1: T1) => any; }; bar: (t1: T1) => { foo: (t2: T2) => any; bar: any; }; } +>{ foo: (t2: T2) => x, bar: (t1: T1) => x, } : { foo: (t2: T2) => { foo: (t2: T2) => any; bar: (t1: T1) => any; }; bar: (t1: T1) => { 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: (t2: T2) => any; bar: (t1: T1) => any; } +>(t2: T2) => x : (t2: T2) => { foo: (t2: T2) => any; bar: (t1: T1) => any; } >t2 : T2 >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: (t1: T1) => any; } +>(t1: T1) => x : (t1: T1) => { foo: (t2: T2) => any; bar: (t1: T1) => any; } >t1 : T1 >x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } diff --git a/testdata/baselines/reference/submodule/compiler/genericCallOnMemberReturningClosedOverObject.types.diff b/testdata/baselines/reference/submodule/compiler/genericCallOnMemberReturningClosedOverObject.types.diff index 57da0c9469f..02c2e9c6845 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCallOnMemberReturningClosedOverObject.types.diff +++ b/testdata/baselines/reference/submodule/compiler/genericCallOnMemberReturningClosedOverObject.types.diff @@ -5,7 +5,20 @@ 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; } -+>{ foo: (t2: T2) => x, bar: (t1: T1) => x, } : { foo: (t2: T2) => { foo: any; bar: (t1: T1) => any; }; bar: (t1: T1) => { foo: (t2: T2) => any; bar: any; }; } ++>{ foo: (t2: T2) => x, bar: (t1: T1) => x, } : { foo: (t2: T2) => { foo: (t2: T2) => any; bar: (t1: T1) => any; }; bar: (t1: T1) => { foo: (t2: T2) => any; bar: (t1: T1) => any; }; } foo: (t2: T2) => x, - >foo : (t2: T2) => { foo: any; bar: (t1: T1) => any; } \ No newline at end of file +->foo : (t2: T2) => { foo: any; bar: (t1: T1) => any; } +->(t2: T2) => x : (t2: T2) => { foo: any; bar: (t1: T1) => any; } ++>foo : (t2: T2) => { foo: (t2: T2) => any; bar: (t1: T1) => any; } ++>(t2: T2) => x : (t2: T2) => { foo: (t2: T2) => any; bar: (t1: T1) => any; } + >t2 : T2 + >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: (t1: T1) => any; } ++>(t1: T1) => x : (t1: T1) => { foo: (t2: T2) => any; bar: (t1: T1) => any; } + >t1 : T1 + >x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } diff --git a/testdata/baselines/reference/submodule/compiler/genericCapturingFunctionNarrowing.types b/testdata/baselines/reference/submodule/compiler/genericCapturingFunctionNarrowing.types index 499906cf510..0778b7c7568 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCapturingFunctionNarrowing.types +++ b/testdata/baselines/reference/submodule/compiler/genericCapturingFunctionNarrowing.types @@ -2,7 +2,7 @@ === genericCapturingFunctionNarrowing.ts === function needsToNarrowTheType(thing: First | SubFirst | SubFirstMore | Second) { ->needsToNarrowTheType : (thing: First | Second | SubFirst | SubFirstMore) => void +>needsToNarrowTheType : (thing: First | SubFirst | SubFirstMore | Second) => void >foo : string >bar : string >other : string diff --git a/testdata/baselines/reference/submodule/compiler/genericCapturingFunctionNarrowing.types.diff b/testdata/baselines/reference/submodule/compiler/genericCapturingFunctionNarrowing.types.diff deleted file mode 100644 index 910cf1bcd81..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericCapturingFunctionNarrowing.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.genericCapturingFunctionNarrowing.types -+++ new.genericCapturingFunctionNarrowing.types -@@= skipped -1, +1 lines =@@ - - === genericCapturingFunctionNarrowing.ts === - function needsToNarrowTheType(thing: First | SubFirst | SubFirstMore | Second) { -->needsToNarrowTheType : (thing: First | SubFirst | SubFirstMore | Second) => void -+>needsToNarrowTheType : (thing: First | Second | SubFirst | SubFirstMore) => void - >foo : string - >bar : string - >other : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericChainedCalls.types b/testdata/baselines/reference/submodule/compiler/genericChainedCalls.types index 773ef9f817e..9ef3e544b42 100644 --- a/testdata/baselines/reference/submodule/compiler/genericChainedCalls.types +++ b/testdata/baselines/reference/submodule/compiler/genericChainedCalls.types @@ -24,9 +24,9 @@ var r1 = v1.func(num => num.toString()) >num => num.toString() : (num: number) => string >num : number >num.toString() : string ->num.toString : (radix?: number | undefined) => string +>num.toString : (radix?: number) => string >num : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string .func(str => str.length) // error, number doesn't have a length >func : (callback: (value: number) => U) => I1 @@ -41,9 +41,9 @@ var r1 = v1.func(num => num.toString()) >num => num.toString() : (num: number) => string >num : number >num.toString() : string ->num.toString : (radix?: number | undefined) => string +>num.toString : (radix?: number) => string >num : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string var s1 = v1.func(num => num.toString()) >s1 : I1 @@ -54,9 +54,9 @@ var s1 = v1.func(num => num.toString()) >num => num.toString() : (num: number) => string >num : number >num.toString() : string ->num.toString : (radix?: number | undefined) => string +>num.toString : (radix?: number) => string >num : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string var s2 = s1.func(str => str.length) // should also error >s2 : I1 @@ -79,7 +79,7 @@ var s3 = s2.func(num => num.toString()) >num => num.toString() : (num: number) => string >num : number >num.toString() : string ->num.toString : (radix?: number | undefined) => string +>num.toString : (radix?: number) => string >num : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/genericChainedCalls.types.diff b/testdata/baselines/reference/submodule/compiler/genericChainedCalls.types.diff deleted file mode 100644 index 8f627523018..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericChainedCalls.types.diff +++ /dev/null @@ -1,47 +0,0 @@ ---- old.genericChainedCalls.types -+++ new.genericChainedCalls.types -@@= skipped -23, +23 lines =@@ - >num => num.toString() : (num: number) => string - >num : number - >num.toString() : string -->num.toString : (radix?: number) => string -+>num.toString : (radix?: number | undefined) => string - >num : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - .func(str => str.length) // error, number doesn't have a length - >func : (callback: (value: number) => U) => I1 -@@= skipped -17, +17 lines =@@ - >num => num.toString() : (num: number) => string - >num : number - >num.toString() : string -->num.toString : (radix?: number) => string -+>num.toString : (radix?: number | undefined) => string - >num : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - var s1 = v1.func(num => num.toString()) - >s1 : I1 -@@= skipped -13, +13 lines =@@ - >num => num.toString() : (num: number) => string - >num : number - >num.toString() : string -->num.toString : (radix?: number) => string -+>num.toString : (radix?: number | undefined) => string - >num : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - var s2 = s1.func(str => str.length) // should also error - >s2 : I1 -@@= skipped -25, +25 lines =@@ - >num => num.toString() : (num: number) => string - >num : number - >num.toString() : string -->num.toString : (radix?: number) => string -+>num.toString : (radix?: number | undefined) => string - >num : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/genericCombinators2.types b/testdata/baselines/reference/submodule/compiler/genericCombinators2.types index f6a0af25d33..a5b79d30d61 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCombinators2.types +++ b/testdata/baselines/reference/submodule/compiler/genericCombinators2.types @@ -44,9 +44,9 @@ var rf1 = (x: number, y: string) => { return x.toFixed() }; >x : number >y : string >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string var r5a = _.map(c2, (x, y) => { return x.toFixed() }); >r5a : Collection @@ -59,9 +59,9 @@ var r5a = _.map(c2, (x, y) => { return x.toFixed() }); >x : number >y : string >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string var r5b = _.map(c2, rf1); >r5b : Collection diff --git a/testdata/baselines/reference/submodule/compiler/genericCombinators2.types.diff b/testdata/baselines/reference/submodule/compiler/genericCombinators2.types.diff index 353c31ea65a..f5437219d72 100644 --- a/testdata/baselines/reference/submodule/compiler/genericCombinators2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/genericCombinators2.types.diff @@ -16,28 +16,4 @@ +>map : { (c: Collection, f: (x: T, y: U) => any): Collection; (c: Collection, f: (x: T, y: U) => V): Collection; } >c : Collection >f : (x: T, y: U) => V - >x : T -@@= skipped -26, +26 lines =@@ - >x : number - >y : string - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - var r5a = _.map(c2, (x, y) => { return x.toFixed() }); - >r5a : Collection -@@= skipped -15, +15 lines =@@ - >x : number - >y : string - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - var r5b = _.map(c2, rf1); - >r5b : Collection \ No newline at end of file + >x : T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericDefaults.types b/testdata/baselines/reference/submodule/compiler/genericDefaults.types index 2d92fb5f1fb..251f4961a5a 100644 --- a/testdata/baselines/reference/submodule/compiler/genericDefaults.types +++ b/testdata/baselines/reference/submodule/compiler/genericDefaults.types @@ -44,362 +44,362 @@ declare const x: any; // function without type parameters declare function f00(a?: A): A; ->f00 : (a?: A | undefined) => A +>f00 : (a?: A) => A >a : A | undefined // no inference f00(); >f00() : A ->f00 : (a?: A | undefined) => A +>f00 : (a?: A) => A f00(a); >f00(a) : A ->f00 : (a?: A | undefined) => A +>f00 : (a?: A) => A >a : A // function with a type parameter without a default declare function f01(a?: T): T; ->f01 : (a?: T | undefined) => T +>f01 : (a?: T) => T >a : T | undefined // inference f01(); >f01() : unknown ->f01 : (a?: T | undefined) => T +>f01 : (a?: T) => T f01(a); >f01(a) : A ->f01 : (a?: T | undefined) => T +>f01 : (a?: T) => T >a : A // no inference, fully supplied f01(); >f01() : A ->f01 : (a?: T | undefined) => T +>f01 : (a?: T) => T f01(a); >f01(a) : A ->f01 : (a?: T | undefined) => T +>f01 : (a?: T) => T >a : A // function with a type paramter with a default declare function f02(a?: T): T; ->f02 : (a?: T | undefined) => T +>f02 : (a?: T) => T >a : T | undefined // inference f02(); >f02() : A ->f02 : (a?: T | undefined) => T +>f02 : (a?: T) => T f02(a); >f02(a) : A ->f02 : (a?: T | undefined) => T +>f02 : (a?: T) => T >a : A f02(b); >f02(b) : B ->f02 : (a?: T | undefined) => T +>f02 : (a?: T) => T >b : B // no inference, fully supplied f02(); >f02() : A ->f02 : (a?: T | undefined) => T +>f02 : (a?: T) => T f02(a); >f02(a) : A ->f02 : (a?: T | undefined) => T +>f02 : (a?: T) => T >a : A f02(); >f02() : B ->f02 : (a?: T | undefined) => T +>f02 : (a?: T) => T f02(b); >f02(b) : B ->f02 : (a?: T | undefined) => T +>f02 : (a?: T) => T >b : B // function with a type parameter with a default that refers to itself declare function f03(a?: T): T; ->f03 : (a?: T | undefined) => T +>f03 : (a?: T) => T >a : T | undefined // inference f03(); >f03() : unknown ->f03 : (a?: T | undefined) => T +>f03 : (a?: T) => T f03(a); >f03(a) : A ->f03 : (a?: T | undefined) => T +>f03 : (a?: T) => T >a : A f03(b); >f03(b) : B ->f03 : (a?: T | undefined) => T +>f03 : (a?: T) => T >b : B // no inference, fully supplied f03(); >f03() : A ->f03 : (a?: T | undefined) => T +>f03 : (a?: T) => T f03(a); >f03(a) : A ->f03 : (a?: T | undefined) => T +>f03 : (a?: T) => T >a : A f03(); >f03() : B ->f03 : (a?: T | undefined) => T +>f03 : (a?: T) => T f03(b); >f03(b) : B ->f03 : (a?: T | undefined) => T +>f03 : (a?: T) => T >b : B // function with a type paramter without a default and a type parameter with a default declare function f04(a?: T, b?: U): [T, U]; ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f04(); >f04() : [unknown, B] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] f04(a); >f04(a) : [A, B] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : A f04(a, b); >f04(a, b) : [A, B] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : A >b : B f04(a, c); >f04(a, c) : [A, C] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : A >c : C // no inference, partially supplied f04(); >f04() : [A, B] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] f04(a); >f04(a) : [A, B] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : A f04(a, b); >f04(a, b) : [A, B] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : A >b : B // no inference, fully supplied f04(); >f04() : [A, B] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] f04(a); >f04(a) : [A, B] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : A f04(a, b); >f04(a, b) : [A, B] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : A >b : B f04(); >f04() : [A, C] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] f04(a); >f04(a) : [A, C] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : A f04(a, c); >f04(a, c) : [A, C] ->f04 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f04 : (a?: T, b?: U) => [T, U] >a : A >c : C // function with a type parameter without a default and a type parameter with a default that refers to an earlier type parameter declare function f05(a?: T, b?: U): [T, U]; ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f05(); >f05() : [unknown, unknown] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] f05(a); >f05(a) : [A, A] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] >a : A f05(a, a); >f05(a, a) : [A, A] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] >a : A >a : A f05(a, b); >f05(a, b) : [A, B] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] >a : A >b : B // no inference, partially supplied f05(); >f05() : [A, A] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] f05(a); >f05(a) : [A, A] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] >a : A f05(a, a); >f05(a, a) : [A, A] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] >a : A >a : A // no inference, fully supplied f05(); >f05() : [A, B] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] f05(a); >f05(a) : [A, B] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] >a : A f05(a, b); >f05(a, b) : [A, B] ->f05 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f05 : (a?: T, b?: U) => [T, U] >a : A >b : B // function with a type parameter with a default that refers to an earlier type parameter with a default declare function f06(a?: T, b?: U): [T, U]; ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f06(); >f06() : [A, A] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] f06(a); >f06(a) : [A, A] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >a : A f06(a, a); >f06(a, a) : [A, A] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >a : A >a : A f06(a, b); >f06(a, b) : [A, B] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >a : A >b : B f06(b, a); >f06(b, a) : [B, A] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >b : B >a : A f06(b, b); >f06(b, b) : [B, B] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >b : B >b : B // no inference, partially supplied f06(); >f06() : [A, A] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] f06(a); >f06(a) : [A, A] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >a : A f06(a, a); >f06(a, a) : [A, A] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >a : A >a : A f06(); >f06() : [B, B] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] f06(b); >f06(b) : [B, B] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >b : B f06(b, b); >f06(b, b) : [B, B] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >b : B >b : B // no inference, fully supplied f06(); >f06() : [A, B] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] f06(a); >f06(a) : [A, B] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >a : A f06(a, b); >f06(a, b) : [A, B] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >a : A >b : B f06(); >f06() : [B, C] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] f06(b); >f06(b) : [B, C] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >b : B f06(b, c); >f06(b, c) : [B, C] ->f06 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f06 : (a?: T, b?: U) => [T, U] >b : B >c : C // function with a type parameter without a default and a type parameter with a default that refers to an earlier type parameter with a default declare function f07(a?: T, b?: U, c?: V): [T, U, V]; ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : T | undefined >b : U | undefined >c : V | undefined @@ -407,44 +407,44 @@ declare function f07(a?: T, b?: U, c?: V): [T, U, V]; // inference f07(); >f07() : [unknown, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] f07(a, b); >f07(a, b) : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f07(a, c); >f07(a, c) : [A, C, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >c : C f07(a, b, b); >f07(a, b, b) : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >b : B f07(a, b, c); >f07(a, b, c) : [A, B, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >c : C f07(a, c, b); >f07(a, c, b) : [A, C, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >c : C >b : B f07(a, c, c); >f07(a, c, c) : [A, C, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >c : C >c : C @@ -452,66 +452,66 @@ f07(a, c, c); // no inference, partially supplied f07(); >f07() : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] f07(a); >f07(a) : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f07(a, b); >f07(a, b) : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f07(a, b, b); >f07(a, b, b) : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >b : B f07(); >f07() : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] f07(a); >f07(a) : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f07(a, b); >f07(a, b) : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f07(a, b, b); >f07(a, b, b) : [A, B, B] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >b : B f07(); >f07() : [A, C, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] f07(a); >f07(a) : [A, C, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f07(a, c); >f07(a, c) : [A, C, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >c : C f07(a, c, c); >f07(a, c, c) : [A, C, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >c : C >c : C @@ -519,468 +519,468 @@ f07(a, c, c); // no inference, fully supplied f07(); >f07() : [A, B, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] f07(a); >f07(a) : [A, B, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f07(a, b); >f07(a, b) : [A, B, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f07(a, b, c); >f07(a, b, c) : [A, B, C] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >c : C f07(); >f07() : [A, C, A] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] f07(a); >f07(a) : [A, C, A] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f07(a, c); >f07(a, c) : [A, C, D] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >c : C f07(a, c, d); >f07(a, c, d) : [A, C, D] ->f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f07 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >c : C >d : D // function with a type parameter with a default that refers to an earlier type parameter with a constraint declare function f08(a?: T, b?: U): [T, U]; ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f08(); >f08() : [A, A] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] f08(a); >f08(a) : [A, A] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] >a : A f08(a, a); >f08(a, a) : [A, A] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] >a : A >a : A f08(a, b); >f08(a, b) : [A, B] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] >a : A >b : B // no inference, partially supplied f08(); >f08() : [A, A] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] f08(a); >f08(a) : [A, A] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] >a : A f08(a, a); >f08(a, a) : [A, A] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] >a : A >a : A // no inference, fully supplied f08(); >f08() : [A, B] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] f08(a); >f08(a) : [A, B] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] >a : A f08(a, b); >f08(a, b) : [A, B] ->f08 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f08 : (a?: T, b?: U) => [T, U] >a : A >b : B // function with a type parameter with a constraint and a default that refers to an earlier type parameter declare function f09(a?: T, b?: U): [T, U]; ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f09(); >f09() : [unknown, unknown] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] f09(a); >f09(a) : [A, A] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] >a : A f09(a, a); >f09(a, a) : [A, A] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] >a : A >a : A f09(a, ab); >f09(a, ab) : [A, AB] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] >a : A >ab : AB // no inference, partially supplied f09(); >f09() : [A, A] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] f09(a); >f09(a) : [A, A] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] >a : A f09(a, a); >f09(a, a) : [A, A] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] >a : A >a : A f09(a, ab); >f09(a, ab) : [A, A] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] >a : A >ab : AB // no inference, fully supplied f09(); >f09() : [A, AB] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] f09(a); >f09(a) : [A, AB] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] >a : A f09(a, ab); >f09(a, ab) : [A, AB] ->f09 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f09 : (a?: T, b?: U) => [T, U] >a : A >ab : AB // function with a type parameter with a constraint and a default that refers to an earlier type parameter with a constraint declare function f10(a?: T, b?: U): [T, U]; ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f10(); >f10() : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] f10(a); >f10(a) : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A f10(a, a); >f10(a, a) : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A >a : A f10(a, ab); >f10(a, ab) : [A, AB] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A >ab : AB // no inference, partially supplied f10(); >f10() : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] f10(a); >f10(a) : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A f10(a, a); >f10(a, a) : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A >a : A f10(a, ab); >f10(a, ab) : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A >ab : AB // no inference, fully supplied f10(); >f10() : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] f10(a); >f10(a) : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A f10(a, a); >f10(a, a) : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A >a : A f10(a, ab); >f10(a, ab) : [A, A] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A >ab : AB f10(); >f10() : [A, AB] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] f10(a); >f10(a) : [A, AB] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A f10(a, ab); >f10(a, ab) : [A, AB] ->f10 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f10 : (a?: T, b?: U) => [T, U] >a : A >ab : AB // function with a type parameter with a default that refers to an earier type parameter in a union declare function f11(a?: T, b?: U): [T, U]; ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f11(); >f11() : [unknown, unknown] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] f11(a); >f11(a) : [A, A | B] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : A f11(a, a); >f11(a, a) : [A, A] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : A >a : A f11(a, b); >f11(a, b) : [A, B] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : A >b : B f11(a, c); >f11(a, c) : [A, C] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : A >c : C // no inference, partially supplied f11(); >f11() : [A, A | B] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] f11(a); >f11(a) : [A, A | B] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : A f11(a, a); >f11(a, a) : [A, A | B] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : A >a : A f11(a, b); >f11(a, b) : [A, A | B] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : A >b : B // no inference, fully supplied f11(); >f11() : [A, C] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] f11(a); >f11(a) : [A, C] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : A f11(a, c); >f11(a, c) : [A, C] ->f11 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f11 : (a?: T, b?: U) => [T, U] >a : A >c : C // function with a type parameter with a default that refers to an earlier type parameter in an intersection declare function f12(a?: T, b?: U): [T, U]; ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f12(); >f12() : [unknown, B] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] f12(a); >f12(a) : [A, A & B] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] >a : A f12(a, a); >f12(a, a) : [A, A] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] >a : A >a : A f12(a, b); >f12(a, b) : [A, B] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] >a : A >b : B f12(a, c); >f12(a, c) : [A, C] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] >a : A >c : C // no inference, partially supplied f12(); >f12() : [A, A & B] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] f12(a); >f12(a) : [A, A & B] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] >a : A f12(a, ab); >f12(a, ab) : [A, A & B] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] >a : A >ab : AB // no inference, fully supplied f12(); >f12() : [A, C] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] f12(a); >f12(a) : [A, C] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] >a : A f12(a, c); >f12(a, c) : [A, C] ->f12 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f12 : (a?: T, b?: U) => [T, U] >a : A >c : C // function with a type parameter with a default that refers to a later type parameter with a default declare function f13(a?: T, b?: U): [T, U]; ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f13(); >f13() : [unknown, B] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] f13(a); >f13(a) : [A, B] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] >a : A f13(a, b); >f13(a, b) : [A, B] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] >a : A >b : B f13(a, c); >f13(a, c) : [A, C] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] >a : A >c : C // no inference, partially supplied f13(); >f13() : [A, B] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] f13(a); >f13(a) : [A, B] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] >a : A f13(a, b); >f13(a, b) : [A, B] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] >a : A >b : B // no inference, fully supplied f13(); >f13() : [A, C] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] f13(a); >f13(a) : [A, C] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] >a : A f13(a, c); >f13(a, c) : [A, C] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] >a : A >c : C f13(a, c); >f13(a, c) : [A, C] ->f13 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f13 : (a?: T, b?: U) => [T, U] >a : A >c : C // function with a type parameter without a default and a type parameter with a default that refers to a later type parameter with a default declare function f14(a?: T, b?: U, c?: V): [T, U, V]; ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : T | undefined >b : U | undefined >c : V | undefined @@ -988,29 +988,29 @@ declare function f14(a?: T, b?: U, c?: V): [T, U, V]; // inference f14(); >f14() : [unknown, unknown, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] f14(a); >f14(a) : [A, unknown, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f14(a, b); >f14(a, b) : [A, B, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f14(a, b, c); >f14(a, b, c) : [A, B, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >c : C f14(a, b, d); >f14(a, b, d) : [A, B, D] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >d : D @@ -1018,44 +1018,44 @@ f14(a, b, d); // no inference, partially supplied f14(); >f14() : [A, any, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] f14(a); >f14(a) : [A, any, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f14(a, b); >f14(a, b) : [A, any, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f14(a, b, c); >f14(a, b, c) : [A, any, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >c : C f14(); >f14() : [A, B, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] f14(a); >f14(a) : [A, B, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f14(a, b); >f14(a, b) : [A, B, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f14(a, b, c); >f14(a, b, c) : [A, B, C] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >c : C @@ -1063,83 +1063,83 @@ f14(a, b, c); // no inference fully supplied f14(); >f14() : [A, B, D] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] f14(a); >f14(a) : [A, B, D] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f14(a, b); >f14(a, b) : [A, B, D] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f14(a, b, d); >f14(a, b, d) : [A, B, D] ->f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f14 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >d : D // function with two type parameters with defaults that mutually refer to each other declare function f15(a?: T, b?: U): [T, U]; ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f15(); >f15() : [unknown, unknown] ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] f15(a); >f15(a) : [A, A] ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] >a : A f15(a, b); >f15(a, b) : [A, B] ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] >a : A >b : B // no inference, partially supplied f15(); >f15() : [A, A] ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] f15(a); >f15(a) : [A, A] ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] >a : A f15(a, a); >f15(a, a) : [A, A] ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] >a : A >a : A // no inference, fully supplied f15(); >f15() : [A, B] ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] f15(a); >f15(a) : [A, B] ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] >a : A f15(a, b); >f15(a, b) : [A, B] ->f15 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f15 : (a?: T, b?: U) => [T, U] >a : A >b : B // function with a type parameter without a default and two type parameters with defaults that mutually refer to each other declare function f16(a?: T, b?: U, c?: V): [T, U, V]; ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : T | undefined >b : U | undefined >c : V | undefined @@ -1147,22 +1147,22 @@ declare function f16(a?: T, b?: U, c?: V): [T, U, V]; // no inference f16(); >f16() : [unknown, unknown, unknown] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] f16(a); >f16(a) : [A, unknown, unknown] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f16(a, b); >f16(a, b) : [A, B, B] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f16(a, b, b); >f16(a, b, b) : [A, B, B] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >b : B @@ -1170,44 +1170,44 @@ f16(a, b, b); // no inference, partially supplied f16(); >f16() : [A, any, any] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] f16(a); >f16(a) : [A, any, any] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f16(a, b); >f16(a, b) : [A, any, any] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f16(a, b, b); >f16(a, b, b) : [A, any, any] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >b : B f16(); >f16() : [A, B, B] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] f16(a); >f16(a) : [A, B, B] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f16(a, b); >f16(a, b) : [A, B, B] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f16(a, b, b); >f16(a, b, b) : [A, B, B] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >b : B @@ -1215,101 +1215,101 @@ f16(a, b, b); // no inference, fully supplied f16(); >f16() : [A, B, D] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] f16(a); >f16(a) : [A, B, D] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f16(a, b); >f16(a, b) : [A, B, D] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f16(a, b, d); >f16(a, b, d) : [A, B, D] ->f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f16 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >d : D // function with a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in a union declare function f17(a?: T, b?: U): [T, U]; ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f17(); >f17() : [unknown, unknown] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] f17(a); >f17(a) : [A, A | B] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : A f17(a, a); >f17(a, a) : [A, A] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : A >a : A f17(a, b); >f17(a, b) : [A, B] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : A >b : B f17(a, c); >f17(a, c) : [A, C] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : A >c : C // no inference, partially supplied f17(); >f17() : [A, A | B] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] f17(a); >f17(a) : [A, A | B] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : A f17(a, a); >f17(a, a) : [A, A | B] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : A >a : A f17(a, b); >f17(a, b) : [A, A | B] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : A >b : B // no inference, fully supplied f17(); >f17() : [A, C] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] f17(a); >f17(a) : [A, C] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : A f17(a, c); >f17(a, c) : [A, C] ->f17 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f17 : (a?: T, b?: U) => [T, U] >a : A >c : C // function with a type parameter without a default and a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in a union declare function f18(a?: T, b?: U, c?: V): [T, U, V]; ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : T | undefined >b : U | undefined >c : V | undefined @@ -1317,29 +1317,29 @@ declare function f18(a?: T, b?: U, c?: V): [T, U, V]; // inference f18(); >f18() : [unknown, unknown, unknown] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] f18(a); >f18(a) : [A, unknown, unknown] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f18(a, b); >f18(a, b) : [A, B, B | C] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f18(a, b, b); >f18(a, b, b) : [A, B, B] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >b : B f18(a, b, c); >f18(a, b, c) : [A, B, C] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >c : C @@ -1347,58 +1347,58 @@ f18(a, b, c); // no inference, partially supplied f18(); >f18() : [A, any, any] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] f18(a); >f18(a) : [A, any, any] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f18(a, b); >f18(a, b) : [A, any, any] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f18(a, b, b); >f18(a, b, b) : [A, any, any] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >b : B f18(a, b, c); >f18(a, b, c) : [A, any, any] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >c : C f18(); >f18() : [A, B, B | C] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] f18(a); >f18(a) : [A, B, B | C] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f18(a, b); >f18(a, b) : [A, B, B | C] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f18(a, b, b); >f18(a, b, b) : [A, B, B | C] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >b : B f18(a, b, c); >f18(a, b, c) : [A, B, B | C] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >c : C @@ -1406,101 +1406,101 @@ f18(a, b, c); // no inference, fully supplied f18(); >f18() : [A, B, D] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] f18(a); >f18(a) : [A, B, D] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f18(a, b); >f18(a, b) : [A, B, D] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f18(a, b, d); >f18(a, b, d) : [A, B, D] ->f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f18 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >d : D // function with a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in an intersection declare function f19(a?: T, b?: U): [T, U]; ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : T | undefined >b : U | undefined // inference f19(); >f19() : [unknown, B] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] f19(a); >f19(a) : [A, A & B] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : A f19(a, a); >f19(a, a) : [A, A] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : A >a : A f19(a, b); >f19(a, b) : [A, B] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : A >b : B f19(a, ab); >f19(a, ab) : [A, AB] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : A >ab : AB f19(a, c); >f19(a, c) : [A, C] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : A >c : C // no inference, partially supplied f19(); >f19() : [A, A & B] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] f19(a); >f19(a) : [A, A & B] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : A f19(a, ab); >f19(a, ab) : [A, A & B] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : A >ab : AB // no inference, fully supplied f19(); >f19() : [A, C] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] f19(a); >f19(a) : [A, C] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : A f19(a, c); >f19(a, c) : [A, C] ->f19 : (a?: T | undefined, b?: U | undefined) => [T, U] +>f19 : (a?: T, b?: U) => [T, U] >a : A >c : C // function with a type parameter without a default and a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in an intersection declare function f20(a?: T, b?: U, c?: V): [T, U, V]; ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : T | undefined >b : U | undefined >c : V | undefined @@ -1508,22 +1508,22 @@ declare function f20(a?: T, b?: U, c?: V): [T, U, V]; // inference f20(); >f20() : [unknown, unknown, C] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] f20(a); >f20(a) : [A, unknown, C] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f20(a, b); >f20(a, b) : [A, B, B & C] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f20(a, b, c); >f20(a, b, c) : [A, B, C] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >c : C @@ -1531,44 +1531,44 @@ f20(a, b, c); // no inference, partially supplied f20(); >f20() : [A, any, any] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] f20(a); >f20(a) : [A, any, any] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f20(a, b); >f20(a, b) : [A, any, any] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f20(a, b, bc); >f20(a, b, bc) : [A, any, any] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >bc : BC f20(); >f20() : [A, B, B & C] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] f20(a); >f20(a) : [A, B, B & C] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f20(a, b); >f20(a, b) : [A, B, B & C] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f20(a, b, bc); >f20(a, b, bc) : [A, B, B & C] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >bc : BC @@ -1576,22 +1576,22 @@ f20(a, b, bc); // no inference, fully supplied f20(); >f20() : [A, B, D] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] f20(a); >f20(a) : [A, B, D] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A f20(a, b); >f20(a, b) : [A, B, D] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B f20(a, b, d); >f20(a, b, d) : [A, B, D] ->f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] +>f20 : (a?: T, b?: U, c?: V) => [T, U, V] >a : A >b : B >d : D diff --git a/testdata/baselines/reference/submodule/compiler/genericDefaults.types.diff b/testdata/baselines/reference/submodule/compiler/genericDefaults.types.diff deleted file mode 100644 index 3be7ab596de..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericDefaults.types.diff +++ /dev/null @@ -1,1837 +0,0 @@ ---- old.genericDefaults.types -+++ new.genericDefaults.types -@@= skipped -43, +43 lines =@@ - - // function without type parameters - declare function f00(a?: A): A; -->f00 : (a?: A) => A -+>f00 : (a?: A | undefined) => A - >a : A | undefined - - // no inference - f00(); - >f00() : A -->f00 : (a?: A) => A -+>f00 : (a?: A | undefined) => A - - f00(a); - >f00(a) : A -->f00 : (a?: A) => A -+>f00 : (a?: A | undefined) => A - >a : A - - // function with a type parameter without a default - declare function f01(a?: T): T; -->f01 : (a?: T) => T -+>f01 : (a?: T | undefined) => T - >a : T | undefined - - // inference - f01(); - >f01() : unknown -->f01 : (a?: T) => T -+>f01 : (a?: T | undefined) => T - - f01(a); - >f01(a) : A -->f01 : (a?: T) => T -+>f01 : (a?: T | undefined) => T - >a : A - - // no inference, fully supplied - f01(); - >f01() : A -->f01 : (a?: T) => T -+>f01 : (a?: T | undefined) => T - - f01(a); - >f01(a) : A -->f01 : (a?: T) => T -+>f01 : (a?: T | undefined) => T - >a : A - - // function with a type paramter with a default - declare function f02(a?: T): T; -->f02 : (a?: T) => T -+>f02 : (a?: T | undefined) => T - >a : T | undefined - - // inference - f02(); - >f02() : A -->f02 : (a?: T) => T -+>f02 : (a?: T | undefined) => T - - f02(a); - >f02(a) : A -->f02 : (a?: T) => T -+>f02 : (a?: T | undefined) => T - >a : A - - f02(b); - >f02(b) : B -->f02 : (a?: T) => T -+>f02 : (a?: T | undefined) => T - >b : B - - // no inference, fully supplied - f02(); - >f02() : A -->f02 : (a?: T) => T -+>f02 : (a?: T | undefined) => T - - f02(a); - >f02(a) : A -->f02 : (a?: T) => T -+>f02 : (a?: T | undefined) => T - >a : A - - f02(); - >f02() : B -->f02 : (a?: T) => T -+>f02 : (a?: T | undefined) => T - - f02(b); - >f02(b) : B -->f02 : (a?: T) => T -+>f02 : (a?: T | undefined) => T - >b : B - - // function with a type parameter with a default that refers to itself - declare function f03(a?: T): T; -->f03 : (a?: T) => T -+>f03 : (a?: T | undefined) => T - >a : T | undefined - - // inference - f03(); - >f03() : unknown -->f03 : (a?: T) => T -+>f03 : (a?: T | undefined) => T - - f03(a); - >f03(a) : A -->f03 : (a?: T) => T -+>f03 : (a?: T | undefined) => T - >a : A - - f03(b); - >f03(b) : B -->f03 : (a?: T) => T -+>f03 : (a?: T | undefined) => T - >b : B - - // no inference, fully supplied - f03(); - >f03() : A -->f03 : (a?: T) => T -+>f03 : (a?: T | undefined) => T - - f03(a); - >f03(a) : A -->f03 : (a?: T) => T -+>f03 : (a?: T | undefined) => T - >a : A - - f03(); - >f03() : B -->f03 : (a?: T) => T -+>f03 : (a?: T | undefined) => T - - f03(b); - >f03(b) : B -->f03 : (a?: T) => T -+>f03 : (a?: T | undefined) => T - >b : B - - // function with a type paramter without a default and a type parameter with a default - declare function f04(a?: T, b?: U): [T, U]; -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f04(); - >f04() : [unknown, B] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f04(a); - >f04(a) : [A, B] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f04(a, b); - >f04(a, b) : [A, B] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - f04(a, c); - >f04(a, c) : [A, C] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // no inference, partially supplied - f04(); - >f04() : [A, B] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f04(a); - >f04(a) : [A, B] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f04(a, b); - >f04(a, b) : [A, B] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // no inference, fully supplied - f04(); - >f04() : [A, B] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f04(a); - >f04(a) : [A, B] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f04(a, b); - >f04(a, b) : [A, B] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - f04(); - >f04() : [A, C] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f04(a); - >f04(a) : [A, C] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f04(a, c); - >f04(a, c) : [A, C] -->f04 : (a?: T, b?: U) => [T, U] -+>f04 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // function with a type parameter without a default and a type parameter with a default that refers to an earlier type parameter - declare function f05(a?: T, b?: U): [T, U]; -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f05(); - >f05() : [unknown, unknown] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f05(a); - >f05(a) : [A, A] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f05(a, a); - >f05(a, a) : [A, A] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f05(a, b); - >f05(a, b) : [A, B] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // no inference, partially supplied - f05(); - >f05() : [A, A] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f05(a); - >f05(a) : [A, A] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f05(a, a); - >f05(a, a) : [A, A] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - // no inference, fully supplied - f05(); - >f05() : [A, B] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f05(a); - >f05(a) : [A, B] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f05(a, b); - >f05(a, b) : [A, B] -->f05 : (a?: T, b?: U) => [T, U] -+>f05 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // function with a type parameter with a default that refers to an earlier type parameter with a default - declare function f06(a?: T, b?: U): [T, U]; -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f06(); - >f06() : [A, A] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f06(a); - >f06(a) : [A, A] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f06(a, a); - >f06(a, a) : [A, A] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f06(a, b); - >f06(a, b) : [A, B] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - f06(b, a); - >f06(b, a) : [B, A] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >b : B - >a : A - - f06(b, b); - >f06(b, b) : [B, B] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >b : B - >b : B - - // no inference, partially supplied - f06(); - >f06() : [A, A] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f06(a); - >f06(a) : [A, A] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f06(a, a); - >f06(a, a) : [A, A] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f06(); - >f06() : [B, B] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f06(b); - >f06(b) : [B, B] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >b : B - - f06(b, b); - >f06(b, b) : [B, B] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >b : B - >b : B - - // no inference, fully supplied - f06(); - >f06() : [A, B] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f06(a); - >f06(a) : [A, B] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f06(a, b); - >f06(a, b) : [A, B] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - f06(); - >f06() : [B, C] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f06(b); - >f06(b) : [B, C] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >b : B - - f06(b, c); - >f06(b, c) : [B, C] -->f06 : (a?: T, b?: U) => [T, U] -+>f06 : (a?: T | undefined, b?: U | undefined) => [T, U] - >b : B - >c : C - - // function with a type parameter without a default and a type parameter with a default that refers to an earlier type parameter with a default - declare function f07(a?: T, b?: U, c?: V): [T, U, V]; -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : T | undefined - >b : U | undefined - >c : V | undefined -@@= skipped -363, +363 lines =@@ - // inference - f07(); - >f07() : [unknown, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f07(a, b); - >f07(a, b) : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f07(a, c); - >f07(a, c) : [A, C, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >c : C - - f07(a, b, b); - >f07(a, b, b) : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >b : B - - f07(a, b, c); - >f07(a, b, c) : [A, B, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >c : C - - f07(a, c, b); - >f07(a, c, b) : [A, C, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >c : C - >b : B - - f07(a, c, c); - >f07(a, c, c) : [A, C, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >c : C - >c : C -@@= skipped -45, +45 lines =@@ - // no inference, partially supplied - f07(); - >f07() : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f07(a); - >f07(a) : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f07(a, b); - >f07(a, b) : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f07(a, b, b); - >f07(a, b, b) : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >b : B - - f07(); - >f07() : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f07(a); - >f07(a) : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f07(a, b); - >f07(a, b) : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f07(a, b, b); - >f07(a, b, b) : [A, B, B] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >b : B - - f07(); - >f07() : [A, C, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f07(a); - >f07(a) : [A, C, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f07(a, c); - >f07(a, c) : [A, C, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >c : C - - f07(a, c, c); - >f07(a, c, c) : [A, C, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >c : C - >c : C -@@= skipped -67, +67 lines =@@ - // no inference, fully supplied - f07(); - >f07() : [A, B, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f07(a); - >f07(a) : [A, B, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f07(a, b); - >f07(a, b) : [A, B, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f07(a, b, c); - >f07(a, b, c) : [A, B, C] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >c : C - - f07(); - >f07() : [A, C, A] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f07(a); - >f07(a) : [A, C, A] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f07(a, c); - >f07(a, c) : [A, C, D] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >c : C - - f07(a, c, d); - >f07(a, c, d) : [A, C, D] -->f07 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f07 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >c : C - >d : D - - // function with a type parameter with a default that refers to an earlier type parameter with a constraint - declare function f08(a?: T, b?: U): [T, U]; -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f08(); - >f08() : [A, A] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f08(a); - >f08(a) : [A, A] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f08(a, a); - >f08(a, a) : [A, A] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f08(a, b); - >f08(a, b) : [A, B] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // no inference, partially supplied - f08(); - >f08() : [A, A] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f08(a); - >f08(a) : [A, A] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f08(a, a); - >f08(a, a) : [A, A] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - // no inference, fully supplied - f08(); - >f08() : [A, B] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f08(a); - >f08(a) : [A, B] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f08(a, b); - >f08(a, b) : [A, B] -->f08 : (a?: T, b?: U) => [T, U] -+>f08 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // function with a type parameter with a constraint and a default that refers to an earlier type parameter - declare function f09(a?: T, b?: U): [T, U]; -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f09(); - >f09() : [unknown, unknown] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f09(a); - >f09(a) : [A, A] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f09(a, a); - >f09(a, a) : [A, A] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f09(a, ab); - >f09(a, ab) : [A, AB] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - // no inference, partially supplied - f09(); - >f09() : [A, A] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f09(a); - >f09(a) : [A, A] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f09(a, a); - >f09(a, a) : [A, A] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f09(a, ab); - >f09(a, ab) : [A, A] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - // no inference, fully supplied - f09(); - >f09() : [A, AB] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f09(a); - >f09(a) : [A, AB] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f09(a, ab); - >f09(a, ab) : [A, AB] -->f09 : (a?: T, b?: U) => [T, U] -+>f09 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - // function with a type parameter with a constraint and a default that refers to an earlier type parameter with a constraint - declare function f10(a?: T, b?: U): [T, U]; -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f10(); - >f10() : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f10(a); - >f10(a) : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f10(a, a); - >f10(a, a) : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f10(a, ab); - >f10(a, ab) : [A, AB] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - // no inference, partially supplied - f10(); - >f10() : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f10(a); - >f10(a) : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f10(a, a); - >f10(a, a) : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f10(a, ab); - >f10(a, ab) : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - // no inference, fully supplied - f10(); - >f10() : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f10(a); - >f10(a) : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f10(a, a); - >f10(a, a) : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f10(a, ab); - >f10(a, ab) : [A, A] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - f10(); - >f10() : [A, AB] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f10(a); - >f10(a) : [A, AB] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f10(a, ab); - >f10(a, ab) : [A, AB] -->f10 : (a?: T, b?: U) => [T, U] -+>f10 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - // function with a type parameter with a default that refers to an earier type parameter in a union - declare function f11(a?: T, b?: U): [T, U]; -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f11(); - >f11() : [unknown, unknown] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f11(a); - >f11(a) : [A, A | B] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f11(a, a); - >f11(a, a) : [A, A] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f11(a, b); - >f11(a, b) : [A, B] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - f11(a, c); - >f11(a, c) : [A, C] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // no inference, partially supplied - f11(); - >f11() : [A, A | B] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f11(a); - >f11(a) : [A, A | B] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f11(a, a); - >f11(a, a) : [A, A | B] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f11(a, b); - >f11(a, b) : [A, A | B] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // no inference, fully supplied - f11(); - >f11() : [A, C] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f11(a); - >f11(a) : [A, C] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f11(a, c); - >f11(a, c) : [A, C] -->f11 : (a?: T, b?: U) => [T, U] -+>f11 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // function with a type parameter with a default that refers to an earlier type parameter in an intersection - declare function f12(a?: T, b?: U): [T, U]; -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f12(); - >f12() : [unknown, B] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f12(a); - >f12(a) : [A, A & B] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f12(a, a); - >f12(a, a) : [A, A] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f12(a, b); - >f12(a, b) : [A, B] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - f12(a, c); - >f12(a, c) : [A, C] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // no inference, partially supplied - f12(); - >f12() : [A, A & B] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f12(a); - >f12(a) : [A, A & B] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f12(a, ab); - >f12(a, ab) : [A, A & B] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - // no inference, fully supplied - f12(); - >f12() : [A, C] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f12(a); - >f12(a) : [A, C] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f12(a, c); - >f12(a, c) : [A, C] -->f12 : (a?: T, b?: U) => [T, U] -+>f12 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // function with a type parameter with a default that refers to a later type parameter with a default - declare function f13(a?: T, b?: U): [T, U]; -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f13(); - >f13() : [unknown, B] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f13(a); - >f13(a) : [A, B] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f13(a, b); - >f13(a, b) : [A, B] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - f13(a, c); - >f13(a, c) : [A, C] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // no inference, partially supplied - f13(); - >f13() : [A, B] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f13(a); - >f13(a) : [A, B] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f13(a, b); - >f13(a, b) : [A, B] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // no inference, fully supplied - f13(); - >f13() : [A, C] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f13(a); - >f13(a) : [A, C] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f13(a, c); - >f13(a, c) : [A, C] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - f13(a, c); - >f13(a, c) : [A, C] -->f13 : (a?: T, b?: U) => [T, U] -+>f13 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // function with a type parameter without a default and a type parameter with a default that refers to a later type parameter with a default - declare function f14(a?: T, b?: U, c?: V): [T, U, V]; -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : T | undefined - >b : U | undefined - >c : V | undefined -@@= skipped -469, +469 lines =@@ - // inference - f14(); - >f14() : [unknown, unknown, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f14(a); - >f14(a) : [A, unknown, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f14(a, b); - >f14(a, b) : [A, B, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f14(a, b, c); - >f14(a, b, c) : [A, B, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >c : C - - f14(a, b, d); - >f14(a, b, d) : [A, B, D] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >d : D -@@= skipped -30, +30 lines =@@ - // no inference, partially supplied - f14(); - >f14() : [A, any, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f14(a); - >f14(a) : [A, any, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f14(a, b); - >f14(a, b) : [A, any, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f14(a, b, c); - >f14(a, b, c) : [A, any, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >c : C - - f14(); - >f14() : [A, B, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f14(a); - >f14(a) : [A, B, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f14(a, b); - >f14(a, b) : [A, B, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f14(a, b, c); - >f14(a, b, c) : [A, B, C] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >c : C -@@= skipped -45, +45 lines =@@ - // no inference fully supplied - f14(); - >f14() : [A, B, D] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f14(a); - >f14(a) : [A, B, D] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f14(a, b); - >f14(a, b) : [A, B, D] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f14(a, b, d); - >f14(a, b, d) : [A, B, D] -->f14 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f14 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >d : D - - // function with two type parameters with defaults that mutually refer to each other - declare function f15(a?: T, b?: U): [T, U]; -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f15(); - >f15() : [unknown, unknown] -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f15(a); - >f15(a) : [A, A] -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f15(a, b); - >f15(a, b) : [A, B] -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // no inference, partially supplied - f15(); - >f15() : [A, A] -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f15(a); - >f15(a) : [A, A] -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f15(a, a); - >f15(a, a) : [A, A] -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - // no inference, fully supplied - f15(); - >f15() : [A, B] -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f15(a); - >f15(a) : [A, B] -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f15(a, b); - >f15(a, b) : [A, B] -->f15 : (a?: T, b?: U) => [T, U] -+>f15 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // function with a type parameter without a default and two type parameters with defaults that mutually refer to each other - declare function f16(a?: T, b?: U, c?: V): [T, U, V]; -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : T | undefined - >b : U | undefined - >c : V | undefined -@@= skipped -84, +84 lines =@@ - // no inference - f16(); - >f16() : [unknown, unknown, unknown] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f16(a); - >f16(a) : [A, unknown, unknown] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f16(a, b); - >f16(a, b) : [A, B, B] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f16(a, b, b); - >f16(a, b, b) : [A, B, B] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >b : B -@@= skipped -23, +23 lines =@@ - // no inference, partially supplied - f16(); - >f16() : [A, any, any] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f16(a); - >f16(a) : [A, any, any] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f16(a, b); - >f16(a, b) : [A, any, any] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f16(a, b, b); - >f16(a, b, b) : [A, any, any] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >b : B - - f16(); - >f16() : [A, B, B] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f16(a); - >f16(a) : [A, B, B] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f16(a, b); - >f16(a, b) : [A, B, B] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f16(a, b, b); - >f16(a, b, b) : [A, B, B] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >b : B -@@= skipped -45, +45 lines =@@ - // no inference, fully supplied - f16(); - >f16() : [A, B, D] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f16(a); - >f16(a) : [A, B, D] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f16(a, b); - >f16(a, b) : [A, B, D] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f16(a, b, d); - >f16(a, b, d) : [A, B, D] -->f16 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f16 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >d : D - - // function with a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in a union - declare function f17(a?: T, b?: U): [T, U]; -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f17(); - >f17() : [unknown, unknown] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f17(a); - >f17(a) : [A, A | B] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f17(a, a); - >f17(a, a) : [A, A] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f17(a, b); - >f17(a, b) : [A, B] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - f17(a, c); - >f17(a, c) : [A, C] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // no inference, partially supplied - f17(); - >f17() : [A, A | B] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f17(a); - >f17(a) : [A, A | B] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f17(a, a); - >f17(a, a) : [A, A | B] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f17(a, b); - >f17(a, b) : [A, A | B] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - // no inference, fully supplied - f17(); - >f17() : [A, C] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f17(a); - >f17(a) : [A, C] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f17(a, c); - >f17(a, c) : [A, C] -->f17 : (a?: T, b?: U) => [T, U] -+>f17 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // function with a type parameter without a default and a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in a union - declare function f18(a?: T, b?: U, c?: V): [T, U, V]; -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : T | undefined - >b : U | undefined - >c : V | undefined -@@= skipped -102, +102 lines =@@ - // inference - f18(); - >f18() : [unknown, unknown, unknown] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f18(a); - >f18(a) : [A, unknown, unknown] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f18(a, b); - >f18(a, b) : [A, B, B | C] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f18(a, b, b); - >f18(a, b, b) : [A, B, B] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >b : B - - f18(a, b, c); - >f18(a, b, c) : [A, B, C] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >c : C -@@= skipped -30, +30 lines =@@ - // no inference, partially supplied - f18(); - >f18() : [A, any, any] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f18(a); - >f18(a) : [A, any, any] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f18(a, b); - >f18(a, b) : [A, any, any] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f18(a, b, b); - >f18(a, b, b) : [A, any, any] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >b : B - - f18(a, b, c); - >f18(a, b, c) : [A, any, any] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >c : C - - f18(); - >f18() : [A, B, B | C] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f18(a); - >f18(a) : [A, B, B | C] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f18(a, b); - >f18(a, b) : [A, B, B | C] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f18(a, b, b); - >f18(a, b, b) : [A, B, B | C] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >b : B - - f18(a, b, c); - >f18(a, b, c) : [A, B, B | C] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >c : C -@@= skipped -59, +59 lines =@@ - // no inference, fully supplied - f18(); - >f18() : [A, B, D] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f18(a); - >f18(a) : [A, B, D] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f18(a, b); - >f18(a, b) : [A, B, D] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f18(a, b, d); - >f18(a, b, d) : [A, B, D] -->f18 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f18 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >d : D - - // function with a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in an intersection - declare function f19(a?: T, b?: U): [T, U]; -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : T | undefined - >b : U | undefined - - // inference - f19(); - >f19() : [unknown, B] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f19(a); - >f19(a) : [A, A & B] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f19(a, a); - >f19(a, a) : [A, A] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >a : A - - f19(a, b); - >f19(a, b) : [A, B] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >b : B - - f19(a, ab); - >f19(a, ab) : [A, AB] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - f19(a, c); - >f19(a, c) : [A, C] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // no inference, partially supplied - f19(); - >f19() : [A, A & B] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f19(a); - >f19(a) : [A, A & B] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f19(a, ab); - >f19(a, ab) : [A, A & B] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >ab : AB - - // no inference, fully supplied - f19(); - >f19() : [A, C] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - - f19(a); - >f19(a) : [A, C] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - - f19(a, c); - >f19(a, c) : [A, C] -->f19 : (a?: T, b?: U) => [T, U] -+>f19 : (a?: T | undefined, b?: U | undefined) => [T, U] - >a : A - >c : C - - // function with a type parameter without a default and a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in an intersection - declare function f20(a?: T, b?: U, c?: V): [T, U, V]; -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : T | undefined - >b : U | undefined - >c : V | undefined -@@= skipped -102, +102 lines =@@ - // inference - f20(); - >f20() : [unknown, unknown, C] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f20(a); - >f20(a) : [A, unknown, C] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f20(a, b); - >f20(a, b) : [A, B, B & C] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f20(a, b, c); - >f20(a, b, c) : [A, B, C] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >c : C -@@= skipped -23, +23 lines =@@ - // no inference, partially supplied - f20(); - >f20() : [A, any, any] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f20(a); - >f20(a) : [A, any, any] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f20(a, b); - >f20(a, b) : [A, any, any] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f20(a, b, bc); - >f20(a, b, bc) : [A, any, any] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >bc : BC - - f20(); - >f20() : [A, B, B & C] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f20(a); - >f20(a) : [A, B, B & C] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f20(a, b); - >f20(a, b) : [A, B, B & C] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f20(a, b, bc); - >f20(a, b, bc) : [A, B, B & C] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >bc : BC -@@= skipped -45, +45 lines =@@ - // no inference, fully supplied - f20(); - >f20() : [A, B, D] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - - f20(a); - >f20(a) : [A, B, D] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - - f20(a, b); - >f20(a, b) : [A, B, D] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - - f20(a, b, d); - >f20(a, b, d) : [A, B, D] -->f20 : (a?: T, b?: U, c?: V) => [T, U, V] -+>f20 : (a?: T | undefined, b?: U | undefined, c?: V | undefined) => [T, U, V] - >a : A - >b : B - >d : D \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericDefaultsErrors.types b/testdata/baselines/reference/submodule/compiler/genericDefaultsErrors.types index f2065a3f96b..25279ae2f9b 100644 --- a/testdata/baselines/reference/submodule/compiler/genericDefaultsErrors.types +++ b/testdata/baselines/reference/submodule/compiler/genericDefaultsErrors.types @@ -40,16 +40,16 @@ f11<1, 2, 3, 4>(); // error >f11 : () => void declare function f12(a?: U): void; ->f12 : (a?: U | undefined) => void +>f12 : (a?: U) => void >a : U | undefined f12(); // ok >f12() : void ->f12 : (a?: U | undefined) => void +>f12 : (a?: U) => void f12("a"); // error >f12("a") : void ->f12 : (a?: U | undefined) => void +>f12 : (a?: U) => void >"a" : "a" interface i00 { } // ok diff --git a/testdata/baselines/reference/submodule/compiler/genericDefaultsErrors.types.diff b/testdata/baselines/reference/submodule/compiler/genericDefaultsErrors.types.diff deleted file mode 100644 index 38ba32a31fa..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericDefaultsErrors.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.genericDefaultsErrors.types -+++ new.genericDefaultsErrors.types -@@= skipped -39, +39 lines =@@ - >f11 : () => void - - declare function f12(a?: U): void; -->f12 : (a?: U) => void -+>f12 : (a?: U | undefined) => void - >a : U | undefined - - f12(); // ok - >f12() : void -->f12 : (a?: U) => void -+>f12 : (a?: U | undefined) => void - - f12("a"); // error - >f12("a") : void -->f12 : (a?: U) => void -+>f12 : (a?: U | undefined) => void - >"a" : "a" - - interface i00 { } // ok \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionInference1.types b/testdata/baselines/reference/submodule/compiler/genericFunctionInference1.types index 105acc7a62e..38363d7a962 100644 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionInference1.types +++ b/testdata/baselines/reference/submodule/compiler/genericFunctionInference1.types @@ -803,7 +803,7 @@ const fn20 = pipe((_a?: {}) => 1); >fn20 : (_a?: {} | undefined) => number >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; } ->(_a?: {}) => 1 : (_a?: {} | undefined) => number +>(_a?: {}) => 1 : (_a?: {}) => number >_a : {} | undefined >1 : 1 @@ -970,24 +970,24 @@ const fn62 = pipe( // Repro from #30297 declare function foo2(fn: T, a?: U, b?: U): [T, U]; ->foo2 : (fn: T, a?: U | undefined, b?: U | undefined) => [T, U] +>foo2 : (fn: T, a?: U, b?: U) => [T, U] >fn : T >a : U | undefined >b : U | undefined foo2(() => {}); >foo2(() => {}) : [() => void, () => void] ->foo2 : (fn: T, a?: U | undefined, b?: U | undefined) => [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 | undefined, b?: U | undefined) => [T, U] +>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 | undefined, b?: U | undefined) => [T, U] +>foo2 : (fn: T, a?: U, b?: U) => [T, U] >identity : (value: T) => T >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionInference1.types.diff b/testdata/baselines/reference/submodule/compiler/genericFunctionInference1.types.diff index b43437099d5..44ed05a07de 100644 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionInference1.types.diff +++ b/testdata/baselines/reference/submodule/compiler/genericFunctionInference1.types.diff @@ -24,41 +24,4 @@ +>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; } >ab : (...args: A) => B >args : A - >bc : (b: B) => C -@@= skipped -787, +787 lines =@@ - >fn20 : (_a?: {} | undefined) => number - >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; } -->(_a?: {}) => 1 : (_a?: {}) => number -+>(_a?: {}) => 1 : (_a?: {} | undefined) => number - >_a : {} | undefined - >1 : 1 - -@@= skipped -167, +167 lines =@@ - // 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 | undefined, b?: U | undefined) => [T, U] - >fn : T - >a : U | undefined - >b : U | undefined - - foo2(() => {}); - >foo2(() => {}) : [() => void, () => void] -->foo2 : (fn: T, a?: U, b?: U) => [T, U] -+>foo2 : (fn: T, a?: U | undefined, b?: U | undefined) => [T, U] - >() => {} : () => void - - foo2(identity); - >foo2(identity) : [(value: T) => T, (value: T) => T] -->foo2 : (fn: T, a?: U, b?: U) => [T, U] -+>foo2 : (fn: T, a?: U | undefined, b?: U | undefined) => [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] -+>foo2 : (fn: T, a?: U | undefined, b?: U | undefined) => [T, U] - >identity : (value: T) => T - >1 : 1 + >bc : (b: B) => C \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionsAndConditionalInference.types b/testdata/baselines/reference/submodule/compiler/genericFunctionsAndConditionalInference.types index bdf62b66cf8..3a53b021071 100644 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionsAndConditionalInference.types +++ b/testdata/baselines/reference/submodule/compiler/genericFunctionsAndConditionalInference.types @@ -84,8 +84,8 @@ const right: Ops<"right"> = {} as any >{} : {} const ok = (at: Ops) => ({lr: at.lr(at.str, at.num)}) ->ok : >(at: Ops) => { lr: Result>; } ->(at: Ops) => ({lr: at.lr(at.str, at.num)}) : >(at: Ops) => { lr: Result>; } +>ok : (at: Ops) => { lr: Result>; } +>(at: Ops) => ({lr: at.lr(at.str, at.num)}) : (at: Ops) => { lr: Result>; } >at : Ops >({lr: at.lr(at.str, at.num)}) : { lr: Result>; } >{lr: at.lr(at.str, at.num)} : { lr: Result>; } @@ -102,38 +102,38 @@ const ok = (at: Ops) => ({lr: at.lr(at.str, at.num)}) >num : Result const orphaned = (at: Ops) => at.dict(ok(at)) ->orphaned : >(at: Ops) => Result; }> ->(at: Ops) => at.dict(ok(at)) : >(at: Ops) => Result; }> +>orphaned : (at: Ops) => Result; }> +>(at: Ops) => at.dict(ok(at)) : (at: Ops) => Result; }> >at : Ops >at.dict(ok(at)) : Result; }> >at.dict :

(p: { [k in keyof P]: Result; }) => Result >at : Ops >dict :

(p: { [k in keyof P]: Result; }) => Result >ok(at) : { lr: Result>; } ->ok : >(at: Ops) => { lr: Result>; } +>ok : (at: Ops) => { lr: Result>; } >at : Ops const leftOk = ok(left) >leftOk : { lr: string; } >ok(left) : { lr: string; } ->ok : >(at: Ops) => { lr: Result>; } +>ok : (at: Ops) => { lr: Result>; } >left : Ops<"left"> const leftOrphaned = orphaned(left) >leftOrphaned : { lr: string; } >orphaned(left) : { lr: string; } ->orphaned : >(at: Ops) => Result; }> +>orphaned : (at: Ops) => Result; }> >left : Ops<"left"> const rightOk = ok(right) >rightOk : { lr: number; } >ok(right) : { lr: number; } ->ok : >(at: Ops) => { lr: Result>; } +>ok : (at: Ops) => { lr: Result>; } >right : Ops<"right"> const rightOrphaned = orphaned(right) >rightOrphaned : { lr: number; } >orphaned(right) : { lr: number; } ->orphaned : >(at: Ops) => Result; }> +>orphaned : (at: Ops) => Result; }> >right : Ops<"right"> diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionsAndConditionalInference.types.diff b/testdata/baselines/reference/submodule/compiler/genericFunctionsAndConditionalInference.types.diff deleted file mode 100644 index 732c629e6a3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionsAndConditionalInference.types.diff +++ /dev/null @@ -1,58 +0,0 @@ ---- old.genericFunctionsAndConditionalInference.types -+++ new.genericFunctionsAndConditionalInference.types -@@= skipped -83, +83 lines =@@ - >{} : {} - - const ok = (at: Ops) => ({lr: at.lr(at.str, at.num)}) -->ok : (at: Ops) => { lr: Result>; } -->(at: Ops) => ({lr: at.lr(at.str, at.num)}) : (at: Ops) => { lr: Result>; } -+>ok : >(at: Ops) => { lr: Result>; } -+>(at: Ops) => ({lr: at.lr(at.str, at.num)}) : >(at: Ops) => { lr: Result>; } - >at : Ops - >({lr: at.lr(at.str, at.num)}) : { lr: Result>; } - >{lr: at.lr(at.str, at.num)} : { lr: Result>; } -@@= skipped -18, +18 lines =@@ - >num : Result - - const orphaned = (at: Ops) => at.dict(ok(at)) -->orphaned : (at: Ops) => Result; }> -->(at: Ops) => at.dict(ok(at)) : (at: Ops) => Result; }> -+>orphaned : >(at: Ops) => Result; }> -+>(at: Ops) => at.dict(ok(at)) : >(at: Ops) => Result; }> - >at : Ops - >at.dict(ok(at)) : Result; }> - >at.dict :

(p: { [k in keyof P]: Result; }) => Result - >at : Ops - >dict :

(p: { [k in keyof P]: Result; }) => Result - >ok(at) : { lr: Result>; } -->ok : (at: Ops) => { lr: Result>; } -+>ok : >(at: Ops) => { lr: Result>; } - >at : Ops - - const leftOk = ok(left) - >leftOk : { lr: string; } - >ok(left) : { lr: string; } -->ok : (at: Ops) => { lr: Result>; } -+>ok : >(at: Ops) => { lr: Result>; } - >left : Ops<"left"> - - const leftOrphaned = orphaned(left) - >leftOrphaned : { lr: string; } - >orphaned(left) : { lr: string; } -->orphaned : (at: Ops) => Result; }> -+>orphaned : >(at: Ops) => Result; }> - >left : Ops<"left"> - - const rightOk = ok(right) - >rightOk : { lr: number; } - >ok(right) : { lr: number; } -->ok : (at: Ops) => { lr: Result>; } -+>ok : >(at: Ops) => { lr: Result>; } - >right : Ops<"right"> - - const rightOrphaned = orphaned(right) - >rightOrphaned : { lr: number; } - >orphaned(right) : { lr: number; } -->orphaned : (at: Ops) => Result; }> -+>orphaned : >(at: Ops) => Result; }> - >right : Ops<"right"> diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters1.types b/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters1.types index 2cf238a73a5..0ac80b0b447 100644 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters1.types +++ b/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters1.types @@ -3,7 +3,7 @@ === genericFunctionsWithOptionalParameters1.ts === interface Utils { fold(c?: Array, folder?: (s: S, t: T) => T, init?: S): T; ->fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T >c : T[] | undefined >folder : ((s: S, t: T) => T) | undefined >s : S @@ -16,25 +16,25 @@ var utils: Utils; utils.fold(); // no error >utils.fold() : unknown ->utils.fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils ->fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T utils.fold(null); // no error >utils.fold(null) : unknown ->utils.fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils ->fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T utils.fold(null, null); // no error >utils.fold(null, null) : unknown ->utils.fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils ->fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T utils.fold(null, null, null); // no error >utils.fold(null, null, null) : unknown ->utils.fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils ->fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters1.types.diff b/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters1.types.diff deleted file mode 100644 index 745837055ec..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters1.types.diff +++ /dev/null @@ -1,44 +0,0 @@ ---- old.genericFunctionsWithOptionalParameters1.types -+++ new.genericFunctionsWithOptionalParameters1.types -@@= skipped -2, +2 lines =@@ - === genericFunctionsWithOptionalParameters1.ts === - interface Utils { - fold(c?: Array, folder?: (s: S, t: T) => T, init?: S): T; -->fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >c : T[] | undefined - >folder : ((s: S, t: T) => T) | undefined - >s : S -@@= skipped -13, +13 lines =@@ - - utils.fold(); // no error - >utils.fold() : unknown -->utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>utils.fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >utils : Utils -->fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - - utils.fold(null); // no error - >utils.fold(null) : unknown -->utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>utils.fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >utils : Utils -->fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - - utils.fold(null, null); // no error - >utils.fold(null, null) : unknown -->utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>utils.fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >utils : Utils -->fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - - utils.fold(null, null, null); // no error - >utils.fold(null, null, null) : unknown -->utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>utils.fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >utils : Utils -->fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c?: T[] | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters2.types b/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters2.types index de03d0b0cd4..99e14135fb7 100644 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters2.types +++ b/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters2.types @@ -3,7 +3,7 @@ === genericFunctionsWithOptionalParameters2.ts === interface Utils { fold(c: Array, folder?: (s: S, t: T) => T, init?: S): T; ->fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T >c : T[] >folder : ((s: S, t: T) => T) | undefined >s : S @@ -16,25 +16,25 @@ declare var utils: Utils; utils.fold(); // error >utils.fold() : unknown ->utils.fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils ->fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T utils.fold(null); // no error >utils.fold(null) : unknown ->utils.fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils ->fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T utils.fold(null, null); // no error >utils.fold(null, null) : unknown ->utils.fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils ->fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T utils.fold(null, null, null); // error: Unable to invoke type with no call signatures >utils.fold(null, null, null) : unknown ->utils.fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils ->fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters2.types.diff b/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters2.types.diff deleted file mode 100644 index 5834b7f19bf..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters2.types.diff +++ /dev/null @@ -1,44 +0,0 @@ ---- old.genericFunctionsWithOptionalParameters2.types -+++ new.genericFunctionsWithOptionalParameters2.types -@@= skipped -2, +2 lines =@@ - === genericFunctionsWithOptionalParameters2.ts === - interface Utils { - fold(c: Array, folder?: (s: S, t: T) => T, init?: S): T; -->fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >c : T[] - >folder : ((s: S, t: T) => T) | undefined - >s : S -@@= skipped -13, +13 lines =@@ - - utils.fold(); // error - >utils.fold() : unknown -->utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>utils.fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >utils : Utils -->fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - - utils.fold(null); // no error - >utils.fold(null) : unknown -->utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>utils.fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >utils : Utils -->fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - - utils.fold(null, null); // no error - >utils.fold(null, null) : unknown -->utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>utils.fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >utils : Utils -->fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - - utils.fold(null, null, null); // error: Unable to invoke type with no call signatures - >utils.fold(null, null, null) : unknown -->utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>utils.fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >utils : Utils -->fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c: T[], folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters3.types b/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters3.types index 7a4485bef75..6011c90c270 100644 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters3.types +++ b/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters3.types @@ -10,7 +10,7 @@ class Collection { } interface Utils { fold(c?: Collection, folder?: (s: S, t: T) => T, init?: S): T; ->fold : (c?: Collection | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T +>fold : (c?: Collection, folder?: (s: S, t: T) => T, init?: S) => T >c : Collection | undefined >folder : ((s: S, t: T) => T) | undefined >s : S diff --git a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters3.types.diff b/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters3.types.diff deleted file mode 100644 index b259fd6c3db..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericFunctionsWithOptionalParameters3.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.genericFunctionsWithOptionalParameters3.types -+++ new.genericFunctionsWithOptionalParameters3.types -@@= skipped -9, +9 lines =@@ - } - interface Utils { - fold(c?: Collection, folder?: (s: S, t: T) => T, init?: S): T; -->fold : (c?: Collection, folder?: (s: S, t: T) => T, init?: S) => T -+>fold : (c?: Collection | undefined, folder?: ((s: S, t: T) => T) | undefined, init?: S | undefined) => T - >c : Collection | undefined - >folder : ((s: S, t: T) => T) | undefined - >s : S \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericInterfaceTypeCall.types b/testdata/baselines/reference/submodule/compiler/genericInterfaceTypeCall.types index aea27faa0a1..5aebc69e82a 100644 --- a/testdata/baselines/reference/submodule/compiler/genericInterfaceTypeCall.types +++ b/testdata/baselines/reference/submodule/compiler/genericInterfaceTypeCall.types @@ -16,7 +16,7 @@ interface bar { >arg : T fail2(func2: { (arg: T): void; }): void; ->fail2 : (func2: (arg: T) => void) => void +>fail2 : (func2: { (arg: T): void; }) => void >func2 : (arg: T) => void >arg : T } diff --git a/testdata/baselines/reference/submodule/compiler/genericInterfaceTypeCall.types.diff b/testdata/baselines/reference/submodule/compiler/genericInterfaceTypeCall.types.diff deleted file mode 100644 index ccf7206fcd4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericInterfaceTypeCall.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.genericInterfaceTypeCall.types -+++ new.genericInterfaceTypeCall.types -@@= skipped -15, +15 lines =@@ - >arg : T - - fail2(func2: { (arg: T): void; }): void; -->fail2 : (func2: { (arg: T): void; }) => void -+>fail2 : (func2: (arg: T) => void) => void - >func2 : (arg: T) => void - >arg : T - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericLambaArgWithoutTypeArguments.types b/testdata/baselines/reference/submodule/compiler/genericLambaArgWithoutTypeArguments.types index b136d492717..703aad8e1e3 100644 --- a/testdata/baselines/reference/submodule/compiler/genericLambaArgWithoutTypeArguments.types +++ b/testdata/baselines/reference/submodule/compiler/genericLambaArgWithoutTypeArguments.types @@ -14,7 +14,7 @@ function foo(a) { foo((arg: Foo) => { return arg.x; }); >foo((arg: Foo) => { return arg.x; }) : any >foo : (a: any) => any ->(arg: Foo) => { return arg.x; } : (arg: any) => any +>(arg: Foo) => { return arg.x; } : (arg: Foo) => any >arg : any >arg.x : any >arg : any diff --git a/testdata/baselines/reference/submodule/compiler/genericLambaArgWithoutTypeArguments.types.diff b/testdata/baselines/reference/submodule/compiler/genericLambaArgWithoutTypeArguments.types.diff deleted file mode 100644 index 75132ef26a5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericLambaArgWithoutTypeArguments.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.genericLambaArgWithoutTypeArguments.types -+++ new.genericLambaArgWithoutTypeArguments.types -@@= skipped -13, +13 lines =@@ - foo((arg: Foo) => { return arg.x; }); - >foo((arg: Foo) => { return arg.x; }) : any - >foo : (a: any) => any -->(arg: Foo) => { return arg.x; } : (arg: Foo) => any -+>(arg: Foo) => { return arg.x; } : (arg: any) => any - >arg : any - >arg.x : any - >arg : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericObjectSpreadResultInSwitch.types b/testdata/baselines/reference/submodule/compiler/genericObjectSpreadResultInSwitch.types index 4f9a944145d..4d38c190e56 100644 --- a/testdata/baselines/reference/submodule/compiler/genericObjectSpreadResultInSwitch.types +++ b/testdata/baselines/reference/submodule/compiler/genericObjectSpreadResultInSwitch.types @@ -50,9 +50,9 @@ switch (params.tag) { const result = getType(params).type; >result : number >getType(params).type : number ->getType(params) : Omit<{ foo: string; } & { tag: "a"; type: number; }, "foo"> +>getType(params) : Omit<{ foo: string; } & { tag: 'a'; type: number; }, "foo"> >getType :

(params: P) => Omit ->params : { foo: string; } & { tag: "a"; type: number; } +>params : { foo: string; } & { tag: 'a'; type: number; } >type : number break; @@ -65,9 +65,9 @@ switch (params.tag) { const result = getType(params).type; >result : string >getType(params).type : string ->getType(params) : Omit<{ foo: string; } & { tag: "b"; type: string; }, "foo"> +>getType(params) : Omit<{ foo: string; } & { tag: 'b'; type: string; }, "foo"> >getType :

(params: P) => Omit ->params : { foo: string; } & { tag: "b"; type: string; } +>params : { foo: string; } & { tag: 'b'; type: string; } >type : string break; diff --git a/testdata/baselines/reference/submodule/compiler/genericObjectSpreadResultInSwitch.types.diff b/testdata/baselines/reference/submodule/compiler/genericObjectSpreadResultInSwitch.types.diff new file mode 100644 index 00000000000..192d65c5523 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/genericObjectSpreadResultInSwitch.types.diff @@ -0,0 +1,26 @@ +--- old.genericObjectSpreadResultInSwitch.types ++++ new.genericObjectSpreadResultInSwitch.types +@@= skipped -49, +49 lines =@@ + const result = getType(params).type; + >result : number + >getType(params).type : number +->getType(params) : Omit<{ foo: string; } & { tag: "a"; type: number; }, "foo"> ++>getType(params) : Omit<{ foo: string; } & { tag: 'a'; type: number; }, "foo"> + >getType :

(params: P) => Omit +->params : { foo: string; } & { tag: "a"; type: number; } ++>params : { foo: string; } & { tag: 'a'; type: number; } + >type : number + + break; +@@= skipped -15, +15 lines =@@ + const result = getType(params).type; + >result : string + >getType(params).type : string +->getType(params) : Omit<{ foo: string; } & { tag: "b"; type: string; }, "foo"> ++>getType(params) : Omit<{ foo: string; } & { tag: 'b'; type: string; }, "foo"> + >getType :

(params: P) => Omit +->params : { foo: string; } & { tag: "b"; type: string; } ++>params : { foo: string; } & { tag: 'b'; type: string; } + >type : string + + break; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericRecursiveImplicitConstructorErrors3.types b/testdata/baselines/reference/submodule/compiler/genericRecursiveImplicitConstructorErrors3.types index 2a0e4f57bd9..82e80d07516 100644 --- a/testdata/baselines/reference/submodule/compiler/genericRecursiveImplicitConstructorErrors3.types +++ b/testdata/baselines/reference/submodule/compiler/genericRecursiveImplicitConstructorErrors3.types @@ -8,7 +8,7 @@ namespace TypeScript { >MemberName : MemberName static create(arg1: any, arg2?: any, arg3?: any): MemberName { ->create : (arg1: any, arg2?: any, arg3?: any) => any +>create : (arg1: any, arg2?: any, arg3?: any) => MemberName >arg1 : any >arg2 : any >arg3 : any @@ -33,7 +33,7 @@ namespace TypeScript { >_elementType : any public toString(scopeSymbol?: PullSymbol, useConstraintInName?: boolean) { ->toString : (scopeSymbol?: any, useConstraintInName?: boolean | undefined) => any +>toString : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean) => any >scopeSymbol : any >useConstraintInName : boolean | undefined @@ -42,9 +42,9 @@ namespace TypeScript { >this.getScopedNameEx(scopeSymbol, useConstraintInName).toString() : any >this.getScopedNameEx(scopeSymbol, useConstraintInName).toString : any >this.getScopedNameEx(scopeSymbol, useConstraintInName) : any ->this.getScopedNameEx : (scopeSymbol?: any, useConstraintInName?: boolean | undefined, getPrettyTypeName?: boolean | undefined, getTypeParamMarkerInfo?: boolean | undefined) => any +>this.getScopedNameEx : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any >this : this ->getScopedNameEx : (scopeSymbol?: any, useConstraintInName?: boolean | undefined, getPrettyTypeName?: boolean | undefined, getTypeParamMarkerInfo?: boolean | undefined) => any +>getScopedNameEx : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any >scopeSymbol : any >useConstraintInName : boolean | undefined >toString : any @@ -53,7 +53,7 @@ namespace TypeScript { >s : any } public getScopedNameEx(scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) { ->getScopedNameEx : (scopeSymbol?: any, useConstraintInName?: boolean | undefined, getPrettyTypeName?: boolean | undefined, getTypeParamMarkerInfo?: boolean | undefined) => any +>getScopedNameEx : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any >scopeSymbol : any >useConstraintInName : boolean | undefined >getPrettyTypeName : boolean | undefined @@ -115,9 +115,9 @@ namespace TypeScript { return MemberName.create(elementMemberName, "", "[]"); >MemberName.create(elementMemberName, "", "[]") : any ->MemberName.create : (arg1: any, arg2?: any, arg3?: any) => any +>MemberName.create : (arg1: any, arg2?: any, arg3?: any) => MemberName >MemberName : typeof MemberName ->create : (arg1: any, arg2?: any, arg3?: any) => any +>create : (arg1: any, arg2?: any, arg3?: any) => MemberName >elementMemberName : any >"" : "" >"[]" : "[]" diff --git a/testdata/baselines/reference/submodule/compiler/genericRecursiveImplicitConstructorErrors3.types.diff b/testdata/baselines/reference/submodule/compiler/genericRecursiveImplicitConstructorErrors3.types.diff index 1e96b7ef373..e28e680f87a 100644 --- a/testdata/baselines/reference/submodule/compiler/genericRecursiveImplicitConstructorErrors3.types.diff +++ b/testdata/baselines/reference/submodule/compiler/genericRecursiveImplicitConstructorErrors3.types.diff @@ -1,53 +1,20 @@ --- old.genericRecursiveImplicitConstructorErrors3.types +++ new.genericRecursiveImplicitConstructorErrors3.types -@@= skipped -7, +7 lines =@@ - >MemberName : MemberName - - static create(arg1: any, arg2?: any, arg3?: any): MemberName { -->create : (arg1: any, arg2?: any, arg3?: any) => MemberName -+>create : (arg1: any, arg2?: any, arg3?: any) => any - >arg1 : any - >arg2 : any - >arg3 : any -@@= skipped -25, +25 lines =@@ +@@= skipped -32, +32 lines =@@ >_elementType : any public toString(scopeSymbol?: PullSymbol, useConstraintInName?: boolean) { ->toString : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean) => any -+>toString : (scopeSymbol?: any, useConstraintInName?: boolean | undefined) => any ++>toString : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean) => any >scopeSymbol : any >useConstraintInName : boolean | undefined -@@= skipped -9, +9 lines =@@ - >this.getScopedNameEx(scopeSymbol, useConstraintInName).toString() : any - >this.getScopedNameEx(scopeSymbol, useConstraintInName).toString : any - >this.getScopedNameEx(scopeSymbol, useConstraintInName) : any -->this.getScopedNameEx : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any -+>this.getScopedNameEx : (scopeSymbol?: any, useConstraintInName?: boolean | undefined, getPrettyTypeName?: boolean | undefined, getTypeParamMarkerInfo?: boolean | undefined) => any - >this : this -->getScopedNameEx : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any -+>getScopedNameEx : (scopeSymbol?: any, useConstraintInName?: boolean | undefined, getPrettyTypeName?: boolean | undefined, getTypeParamMarkerInfo?: boolean | undefined) => any - >scopeSymbol : any - >useConstraintInName : boolean | undefined - >toString : any -@@= skipped -11, +11 lines =@@ +@@= skipped -20, +20 lines =@@ >s : any } public getScopedNameEx(scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) { ->getScopedNameEx : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any -+>getScopedNameEx : (scopeSymbol?: any, useConstraintInName?: boolean | undefined, getPrettyTypeName?: boolean | undefined, getTypeParamMarkerInfo?: boolean | undefined) => any ++>getScopedNameEx : (scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any >scopeSymbol : any >useConstraintInName : boolean | undefined - >getPrettyTypeName : boolean | undefined -@@= skipped -62, +62 lines =@@ - - return MemberName.create(elementMemberName, "", "[]"); - >MemberName.create(elementMemberName, "", "[]") : any -->MemberName.create : (arg1: any, arg2?: any, arg3?: any) => MemberName -+>MemberName.create : (arg1: any, arg2?: any, arg3?: any) => any - >MemberName : typeof MemberName -->create : (arg1: any, arg2?: any, arg3?: any) => MemberName -+>create : (arg1: any, arg2?: any, arg3?: any) => any - >elementMemberName : any - >"" : "" - >"[]" : "[]" \ No newline at end of file + >getPrettyTypeName : boolean | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericReduce.types b/testdata/baselines/reference/submodule/compiler/genericReduce.types index f5424f04e71..79515eebd54 100644 --- a/testdata/baselines/reference/submodule/compiler/genericReduce.types +++ b/testdata/baselines/reference/submodule/compiler/genericReduce.types @@ -56,9 +56,9 @@ n1.x = "fail"; // should error, as 'n1' should be type 'number', not 'any' n1.toExponential(2); // should not error if 'n1' is correctly number. >n1.toExponential(2) : string ->n1.toExponential : (fractionDigits?: number | undefined) => string +>n1.toExponential : (fractionDigits?: number) => string >n1 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string >2 : 2 n2.x = "fail"; // should error, as 'n2' should be type 'number', not 'any'. @@ -70,9 +70,9 @@ n2.x = "fail"; // should error, as 'n2' should be type 'number', not 'any' n2.toExponential(2); // should not error if 'n2' is correctly number. >n2.toExponential(2) : string ->n2.toExponential : (fractionDigits?: number | undefined) => string +>n2.toExponential : (fractionDigits?: number) => string >n2 : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string >2 : 2 var n3 = b.reduce( (x, y) => x + y, ""); // Initial value is of type string diff --git a/testdata/baselines/reference/submodule/compiler/genericReduce.types.diff b/testdata/baselines/reference/submodule/compiler/genericReduce.types.diff deleted file mode 100644 index 03c708dc8d7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericReduce.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.genericReduce.types -+++ new.genericReduce.types -@@= skipped -55, +55 lines =@@ - - n1.toExponential(2); // should not error if 'n1' is correctly number. - >n1.toExponential(2) : string -->n1.toExponential : (fractionDigits?: number) => string -+>n1.toExponential : (fractionDigits?: number | undefined) => string - >n1 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - >2 : 2 - - n2.x = "fail"; // should error, as 'n2' should be type 'number', not 'any'. -@@= skipped -14, +14 lines =@@ - - n2.toExponential(2); // should not error if 'n2' is correctly number. - >n2.toExponential(2) : string -->n2.toExponential : (fractionDigits?: number) => string -+>n2.toExponential : (fractionDigits?: number | undefined) => string - >n2 : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - >2 : 2 - - var n3 = b.reduce( (x, y) => x + y, ""); // Initial value is of type string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericRestArgs.types b/testdata/baselines/reference/submodule/compiler/genericRestArgs.types index 4de804c73ea..065f9166df5 100644 --- a/testdata/baselines/reference/submodule/compiler/genericRestArgs.types +++ b/testdata/baselines/reference/submodule/compiler/genericRestArgs.types @@ -35,7 +35,7 @@ var a1Gd = makeArrayG(1, ""); // error >"" : "" function makeArrayGOpt(item1?: T, item2?: T, item3?: T) { ->makeArrayGOpt : (item1?: T | undefined, item2?: T | undefined, item3?: T | undefined) => (T | undefined)[] +>makeArrayGOpt : (item1?: T, item2?: T, item3?: T) => (T | undefined)[] >item1 : T | undefined >item2 : T | undefined >item3 : T | undefined @@ -49,7 +49,7 @@ function makeArrayGOpt(item1?: T, item2?: T, item3?: T) { var a2Ga = makeArrayGOpt(1, ""); >a2Ga : (number | undefined)[] >makeArrayGOpt(1, "") : (number | undefined)[] ->makeArrayGOpt : (item1?: T | undefined, item2?: T | undefined, item3?: T | undefined) => (T | undefined)[] +>makeArrayGOpt : (item1?: T, item2?: T, item3?: T) => (T | undefined)[] >1 : 1 >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/genericRestArgs.types.diff b/testdata/baselines/reference/submodule/compiler/genericRestArgs.types.diff deleted file mode 100644 index 4301ba2d4f2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericRestArgs.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.genericRestArgs.types -+++ new.genericRestArgs.types -@@= skipped -34, +34 lines =@@ - >"" : "" - - function makeArrayGOpt(item1?: T, item2?: T, item3?: T) { -->makeArrayGOpt : (item1?: T, item2?: T, item3?: T) => (T | undefined)[] -+>makeArrayGOpt : (item1?: T | undefined, item2?: T | undefined, item3?: T | undefined) => (T | undefined)[] - >item1 : T | undefined - >item2 : T | undefined - >item3 : T | undefined -@@= skipped -14, +14 lines =@@ - var a2Ga = makeArrayGOpt(1, ""); - >a2Ga : (number | undefined)[] - >makeArrayGOpt(1, "") : (number | undefined)[] -->makeArrayGOpt : (item1?: T, item2?: T, item3?: T) => (T | undefined)[] -+>makeArrayGOpt : (item1?: T | undefined, item2?: T | undefined, item3?: T | undefined) => (T | undefined)[] - >1 : 1 - >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/genericRestTypes.types b/testdata/baselines/reference/submodule/compiler/genericRestTypes.types index 6bc4e9110a9..020fc6d80db 100644 --- a/testdata/baselines/reference/submodule/compiler/genericRestTypes.types +++ b/testdata/baselines/reference/submodule/compiler/genericRestTypes.types @@ -78,7 +78,7 @@ function assignmentWithComplexRest3() { >x : string const fn2: (...args: {x: "a"} & {x: "b"}) => void = fn1; ->fn2 : (...args: never) => void +>fn2 : (...args: { x: "a"; } & { x: "b"; }) => void >args : never >x : "a" >x : "b" diff --git a/testdata/baselines/reference/submodule/compiler/genericRestTypes.types.diff b/testdata/baselines/reference/submodule/compiler/genericRestTypes.types.diff deleted file mode 100644 index 54ba3290e42..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericRestTypes.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.genericRestTypes.types -+++ new.genericRestTypes.types -@@= skipped -77, +77 lines =@@ - >x : string - - const fn2: (...args: {x: "a"} & {x: "b"}) => void = fn1; -->fn2 : (...args: { x: "a"; } & { x: "b"; }) => void -+>fn2 : (...args: never) => void - >args : never - >x : "a" - >x : "b" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericTypeArgumentInference1.types b/testdata/baselines/reference/submodule/compiler/genericTypeArgumentInference1.types index e8e43e7a3f6..24a6f9d5405 100644 --- a/testdata/baselines/reference/submodule/compiler/genericTypeArgumentInference1.types +++ b/testdata/baselines/reference/submodule/compiler/genericTypeArgumentInference1.types @@ -10,7 +10,7 @@ namespace Underscore { } export interface Static { all(list: T[], iterator?: Iterator, context?: any): T; ->all : (list: T[], iterator?: Iterator | undefined, context?: any) => T +>all : (list: T[], iterator?: Iterator, context?: any) => T >list : T[] >iterator : Iterator | undefined >context : any @@ -27,9 +27,9 @@ declare var _: Underscore.Static; var r = _.all([true, 1, null, 'yes'], _.identity); >r : string | number | boolean | null >_.all([true, 1, null, 'yes'], _.identity) : string | number | boolean | null ->_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T +>_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >_ : Underscore.Static ->all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T +>all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >[true, 1, null, 'yes'] : (string | number | true | null)[] >true : true >1 : 1 @@ -41,9 +41,9 @@ var r = _.all([true, 1, null, 'yes'], _.identity); var r2 = _.all([true], _.identity); >r2 : boolean >_.all([true], _.identity) : boolean ->_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T +>_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >_ : Underscore.Static ->all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T +>all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >[true] : true[] >true : true >_.identity : (value: T) => T @@ -53,9 +53,9 @@ var r2 = _.all([true], _.identity); var r3 = _.all([], _.identity); >r3 : never >_.all([], _.identity) : never ->_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T +>_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >_ : Underscore.Static ->all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T +>all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >[] : never[] >_.identity : (value: T) => T >_ : Underscore.Static @@ -64,9 +64,9 @@ var r3 = _.all([], _.identity); var r4 = _.all([true], _.identity); >r4 : any >_.all([true], _.identity) : any ->_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T +>_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >_ : Underscore.Static ->all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T +>all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >[true] : any[] >true : any >true : true diff --git a/testdata/baselines/reference/submodule/compiler/genericTypeArgumentInference1.types.diff b/testdata/baselines/reference/submodule/compiler/genericTypeArgumentInference1.types.diff deleted file mode 100644 index 0f330e618bf..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericTypeArgumentInference1.types.diff +++ /dev/null @@ -1,59 +0,0 @@ ---- old.genericTypeArgumentInference1.types -+++ new.genericTypeArgumentInference1.types -@@= skipped -9, +9 lines =@@ - } - export interface Static { - all(list: T[], iterator?: Iterator, context?: any): T; -->all : (list: T[], iterator?: Iterator, context?: any) => T -+>all : (list: T[], iterator?: Iterator | undefined, context?: any) => T - >list : T[] - >iterator : Iterator | undefined - >context : any -@@= skipped -17, +17 lines =@@ - var r = _.all([true, 1, null, 'yes'], _.identity); - >r : string | number | boolean | null - >_.all([true, 1, null, 'yes'], _.identity) : string | number | boolean | null -->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -+>_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T - >_ : Underscore.Static -->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -+>all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T - >[true, 1, null, 'yes'] : (string | number | true | null)[] - >true : true - >1 : 1 -@@= skipped -14, +14 lines =@@ - var r2 = _.all([true], _.identity); - >r2 : boolean - >_.all([true], _.identity) : boolean -->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -+>_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T - >_ : Underscore.Static -->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -+>all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T - >[true] : true[] - >true : true - >_.identity : (value: T) => T -@@= skipped -12, +12 lines =@@ - var r3 = _.all([], _.identity); - >r3 : never - >_.all([], _.identity) : never -->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -+>_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T - >_ : Underscore.Static -->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -+>all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T - >[] : never[] - >_.identity : (value: T) => T - >_ : Underscore.Static -@@= skipped -11, +11 lines =@@ - var r4 = _.all([true], _.identity); - >r4 : any - >_.all([true], _.identity) : any -->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -+>_.all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T - >_ : Underscore.Static -->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -+>all : (list: T[], iterator?: Underscore.Iterator | undefined, context?: any) => T - >[true] : any[] - >true : any - >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericTypeWithCallableMembers2.types b/testdata/baselines/reference/submodule/compiler/genericTypeWithCallableMembers2.types index 3af7f3926a0..777b67681a8 100644 --- a/testdata/baselines/reference/submodule/compiler/genericTypeWithCallableMembers2.types +++ b/testdata/baselines/reference/submodule/compiler/genericTypeWithCallableMembers2.types @@ -2,7 +2,7 @@ === genericTypeWithCallableMembers2.ts === function foo1(f: T) { ->foo1 : string>(f: T) => string +>foo1 : (f: T) => string >f : T return f(); // should return 'string', once returned 'any' @@ -11,7 +11,7 @@ function foo1(f: T) { } function foo2(f: T) { ->foo2 : string>(f: T) => string +>foo2 : (f: T) => string >f : T return new f(); // should be legal, once was an error diff --git a/testdata/baselines/reference/submodule/compiler/genericTypeWithCallableMembers2.types.diff b/testdata/baselines/reference/submodule/compiler/genericTypeWithCallableMembers2.types.diff deleted file mode 100644 index b0a8f597940..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericTypeWithCallableMembers2.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.genericTypeWithCallableMembers2.types -+++ new.genericTypeWithCallableMembers2.types -@@= skipped -1, +1 lines =@@ - - === genericTypeWithCallableMembers2.ts === - function foo1(f: T) { -->foo1 : (f: T) => string -+>foo1 : string>(f: T) => string - >f : T - - return f(); // should return 'string', once returned 'any' -@@= skipped -9, +9 lines =@@ - } - - function foo2(f: T) { -->foo2 : (f: T) => string -+>foo2 : string>(f: T) => string - >f : T - - return new f(); // should be legal, once was an error \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/genericsWithoutTypeParameters1.types b/testdata/baselines/reference/submodule/compiler/genericsWithoutTypeParameters1.types index 30e612dea32..5afc9373a59 100644 --- a/testdata/baselines/reference/submodule/compiler/genericsWithoutTypeParameters1.types +++ b/testdata/baselines/reference/submodule/compiler/genericsWithoutTypeParameters1.types @@ -26,17 +26,17 @@ var i2: I; >i2 : I function foo(x: C, y: I) { } ->foo : (x: any, y: any) => void +>foo : (x: C, y: I) => void >x : any >y : any function foo2(x: C, y: I) { } ->foo2 : (x: C, y: I) => void +>foo2 : (x: C, y: I) => void >x : C >y : I var x: { a: C } = { a: new C() }; ->x : { a: any; } +>x : { a: C; } >a : any >{ a: new C() } : { a: C; } >a : C @@ -44,7 +44,7 @@ var x: { a: C } = { a: new C() }; >C : typeof C var x2: { a: I } = { a: { bar() { return 1 } } }; ->x2 : { a: any; } +>x2 : { a: I; } >a : any >{ a: { bar() { return 1 } } } : { a: { bar(): number; }; } >a : { bar(): number; } @@ -74,7 +74,7 @@ class A { } >A : A function f(x: T): A { ->f : (x: T) => any +>f : (x: T) => A >x : T return null; diff --git a/testdata/baselines/reference/submodule/compiler/genericsWithoutTypeParameters1.types.diff b/testdata/baselines/reference/submodule/compiler/genericsWithoutTypeParameters1.types.diff deleted file mode 100644 index 2f4f4e82222..00000000000 --- a/testdata/baselines/reference/submodule/compiler/genericsWithoutTypeParameters1.types.diff +++ /dev/null @@ -1,41 +0,0 @@ ---- old.genericsWithoutTypeParameters1.types -+++ new.genericsWithoutTypeParameters1.types -@@= skipped -25, +25 lines =@@ - >i2 : I - - function foo(x: C, y: I) { } -->foo : (x: C, y: I) => void -+>foo : (x: any, y: any) => void - >x : any - >y : any - - function foo2(x: C, y: I) { } -->foo2 : (x: C, y: I) => void -+>foo2 : (x: C, y: I) => void - >x : C - >y : I - - var x: { a: C } = { a: new C() }; -->x : { a: C; } -+>x : { a: any; } - >a : any - >{ a: new C() } : { a: C; } - >a : C -@@= skipped -18, +18 lines =@@ - >C : typeof C - - var x2: { a: I } = { a: { bar() { return 1 } } }; -->x2 : { a: I; } -+>x2 : { a: any; } - >a : any - >{ a: { bar() { return 1 } } } : { a: { bar(): number; }; } - >a : { bar(): number; } -@@= skipped -30, +30 lines =@@ - >A : A - - function f(x: T): A { -->f : (x: T) => A -+>f : (x: T) => any - >x : T - - return null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/getParameterNameAtPosition.types b/testdata/baselines/reference/submodule/compiler/getParameterNameAtPosition.types index 33bf08de56d..23d19b1aa35 100644 --- a/testdata/baselines/reference/submodule/compiler/getParameterNameAtPosition.types +++ b/testdata/baselines/reference/submodule/compiler/getParameterNameAtPosition.types @@ -18,7 +18,7 @@ declare function cases(tester: Tester): void; >tester : Tester declare function fn(implementation?: (...args: Y) => any): Mock; ->fn : (implementation?: ((...args: Y) => any) | undefined) => Mock +>fn : (implementation?: (...args: Y) => any) => Mock >implementation : ((...args: Y) => any) | undefined >args : Y @@ -26,7 +26,7 @@ cases(fn(opts => { })); >cases(fn(opts => { })) : void >cases : (tester: Tester) => void >fn(opts => { }) : Mock<[opts: any]> ->fn : (implementation?: ((...args: Y) => any) | undefined) => Mock +>fn : (implementation?: (...args: Y) => any) => Mock >opts => { } : (opts: any) => void >opts : any diff --git a/testdata/baselines/reference/submodule/compiler/getParameterNameAtPosition.types.diff b/testdata/baselines/reference/submodule/compiler/getParameterNameAtPosition.types.diff deleted file mode 100644 index 8afb02ed4b9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/getParameterNameAtPosition.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.getParameterNameAtPosition.types -+++ new.getParameterNameAtPosition.types -@@= skipped -17, +17 lines =@@ - >tester : Tester - - declare function fn(implementation?: (...args: Y) => any): Mock; -->fn : (implementation?: (...args: Y) => any) => Mock -+>fn : (implementation?: ((...args: Y) => any) | undefined) => Mock - >implementation : ((...args: Y) => any) | undefined - >args : Y - -@@= skipped -8, +8 lines =@@ - >cases(fn(opts => { })) : void - >cases : (tester: Tester) => void - >fn(opts => { }) : Mock<[opts: any]> -->fn : (implementation?: (...args: Y) => any) => Mock -+>fn : (implementation?: ((...args: Y) => any) | undefined) => Mock - >opts => { } : (opts: any) => void - >opts : any diff --git a/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeIntersectionAssignability.types b/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeIntersectionAssignability.types index 8cb92040aaf..15ca132c10f 100644 --- a/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeIntersectionAssignability.types +++ b/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeIntersectionAssignability.types @@ -2,10 +2,10 @@ === homomorphicMappedTypeIntersectionAssignability.ts === function f( ->f : (a: { weak?: string | undefined; } & 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 | undefined; } & Readonly & { name: "ok"; } +>a : { weak?: string; } & Readonly & { name: "ok"; } >weak : string | undefined >name : "ok" @@ -18,13 +18,13 @@ function f( >name : string c = a; // Works ->c = a : { weak?: string | undefined; } & Readonly & { name: "ok"; } +>c = a : { weak?: string; } & Readonly & { name: "ok"; } >c : Readonly & { name: string; } ->a : { weak?: string | undefined; } & Readonly & { name: "ok"; } +>a : { weak?: string; } & Readonly & { name: "ok"; } b = a; // Should also work ->b = a : { weak?: string | undefined; } & Readonly & { name: "ok"; } +>b = a : { weak?: string; } & Readonly & { name: "ok"; } >b : Readonly ->a : { weak?: string | undefined; } & Readonly & { name: "ok"; } +>a : { weak?: string; } & Readonly & { name: "ok"; } } diff --git a/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeIntersectionAssignability.types.diff b/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeIntersectionAssignability.types.diff deleted file mode 100644 index b47233ab1b2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeIntersectionAssignability.types.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- old.homomorphicMappedTypeIntersectionAssignability.types -+++ new.homomorphicMappedTypeIntersectionAssignability.types -@@= skipped -1, +1 lines =@@ - - === homomorphicMappedTypeIntersectionAssignability.ts === - function f( -->f : (a: { weak?: string; } & Readonly & { name: "ok"; }, b: Readonly, c: Readonly & { name: string; }) => void -+>f : (a: { weak?: string | undefined; } & Readonly & { name: "ok"; }, b: Readonly, c: Readonly & { name: string; }) => void - - a: { weak?: string } & Readonly & { name: "ok" }, -->a : { weak?: string; } & Readonly & { name: "ok"; } -+>a : { weak?: string | undefined; } & Readonly & { name: "ok"; } - >weak : string | undefined - >name : "ok" - -@@= skipped -16, +16 lines =@@ - >name : string - - c = a; // Works -->c = a : { weak?: string; } & Readonly & { name: "ok"; } -+>c = a : { weak?: string | undefined; } & Readonly & { name: "ok"; } - >c : Readonly & { name: string; } -->a : { weak?: string; } & Readonly & { name: "ok"; } -+>a : { weak?: string | undefined; } & Readonly & { name: "ok"; } - - b = a; // Should also work -->b = a : { weak?: string; } & Readonly & { name: "ok"; } -+>b = a : { weak?: string | undefined; } & Readonly & { name: "ok"; } - >b : Readonly -->a : { weak?: string; } & Readonly & { name: "ok"; } -+>a : { weak?: string | undefined; } & Readonly & { name: "ok"; } - } diff --git a/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeNesting.types b/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeNesting.types index 19969ae8150..30809c96941 100644 --- a/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeNesting.types +++ b/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeNesting.types @@ -20,6 +20,6 @@ type Identity = { [K in keyof T]: T[K] }; >Identity : Identity declare function fnBad>>(...args: T): Test>>; ->fnBad : []>(...args: T) => Identity> +>fnBad : >>(...args: T) => Test>> >args : T diff --git a/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeNesting.types.diff b/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeNesting.types.diff deleted file mode 100644 index 5673394baaf..00000000000 --- a/testdata/baselines/reference/submodule/compiler/homomorphicMappedTypeNesting.types.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.homomorphicMappedTypeNesting.types -+++ new.homomorphicMappedTypeNesting.types -@@= skipped -19, +19 lines =@@ - >Identity : Identity - - declare function fnBad>>(...args: T): Test>>; -->fnBad : >>(...args: T) => Test>> -+>fnBad : []>(...args: T) => Identity> - >args : T diff --git a/testdata/baselines/reference/submodule/compiler/identityAndDivergentNormalizedTypes.types b/testdata/baselines/reference/submodule/compiler/identityAndDivergentNormalizedTypes.types index 4061cc949fe..19b16a9a602 100644 --- a/testdata/baselines/reference/submodule/compiler/identityAndDivergentNormalizedTypes.types +++ b/testdata/baselines/reference/submodule/compiler/identityAndDivergentNormalizedTypes.types @@ -30,23 +30,23 @@ type PostBody = Extract["body"]; >path : PATH const post = ( ->post : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void ->( path: PATH, {body, ...options}: Omit & {body: PostBody}) => {} : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void +>post : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void +>( path: PATH, {body, ...options}: Omit & {body: PostBody}) => {} : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void path: PATH, >path : PATH {body, ...options}: Omit & {body: PostBody} >body : PostBody ->options : { cache?: RequestCache | undefined; credentials?: RequestCredentials | undefined; headers?: HeadersInit | undefined; integrity?: string | undefined; keepalive?: boolean | undefined; method?: string | undefined; mode?: RequestMode | undefined; priority?: RequestPriority | undefined; redirect?: RequestRedirect | undefined; referrer?: string | undefined; referrerPolicy?: ReferrerPolicy | undefined; signal?: AbortSignal | null | undefined; window?: null | undefined; } +>options : { cache?: RequestCache; credentials?: RequestCredentials; headers?: HeadersInit; integrity?: string; keepalive?: boolean; method?: string; mode?: RequestMode; priority?: RequestPriority; redirect?: RequestRedirect; referrer?: string; referrerPolicy?: ReferrerPolicy; signal?: AbortSignal | null; window?: null; } >body : PostBody ) => { } const tmp = ( ->tmp : (path: PATH, body: PostBody) => void ->( path: PATH, body: PostBody) => { post(path, { body })} : (path: PATH, body: PostBody) => void +>tmp : (path: PATH, body: PostBody) => void +>( path: PATH, body: PostBody) => { post(path, { body })} : (path: PATH, body: PostBody) => void path: PATH, >path : PATH @@ -57,14 +57,14 @@ const tmp = ( ) => { post(path, { body }) >post(path, { body }) : void ->post : (path: PATH_1, { body, ...options }: Omit & { body: PostBody; }) => void +>post : (path: PATH_1, { body, ...options }: Omit & { body: PostBody; }) => void >path : PATH >{ body } : { body: PostBody; } >body : PostBody } function fx1

(x: { body: PostBody

}, y: { body: PostBody

}) { ->fx1 :

(x: { body: PostBody

; }, y: { body: PostBody

; }) => void +>fx1 :

(x: { body: PostBody

; }, y: { body: PostBody

; }) => void >x : { body: PostBody

; } >body : PostBody

>y : { body: PostBody

; } diff --git a/testdata/baselines/reference/submodule/compiler/identityAndDivergentNormalizedTypes.types.diff b/testdata/baselines/reference/submodule/compiler/identityAndDivergentNormalizedTypes.types.diff index b6cacc7a63a..e1e82c5a4ad 100644 --- a/testdata/baselines/reference/submodule/compiler/identityAndDivergentNormalizedTypes.types.diff +++ b/testdata/baselines/reference/submodule/compiler/identityAndDivergentNormalizedTypes.types.diff @@ -6,8 +6,8 @@ const post = ( ->post : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void ->( path: PATH, {body, ...options}: Omit & {body: PostBody}) => {} : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void -+>post : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void -+>( path: PATH, {body, ...options}: Omit & {body: PostBody}) => {} : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void ++>post : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void ++>( path: PATH, {body, ...options}: Omit & {body: PostBody}) => {} : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void path: PATH, >path : PATH @@ -15,34 +15,16 @@ {body, ...options}: Omit & {body: PostBody} >body : PostBody ->options : { cache?: RequestCache | undefined; credentials?: RequestCredentials | undefined; headers?: HeadersInit | undefined; integrity?: string | undefined; keepalive?: boolean | undefined; method?: string | undefined; mode?: RequestMode | undefined; priority?: RequestPriority | undefined; redirect?: RequestRedirect | undefined; referrer?: string | undefined; referrerPolicy?: ReferrerPolicy | undefined; signal?: (AbortSignal | null) | undefined; window?: null | undefined; } -+>options : { cache?: RequestCache | undefined; credentials?: RequestCredentials | undefined; headers?: HeadersInit | undefined; integrity?: string | undefined; keepalive?: boolean | undefined; method?: string | undefined; mode?: RequestMode | undefined; priority?: RequestPriority | undefined; redirect?: RequestRedirect | undefined; referrer?: string | undefined; referrerPolicy?: ReferrerPolicy | undefined; signal?: AbortSignal | null | undefined; window?: null | undefined; } ++>options : { cache?: RequestCache; credentials?: RequestCredentials; headers?: HeadersInit; integrity?: string; keepalive?: boolean; method?: string; mode?: RequestMode; priority?: RequestPriority; redirect?: RequestRedirect; referrer?: string; referrerPolicy?: ReferrerPolicy; signal?: AbortSignal | null; window?: null; } >body : PostBody ) => { - } - - const tmp = ( -->tmp : (path: PATH, body: PostBody) => void -->( path: PATH, body: PostBody) => { post(path, { body })} : (path: PATH, body: PostBody) => void -+>tmp : (path: PATH, body: PostBody) => void -+>( path: PATH, body: PostBody) => { post(path, { body })} : (path: PATH, body: PostBody) => void - - path: PATH, - >path : PATH @@= skipped -27, +27 lines =@@ ) => { post(path, { body }) >post(path, { body }) : void ->post : (path: PATH_1, { body, ...options }: Omit & { body: PostBody; }) => void -+>post : (path: PATH_1, { body, ...options }: Omit & { body: PostBody; }) => void ++>post : (path: PATH_1, { body, ...options }: Omit & { body: PostBody; }) => void >path : PATH >{ body } : { body: PostBody; } - >body : PostBody - } - - function fx1

(x: { body: PostBody

}, y: { body: PostBody

}) { -->fx1 :

(x: { body: PostBody

; }, y: { body: PostBody

; }) => void -+>fx1 :

(x: { body: PostBody

; }, y: { body: PostBody

; }) => void - >x : { body: PostBody

; } - >body : PostBody

- >y : { body: PostBody

; } \ No newline at end of file + >body : PostBody \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/implementArrayInterface.types b/testdata/baselines/reference/submodule/compiler/implementArrayInterface.types index 6cfb673d676..b6e6655bc70 100644 --- a/testdata/baselines/reference/submodule/compiler/implementArrayInterface.types +++ b/testdata/baselines/reference/submodule/compiler/implementArrayInterface.types @@ -19,7 +19,7 @@ declare class MyArray implements Array { >items : T[] join(separator?: string): string; ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >separator : string | undefined pop(): T; @@ -36,12 +36,12 @@ declare class MyArray implements Array { >shift : () => T slice(start?: number, end?: number): T[]; ->slice : (start?: number | undefined, end?: number | undefined) => T[] +>slice : (start?: number, end?: number) => T[] >start : number | undefined >end : number | undefined sort(compareFn?: (a: T, b: T) => number): this; ->sort : (compareFn?: ((a: T, b: T) => number) | undefined) => this +>sort : (compareFn?: (a: T, b: T) => number) => this >compareFn : ((a: T, b: T) => number) | undefined >a : T >b : T @@ -61,12 +61,12 @@ declare class MyArray implements Array { >items : T[] indexOf(searchElement: T, fromIndex?: number): number; ->indexOf : (searchElement: T, fromIndex?: number | undefined) => number +>indexOf : (searchElement: T, fromIndex?: number) => number >searchElement : T >fromIndex : number | undefined lastIndexOf(searchElement: T, fromIndex?: number): number; ->lastIndexOf : (searchElement: T, fromIndex?: number | undefined) => number +>lastIndexOf : (searchElement: T, fromIndex?: number) => number >searchElement : T >fromIndex : number | undefined @@ -111,7 +111,7 @@ declare class MyArray implements Array { >thisArg : any reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; ->reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } +>reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T >previousValue : T >currentValue : T @@ -120,7 +120,7 @@ declare class MyArray implements Array { >initialValue : T | undefined reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; ->reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } +>reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U >previousValue : U >currentValue : T @@ -129,7 +129,7 @@ declare class MyArray implements Array { >initialValue : U reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; ->reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } +>reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T >previousValue : T >currentValue : T @@ -138,7 +138,7 @@ declare class MyArray implements Array { >initialValue : T | undefined reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; ->reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } +>reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U >previousValue : U >currentValue : T diff --git a/testdata/baselines/reference/submodule/compiler/implementArrayInterface.types.diff b/testdata/baselines/reference/submodule/compiler/implementArrayInterface.types.diff deleted file mode 100644 index 3567f73a7ef..00000000000 --- a/testdata/baselines/reference/submodule/compiler/implementArrayInterface.types.diff +++ /dev/null @@ -1,77 +0,0 @@ ---- old.implementArrayInterface.types -+++ new.implementArrayInterface.types -@@= skipped -18, +18 lines =@@ - >items : T[] - - join(separator?: string): string; -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >separator : string | undefined - - pop(): T; -@@= skipped -17, +17 lines =@@ - >shift : () => T - - slice(start?: number, end?: number): T[]; -->slice : (start?: number, end?: number) => T[] -+>slice : (start?: number | undefined, end?: number | undefined) => T[] - >start : number | undefined - >end : number | undefined - - sort(compareFn?: (a: T, b: T) => number): this; -->sort : (compareFn?: (a: T, b: T) => number) => this -+>sort : (compareFn?: ((a: T, b: T) => number) | undefined) => this - >compareFn : ((a: T, b: T) => number) | undefined - >a : T - >b : T -@@= skipped -25, +25 lines =@@ - >items : T[] - - indexOf(searchElement: T, fromIndex?: number): number; -->indexOf : (searchElement: T, fromIndex?: number) => number -+>indexOf : (searchElement: T, fromIndex?: number | undefined) => number - >searchElement : T - >fromIndex : number | undefined - - lastIndexOf(searchElement: T, fromIndex?: number): number; -->lastIndexOf : (searchElement: T, fromIndex?: number) => number -+>lastIndexOf : (searchElement: T, fromIndex?: number | undefined) => number - >searchElement : T - >fromIndex : number | undefined - -@@= skipped -50, +50 lines =@@ - >thisArg : any - - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; -->reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -+>reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } - >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T - >previousValue : T - >currentValue : T -@@= skipped -9, +9 lines =@@ - >initialValue : T | undefined - - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; -->reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -+>reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } - >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U - >previousValue : U - >currentValue : T -@@= skipped -9, +9 lines =@@ - >initialValue : U - - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; -->reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -+>reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } - >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T - >previousValue : T - >currentValue : T -@@= skipped -9, +9 lines =@@ - >initialValue : T | undefined - - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; -->reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -+>reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T | undefined): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } - >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U - >previousValue : U - >currentValue : T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/implicitAnyGenericTypeInference.types b/testdata/baselines/reference/submodule/compiler/implicitAnyGenericTypeInference.types index 14a989afc83..d8b2df58d20 100644 --- a/testdata/baselines/reference/submodule/compiler/implicitAnyGenericTypeInference.types +++ b/testdata/baselines/reference/submodule/compiler/implicitAnyGenericTypeInference.types @@ -49,41 +49,41 @@ f2(async () => null); >async () => null : () => Promise declare function f3(cb: () => Generator): void; ->f3 : (cb: () => Generator) => void ->cb : () => Generator +>f3 : (cb: () => Generator) => void +>cb : () => Generator f3(function* () { yield null; }); >f3(function* () { yield null; }) : void ->f3 : (cb: () => Generator) => void +>f3 : (cb: () => Generator) => void >function* () { yield null; } : () => Generator >yield null : any declare function f4(cb: () => Generator): void; ->f4 : (cb: () => Generator) => void ->cb : () => Generator +>f4 : (cb: () => Generator) => void +>cb : () => Generator f4(function* () { return null; }); >f4(function* () { return null; }) : void ->f4 : (cb: () => Generator) => void +>f4 : (cb: () => Generator) => void >function* () { return null; } : () => Generator declare function f5(cb: () => AsyncGenerator): void; ->f5 : (cb: () => AsyncGenerator) => void ->cb : () => AsyncGenerator +>f5 : (cb: () => AsyncGenerator) => void +>cb : () => AsyncGenerator f5(async function* () { yield null; }); >f5(async function* () { yield null; }) : void ->f5 : (cb: () => AsyncGenerator) => void +>f5 : (cb: () => AsyncGenerator) => void >async function* () { yield null; } : () => AsyncGenerator >yield null : any declare function f6(cb: () => AsyncGenerator): void; ->f6 : (cb: () => AsyncGenerator) => void ->cb : () => AsyncGenerator +>f6 : (cb: () => AsyncGenerator) => void +>cb : () => AsyncGenerator f6(async function* () { return null; }); >f6(async function* () { return null; }) : void ->f6 : (cb: () => AsyncGenerator) => void +>f6 : (cb: () => AsyncGenerator) => void >async function* () { return null; } : () => AsyncGenerator // https://github.com/microsoft/TypeScript/issues/44913 diff --git a/testdata/baselines/reference/submodule/compiler/implicitAnyGenericTypeInference.types.diff b/testdata/baselines/reference/submodule/compiler/implicitAnyGenericTypeInference.types.diff deleted file mode 100644 index 15515211c73..00000000000 --- a/testdata/baselines/reference/submodule/compiler/implicitAnyGenericTypeInference.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.implicitAnyGenericTypeInference.types -+++ new.implicitAnyGenericTypeInference.types -@@= skipped -48, +48 lines =@@ - >async () => null : () => Promise - - declare function f3(cb: () => Generator): void; -->f3 : (cb: () => Generator) => void -->cb : () => Generator -+>f3 : (cb: () => Generator) => void -+>cb : () => Generator - - f3(function* () { yield null; }); - >f3(function* () { yield null; }) : void -->f3 : (cb: () => Generator) => void -+>f3 : (cb: () => Generator) => void - >function* () { yield null; } : () => Generator - >yield null : any - - declare function f4(cb: () => Generator): void; -->f4 : (cb: () => Generator) => void -->cb : () => Generator -+>f4 : (cb: () => Generator) => void -+>cb : () => Generator - - f4(function* () { return null; }); - >f4(function* () { return null; }) : void -->f4 : (cb: () => Generator) => void -+>f4 : (cb: () => Generator) => void - >function* () { return null; } : () => Generator - - declare function f5(cb: () => AsyncGenerator): void; -->f5 : (cb: () => AsyncGenerator) => void -->cb : () => AsyncGenerator -+>f5 : (cb: () => AsyncGenerator) => void -+>cb : () => AsyncGenerator - - f5(async function* () { yield null; }); - >f5(async function* () { yield null; }) : void -->f5 : (cb: () => AsyncGenerator) => void -+>f5 : (cb: () => AsyncGenerator) => void - >async function* () { yield null; } : () => AsyncGenerator - >yield null : any - - declare function f6(cb: () => AsyncGenerator): void; -->f6 : (cb: () => AsyncGenerator) => void -->cb : () => AsyncGenerator -+>f6 : (cb: () => AsyncGenerator) => void -+>cb : () => AsyncGenerator - - f6(async function* () { return null; }); - >f6(async function* () { return null; }) : void -->f6 : (cb: () => AsyncGenerator) => void -+>f6 : (cb: () => AsyncGenerator) => void - >async function* () { return null; } : () => AsyncGenerator - - // https://github.com/microsoft/TypeScript/issues/44913 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/implicitConstParameters.types b/testdata/baselines/reference/submodule/compiler/implicitConstParameters.types index ac44a78223f..b77a53818a1 100644 --- a/testdata/baselines/reference/submodule/compiler/implicitConstParameters.types +++ b/testdata/baselines/reference/submodule/compiler/implicitConstParameters.types @@ -11,7 +11,7 @@ function doSomething(cb: () => void) { } function fn(x: number | string) { ->fn : (x: string | number) => void +>fn : (x: number | string) => void >x : string | number if (typeof x === 'number') { @@ -25,9 +25,9 @@ function fn(x: number | string) { >doSomething : (cb: () => void) => void >() => x.toFixed() : () => string >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } } diff --git a/testdata/baselines/reference/submodule/compiler/implicitConstParameters.types.diff b/testdata/baselines/reference/submodule/compiler/implicitConstParameters.types.diff deleted file mode 100644 index 236c150fecf..00000000000 --- a/testdata/baselines/reference/submodule/compiler/implicitConstParameters.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.implicitConstParameters.types -+++ new.implicitConstParameters.types -@@= skipped -10, +10 lines =@@ - } - - function fn(x: number | string) { -->fn : (x: number | string) => void -+>fn : (x: string | number) => void - >x : string | number - - if (typeof x === 'number') { -@@= skipped -14, +14 lines =@@ - >doSomething : (cb: () => void) => void - >() => x.toFixed() : () => string - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - } diff --git a/testdata/baselines/reference/submodule/compiler/importAssertionNonstring.types b/testdata/baselines/reference/submodule/compiler/importAssertionNonstring.types index ce691ab39f0..9d891f48210 100644 --- a/testdata/baselines/reference/submodule/compiler/importAssertionNonstring.types +++ b/testdata/baselines/reference/submodule/compiler/importAssertionNonstring.types @@ -32,7 +32,7 @@ import * as thing6 from "./mod.mjs" with {type: "json", field: 0..toString()} >type : any >field : any >0..toString() : string ->0..toString : (radix?: number | undefined) => string +>0..toString : (radix?: number) => string >0. : 0 ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/importAssertionNonstring.types.diff b/testdata/baselines/reference/submodule/compiler/importAssertionNonstring.types.diff deleted file mode 100644 index 4994577f911..00000000000 --- a/testdata/baselines/reference/submodule/compiler/importAssertionNonstring.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.importAssertionNonstring.types -+++ new.importAssertionNonstring.types -@@= skipped -31, +31 lines =@@ - >type : any - >field : any - >0..toString() : string -->0..toString : (radix?: number) => string -+>0..toString : (radix?: number | undefined) => string - >0. : 0 -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/importHelpers(target=es2015).types b/testdata/baselines/reference/submodule/compiler/importHelpers(target=es2015).types index fee5397f587..abb6d84c6d9 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpers(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/importHelpers(target=es2015).types @@ -88,7 +88,7 @@ export declare function __assign(t: any, ...sources: any[]): any; >sources : any[] export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; ->__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any +>__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any >decorators : Function[] >target : any >key : string | symbol | undefined diff --git a/testdata/baselines/reference/submodule/compiler/importHelpers(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/importHelpers(target=es2015).types.diff deleted file mode 100644 index 8c15c510d45..00000000000 --- a/testdata/baselines/reference/submodule/compiler/importHelpers(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.importHelpers(target=es2015).types -+++ new.importHelpers(target=es2015).types -@@= skipped -87, +87 lines =@@ - >sources : any[] - - export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; -->__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -+>__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any - >decorators : Function[] - >target : any - >key : string | symbol | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersInAmbientContext(target=es2015).types b/testdata/baselines/reference/submodule/compiler/importHelpersInAmbientContext(target=es2015).types index fa10901bb0b..f47977e8e3c 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpersInAmbientContext(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/importHelpersInAmbientContext(target=es2015).types @@ -94,7 +94,7 @@ export declare function __rest(t: any, propertyNames: string[]): any; >propertyNames : string[] export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; ->__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any +>__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any >decorators : Function[] >target : any >key : string | symbol | undefined diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersInAmbientContext(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/importHelpersInAmbientContext(target=es2015).types.diff deleted file mode 100644 index 385e2fa074e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/importHelpersInAmbientContext(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.importHelpersInAmbientContext(target=es2015).types -+++ new.importHelpersInAmbientContext(target=es2015).types -@@= skipped -93, +93 lines =@@ - >propertyNames : string[] - - export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; -->__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -+>__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any - >decorators : Function[] - >target : any - >key : string | symbol | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersInIsolatedModules(target=es2015).types b/testdata/baselines/reference/submodule/compiler/importHelpersInIsolatedModules(target=es2015).types index e7099e7c080..70085cd9778 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpersInIsolatedModules(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/importHelpersInIsolatedModules(target=es2015).types @@ -60,7 +60,7 @@ export declare function __assign(t: any, ...sources: any[]): any; >sources : any[] export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; ->__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any +>__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any >decorators : Function[] >target : any >key : string | symbol | undefined diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersInIsolatedModules(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/importHelpersInIsolatedModules(target=es2015).types.diff deleted file mode 100644 index c1513ff9277..00000000000 --- a/testdata/baselines/reference/submodule/compiler/importHelpersInIsolatedModules(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.importHelpersInIsolatedModules(target=es2015).types -+++ new.importHelpersInIsolatedModules(target=es2015).types -@@= skipped -59, +59 lines =@@ - >sources : any[] - - export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; -->__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -+>__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any - >decorators : Function[] - >target : any - >key : string | symbol | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersInTsx(target=es2015).types b/testdata/baselines/reference/submodule/compiler/importHelpersInTsx(target=es2015).types index c6916a1481e..bcb226e63bd 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpersInTsx(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/importHelpersInTsx(target=es2015).types @@ -38,7 +38,7 @@ export declare function __assign(t: any, ...sources: any[]): any; >sources : any[] export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; ->__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any +>__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any >decorators : Function[] >target : any >key : string | symbol | undefined diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersInTsx(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/importHelpersInTsx(target=es2015).types.diff deleted file mode 100644 index e5b96f7d410..00000000000 --- a/testdata/baselines/reference/submodule/compiler/importHelpersInTsx(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.importHelpersInTsx(target=es2015).types -+++ new.importHelpersInTsx(target=es2015).types -@@= skipped -37, +37 lines =@@ - >sources : any[] - - export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; -->__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -+>__decorate : (decorators: Function[], target: any, key?: string | symbol | undefined, desc?: any) => any - >decorators : Function[] - >target : any - >key : string | symbol | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inDoesNotOperateOnPrimitiveTypes.types b/testdata/baselines/reference/submodule/compiler/inDoesNotOperateOnPrimitiveTypes.types index 4726b282eba..a5f65767dd8 100644 --- a/testdata/baselines/reference/submodule/compiler/inDoesNotOperateOnPrimitiveTypes.types +++ b/testdata/baselines/reference/submodule/compiler/inDoesNotOperateOnPrimitiveTypes.types @@ -86,7 +86,7 @@ function union2(thing: T | U) { } function union3(thing: T | string | number) { ->union3 : (thing: string | number | T) => void +>union3 : (thing: T | string | number) => void >thing : string | number | T "key" in thing; // Error (because narrowing is possible) @@ -113,7 +113,7 @@ function union3(thing: T | string | number) { } function union4(thing: T) { ->union4 : (thing: T) => void +>union4 : (thing: T) => void >thing : T "key" in thing; // Ok (because narrowing is impossible) @@ -123,7 +123,7 @@ function union4(thing: T) { } function union5(p: T | U) { ->union5 : (p: T | U) => void +>union5 : (p: T | U) => void >p : T | U // For consistency, this should probably not be an error, because useful diff --git a/testdata/baselines/reference/submodule/compiler/inDoesNotOperateOnPrimitiveTypes.types.diff b/testdata/baselines/reference/submodule/compiler/inDoesNotOperateOnPrimitiveTypes.types.diff deleted file mode 100644 index 59ae60aca20..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inDoesNotOperateOnPrimitiveTypes.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.inDoesNotOperateOnPrimitiveTypes.types -+++ new.inDoesNotOperateOnPrimitiveTypes.types -@@= skipped -85, +85 lines =@@ - } - - function union3(thing: T | string | number) { -->union3 : (thing: T | string | number) => void -+>union3 : (thing: string | number | T) => void - >thing : string | number | T - - "key" in thing; // Error (because narrowing is possible) -@@= skipped -27, +27 lines =@@ - } - - function union4(thing: T) { -->union4 : (thing: T) => void -+>union4 : (thing: T) => void - >thing : T - - "key" in thing; // Ok (because narrowing is impossible) -@@= skipped -10, +10 lines =@@ - } - - function union5(p: T | U) { -->union5 : (p: T | U) => void -+>union5 : (p: T | U) => void - >p : T | U - - // For consistency, this should probably not be an error, because useful \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inKeywordAndIntersection.types b/testdata/baselines/reference/submodule/compiler/inKeywordAndIntersection.types index 603bbba9257..5eb3098022e 100644 --- a/testdata/baselines/reference/submodule/compiler/inKeywordAndIntersection.types +++ b/testdata/baselines/reference/submodule/compiler/inKeywordAndIntersection.types @@ -12,7 +12,7 @@ class B { b = 0 } >0 : 0 function f10(obj: A & { x: string } | B) { ->f10 : (obj: B | (A & { x: string; })) => void +>f10 : (obj: (A & { x: string; }) | B) => void >obj : B | (A & { x: string; }) >x : string diff --git a/testdata/baselines/reference/submodule/compiler/inKeywordAndIntersection.types.diff b/testdata/baselines/reference/submodule/compiler/inKeywordAndIntersection.types.diff deleted file mode 100644 index 52af7b116f9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inKeywordAndIntersection.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.inKeywordAndIntersection.types -+++ new.inKeywordAndIntersection.types -@@= skipped -11, +11 lines =@@ - >0 : 0 - - function f10(obj: A & { x: string } | B) { -->f10 : (obj: (A & { x: string; }) | B) => void -+>f10 : (obj: B | (A & { x: string; })) => void - >obj : B | (A & { x: string; }) - >x : string diff --git a/testdata/baselines/reference/submodule/compiler/inKeywordAndUnknown.types b/testdata/baselines/reference/submodule/compiler/inKeywordAndUnknown.types index 35b7d41781e..577e19857d5 100644 --- a/testdata/baselines/reference/submodule/compiler/inKeywordAndUnknown.types +++ b/testdata/baselines/reference/submodule/compiler/inKeywordAndUnknown.types @@ -137,7 +137,7 @@ function f5(x: T & {}) { } function f6(x: T & {}) { ->f6 : (x: T) => x is T & Object & Record<"a", unknown> +>f6 : (x: T & {}) => x is T & Object & Record<"a", unknown> >x : T return x instanceof Object && 'a' in x; @@ -151,7 +151,7 @@ function f6(x: T & {}) { } function f7(x: T & {}) { ->f7 : (x: T) => x is T & Record<"a", unknown> +>f7 : (x: T & {}) => x is T & Record<"a", unknown> >x : T return x instanceof Object && 'a' in x; diff --git a/testdata/baselines/reference/submodule/compiler/inKeywordAndUnknown.types.diff b/testdata/baselines/reference/submodule/compiler/inKeywordAndUnknown.types.diff deleted file mode 100644 index 59d759036e8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inKeywordAndUnknown.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.inKeywordAndUnknown.types -+++ new.inKeywordAndUnknown.types -@@= skipped -136, +136 lines =@@ - } - - function f6(x: T & {}) { -->f6 : (x: T & {}) => x is T & Object & Record<"a", unknown> -+>f6 : (x: T) => x is T & Object & Record<"a", unknown> - >x : T - - return x instanceof Object && 'a' in x; -@@= skipped -14, +14 lines =@@ - } - - function f7(x: T & {}) { -->f7 : (x: T & {}) => x is T & Record<"a", unknown> -+>f7 : (x: T) => x is T & Record<"a", unknown> - >x : T - - return x instanceof Object && 'a' in x; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=false).types b/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=false).types index 818413f8819..dcc5f678527 100644 --- a/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=false).types +++ b/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=false).types @@ -966,17 +966,17 @@ function f13(x: { a?: string }) { } function f14(x: { a: string | undefined }) { ->f14 : (x: { a: string; }) => void ->x : { a: string; } +>f14 : (x: { a: string | undefined; }) => void +>x : { a: string | undefined; } >a : string if ("a" in x) { >"a" in x : boolean >"a" : "a" ->x : { a: string; } +>x : { a: string | undefined; } x; ->x : { a: string; } +>x : { a: string | undefined; } } else { x; @@ -985,21 +985,21 @@ function f14(x: { a: string | undefined }) { } function f15(x: { a?: string | undefined }) { ->f15 : (x: { a?: string; }) => void ->x : { a?: string; } +>f15 : (x: { a?: string | undefined; }) => void +>x : { a?: string | undefined; } >a : string if ("a" in x) { >"a" in x : boolean >"a" : "a" ->x : { a?: string; } +>x : { a?: string | undefined; } x; ->x : { a?: string; } +>x : { a?: string | undefined; } } else { x; ->x : { a?: string; } +>x : { a?: string | undefined; } } } @@ -1060,7 +1060,7 @@ const checkIsTouchDevice = () => // Repro from #51501 function isHTMLTable(table: T): boolean { ->isHTMLTable : (table: T) => boolean +>isHTMLTable : (table: T) => boolean >table : T return !!table && 'html' in table; @@ -1076,8 +1076,8 @@ function isHTMLTable(table: T): boolean { // Repro from #51549 const f =

(a: P & {}) => { ->f :

(a: P) => void ->

(a: P & {}) => { "foo" in a;} :

(a: P) => void +>f :

(a: P & {}) => void +>

(a: P & {}) => { "foo" in a;} :

(a: P & {}) => void >a : P "foo" in a; diff --git a/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=false).types.diff b/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=false).types.diff deleted file mode 100644 index 0dad3fa1c08..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=false).types.diff +++ /dev/null @@ -1,71 +0,0 @@ ---- old.inKeywordTypeguard(strict=false).types -+++ new.inKeywordTypeguard(strict=false).types -@@= skipped -965, +965 lines =@@ - } - - function f14(x: { a: string | undefined }) { -->f14 : (x: { a: string | undefined; }) => void -->x : { a: string | undefined; } -+>f14 : (x: { a: string; }) => void -+>x : { a: string; } - >a : string - - if ("a" in x) { - >"a" in x : boolean - >"a" : "a" -->x : { a: string | undefined; } -+>x : { a: string; } - - x; -->x : { a: string | undefined; } -+>x : { a: string; } - } - else { - x; -@@= skipped -19, +19 lines =@@ - } - - function f15(x: { a?: string | undefined }) { -->f15 : (x: { a?: string | undefined; }) => void -->x : { a?: string | undefined; } -+>f15 : (x: { a?: string; }) => void -+>x : { a?: string; } - >a : string - - if ("a" in x) { - >"a" in x : boolean - >"a" : "a" -->x : { a?: string | undefined; } -+>x : { a?: string; } - - x; -->x : { a?: string | undefined; } -+>x : { a?: string; } - } - else { - x; -->x : { a?: string | undefined; } -+>x : { a?: string; } - } - } - -@@= skipped -75, +75 lines =@@ - // Repro from #51501 - - function isHTMLTable(table: T): boolean { -->isHTMLTable : (table: T) => boolean -+>isHTMLTable : (table: T) => boolean - >table : T - - return !!table && 'html' in table; -@@= skipped -16, +16 lines =@@ - // Repro from #51549 - - const f =

(a: P & {}) => { -->f :

(a: P & {}) => void -->

(a: P & {}) => { "foo" in a;} :

(a: P & {}) => void -+>f :

(a: P) => void -+>

(a: P & {}) => { "foo" in a;} :

(a: P) => void - >a : P - - "foo" in a; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=true).types b/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=true).types index 769115a81f7..a6771860bb1 100644 --- a/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=true).types +++ b/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=true).types @@ -947,21 +947,21 @@ function f12(x: { a: string }) { } function f13(x: { a?: string }) { ->f13 : (x: { a?: string | undefined; }) => void ->x : { a?: string | undefined; } +>f13 : (x: { a?: string; }) => void +>x : { a?: string; } >a : string | undefined if ("a" in x) { >"a" in x : boolean >"a" : "a" ->x : { a?: string | undefined; } +>x : { a?: string; } x; ->x : { a?: string | undefined; } +>x : { a?: string; } } else { x; ->x : { a?: string | undefined; } +>x : { a?: string; } } } @@ -1076,8 +1076,8 @@ function isHTMLTable(table: T): boolean { // Repro from #51549 const f =

(a: P & {}) => { ->f :

(a: P) => void ->

(a: P & {}) => { "foo" in a;} :

(a: P) => void +>f :

(a: P & {}) => void +>

(a: P & {}) => { "foo" in a;} :

(a: P & {}) => void >a : P "foo" in a; diff --git a/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=true).types.diff b/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=true).types.diff deleted file mode 100644 index 7c1b5f737db..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inKeywordTypeguard(strict=true).types.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.inKeywordTypeguard(strict=true).types -+++ new.inKeywordTypeguard(strict=true).types -@@= skipped -946, +946 lines =@@ - } - - function f13(x: { a?: string }) { -->f13 : (x: { a?: string; }) => void -->x : { a?: string; } -+>f13 : (x: { a?: string | undefined; }) => void -+>x : { a?: string | undefined; } - >a : string | undefined - - if ("a" in x) { - >"a" in x : boolean - >"a" : "a" -->x : { a?: string; } -+>x : { a?: string | undefined; } - - x; -->x : { a?: string; } -+>x : { a?: string | undefined; } - } - else { - x; -->x : { a?: string; } -+>x : { a?: string | undefined; } - } - } - -@@= skipped -129, +129 lines =@@ - // Repro from #51549 - - const f =

(a: P & {}) => { -->f :

(a: P & {}) => void -->

(a: P & {}) => { "foo" in a;} :

(a: P & {}) => void -+>f :

(a: P) => void -+>

(a: P & {}) => { "foo" in a;} :

(a: P) => void - >a : P - - "foo" in a; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessAndNullableNarrowing.types b/testdata/baselines/reference/submodule/compiler/indexedAccessAndNullableNarrowing.types index c9dd584ee05..f22afcd268a 100644 --- a/testdata/baselines/reference/submodule/compiler/indexedAccessAndNullableNarrowing.types +++ b/testdata/baselines/reference/submodule/compiler/indexedAccessAndNullableNarrowing.types @@ -85,7 +85,7 @@ interface Store { } export function syncStoreProp< ->syncStoreProp : , K extends keyof S>(store: Store, props: P, key: K) => void +>syncStoreProp : , K extends keyof S>(store: Store, props: P, key: K) => void S extends State, P extends Partial, diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessAndNullableNarrowing.types.diff b/testdata/baselines/reference/submodule/compiler/indexedAccessAndNullableNarrowing.types.diff deleted file mode 100644 index a005aa9d227..00000000000 --- a/testdata/baselines/reference/submodule/compiler/indexedAccessAndNullableNarrowing.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.indexedAccessAndNullableNarrowing.types -+++ new.indexedAccessAndNullableNarrowing.types -@@= skipped -84, +84 lines =@@ - } - - export function syncStoreProp< -->syncStoreProp : , K extends keyof S>(store: Store, props: P, key: K) => void -+>syncStoreProp : , K extends keyof S>(store: Store, props: P, key: K) => void - - S extends State, - P extends Partial, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types b/testdata/baselines/reference/submodule/compiler/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types index 87e5e9e7d30..9284a9c313b 100644 --- a/testdata/baselines/reference/submodule/compiler/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types +++ b/testdata/baselines/reference/submodule/compiler/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types @@ -10,7 +10,7 @@ type Params = Parameters>; interface Wrapper { call(event: K, ...args: Params): void; ->call : (event: K, ...args: Parameters>) => void +>call : (event: K, ...args: Params) => void >event : K >args : Parameters> } diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types.diff b/testdata/baselines/reference/submodule/compiler/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types.diff deleted file mode 100644 index 5ed2fdeb025..00000000000 --- a/testdata/baselines/reference/submodule/compiler/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types -+++ new.indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types -@@= skipped -9, +9 lines =@@ - - interface Wrapper { - call(event: K, ...args: Params): void; -->call : (event: K, ...args: Params) => void -+>call : (event: K, ...args: Parameters>) => void - >event : K - >args : Parameters> - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessNormalization.types b/testdata/baselines/reference/submodule/compiler/indexedAccessNormalization.types index 9e00ae1ce40..caf1ff6a603 100644 --- a/testdata/baselines/reference/submodule/compiler/indexedAccessNormalization.types +++ b/testdata/baselines/reference/submodule/compiler/indexedAccessNormalization.types @@ -13,7 +13,7 @@ type MyMap = { } declare function g(value?: T): void; ->g : (value?: T | undefined) => void +>g : (value?: T) => void >value : T | undefined function f1(mymap: MyMap, k: keyof M) { @@ -29,7 +29,7 @@ function f1(mymap: MyMap, k: keyof M) { g(elemofM); >g(elemofM) : void ->g : (value?: T | undefined) => void +>g : (value?: T) => void >elemofM : MyMap[keyof M] } diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessNormalization.types.diff b/testdata/baselines/reference/submodule/compiler/indexedAccessNormalization.types.diff deleted file mode 100644 index 7da9562f519..00000000000 --- a/testdata/baselines/reference/submodule/compiler/indexedAccessNormalization.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.indexedAccessNormalization.types -+++ new.indexedAccessNormalization.types -@@= skipped -12, +12 lines =@@ - } - - declare function g(value?: T): void; -->g : (value?: T) => void -+>g : (value?: T | undefined) => void - >value : T | undefined - - function f1(mymap: MyMap, k: keyof M) { -@@= skipped -16, +16 lines =@@ - - g(elemofM); - >g(elemofM) : void -->g : (value?: T) => void -+>g : (value?: T | undefined) => void - >elemofM : MyMap[keyof M] - } diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessTypeConstraints.types b/testdata/baselines/reference/submodule/compiler/indexedAccessTypeConstraints.types index 1d972e0ed05..2b2b37afb63 100644 --- a/testdata/baselines/reference/submodule/compiler/indexedAccessTypeConstraints.types +++ b/testdata/baselines/reference/submodule/compiler/indexedAccessTypeConstraints.types @@ -74,7 +74,7 @@ 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 >y : T["content"] diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessTypeConstraints.types.diff b/testdata/baselines/reference/submodule/compiler/indexedAccessTypeConstraints.types.diff new file mode 100644 index 00000000000..ed19b3961cb --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/indexedAccessTypeConstraints.types.diff @@ -0,0 +1,11 @@ +--- old.indexedAccessTypeConstraints.types ++++ new.indexedAccessTypeConstraints.types +@@= skipped -73, +73 lines =@@ + // 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 + >y : T["content"] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessWithFreshObjectLiteral.types b/testdata/baselines/reference/submodule/compiler/indexedAccessWithFreshObjectLiteral.types index ec2a530a0e4..3c7ebceac4e 100644 --- a/testdata/baselines/reference/submodule/compiler/indexedAccessWithFreshObjectLiteral.types +++ b/testdata/baselines/reference/submodule/compiler/indexedAccessWithFreshObjectLiteral.types @@ -26,7 +26,7 @@ function foo (id: string) { } function bar (id: 'a' | 'b') { ->bar : (id: "a" | "b") => string | number +>bar : (id: 'a' | 'b') => string | number >id : "a" | "b" return { @@ -50,7 +50,7 @@ function bar (id: 'a' | 'b') { } function baz (id: '1' | '2') { ->baz : (id: "1" | "2") => string | number +>baz : (id: '1' | '2') => string | number >id : "1" | "2" return { @@ -98,7 +98,7 @@ function qux (id: 1 | 2) { } function quux (id: 'a' | 'b' | 'z') { ->quux : (id: "a" | "b" | "z") => string | number | undefined +>quux : (id: 'a' | 'b' | 'z') => string | number | undefined >id : "a" | "b" | "z" return { diff --git a/testdata/baselines/reference/submodule/compiler/indexedAccessWithFreshObjectLiteral.types.diff b/testdata/baselines/reference/submodule/compiler/indexedAccessWithFreshObjectLiteral.types.diff new file mode 100644 index 00000000000..64ac7cb9797 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/indexedAccessWithFreshObjectLiteral.types.diff @@ -0,0 +1,29 @@ +--- old.indexedAccessWithFreshObjectLiteral.types ++++ new.indexedAccessWithFreshObjectLiteral.types +@@= skipped -25, +25 lines =@@ + } + + function bar (id: 'a' | 'b') { +->bar : (id: "a" | "b") => string | number ++>bar : (id: 'a' | 'b') => string | number + >id : "a" | "b" + + return { +@@= skipped -24, +24 lines =@@ + } + + function baz (id: '1' | '2') { +->baz : (id: "1" | "2") => string | number ++>baz : (id: '1' | '2') => string | number + >id : "1" | "2" + + return { +@@= skipped -48, +48 lines =@@ + } + + function quux (id: 'a' | 'b' | 'z') { +->quux : (id: "a" | "b" | "z") => string | number | undefined ++>quux : (id: 'a' | 'b' | 'z') => string | number | undefined + >id : "a" | "b" | "z" + + return { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/indirectTypeParameterReferences.types b/testdata/baselines/reference/submodule/compiler/indirectTypeParameterReferences.types index 75a34dd6254..c1d0ac7c2da 100644 --- a/testdata/baselines/reference/submodule/compiler/indirectTypeParameterReferences.types +++ b/testdata/baselines/reference/submodule/compiler/indirectTypeParameterReferences.types @@ -82,7 +82,7 @@ combined(comb => { // Repro from #19091 declare function f(a: T): { a: typeof a }; ->f : (a: T) => { a: T; } +>f : (a: T) => { a: typeof a; } >a : T >a : T >a : T @@ -91,7 +91,7 @@ let n: number = f(2).a; >n : number >f(2).a : number >f(2) : { a: number; } ->f : (a: T) => { a: T; } +>f : (a: T) => { a: typeof a; } >2 : 2 >a : number diff --git a/testdata/baselines/reference/submodule/compiler/indirectTypeParameterReferences.types.diff b/testdata/baselines/reference/submodule/compiler/indirectTypeParameterReferences.types.diff deleted file mode 100644 index fff0f1fc45c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/indirectTypeParameterReferences.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.indirectTypeParameterReferences.types -+++ new.indirectTypeParameterReferences.types -@@= skipped -81, +81 lines =@@ - // Repro from #19091 - - declare function f(a: T): { a: typeof a }; -->f : (a: T) => { a: typeof a; } -+>f : (a: T) => { a: T; } - >a : T - >a : T - >a : T -@@= skipped -9, +9 lines =@@ - >n : number - >f(2).a : number - >f(2) : { a: number; } -->f : (a: T) => { a: typeof a; } -+>f : (a: T) => { a: T; } - >2 : 2 - >a : number diff --git a/testdata/baselines/reference/submodule/compiler/inferFromGenericFunctionReturnTypes3.types b/testdata/baselines/reference/submodule/compiler/inferFromGenericFunctionReturnTypes3.types index 73cdcf57ceb..d331675c09d 100644 --- a/testdata/baselines/reference/submodule/compiler/inferFromGenericFunctionReturnTypes3.types +++ b/testdata/baselines/reference/submodule/compiler/inferFromGenericFunctionReturnTypes3.types @@ -30,7 +30,7 @@ function wrap(value: T): Wrap { } function wrappedFoo(): Wrap<'foo'> { ->wrappedFoo : () => Wrap<"foo"> +>wrappedFoo : () => Wrap<'foo'> return wrap('foo'); >wrap('foo') : Wrap<"foo"> @@ -39,7 +39,7 @@ function wrappedFoo(): Wrap<'foo'> { } function wrapBar(value: 'bar'): Wrap<'bar'> { ->wrapBar : (value: "bar") => Wrap<"bar"> +>wrapBar : (value: 'bar') => Wrap<'bar'> >value : "bar" return { value }; @@ -48,7 +48,7 @@ function wrapBar(value: 'bar'): Wrap<'bar'> { } function wrappedBar(): Wrap<'bar'> { ->wrappedBar : () => Wrap<"bar"> +>wrappedBar : () => Wrap<'bar'> const value = 'bar'; >value : "bar" @@ -57,13 +57,13 @@ function wrappedBar(): Wrap<'bar'> { const inferred = wrapBar(value); >inferred : Wrap<"bar"> >wrapBar(value) : Wrap<"bar"> ->wrapBar : (value: "bar") => Wrap<"bar"> +>wrapBar : (value: 'bar') => Wrap<'bar'> >value : "bar" const literal = wrapBar('bar'); >literal : Wrap<"bar"> >wrapBar('bar') : Wrap<"bar"> ->wrapBar : (value: "bar") => Wrap<"bar"> +>wrapBar : (value: 'bar') => Wrap<'bar'> >'bar' : "bar" const value2: string = 'bar'; @@ -73,7 +73,7 @@ function wrappedBar(): Wrap<'bar'> { const literal2 = wrapBar(value2); // Error >literal2 : Wrap<"bar"> >wrapBar(value2) : Wrap<"bar"> ->wrapBar : (value: "bar") => Wrap<"bar"> +>wrapBar : (value: 'bar') => Wrap<'bar'> >value2 : string return wrap(value); @@ -83,7 +83,7 @@ function wrappedBar(): Wrap<'bar'> { } function wrappedBaz(): Wrap<'baz'> { ->wrappedBaz : () => Wrap<"baz"> +>wrappedBaz : () => Wrap<'baz'> const value: 'baz' = 'baz'; >value : "baz" @@ -252,7 +252,7 @@ function objectToMap(obj: any) { interface Person { phoneNumbers: { ->phoneNumbers : { __typename: "PhoneNumber"; }[] +>phoneNumbers : { __typename: 'PhoneNumber'; }[] __typename: 'PhoneNumber'; >__typename : "PhoneNumber" diff --git a/testdata/baselines/reference/submodule/compiler/inferFromGenericFunctionReturnTypes3.types.diff b/testdata/baselines/reference/submodule/compiler/inferFromGenericFunctionReturnTypes3.types.diff new file mode 100644 index 00000000000..ade337f6244 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/inferFromGenericFunctionReturnTypes3.types.diff @@ -0,0 +1,72 @@ +--- old.inferFromGenericFunctionReturnTypes3.types ++++ new.inferFromGenericFunctionReturnTypes3.types +@@= skipped -29, +29 lines =@@ + } + + function wrappedFoo(): Wrap<'foo'> { +->wrappedFoo : () => Wrap<"foo"> ++>wrappedFoo : () => Wrap<'foo'> + + return wrap('foo'); + >wrap('foo') : Wrap<"foo"> +@@= skipped -9, +9 lines =@@ + } + + function wrapBar(value: 'bar'): Wrap<'bar'> { +->wrapBar : (value: "bar") => Wrap<"bar"> ++>wrapBar : (value: 'bar') => Wrap<'bar'> + >value : "bar" + + return { value }; +@@= skipped -9, +9 lines =@@ + } + + function wrappedBar(): Wrap<'bar'> { +->wrappedBar : () => Wrap<"bar"> ++>wrappedBar : () => Wrap<'bar'> + + const value = 'bar'; + >value : "bar" +@@= skipped -9, +9 lines =@@ + const inferred = wrapBar(value); + >inferred : Wrap<"bar"> + >wrapBar(value) : Wrap<"bar"> +->wrapBar : (value: "bar") => Wrap<"bar"> ++>wrapBar : (value: 'bar') => Wrap<'bar'> + >value : "bar" + + const literal = wrapBar('bar'); + >literal : Wrap<"bar"> + >wrapBar('bar') : Wrap<"bar"> +->wrapBar : (value: "bar") => Wrap<"bar"> ++>wrapBar : (value: 'bar') => Wrap<'bar'> + >'bar' : "bar" + + const value2: string = 'bar'; +@@= skipped -16, +16 lines =@@ + const literal2 = wrapBar(value2); // Error + >literal2 : Wrap<"bar"> + >wrapBar(value2) : Wrap<"bar"> +->wrapBar : (value: "bar") => Wrap<"bar"> ++>wrapBar : (value: 'bar') => Wrap<'bar'> + >value2 : string + + return wrap(value); +@@= skipped -10, +10 lines =@@ + } + + function wrappedBaz(): Wrap<'baz'> { +->wrappedBaz : () => Wrap<"baz"> ++>wrappedBaz : () => Wrap<'baz'> + + const value: 'baz' = 'baz'; + >value : "baz" +@@= skipped -169, +169 lines =@@ + + interface Person { + phoneNumbers: { +->phoneNumbers : { __typename: "PhoneNumber"; }[] ++>phoneNumbers : { __typename: 'PhoneNumber'; }[] + + __typename: 'PhoneNumber'; + >__typename : "PhoneNumber" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferFromNestedSameShapeTuple.types b/testdata/baselines/reference/submodule/compiler/inferFromNestedSameShapeTuple.types index e6571d58d80..af83ad79d2b 100644 --- a/testdata/baselines/reference/submodule/compiler/inferFromNestedSameShapeTuple.types +++ b/testdata/baselines/reference/submodule/compiler/inferFromNestedSameShapeTuple.types @@ -26,20 +26,20 @@ declare function getIds(items: readonly Recursive[]): Id[]; >items : readonly Recursive[] const items = [{ ->items : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] ->[{ id: 'a', children: [{ id: 'b', children: [] }]}] as const satisfies readonly Recursive[] : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] ->[{ 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 []; }]; }] ->{ id: 'a', children: [{ id: 'b', children: [] }]} : { readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; } +>items : readonly [{ readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; }] +>[{ id: 'a', children: [{ id: 'b', children: [] }]}] as const satisfies readonly Recursive[] : readonly [{ readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; }] +>[{ 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 []; }]; }] +>{ id: 'a', children: [{ id: 'b', children: [] }]} : { readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; } id: 'a', >id : "a" >'a' : "a" children: [{ ->children : readonly [{ readonly id: "b"; readonly children: readonly []; }] ->[{ id: 'b', children: [] }] : readonly [{ readonly id: "b"; readonly children: readonly []; }] ->{ id: 'b', children: [] } : { readonly id: "b"; readonly children: readonly []; } +>children : readonly [{ readonly id: 'b'; readonly children: readonly []; }] +>[{ id: 'b', children: [] }] : readonly [{ readonly id: 'b'; readonly children: readonly []; }] +>{ id: 'b', children: [] } : { readonly id: 'b'; readonly children: readonly []; } id: 'b', >id : "b" @@ -56,25 +56,25 @@ const foo = getIds(items) >foo : ("a" | "b")[] >getIds(items) : ("a" | "b")[] >getIds : (items: readonly Recursive[]) => Id[] ->items : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] +>items : readonly [{ readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; }] // variant with a fresh argument const foo2 = getIds([{ >foo2 : ("a" | "b")[] >getIds([{ id: 'a', children: [{ id: 'b', children: [] }]}] as const) : ("a" | "b")[] >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 []; }]; }] ->{ id: 'a', children: [{ id: 'b', children: [] }]} : { readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; } +>[{ 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 []; }]; }] +>{ id: 'a', children: [{ id: 'b', children: [] }]} : { readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; } id: 'a', >id : "a" >'a' : "a" children: [{ ->children : readonly [{ readonly id: "b"; readonly children: readonly []; }] ->[{ id: 'b', children: [] }] : readonly [{ readonly id: "b"; readonly children: readonly []; }] ->{ id: 'b', children: [] } : { readonly id: "b"; readonly children: readonly []; } +>children : readonly [{ readonly id: 'b'; readonly children: readonly []; }] +>[{ id: 'b', children: [] }] : readonly [{ readonly id: 'b'; readonly children: readonly []; }] +>{ id: 'b', children: [] } : { readonly id: 'b'; readonly children: readonly []; } id: 'b', >id : "b" diff --git a/testdata/baselines/reference/submodule/compiler/inferFromNestedSameShapeTuple.types.diff b/testdata/baselines/reference/submodule/compiler/inferFromNestedSameShapeTuple.types.diff new file mode 100644 index 00000000000..9700373c2f2 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/inferFromNestedSameShapeTuple.types.diff @@ -0,0 +1,64 @@ +--- old.inferFromNestedSameShapeTuple.types ++++ new.inferFromNestedSameShapeTuple.types +@@= skipped -25, +25 lines =@@ + >items : readonly Recursive[] + + const items = [{ +->items : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] +->[{ id: 'a', children: [{ id: 'b', children: [] }]}] as const satisfies readonly Recursive[] : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] +->[{ 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 []; }]; }] +->{ id: 'a', children: [{ id: 'b', children: [] }]} : { readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; } ++>items : readonly [{ readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; }] ++>[{ id: 'a', children: [{ id: 'b', children: [] }]}] as const satisfies readonly Recursive[] : readonly [{ readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; }] ++>[{ 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 []; }]; }] ++>{ id: 'a', children: [{ id: 'b', children: [] }]} : { readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; } + + id: 'a', + >id : "a" + >'a' : "a" + + children: [{ +->children : readonly [{ readonly id: "b"; readonly children: readonly []; }] +->[{ id: 'b', children: [] }] : readonly [{ readonly id: "b"; readonly children: readonly []; }] +->{ id: 'b', children: [] } : { readonly id: "b"; readonly children: readonly []; } ++>children : readonly [{ readonly id: 'b'; readonly children: readonly []; }] ++>[{ id: 'b', children: [] }] : readonly [{ readonly id: 'b'; readonly children: readonly []; }] ++>{ id: 'b', children: [] } : { readonly id: 'b'; readonly children: readonly []; } + + id: 'b', + >id : "b" +@@= skipped -30, +30 lines =@@ + >foo : ("a" | "b")[] + >getIds(items) : ("a" | "b")[] + >getIds : (items: readonly Recursive[]) => Id[] +->items : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] ++>items : readonly [{ readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; }] + + // variant with a fresh argument + const foo2 = getIds([{ + >foo2 : ("a" | "b")[] + >getIds([{ id: 'a', children: [{ id: 'b', children: [] }]}] as const) : ("a" | "b")[] + >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 []; }]; }] +->{ id: 'a', children: [{ id: 'b', children: [] }]} : { readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; } ++>[{ 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 []; }]; }] ++>{ id: 'a', children: [{ id: 'b', children: [] }]} : { readonly id: 'a'; readonly children: readonly [{ readonly id: 'b'; readonly children: readonly []; }]; } + + id: 'a', + >id : "a" + >'a' : "a" + + children: [{ +->children : readonly [{ readonly id: "b"; readonly children: readonly []; }] +->[{ id: 'b', children: [] }] : readonly [{ readonly id: "b"; readonly children: readonly []; }] +->{ id: 'b', children: [] } : { readonly id: "b"; readonly children: readonly []; } ++>children : readonly [{ readonly id: 'b'; readonly children: readonly []; }] ++>[{ id: 'b', children: [] }] : readonly [{ readonly id: 'b'; readonly children: readonly []; }] ++>{ id: 'b', children: [] } : { readonly id: 'b'; readonly children: readonly []; } + + id: 'b', + >id : "b" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferParameterWithMethodCallInitializer.types b/testdata/baselines/reference/submodule/compiler/inferParameterWithMethodCallInitializer.types index 9c0db4c19ee..6c6b6ad2d60 100644 --- a/testdata/baselines/reference/submodule/compiler/inferParameterWithMethodCallInitializer.types +++ b/testdata/baselines/reference/submodule/compiler/inferParameterWithMethodCallInitializer.types @@ -17,7 +17,7 @@ class Example { >1 : 1 } doSomething(a = this.getNumber()): typeof a { ->doSomething : (a?: number) => number +>doSomething : (a?: number) => typeof a >a : number >this.getNumber() : number >this.getNumber : () => number diff --git a/testdata/baselines/reference/submodule/compiler/inferParameterWithMethodCallInitializer.types.diff b/testdata/baselines/reference/submodule/compiler/inferParameterWithMethodCallInitializer.types.diff deleted file mode 100644 index 0040372a9e3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferParameterWithMethodCallInitializer.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.inferParameterWithMethodCallInitializer.types -+++ new.inferParameterWithMethodCallInitializer.types -@@= skipped -16, +16 lines =@@ - >1 : 1 - } - doSomething(a = this.getNumber()): typeof a { -->doSomething : (a?: number) => typeof a -+>doSomething : (a?: number) => number - >a : number - >this.getNumber() : number - >this.getNumber : () => number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferTypePredicates.js b/testdata/baselines/reference/submodule/compiler/inferTypePredicates.js index 9f6aeb5ff86..4dd9b2612e2 100644 --- a/testdata/baselines/reference/submodule/compiler/inferTypePredicates.js +++ b/testdata/baselines/reference/submodule/compiler/inferTypePredicates.js @@ -621,8 +621,8 @@ declare function assertAndPredicate(x: string | number | Date): x is string; declare let snd: string | number | Date; declare function isNumberWithThis(this: Date, x: number | string): x is number; declare function narrowFromAny(x: any): x is number; -declare const noInferenceFromRest: (f_0: "a" | "b") => boolean; -declare const noInferenceFromImpossibleRest: () => boolean; +declare const noInferenceFromRest: (...f: ["a" | "b"]) => boolean; +declare const noInferenceFromImpossibleRest: (...f: []) => boolean; declare function inferWithRest(x: string | null, ...f: ["a", "b"]): x is string; declare const foobar: { type: "foo"; @@ -631,13 +631,7 @@ declare const foobar: { type: "bar"; bar: string; }; -declare const foobarPred: (fb: { - type: "foo"; - foo: number; -} | { - type: "bar"; - bar: string; -}) => fb is { +declare const foobarPred: (fb: typeof foobar) => fb is { type: "foo"; foo: number; }; diff --git a/testdata/baselines/reference/submodule/compiler/inferTypePredicates.js.diff b/testdata/baselines/reference/submodule/compiler/inferTypePredicates.js.diff index a1f286e79f4..78cf778f43b 100644 --- a/testdata/baselines/reference/submodule/compiler/inferTypePredicates.js.diff +++ b/testdata/baselines/reference/submodule/compiler/inferTypePredicates.js.diff @@ -20,30 +20,4 @@ +const evenSquaresNonNull = [1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) .filter(x => x !== null); - function isNonNull(x) { -@@= skipped -304, +301 lines =@@ - declare let snd: string | number | Date; - declare function isNumberWithThis(this: Date, x: number | string): x is number; - declare function narrowFromAny(x: any): x is number; --declare const noInferenceFromRest: (...f: ["a" | "b"]) => boolean; --declare const noInferenceFromImpossibleRest: (...f: []) => boolean; -+declare const noInferenceFromRest: (f_0: "a" | "b") => boolean; -+declare const noInferenceFromImpossibleRest: () => boolean; - declare function inferWithRest(x: string | null, ...f: ["a", "b"]): x is string; - declare const foobar: { - type: "foo"; -@@= skipped -10, +10 lines =@@ - type: "bar"; - bar: string; - }; --declare const foobarPred: (fb: typeof foobar) => fb is { -+declare const foobarPred: (fb: { -+ type: "foo"; -+ foo: number; -+} | { -+ type: "bar"; -+ bar: string; -+}) => fb is { - type: "foo"; - foo: number; - }; \ No newline at end of file + function isNonNull(x) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferTypePredicates.types b/testdata/baselines/reference/submodule/compiler/inferTypePredicates.types index f047f503813..0ffd72e1e02 100644 --- a/testdata/baselines/reference/submodule/compiler/inferTypePredicates.types +++ b/testdata/baselines/reference/submodule/compiler/inferTypePredicates.types @@ -216,15 +216,15 @@ const result = myArray >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[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => 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[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] ->(arr) => arr.list : (arr: { list?: MyObj[] | undefined; }) => MyObj[] | undefined ->arr : { list?: MyObj[] | undefined; } +>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[]; } >arr.list : MyObj[] | undefined ->arr : { list?: MyObj[] | undefined; } +>arr : { list?: MyObj[]; } >list : MyObj[] | undefined .filter((arr) => arr && arr.length) @@ -262,9 +262,9 @@ const result = myArray >obj => JSON.parse(obj.data) : (obj: MyObj) => any >obj : MyObj >JSON.parse(obj.data) : any ->JSON.parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any +>JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any >JSON : JSON ->parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any +>parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any >obj.data : string | undefined >obj : MyObj >data : string | undefined @@ -280,15 +280,15 @@ const result2 = myArray >myArray .map((arr) => arr.list) .filter((arr) => !!arr) : MyObj[][] >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[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => 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[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] ->(arr) => arr.list : (arr: { list?: MyObj[] | undefined; }) => MyObj[] | undefined ->arr : { list?: MyObj[] | undefined; } +>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[]; } >arr.list : MyObj[] | undefined ->arr : { list?: MyObj[] | undefined; } +>arr : { list?: MyObj[]; } >list : MyObj[] | undefined .filter((arr) => !!arr) @@ -341,9 +341,9 @@ const result2 = myArray >obj => JSON.parse(obj.data) : (obj: MyObj) => any >obj : MyObj >JSON.parse(obj.data) : any ->JSON.parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any +>JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any >JSON : JSON ->parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any +>parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any >obj.data : string | undefined >obj : MyObj >data : string | undefined @@ -435,7 +435,7 @@ a.push(10); // Defer to explicit type guards, even when they're incorrect. function backwardsGuard(x: number|string): x is number { ->backwardsGuard : (x: string | number) => x is number +>backwardsGuard : (x: number | string) => x is number >x : string | number return typeof x === 'string'; @@ -668,7 +668,7 @@ function guardsOneButNotOthers(a: string|number, b: string|number, c: string|num // Checks that there are no string escaping issues function dunderguard(__x: number | string) { ->dunderguard : (__x: string | number) => __x is string +>dunderguard : (__x: number | string) => __x is string >__x : string | number return typeof __x === 'string'; @@ -700,14 +700,14 @@ const numOrBoolean = (x: number | boolean) => typeof x === 'number' || x; // inferred guards in methods interface NumberInferrer { isNumber(x: number | string): x is number; ->isNumber : (x: string | number) => x is number +>isNumber : (x: number | string) => x is number >x : string | number } class Inferrer implements NumberInferrer { >Inferrer : Inferrer isNumber(x: number | string) { // should ok ->isNumber : (x: string | number) => x is number +>isNumber : (x: number | string) => x is number >x : string | number return typeof x === 'number'; @@ -727,9 +727,9 @@ const inf = new Inferrer(); if (inf.isNumber(numOrStr)) { >inf.isNumber(numOrStr) : boolean ->inf.isNumber : (x: string | number) => x is number +>inf.isNumber : (x: number | string) => x is number >inf : Inferrer ->isNumber : (x: string | number) => x is number +>isNumber : (x: number | string) => x is number >numOrStr : string | number let t: number = numOrStr; // should ok @@ -926,7 +926,7 @@ if (assertAndPredicate(snd)) { } function isNumberWithThis(this: Date, x: number | string) { ->isNumberWithThis : (this: Date, x: string | number) => x is number +>isNumberWithThis : (this: Date, x: number | string) => x is number >this : Date >x : string | number @@ -992,8 +992,8 @@ declare const foobar: >bar : string const foobarPred = (fb: typeof foobar) => fb.type === "foo"; ->foobarPred : (fb: { type: "foo"; foo: number; } | { type: "bar"; bar: string; }) => fb is { type: "foo"; foo: number; } ->(fb: typeof foobar) => fb.type === "foo" : (fb: { type: "foo"; foo: number; } | { type: "bar"; bar: string; }) => fb is { type: "foo"; foo: number; } +>foobarPred : (fb: typeof foobar) => fb is { type: "foo"; foo: number; } +>(fb: typeof foobar) => fb.type === "foo" : (fb: typeof foobar) => fb is { type: "foo"; foo: number; } >fb : { type: "foo"; foo: number; } | { type: "bar"; bar: string; } >foobar : { type: "foo"; foo: number; } | { type: "bar"; bar: string; } >fb.type === "foo" : boolean @@ -1004,7 +1004,7 @@ const foobarPred = (fb: typeof foobar) => fb.type === "foo"; if (foobarPred(foobar)) { >foobarPred(foobar) : boolean ->foobarPred : (fb: { type: "foo"; foo: number; } | { type: "bar"; bar: string; }) => fb is { type: "foo"; foo: number; } +>foobarPred : (fb: typeof foobar) => fb is { type: "foo"; foo: number; } >foobar : { type: "foo"; foo: number; } | { type: "bar"; bar: string; } foobar.foo; diff --git a/testdata/baselines/reference/submodule/compiler/inferTypePredicates.types.diff b/testdata/baselines/reference/submodule/compiler/inferTypePredicates.types.diff deleted file mode 100644 index 27e41e48556..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferTypePredicates.types.diff +++ /dev/null @@ -1,144 +0,0 @@ ---- old.inferTypePredicates.types -+++ new.inferTypePredicates.types -@@= skipped -215, +215 lines =@@ - >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[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] - >myArray : MyArray - - .map((arr) => arr.list) -->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[]; } -+>map : (callbackfn: (value: { list?: MyObj[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] -+>(arr) => arr.list : (arr: { list?: MyObj[] | undefined; }) => MyObj[] | undefined -+>arr : { list?: MyObj[] | undefined; } - >arr.list : MyObj[] | undefined -->arr : { list?: MyObj[]; } -+>arr : { list?: MyObj[] | undefined; } - >list : MyObj[] | undefined - - .filter((arr) => arr && arr.length) -@@= skipped -46, +46 lines =@@ - >obj => JSON.parse(obj.data) : (obj: MyObj) => any - >obj : MyObj - >JSON.parse(obj.data) : any -->JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any -+>JSON.parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any - >JSON : JSON -->parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any -+>parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any - >obj.data : string | undefined - >obj : MyObj - >data : string | undefined -@@= skipped -18, +18 lines =@@ - >myArray .map((arr) => arr.list) .filter((arr) => !!arr) : MyObj[][] - >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[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] - >myArray : MyArray - - .map((arr) => arr.list) -->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[]; } -+>map : (callbackfn: (value: { list?: MyObj[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] -+>(arr) => arr.list : (arr: { list?: MyObj[] | undefined; }) => MyObj[] | undefined -+>arr : { list?: MyObj[] | undefined; } - >arr.list : MyObj[] | undefined -->arr : { list?: MyObj[]; } -+>arr : { list?: MyObj[] | undefined; } - >list : MyObj[] | undefined - - .filter((arr) => !!arr) -@@= skipped -61, +61 lines =@@ - >obj => JSON.parse(obj.data) : (obj: MyObj) => any - >obj : MyObj - >JSON.parse(obj.data) : any -->JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any -+>JSON.parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any - >JSON : JSON -->parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any -+>parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any - >obj.data : string | undefined - >obj : MyObj - >data : string | undefined -@@= skipped -94, +94 lines =@@ - - // Defer to explicit type guards, even when they're incorrect. - function backwardsGuard(x: number|string): x is number { -->backwardsGuard : (x: number | string) => x is number -+>backwardsGuard : (x: string | number) => x is number - >x : string | number - - return typeof x === 'string'; -@@= skipped -233, +233 lines =@@ - - // Checks that there are no string escaping issues - function dunderguard(__x: number | string) { -->dunderguard : (__x: number | string) => __x is string -+>dunderguard : (__x: string | number) => __x is string - >__x : string | number - - return typeof __x === 'string'; -@@= skipped -32, +32 lines =@@ - // inferred guards in methods - interface NumberInferrer { - isNumber(x: number | string): x is number; -->isNumber : (x: number | string) => x is number -+>isNumber : (x: string | number) => x is number - >x : string | number - } - class Inferrer implements NumberInferrer { - >Inferrer : Inferrer - - isNumber(x: number | string) { // should ok -->isNumber : (x: number | string) => x is number -+>isNumber : (x: string | number) => x is number - >x : string | number - - return typeof x === 'number'; -@@= skipped -27, +27 lines =@@ - - if (inf.isNumber(numOrStr)) { - >inf.isNumber(numOrStr) : boolean -->inf.isNumber : (x: number | string) => x is number -+>inf.isNumber : (x: string | number) => x is number - >inf : Inferrer -->isNumber : (x: number | string) => x is number -+>isNumber : (x: string | number) => x is number - >numOrStr : string | number - - let t: number = numOrStr; // should ok -@@= skipped -199, +199 lines =@@ - } - - function isNumberWithThis(this: Date, x: number | string) { -->isNumberWithThis : (this: Date, x: number | string) => x is number -+>isNumberWithThis : (this: Date, x: string | number) => x is number - >this : Date - >x : string | number - -@@= skipped -66, +66 lines =@@ - >bar : string - - const foobarPred = (fb: typeof foobar) => fb.type === "foo"; -->foobarPred : (fb: typeof foobar) => fb is { type: "foo"; foo: number; } -->(fb: typeof foobar) => fb.type === "foo" : (fb: typeof foobar) => fb is { type: "foo"; foo: number; } -+>foobarPred : (fb: { type: "foo"; foo: number; } | { type: "bar"; bar: string; }) => fb is { type: "foo"; foo: number; } -+>(fb: typeof foobar) => fb.type === "foo" : (fb: { type: "foo"; foo: number; } | { type: "bar"; bar: string; }) => fb is { type: "foo"; foo: number; } - >fb : { type: "foo"; foo: number; } | { type: "bar"; bar: string; } - >foobar : { type: "foo"; foo: number; } | { type: "bar"; bar: string; } - >fb.type === "foo" : boolean -@@= skipped -12, +12 lines =@@ - - if (foobarPred(foobar)) { - >foobarPred(foobar) : boolean -->foobarPred : (fb: typeof foobar) => fb is { type: "foo"; foo: number; } -+>foobarPred : (fb: { type: "foo"; foo: number; } | { type: "bar"; bar: string; }) => fb is { type: "foo"; foo: number; } - >foobar : { type: "foo"; foo: number; } | { type: "bar"; bar: string; } - - foobar.foo; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion1.types b/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion1.types index f71f09c782c..7b4b0361097 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion1.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion1.types @@ -8,26 +8,26 @@ declare function useCallback1(fn: T): T; >fn : T declare function ex2(callback?: (x: number) => void): void; ->ex2 : (callback?: ((x: number) => void) | undefined) => void +>ex2 : (callback?: (x: number) => void) => void >callback : ((x: number) => void) | undefined >x : number ex2(useCallback1((x) => {})); >ex2(useCallback1((x) => {})) : void ->ex2 : (callback?: ((x: number) => void) | undefined) => void +>ex2 : (callback?: (x: number) => void) => void >useCallback1((x) => {}) : (x: number) => void >useCallback1 : (fn: T) => T >(x) => {} : (x: number) => void >x : number declare function ex3(callback: ((x: number) => void) | 5): void; ->ex3 : (callback: 5 | ((x: number) => void)) => void +>ex3 : (callback: ((x: number) => void) | 5) => void >callback : 5 | ((x: number) => void) >x : number ex3(useCallback1((x) => {})); >ex3(useCallback1((x) => {})) : void ->ex3 : (callback: 5 | ((x: number) => void)) => void +>ex3 : (callback: ((x: number) => void) | 5) => void >useCallback1((x) => {}) : (x: number) => void >useCallback1 : (fn: T) => T >(x) => {} : (x: number) => void diff --git a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion1.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion1.types.diff deleted file mode 100644 index 4b6d696696f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion1.types.diff +++ /dev/null @@ -1,33 +0,0 @@ ---- old.inferenceContextualReturnTypeUnion1.types -+++ new.inferenceContextualReturnTypeUnion1.types -@@= skipped -7, +7 lines =@@ - >fn : T - - declare function ex2(callback?: (x: number) => void): void; -->ex2 : (callback?: (x: number) => void) => void -+>ex2 : (callback?: ((x: number) => void) | undefined) => void - >callback : ((x: number) => void) | undefined - >x : number - - ex2(useCallback1((x) => {})); - >ex2(useCallback1((x) => {})) : void -->ex2 : (callback?: (x: number) => void) => void -+>ex2 : (callback?: ((x: number) => void) | undefined) => void - >useCallback1((x) => {}) : (x: number) => void - >useCallback1 : (fn: T) => T - >(x) => {} : (x: number) => void - >x : number - - declare function ex3(callback: ((x: number) => void) | 5): void; -->ex3 : (callback: ((x: number) => void) | 5) => void -+>ex3 : (callback: 5 | ((x: number) => void)) => void - >callback : 5 | ((x: number) => void) - >x : number - - ex3(useCallback1((x) => {})); - >ex3(useCallback1((x) => {})) : void -->ex3 : (callback: ((x: number) => void) | 5) => void -+>ex3 : (callback: 5 | ((x: number) => void)) => void - >useCallback1((x) => {}) : (x: number) => void - >useCallback1 : (fn: T) => T - >(x) => {} : (x: number) => void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion2.types b/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion2.types index 4cc4f73511e..0a5274cc7cd 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion2.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion2.types @@ -35,7 +35,7 @@ type FindByText = ( ) => Promise; declare function findByLabelText( ->findByLabelText : (container: HTMLElement, text: string) => Promise +>findByLabelText : (container: HTMLElement, text: string) => ReturnType> ...args: Parameters> >args : [container: HTMLElement, text: string] @@ -43,17 +43,17 @@ declare function findByLabelText( ): ReturnType>; const queries = { ->queries : { findByLabelText: (container: HTMLElement, text: string) => Promise; } ->{ findByLabelText,} : { findByLabelText: (container: HTMLElement, text: string) => Promise; } +>queries : { findByLabelText: (container: HTMLElement, text: string) => ReturnType>; } +>{ findByLabelText,} : { findByLabelText: (container: HTMLElement, text: string) => ReturnType>; } findByLabelText, ->findByLabelText : (container: HTMLElement, text: string) => Promise +>findByLabelText : (container: HTMLElement, text: string) => ReturnType> }; type MapQueries = { >MapQueries : MapQueries ->queries : { findByLabelText: (container: HTMLElement, text: string) => Promise; } +>queries : { findByLabelText: (container: HTMLElement, text: string) => ReturnType>; } [P in keyof Q]: Q[P]; }; diff --git a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion2.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion2.types.diff deleted file mode 100644 index de2cb2c940c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion2.types.diff +++ /dev/null @@ -1,33 +0,0 @@ ---- old.inferenceContextualReturnTypeUnion2.types -+++ new.inferenceContextualReturnTypeUnion2.types -@@= skipped -34, +34 lines =@@ - ) => Promise; - - declare function findByLabelText( -->findByLabelText : (container: HTMLElement, text: string) => ReturnType> -+>findByLabelText : (container: HTMLElement, text: string) => Promise - - ...args: Parameters> - >args : [container: HTMLElement, text: string] -@@= skipped -8, +8 lines =@@ - ): ReturnType>; - - const queries = { -->queries : { findByLabelText: (container: HTMLElement, text: string) => ReturnType>; } -->{ findByLabelText,} : { findByLabelText: (container: HTMLElement, text: string) => ReturnType>; } -+>queries : { findByLabelText: (container: HTMLElement, text: string) => Promise; } -+>{ findByLabelText,} : { findByLabelText: (container: HTMLElement, text: string) => Promise; } - - findByLabelText, -->findByLabelText : (container: HTMLElement, text: string) => ReturnType> -+>findByLabelText : (container: HTMLElement, text: string) => Promise - - }; - - type MapQueries = { - >MapQueries : MapQueries -->queries : { findByLabelText: (container: HTMLElement, text: string) => ReturnType>; } -+>queries : { findByLabelText: (container: HTMLElement, text: string) => Promise; } - - [P in keyof Q]: Q[P]; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion3.types b/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion3.types index 055d5e5c0c8..cf1d5e860b1 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion3.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion3.types @@ -2,7 +2,7 @@ === inferenceContextualReturnTypeUnion3.ts === declare function deprecate( ->deprecate : (fn: T, msg: string, code?: string | undefined) => T +>deprecate : (fn: T, msg: string, code?: string) => T fn: T, >fn : T @@ -54,7 +54,7 @@ const soonFrozenObjectDeprecation = ( set: deprecate( >set : (target: T, property: string | symbol, value: any, receiver: any) => boolean >deprecate( (target, property, value, receiver) => Reflect.set(target, property, value, receiver), message, code, ) : (target: T, property: string | symbol, value: any, receiver: any) => boolean ->deprecate : (fn: T_1, msg: string, code?: string | undefined) => T_1 +>deprecate : (fn: T_1, msg: string, code?: string) => T_1 (target, property, value, receiver) => >(target, property, value, receiver) => Reflect.set(target, property, value, receiver) : (target: T, property: string | symbol, value: any, receiver: any) => boolean @@ -83,7 +83,7 @@ const soonFrozenObjectDeprecation = ( defineProperty: deprecate( >defineProperty : (target: T, property: string | symbol, descriptor: PropertyDescriptor) => boolean >deprecate( (target, property, descriptor) => Reflect.defineProperty(target, property, descriptor), message, code, ) : (target: T, property: string | symbol, descriptor: PropertyDescriptor) => boolean ->deprecate : (fn: T_1, msg: string, code?: string | undefined) => T_1 +>deprecate : (fn: T_1, msg: string, code?: string) => T_1 (target, property, descriptor) => >(target, property, descriptor) => Reflect.defineProperty(target, property, descriptor) : (target: T, property: string | symbol, descriptor: PropertyDescriptor) => boolean @@ -110,7 +110,7 @@ const soonFrozenObjectDeprecation = ( deleteProperty: deprecate( >deleteProperty : (target: T, property: string | symbol) => boolean >deprecate( (target, property) => Reflect.deleteProperty(target, property), message, code, ) : (target: T, property: string | symbol) => boolean ->deprecate : (fn: T_1, msg: string, code?: string | undefined) => T_1 +>deprecate : (fn: T_1, msg: string, code?: string) => T_1 (target, property) => Reflect.deleteProperty(target, property), >(target, property) => Reflect.deleteProperty(target, property) : (target: T, property: string | symbol) => boolean @@ -133,7 +133,7 @@ const soonFrozenObjectDeprecation = ( setPrototypeOf: deprecate( >setPrototypeOf : (target: T, proto: object | null) => boolean >deprecate( (target, proto) => Reflect.setPrototypeOf(target, proto), message, code, ) : (target: T, proto: object | null) => boolean ->deprecate : (fn: T_1, msg: string, code?: string | undefined) => T_1 +>deprecate : (fn: T_1, msg: string, code?: string) => T_1 (target, proto) => Reflect.setPrototypeOf(target, proto), >(target, proto) => Reflect.setPrototypeOf(target, proto) : (target: T, proto: object | null) => boolean diff --git a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion3.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion3.types.diff deleted file mode 100644 index b756ebb5721..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferenceContextualReturnTypeUnion3.types.diff +++ /dev/null @@ -1,47 +0,0 @@ ---- old.inferenceContextualReturnTypeUnion3.types -+++ new.inferenceContextualReturnTypeUnion3.types -@@= skipped -1, +1 lines =@@ - - === inferenceContextualReturnTypeUnion3.ts === - declare function deprecate( -->deprecate : (fn: T, msg: string, code?: string) => T -+>deprecate : (fn: T, msg: string, code?: string | undefined) => T - - fn: T, - >fn : T -@@= skipped -52, +52 lines =@@ - set: deprecate( - >set : (target: T, property: string | symbol, value: any, receiver: any) => boolean - >deprecate( (target, property, value, receiver) => Reflect.set(target, property, value, receiver), message, code, ) : (target: T, property: string | symbol, value: any, receiver: any) => boolean -->deprecate : (fn: T_1, msg: string, code?: string) => T_1 -+>deprecate : (fn: T_1, msg: string, code?: string | undefined) => T_1 - - (target, property, value, receiver) => - >(target, property, value, receiver) => Reflect.set(target, property, value, receiver) : (target: T, property: string | symbol, value: any, receiver: any) => boolean -@@= skipped -29, +29 lines =@@ - defineProperty: deprecate( - >defineProperty : (target: T, property: string | symbol, descriptor: PropertyDescriptor) => boolean - >deprecate( (target, property, descriptor) => Reflect.defineProperty(target, property, descriptor), message, code, ) : (target: T, property: string | symbol, descriptor: PropertyDescriptor) => boolean -->deprecate : (fn: T_1, msg: string, code?: string) => T_1 -+>deprecate : (fn: T_1, msg: string, code?: string | undefined) => T_1 - - (target, property, descriptor) => - >(target, property, descriptor) => Reflect.defineProperty(target, property, descriptor) : (target: T, property: string | symbol, descriptor: PropertyDescriptor) => boolean -@@= skipped -27, +27 lines =@@ - deleteProperty: deprecate( - >deleteProperty : (target: T, property: string | symbol) => boolean - >deprecate( (target, property) => Reflect.deleteProperty(target, property), message, code, ) : (target: T, property: string | symbol) => boolean -->deprecate : (fn: T_1, msg: string, code?: string) => T_1 -+>deprecate : (fn: T_1, msg: string, code?: string | undefined) => T_1 - - (target, property) => Reflect.deleteProperty(target, property), - >(target, property) => Reflect.deleteProperty(target, property) : (target: T, property: string | symbol) => boolean -@@= skipped -23, +23 lines =@@ - setPrototypeOf: deprecate( - >setPrototypeOf : (target: T, proto: object | null) => boolean - >deprecate( (target, proto) => Reflect.setPrototypeOf(target, proto), message, code, ) : (target: T, proto: object | null) => boolean -->deprecate : (fn: T_1, msg: string, code?: string) => T_1 -+>deprecate : (fn: T_1, msg: string, code?: string | undefined) => T_1 - - (target, proto) => Reflect.setPrototypeOf(target, proto), - >(target, proto) => Reflect.setPrototypeOf(target, proto) : (target: T, proto: object | null) => boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferenceDoesNotAddUndefinedOrNull.types b/testdata/baselines/reference/submodule/compiler/inferenceDoesNotAddUndefinedOrNull.types index 50b0f8ce95e..6e4d65fc566 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceDoesNotAddUndefinedOrNull.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceDoesNotAddUndefinedOrNull.types @@ -5,7 +5,7 @@ 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) | undefined) => T | undefined +>forEachChild : (cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray) => T | undefined) => T | undefined >cbNode : (node: Node) => T | undefined >node : Node >cbNodeArray : ((nodes: NodeArray) => T | undefined) | undefined @@ -21,9 +21,9 @@ declare function toArray(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) => T | readonly T[] | undefined) => readonly T[] +>flatMapChildren : (node: Node, cb: (child: Node) => readonly T[] | T | undefined) => readonly T[] >node : Node ->cb : (child: Node) => T | readonly T[] | undefined +>cb : (child: Node) => readonly T[] | T | undefined >child : Node const result: T[] = []; @@ -32,16 +32,16 @@ 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)); } }) : undefined ->node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: ((nodes: NodeArray) => T_1 | undefined) | 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) | 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) => undefined >child : Node const value = cb(child); >value : T | readonly T[] | undefined >cb(child) : T | readonly T[] | undefined ->cb : (child: Node) => T | readonly T[] | undefined +>cb : (child: Node) => readonly T[] | T | undefined >child : Node if (value !== undefined) { @@ -65,9 +65,9 @@ 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) => T | readonly T[] | null) => readonly T[] +>flatMapChildren2 : (node: Node, cb: (child: Node) => readonly T[] | T | null) => readonly T[] >node : Node ->cb : (child: Node) => T | readonly T[] | null +>cb : (child: Node) => readonly T[] | T | null >child : Node const result: T[] = []; @@ -76,16 +76,16 @@ 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)); } }) : undefined ->node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: ((nodes: NodeArray) => T_1 | undefined) | 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) | 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) => undefined >child : Node const value = cb(child); >value : T | readonly T[] | null >cb(child) : T | readonly T[] | null ->cb : (child: Node) => T | readonly T[] | null +>cb : (child: Node) => readonly T[] | T | null >child : Node if (value !== null) { diff --git a/testdata/baselines/reference/submodule/compiler/inferenceDoesNotAddUndefinedOrNull.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceDoesNotAddUndefinedOrNull.types.diff index 6671a706743..1f56ded78e6 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceDoesNotAddUndefinedOrNull.types.diff +++ b/testdata/baselines/reference/submodule/compiler/inferenceDoesNotAddUndefinedOrNull.types.diff @@ -1,15 +1,6 @@ --- old.inferenceDoesNotAddUndefinedOrNull.types +++ new.inferenceDoesNotAddUndefinedOrNull.types -@@= skipped -4, +4 lines =@@ - - 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) | undefined) => T | undefined - >cbNode : (node: Node) => T | undefined - >node : Node - >cbNodeArray : ((nodes: NodeArray) => T | undefined) | undefined -@@= skipped -8, +8 lines =@@ +@@= skipped -12, +12 lines =@@ } declare function toArray(value: T | T[]): T[]; @@ -22,64 +13,4 @@ +>toArray : { (value: T | T[]): T[]; (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) => T | readonly T[] | undefined) => readonly T[] - >node : Node -->cb : (child: Node) => readonly T[] | T | undefined -+>cb : (child: Node) => T | readonly T[] | undefined - >child : Node - - const result: T[] = []; -@@= skipped -19, +19 lines =@@ - - node.forEachChild(child => { - >node.forEachChild(child => { const value = cb(child); if (value !== undefined) { result.push(...toArray(value)); } }) : 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) | 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) | undefined) => T_1 | undefined - >child => { const value = cb(child); if (value !== undefined) { result.push(...toArray(value)); } } : (child: Node) => undefined - >child : Node - - const value = cb(child); - >value : T | readonly T[] | undefined - >cb(child) : T | readonly T[] | undefined -->cb : (child: Node) => readonly T[] | T | undefined -+>cb : (child: Node) => T | readonly T[] | undefined - >child : Node - - if (value !== undefined) { -@@= skipped -33, +33 lines =@@ - } - - 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) => T | readonly T[] | null) => readonly T[] - >node : Node -->cb : (child: Node) => readonly T[] | T | null -+>cb : (child: Node) => T | readonly T[] | null - >child : Node - - const result: T[] = []; -@@= skipped -11, +11 lines =@@ - - node.forEachChild(child => { - >node.forEachChild(child => { const value = cb(child); if (value !== null) { result.push(...toArray(value)); } }) : 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) | 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) | undefined) => T_1 | undefined - >child => { const value = cb(child); if (value !== null) { result.push(...toArray(value)); } } : (child: Node) => undefined - >child : Node - - const value = cb(child); - >value : T | readonly T[] | null - >cb(child) : T | readonly T[] | null -->cb : (child: Node) => readonly T[] | T | null -+>cb : (child: Node) => T | readonly T[] | null - >child : Node - - if (value !== null) { \ No newline at end of file + function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | undefined): readonly T[] { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferenceErasedSignatures.types b/testdata/baselines/reference/submodule/compiler/inferenceErasedSignatures.types index fd04046d338..dfe568167f3 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceErasedSignatures.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceErasedSignatures.types @@ -17,7 +17,7 @@ abstract class SomeAbstractClass extends SomeBaseClass { >SomeBaseClass : SomeBaseClass foo!: (r?: R) => void; ->foo : (r?: R | undefined) => void +>foo : (r?: R) => void >r : R | undefined bar!: (r?: any) => void; @@ -74,7 +74,7 @@ interface BaseType { >c : T1 useT2(r?: T2): void; ->useT2 : (r?: T2 | undefined) => void +>useT2 : (r?: T2) => void >r : T2 | undefined unrelatedButSomehowRelevant(r?: any): void; @@ -101,7 +101,7 @@ interface StructuralVersion { >c : number useT2(r?: boolean): void; ->useT2 : (r?: boolean | undefined) => void +>useT2 : (r?: boolean) => void >r : boolean | undefined unrelatedButSomehowRelevant(r?: any): void; diff --git a/testdata/baselines/reference/submodule/compiler/inferenceErasedSignatures.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceErasedSignatures.types.diff deleted file mode 100644 index 99a57656d5c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferenceErasedSignatures.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.inferenceErasedSignatures.types -+++ new.inferenceErasedSignatures.types -@@= skipped -16, +16 lines =@@ - >SomeBaseClass : SomeBaseClass - - foo!: (r?: R) => void; -->foo : (r?: R) => void -+>foo : (r?: R | undefined) => void - >r : R | undefined - - bar!: (r?: any) => void; -@@= skipped -57, +57 lines =@@ - >c : T1 - - useT2(r?: T2): void; -->useT2 : (r?: T2) => void -+>useT2 : (r?: T2 | undefined) => void - >r : T2 | undefined - - unrelatedButSomehowRelevant(r?: any): void; -@@= skipped -27, +27 lines =@@ - >c : number - - useT2(r?: boolean): void; -->useT2 : (r?: boolean) => void -+>useT2 : (r?: boolean | undefined) => void - >r : boolean | undefined - - unrelatedButSomehowRelevant(r?: any): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferenceExactOptionalProperties2.types b/testdata/baselines/reference/submodule/compiler/inferenceExactOptionalProperties2.types index 3ccb72ce86c..493fcc21abb 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceExactOptionalProperties2.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceExactOptionalProperties2.types @@ -71,7 +71,7 @@ type ToProvidedActor> = }>; declare function setup< ->setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; } | undefined) => { createMachine: >>(config: TConfig) => void; } +>setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } TActors extends Record = {}, >(implementations?: { @@ -99,9 +99,9 @@ declare const counterLogic: ActorLogic<{ type: "INCREMENT" }>; // example usage setup({ >setup({ actors: { counter: counterLogic },}).createMachine({ entry: assign((spawn) => { spawn("counter"); // ok spawn("alarm"); // error return {}; }),}) : void ->setup({ actors: { counter: counterLogic },}).createMachine : ; }>>(config: TConfig) => void ->setup({ actors: { counter: counterLogic },}) : { createMachine: ; }>>(config: TConfig) => void; } ->setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; } | undefined) => { createMachine: >>(config: TConfig) => void; } +>setup({ actors: { counter: counterLogic },}).createMachine : ; }>>>(config: TConfig) => void +>setup({ actors: { counter: counterLogic },}) : { createMachine: ; }>>>(config: TConfig) => void; } +>setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } >{ actors: { counter: counterLogic },} : { actors: { counter: ActorLogic<{ type: "INCREMENT"; }>; }; } actors: { counter: counterLogic }, @@ -111,7 +111,7 @@ setup({ >counterLogic : ActorLogic<{ type: "INCREMENT"; }> }).createMachine({ ->createMachine : ; }>>(config: TConfig) => void +>createMachine : ; }>>>(config: TConfig) => void >{ entry: assign((spawn) => { spawn("counter"); // ok spawn("alarm"); // error return {}; }),} : { entry: AssignAction<{ src: "counter"; logic: ActorLogic<{ type: "INCREMENT"; }>; }>; } entry: assign((spawn) => { @@ -140,10 +140,10 @@ setup({ // no provided actors, `assign` should still work setup().createMachine({ >setup().createMachine({ entry: assign(() => ({})),}) : void ->setup().createMachine : >(config: TConfig) => void ->setup() : { createMachine: >(config: TConfig) => void; } ->setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; } | undefined) => { createMachine: >>(config: TConfig) => void; } ->createMachine : >(config: TConfig) => void +>setup().createMachine : >>(config: TConfig) => void +>setup() : { createMachine: >>(config: TConfig) => void; } +>setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } +>createMachine : >>(config: TConfig) => void >{ entry: assign(() => ({})),} : { entry: AssignAction; } entry: assign(() => ({})), diff --git a/testdata/baselines/reference/submodule/compiler/inferenceExactOptionalProperties2.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceExactOptionalProperties2.types.diff index 7393fa9852a..63f7efbd8e1 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceExactOptionalProperties2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/inferenceExactOptionalProperties2.types.diff @@ -1,28 +1,36 @@ --- old.inferenceExactOptionalProperties2.types +++ new.inferenceExactOptionalProperties2.types -@@= skipped -70, +70 lines =@@ - }>; - - declare function setup< -->setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } -+>setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; } | undefined) => { createMachine: >>(config: TConfig) => void; } - - TActors extends Record = {}, - >(implementations?: { -@@= skipped -30, +30 lines =@@ +@@= skipped -98, +98 lines =@@ + // example usage + setup({ >setup({ actors: { counter: counterLogic },}).createMachine({ entry: assign((spawn) => { spawn("counter"); // ok spawn("alarm"); // error return {}; }),}) : void - >setup({ actors: { counter: counterLogic },}).createMachine : ; }>>(config: TConfig) => void - >setup({ actors: { counter: counterLogic },}) : { createMachine: ; }>>(config: TConfig) => void; } -->setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } -+>setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; } | undefined) => { createMachine: >>(config: TConfig) => void; } +->setup({ actors: { counter: counterLogic },}).createMachine : ; }>>(config: TConfig) => void +->setup({ actors: { counter: counterLogic },}) : { createMachine: ; }>>(config: TConfig) => void; } ++>setup({ actors: { counter: counterLogic },}).createMachine : ; }>>>(config: TConfig) => void ++>setup({ actors: { counter: counterLogic },}) : { createMachine: ; }>>>(config: TConfig) => void; } + >setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } >{ actors: { counter: counterLogic },} : { actors: { counter: ActorLogic<{ type: "INCREMENT"; }>; }; } - actors: { counter: counterLogic }, -@@= skipped -41, +41 lines =@@ +@@= skipped -12, +12 lines =@@ + >counterLogic : ActorLogic<{ type: "INCREMENT"; }> + + }).createMachine({ +->createMachine : ; }>>(config: TConfig) => void ++>createMachine : ; }>>>(config: TConfig) => void + >{ entry: assign((spawn) => { spawn("counter"); // ok spawn("alarm"); // error return {}; }),} : { entry: AssignAction<{ src: "counter"; logic: ActorLogic<{ type: "INCREMENT"; }>; }>; } + + entry: assign((spawn) => { +@@= skipped -29, +29 lines =@@ + // no provided actors, `assign` should still work + setup().createMachine({ >setup().createMachine({ entry: assign(() => ({})),}) : void - >setup().createMachine : >(config: TConfig) => void - >setup() : { createMachine: >(config: TConfig) => void; } -->setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } -+>setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; } | undefined) => { createMachine: >>(config: TConfig) => void; } - >createMachine : >(config: TConfig) => void +->setup().createMachine : >(config: TConfig) => void +->setup() : { createMachine: >(config: TConfig) => void; } ++>setup().createMachine : >>(config: TConfig) => void ++>setup() : { createMachine: >>(config: TConfig) => void; } + >setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } +->createMachine : >(config: TConfig) => void ++>createMachine : >>(config: TConfig) => void >{ entry: assign(() => ({})),} : { entry: AssignAction; } + + entry: assign(() => ({})), \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferenceFromGenericClassNoCrash1.types b/testdata/baselines/reference/submodule/compiler/inferenceFromGenericClassNoCrash1.types index 1db355347a6..846b12291d9 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceFromGenericClassNoCrash1.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceFromGenericClassNoCrash1.types @@ -4,7 +4,7 @@ // https://github.com/microsoft/TypeScript/issues/61633#issuecomment-2841778576 function RenderFlagsMixin object>(Base?: T) {} ->RenderFlagsMixin : object>(Base?: T | undefined) => void +>RenderFlagsMixin : object>(Base?: T) => void >args : any[] >Base : T | undefined @@ -16,6 +16,6 @@ class Container { } RenderFlagsMixin(Container); >RenderFlagsMixin(Container) : void ->RenderFlagsMixin : object>(Base?: T | undefined) => void +>RenderFlagsMixin : object>(Base?: T) => void >Container : typeof Container diff --git a/testdata/baselines/reference/submodule/compiler/inferenceFromGenericClassNoCrash1.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceFromGenericClassNoCrash1.types.diff deleted file mode 100644 index 5ac0241f8ce..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferenceFromGenericClassNoCrash1.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.inferenceFromGenericClassNoCrash1.types -+++ new.inferenceFromGenericClassNoCrash1.types -@@= skipped -3, +3 lines =@@ - // https://github.com/microsoft/TypeScript/issues/61633#issuecomment-2841778576 - - function RenderFlagsMixin object>(Base?: T) {} -->RenderFlagsMixin : object>(Base?: T) => void -+>RenderFlagsMixin : object>(Base?: T | undefined) => void - >args : any[] - >Base : T | undefined - -@@= skipped -12, +12 lines =@@ - } - RenderFlagsMixin(Container); - >RenderFlagsMixin(Container) : void -->RenderFlagsMixin : object>(Base?: T) => void -+>RenderFlagsMixin : object>(Base?: T | undefined) => void - >Container : typeof Container diff --git a/testdata/baselines/reference/submodule/compiler/inferenceLimit.types b/testdata/baselines/reference/submodule/compiler/inferenceLimit.types index 35395e3399c..815514070a7 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceLimit.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceLimit.types @@ -89,7 +89,7 @@ export class BrokenClass { .then((orders: Array) => { >then : (onfulfilled?: (value: unknown[]) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise ->(orders: Array) => { resolve(orders); } : (orders: MyModule.MyModel[]) => void +>(orders: Array) => { resolve(orders); } : (orders: Array) => void >orders : MyModule.MyModel[] >MyModule : any diff --git a/testdata/baselines/reference/submodule/compiler/inferenceLimit.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceLimit.types.diff deleted file mode 100644 index c71d9c6be0d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferenceLimit.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.inferenceLimit.types -+++ new.inferenceLimit.types -@@= skipped -88, +88 lines =@@ - - .then((orders: Array) => { - >then : (onfulfilled?: (value: unknown[]) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -->(orders: Array) => { resolve(orders); } : (orders: Array) => void -+>(orders: Array) => { resolve(orders); } : (orders: MyModule.MyModel[]) => void - >orders : MyModule.MyModel[] - >MyModule : any diff --git a/testdata/baselines/reference/submodule/compiler/inferenceOfNullableObjectTypesWithCommonBase.types b/testdata/baselines/reference/submodule/compiler/inferenceOfNullableObjectTypesWithCommonBase.types index f668a1ee84b..be0ff598126 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceOfNullableObjectTypesWithCommonBase.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceOfNullableObjectTypesWithCommonBase.types @@ -138,14 +138,14 @@ equal(v as string, v as string & { tag: 'foo' } | undefined); >equal : (a: T, b: T) => void >v as string : string >v : never ->v as string & { tag: 'foo' } | undefined : (string & { tag: "foo"; }) | undefined +>v as string & { tag: 'foo' } | undefined : (string & { tag: 'foo'; }) | undefined >v : never >tag : "foo" 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 ->v as string & { tag: 'foo' } | undefined : (string & { tag: "foo"; }) | undefined +>v as string & { tag: 'foo' } | undefined : (string & { tag: 'foo'; }) | undefined >v : never >tag : "foo" >v as string : string diff --git a/testdata/baselines/reference/submodule/compiler/inferenceOfNullableObjectTypesWithCommonBase.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceOfNullableObjectTypesWithCommonBase.types.diff new file mode 100644 index 00000000000..47c6ae4525f --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/inferenceOfNullableObjectTypesWithCommonBase.types.diff @@ -0,0 +1,19 @@ +--- old.inferenceOfNullableObjectTypesWithCommonBase.types ++++ new.inferenceOfNullableObjectTypesWithCommonBase.types +@@= skipped -137, +137 lines =@@ + >equal : (a: T, b: T) => void + >v as string : string + >v : never +->v as string & { tag: 'foo' } | undefined : (string & { tag: "foo"; }) | undefined ++>v as string & { tag: 'foo' } | undefined : (string & { tag: 'foo'; }) | undefined + >v : never + >tag : "foo" + + 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 +->v as string & { tag: 'foo' } | undefined : (string & { tag: "foo"; }) | undefined ++>v as string & { tag: 'foo' } | undefined : (string & { tag: 'foo'; }) | undefined + >v : never + >tag : "foo" + >v as string : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inferenceOptionalPropertiesToIndexSignatures.types b/testdata/baselines/reference/submodule/compiler/inferenceOptionalPropertiesToIndexSignatures.types index 7e29a0478d3..9c96e19dfca 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceOptionalPropertiesToIndexSignatures.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceOptionalPropertiesToIndexSignatures.types @@ -17,7 +17,7 @@ declare const x2: { a: string, b: number | undefined }; >b : number | undefined declare const x3: { a: string, b?: number }; ->x3 : { a: string; b?: number | undefined; } +>x3 : { a: string; b?: number; } >a : string >b : number | undefined @@ -42,7 +42,7 @@ let a3 = foo(x3); // string | number >a3 : string | number >foo(x3) : string | number >foo : (obj: { [x: string]: T; }) => T ->x3 : { a: string; b?: number | undefined; } +>x3 : { a: string; b?: number; } let a4 = foo(x4); // string | number >a4 : string | number @@ -84,13 +84,13 @@ const obj = { const query = Object.entries(obj).map( >query : string >Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`).join('&') : string ->Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`).join : (separator?: string | undefined) => string +>Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`).join : (separator?: string) => string >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) : [string, string][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >obj : { param1: string; param2?: string | undefined; } >map : (callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[] @@ -105,6 +105,6 @@ const query = Object.entries(obj).map( >v : string ).join('&'); ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >'&' : "&" diff --git a/testdata/baselines/reference/submodule/compiler/inferenceOptionalPropertiesToIndexSignatures.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceOptionalPropertiesToIndexSignatures.types.diff deleted file mode 100644 index 9db921b175c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferenceOptionalPropertiesToIndexSignatures.types.diff +++ /dev/null @@ -1,44 +0,0 @@ ---- old.inferenceOptionalPropertiesToIndexSignatures.types -+++ new.inferenceOptionalPropertiesToIndexSignatures.types -@@= skipped -16, +16 lines =@@ - >b : number | undefined - - declare const x3: { a: string, b?: number }; -->x3 : { a: string; b?: number; } -+>x3 : { a: string; b?: number | undefined; } - >a : string - >b : number | undefined - -@@= skipped -25, +25 lines =@@ - >a3 : string | number - >foo(x3) : string | number - >foo : (obj: { [x: string]: T; }) => T -->x3 : { a: string; b?: number; } -+>x3 : { a: string; b?: number | undefined; } - - let a4 = foo(x4); // string | number - >a4 : string | number -@@= skipped -42, +42 lines =@@ - const query = Object.entries(obj).map( - >query : string - >Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`).join('&') : string -->Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`).join : (separator?: string) => string -+>Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`).join : (separator?: string | undefined) => string - >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) : [string, string][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >obj : { param1: string; param2?: string | undefined; } - >map : (callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[] - -@@= skipped -21, +21 lines =@@ - >v : string - - ).join('&'); -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >'&' : "&" diff --git a/testdata/baselines/reference/submodule/compiler/inferenceShouldFailOnEvolvingArrays.types b/testdata/baselines/reference/submodule/compiler/inferenceShouldFailOnEvolvingArrays.types index f49245a49e1..5ce76e29acf 100644 --- a/testdata/baselines/reference/submodule/compiler/inferenceShouldFailOnEvolvingArrays.types +++ b/testdata/baselines/reference/submodule/compiler/inferenceShouldFailOnEvolvingArrays.types @@ -4,7 +4,7 @@ // repro from https://github.com/Microsoft/TypeScript/issues/25675 // The type of `arg` blocks inference but simplifies to T. function logLength(arg: { [K in U]: T }[U]): T { ->logLength : (arg: { [K in U]: T; }[U]) => T +>logLength : (arg: { [K in U]: T;}[U]) => T >arg : { [K in U]: T; }[U] console.log(arg.length); @@ -21,7 +21,7 @@ function logLength(arg: { [K in U]: T }[U]): } logLength(42); // error >logLength(42) : string ->logLength : (arg: { [K in U]: T; }[U]) => T +>logLength : (arg: { [K in U]: T;}[U]) => T >42 : 42 let z; @@ -31,11 +31,11 @@ z = logLength(42); // no error; T is inferred as `any` >z = logLength(42) : string >z : any >logLength(42) : string ->logLength : (arg: { [K in U]: T; }[U]) => T +>logLength : (arg: { [K in U]: T;}[U]) => T >42 : 42 function logFirstLength(arg: { [K in U]: T }[U]): T { ->logFirstLength : (arg: { [K in U]: T; }[U]) => T +>logFirstLength : (arg: { [K in U]: T;}[U]) => T >arg : { [K in U]: T; }[U] console.log(arg[0].length); @@ -54,7 +54,7 @@ function logFirstLength(arg: { [K in U]: T } logFirstLength([42]); // error >logFirstLength([42]) : string[] ->logFirstLength : (arg: { [K in U]: T; }[U]) => T +>logFirstLength : (arg: { [K in U]: T;}[U]) => T >[42] : number[] >42 : 42 @@ -68,14 +68,14 @@ zz.push(logLength(42)); // no error; T is inferred as `any` >zz : any[] >push : (...items: any[]) => number >logLength(42) : string ->logLength : (arg: { [K in U]: T; }[U]) => T +>logLength : (arg: { [K in U]: T;}[U]) => T >42 : 42 zz = logFirstLength([42]); // no error; T is inferred as `any[]` >zz = logFirstLength([42]) : string[] >zz : any[] >logFirstLength([42]) : string[] ->logFirstLength : (arg: { [K in U]: T; }[U]) => T +>logFirstLength : (arg: { [K in U]: T;}[U]) => T >[42] : number[] >42 : 42 diff --git a/testdata/baselines/reference/submodule/compiler/inferenceShouldFailOnEvolvingArrays.types.diff b/testdata/baselines/reference/submodule/compiler/inferenceShouldFailOnEvolvingArrays.types.diff new file mode 100644 index 00000000000..c54596cde37 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/inferenceShouldFailOnEvolvingArrays.types.diff @@ -0,0 +1,59 @@ +--- old.inferenceShouldFailOnEvolvingArrays.types ++++ new.inferenceShouldFailOnEvolvingArrays.types +@@= skipped -3, +3 lines =@@ + // repro from https://github.com/Microsoft/TypeScript/issues/25675 + // The type of `arg` blocks inference but simplifies to T. + function logLength(arg: { [K in U]: T }[U]): T { +->logLength : (arg: { [K in U]: T; }[U]) => T ++>logLength : (arg: { [K in U]: T;}[U]) => T + >arg : { [K in U]: T; }[U] + + console.log(arg.length); +@@= skipped -17, +17 lines =@@ + } + logLength(42); // error + >logLength(42) : string +->logLength : (arg: { [K in U]: T; }[U]) => T ++>logLength : (arg: { [K in U]: T;}[U]) => T + >42 : 42 + + let z; +@@= skipped -10, +10 lines =@@ + >z = logLength(42) : string + >z : any + >logLength(42) : string +->logLength : (arg: { [K in U]: T; }[U]) => T ++>logLength : (arg: { [K in U]: T;}[U]) => T + >42 : 42 + + function logFirstLength(arg: { [K in U]: T }[U]): T { +->logFirstLength : (arg: { [K in U]: T; }[U]) => T ++>logFirstLength : (arg: { [K in U]: T;}[U]) => T + >arg : { [K in U]: T; }[U] + + console.log(arg[0].length); +@@= skipped -23, +23 lines =@@ + } + logFirstLength([42]); // error + >logFirstLength([42]) : string[] +->logFirstLength : (arg: { [K in U]: T; }[U]) => T ++>logFirstLength : (arg: { [K in U]: T;}[U]) => T + >[42] : number[] + >42 : 42 + +@@= skipped -14, +14 lines =@@ + >zz : any[] + >push : (...items: any[]) => number + >logLength(42) : string +->logLength : (arg: { [K in U]: T; }[U]) => T ++>logLength : (arg: { [K in U]: T;}[U]) => T + >42 : 42 + + zz = logFirstLength([42]); // no error; T is inferred as `any[]` + >zz = logFirstLength([42]) : string[] + >zz : any[] + >logFirstLength([42]) : string[] +->logFirstLength : (arg: { [K in U]: T; }[U]) => T ++>logFirstLength : (arg: { [K in U]: T;}[U]) => T + >[42] : number[] + >42 : 42 diff --git a/testdata/baselines/reference/submodule/compiler/inferredReturnTypeIncorrectReuse1.types b/testdata/baselines/reference/submodule/compiler/inferredReturnTypeIncorrectReuse1.types index 885a61d624f..f397eb874a1 100644 --- a/testdata/baselines/reference/submodule/compiler/inferredReturnTypeIncorrectReuse1.types +++ b/testdata/baselines/reference/submodule/compiler/inferredReturnTypeIncorrectReuse1.types @@ -28,7 +28,7 @@ export const out = t.pipe(s => parseInt(s)) >s => parseInt(s) : (s: string) => number >s : string >parseInt(s) : number ->parseInt : (string: string, radix?: number | undefined) => number +>parseInt : (string: string, radix?: number) => number >s : string export type inferPipe2 = @@ -65,6 +65,6 @@ export const out2 = t2.pipe(s => parseInt(s)) >s => parseInt(s) : (s: string) => number >s : string >parseInt(s) : number ->parseInt : (string: string, radix?: number | undefined) => number +>parseInt : (string: string, radix?: number) => number >s : string diff --git a/testdata/baselines/reference/submodule/compiler/inferredReturnTypeIncorrectReuse1.types.diff b/testdata/baselines/reference/submodule/compiler/inferredReturnTypeIncorrectReuse1.types.diff deleted file mode 100644 index a55fa37fdb1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferredReturnTypeIncorrectReuse1.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.inferredReturnTypeIncorrectReuse1.types -+++ new.inferredReturnTypeIncorrectReuse1.types -@@= skipped -27, +27 lines =@@ - >s => parseInt(s) : (s: string) => number - >s : string - >parseInt(s) : number -->parseInt : (string: string, radix?: number) => number -+>parseInt : (string: string, radix?: number | undefined) => number - >s : string - - export type inferPipe2 = -@@= skipped -37, +37 lines =@@ - >s => parseInt(s) : (s: string) => number - >s : string - >parseInt(s) : number -->parseInt : (string: string, radix?: number) => number -+>parseInt : (string: string, radix?: number | undefined) => number - >s : string diff --git a/testdata/baselines/reference/submodule/compiler/inferrenceInfiniteLoopWithSubtyping.types b/testdata/baselines/reference/submodule/compiler/inferrenceInfiniteLoopWithSubtyping.types index 2ddbe74a012..17248a6c353 100644 --- a/testdata/baselines/reference/submodule/compiler/inferrenceInfiniteLoopWithSubtyping.types +++ b/testdata/baselines/reference/submodule/compiler/inferrenceInfiniteLoopWithSubtyping.types @@ -25,12 +25,12 @@ export class ObjectTypeComposer { >ObjectTypeComposer : ObjectTypeComposer public setFields(fields: ObjMapReadOnly): this; ->setFields : (fields: Readonly<{ [key: string]: Readonly; }>) => this +>setFields : (fields: ObjMapReadOnly) => this >fields : Readonly<{ [key: string]: Readonly; }> public addResolver(opts: { type?: Thunk }): this; ->addResolver : (opts: { type?: Thunk | undefined; }) => this ->opts : { type?: Thunk | undefined; } +>addResolver : (opts: { type?: Thunk; }) => this +>opts : { type?: Thunk; } >type : Thunk | undefined } @@ -63,9 +63,9 @@ declare const User: ObjectTypeComposer; User.addResolver({ >User.addResolver({ type: User, // `User as any` fix the problem}) : ObjectTypeComposer ->User.addResolver : (opts: { type?: import("./graphql-compose").Thunk | undefined; }) => ObjectTypeComposer +>User.addResolver : (opts: { type?: import("./graphql-compose").Thunk; }) => ObjectTypeComposer >User : ObjectTypeComposer ->addResolver : (opts: { type?: import("./graphql-compose").Thunk | undefined; }) => ObjectTypeComposer +>addResolver : (opts: { type?: import("./graphql-compose").Thunk; }) => ObjectTypeComposer >{ type: User, // `User as any` fix the problem} : { type: ObjectTypeComposer; } type: User, // `User as any` fix the problem diff --git a/testdata/baselines/reference/submodule/compiler/inferrenceInfiniteLoopWithSubtyping.types.diff b/testdata/baselines/reference/submodule/compiler/inferrenceInfiniteLoopWithSubtyping.types.diff deleted file mode 100644 index 9e0021b3830..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inferrenceInfiniteLoopWithSubtyping.types.diff +++ /dev/null @@ -1,30 +0,0 @@ ---- old.inferrenceInfiniteLoopWithSubtyping.types -+++ new.inferrenceInfiniteLoopWithSubtyping.types -@@= skipped -24, +24 lines =@@ - >ObjectTypeComposer : ObjectTypeComposer - - public setFields(fields: ObjMapReadOnly): this; -->setFields : (fields: ObjMapReadOnly) => this -+>setFields : (fields: Readonly<{ [key: string]: Readonly; }>) => this - >fields : Readonly<{ [key: string]: Readonly; }> - - public addResolver(opts: { type?: Thunk }): this; -->addResolver : (opts: { type?: Thunk; }) => this -->opts : { type?: Thunk; } -+>addResolver : (opts: { type?: Thunk | undefined; }) => this -+>opts : { type?: Thunk | undefined; } - >type : Thunk | undefined - } - -@@= skipped -38, +38 lines =@@ - - User.addResolver({ - >User.addResolver({ type: User, // `User as any` fix the problem}) : ObjectTypeComposer -->User.addResolver : (opts: { type?: import("./graphql-compose").Thunk; }) => ObjectTypeComposer -+>User.addResolver : (opts: { type?: import("./graphql-compose").Thunk | undefined; }) => ObjectTypeComposer - >User : ObjectTypeComposer -->addResolver : (opts: { type?: import("./graphql-compose").Thunk; }) => ObjectTypeComposer -+>addResolver : (opts: { type?: import("./graphql-compose").Thunk | undefined; }) => ObjectTypeComposer - >{ type: User, // `User as any` fix the problem} : { type: ObjectTypeComposer; } - - type: User, // `User as any` fix the problem \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/infiniteConstraints.types b/testdata/baselines/reference/submodule/compiler/infiniteConstraints.types index ccea05a2256..030c873b23b 100644 --- a/testdata/baselines/reference/submodule/compiler/infiniteConstraints.types +++ b/testdata/baselines/reference/submodule/compiler/infiniteConstraints.types @@ -17,7 +17,7 @@ type AProp = T >a : string declare function myBug< ->myBug : (arg: T) => T +>myBug : ? U : never; }>(arg: T) => T T extends { [K in keyof T]: T[K] extends AProp ? U : never } >(arg: T): T @@ -26,7 +26,7 @@ declare function myBug< const out = myBug({obj1: {a: "test"}}) >out : { obj1: { a: string; }; } >myBug({obj1: {a: "test"}}) : { obj1: { a: string; }; } ->myBug : (arg: T) => T +>myBug : ? U : never; }>(arg: T) => T >{obj1: {a: "test"}} : { obj1: { a: string; }; } >obj1 : { a: string; } >{a: "test"} : { a: string; } @@ -41,7 +41,7 @@ declare function value(val: V): Value; >val : V declare function ensureNoDuplicates< ->ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void +>ensureNoDuplicates : ["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void T extends { [K in keyof T]: Extract["val"] extends Extract], Value>["val"] @@ -54,7 +54,7 @@ declare function ensureNoDuplicates< const noError = ensureNoDuplicates({main: value("test"), alternate: value("test2")}); >noError : void >ensureNoDuplicates({main: value("test"), alternate: value("test2")}) : void ->ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void +>ensureNoDuplicates : ["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void >{main: value("test"), alternate: value("test2")} : { main: Value<"test">; alternate: Value<"test2">; } >main : Value<"test"> >value("test") : Value<"test"> @@ -68,7 +68,7 @@ const noError = ensureNoDuplicates({main: value("test"), alternate: value("test2 const shouldBeNoError = ensureNoDuplicates({main: value("test")}); >shouldBeNoError : void >ensureNoDuplicates({main: value("test")}) : void ->ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void +>ensureNoDuplicates : ["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void >{main: value("test")} : { main: Value<"test">; } >main : Value<"test"> >value("test") : Value<"test"> @@ -78,7 +78,7 @@ const shouldBeNoError = ensureNoDuplicates({main: value("test")}); const shouldBeError = ensureNoDuplicates({main: value("dup"), alternate: value("dup")}); >shouldBeError : void >ensureNoDuplicates({main: value("dup"), alternate: value("dup")}) : void ->ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void +>ensureNoDuplicates : ["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void >{main: value("dup"), alternate: value("dup")} : { main: Value<"dup">; alternate: Value<"dup">; } >main : Value<"dup"> >value("dup") : Value<"dup"> diff --git a/testdata/baselines/reference/submodule/compiler/infiniteConstraints.types.diff b/testdata/baselines/reference/submodule/compiler/infiniteConstraints.types.diff deleted file mode 100644 index 7cea22ae5d4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/infiniteConstraints.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.infiniteConstraints.types -+++ new.infiniteConstraints.types -@@= skipped -16, +16 lines =@@ - >a : string - - declare function myBug< -->myBug : ? U : never; }>(arg: T) => T -+>myBug : (arg: T) => T - - T extends { [K in keyof T]: T[K] extends AProp ? U : never } - >(arg: T): T -@@= skipped -9, +9 lines =@@ - const out = myBug({obj1: {a: "test"}}) - >out : { obj1: { a: string; }; } - >myBug({obj1: {a: "test"}}) : { obj1: { a: string; }; } -->myBug : ? U : never; }>(arg: T) => T -+>myBug : (arg: T) => T - >{obj1: {a: "test"}} : { obj1: { a: string; }; } - >obj1 : { a: string; } - >{a: "test"} : { a: string; } -@@= skipped -15, +15 lines =@@ - >val : V - - declare function ensureNoDuplicates< -->ensureNoDuplicates : ["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void -+>ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void - - T extends { - [K in keyof T]: Extract["val"] extends Extract], Value>["val"] -@@= skipped -13, +13 lines =@@ - const noError = ensureNoDuplicates({main: value("test"), alternate: value("test2")}); - >noError : void - >ensureNoDuplicates({main: value("test"), alternate: value("test2")}) : void -->ensureNoDuplicates : ["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void -+>ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void - >{main: value("test"), alternate: value("test2")} : { main: Value<"test">; alternate: Value<"test2">; } - >main : Value<"test"> - >value("test") : Value<"test"> -@@= skipped -14, +14 lines =@@ - const shouldBeNoError = ensureNoDuplicates({main: value("test")}); - >shouldBeNoError : void - >ensureNoDuplicates({main: value("test")}) : void -->ensureNoDuplicates : ["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void -+>ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void - >{main: value("test")} : { main: Value<"test">; } - >main : Value<"test"> - >value("test") : Value<"test"> -@@= skipped -10, +10 lines =@@ - const shouldBeError = ensureNoDuplicates({main: value("dup"), alternate: value("dup")}); - >shouldBeError : void - >ensureNoDuplicates({main: value("dup"), alternate: value("dup")}) : void -->ensureNoDuplicates : ["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void -+>ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void - >{main: value("dup"), alternate: value("dup")} : { main: Value<"dup">; alternate: Value<"dup">; } - >main : Value<"dup"> - >value("dup") : Value<"dup"> \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/infinitelyExpandingOverloads.types b/testdata/baselines/reference/submodule/compiler/infinitelyExpandingOverloads.types index 37901de370c..f8302174925 100644 --- a/testdata/baselines/reference/submodule/compiler/infinitelyExpandingOverloads.types +++ b/testdata/baselines/reference/submodule/compiler/infinitelyExpandingOverloads.types @@ -7,7 +7,7 @@ interface KnockoutSubscription2 { } interface KnockoutObservableBase2 { subscribe(callback: (newValue: T) => void, target?: any, topic?: string): KnockoutSubscription2; ->subscribe : (callback: (newValue: T) => void, target?: any, topic?: string | undefined) => KnockoutSubscription2 +>subscribe : (callback: (newValue: T) => void, target?: any, topic?: string) => KnockoutSubscription2 >callback : (newValue: T) => void >newValue : T >target : any diff --git a/testdata/baselines/reference/submodule/compiler/infinitelyExpandingOverloads.types.diff b/testdata/baselines/reference/submodule/compiler/infinitelyExpandingOverloads.types.diff deleted file mode 100644 index 9066344289b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/infinitelyExpandingOverloads.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.infinitelyExpandingOverloads.types -+++ new.infinitelyExpandingOverloads.types -@@= skipped -6, +6 lines =@@ - } - interface KnockoutObservableBase2 { - subscribe(callback: (newValue: T) => void, target?: any, topic?: string): KnockoutSubscription2; -->subscribe : (callback: (newValue: T) => void, target?: any, topic?: string) => KnockoutSubscription2 -+>subscribe : (callback: (newValue: T) => void, target?: any, topic?: string | undefined) => KnockoutSubscription2 - >callback : (newValue: T) => void - >newValue : T - >target : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/initializedParameterBeforeNonoptionalNotOptional.types b/testdata/baselines/reference/submodule/compiler/initializedParameterBeforeNonoptionalNotOptional.types index 378acbc2d7d..c799bb60992 100644 --- a/testdata/baselines/reference/submodule/compiler/initializedParameterBeforeNonoptionalNotOptional.types +++ b/testdata/baselines/reference/submodule/compiler/initializedParameterBeforeNonoptionalNotOptional.types @@ -2,7 +2,7 @@ === index.d.ts === export declare function foo({a}?: { ->foo : ({ a }?: { a?: string | undefined; } | undefined) => void +>foo : ({ a }?: { a?: string; }) => void >a : string | undefined a?: string; diff --git a/testdata/baselines/reference/submodule/compiler/initializedParameterBeforeNonoptionalNotOptional.types.diff b/testdata/baselines/reference/submodule/compiler/initializedParameterBeforeNonoptionalNotOptional.types.diff deleted file mode 100644 index cda7d1cfd0b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/initializedParameterBeforeNonoptionalNotOptional.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.initializedParameterBeforeNonoptionalNotOptional.types -+++ new.initializedParameterBeforeNonoptionalNotOptional.types -@@= skipped -1, +1 lines =@@ - - === index.d.ts === - export declare function foo({a}?: { -->foo : ({ a }?: { a?: string; }) => void -+>foo : ({ a }?: { a?: string | undefined; } | undefined) => void - >a : string | undefined - - a?: string; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/inlinedAliasAssignableToConstraintSameAsAlias.types b/testdata/baselines/reference/submodule/compiler/inlinedAliasAssignableToConstraintSameAsAlias.types index 1ff41ddc210..ee2bdfba29a 100644 --- a/testdata/baselines/reference/submodule/compiler/inlinedAliasAssignableToConstraintSameAsAlias.types +++ b/testdata/baselines/reference/submodule/compiler/inlinedAliasAssignableToConstraintSameAsAlias.types @@ -33,7 +33,7 @@ class A { >z : A[] whereRelated< // Works // Type is same as A1, but is not assignable to type A ->whereRelated : >() => number +>whereRelated : >() => number RF extends RelationFields = RelationFields, N extends Name = Name, diff --git a/testdata/baselines/reference/submodule/compiler/inlinedAliasAssignableToConstraintSameAsAlias.types.diff b/testdata/baselines/reference/submodule/compiler/inlinedAliasAssignableToConstraintSameAsAlias.types.diff deleted file mode 100644 index 77da53efd38..00000000000 --- a/testdata/baselines/reference/submodule/compiler/inlinedAliasAssignableToConstraintSameAsAlias.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.inlinedAliasAssignableToConstraintSameAsAlias.types -+++ new.inlinedAliasAssignableToConstraintSameAsAlias.types -@@= skipped -32, +32 lines =@@ - >z : A[] - - whereRelated< // Works // Type is same as A1, but is not assignable to type A -->whereRelated : >() => number -+>whereRelated : >() => number - - RF extends RelationFields = RelationFields, - N extends Name = Name, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/innerTypeArgumentInference.types b/testdata/baselines/reference/submodule/compiler/innerTypeArgumentInference.types index fdfdbade135..8eab7aca8e6 100644 --- a/testdata/baselines/reference/submodule/compiler/innerTypeArgumentInference.types +++ b/testdata/baselines/reference/submodule/compiler/innerTypeArgumentInference.types @@ -3,11 +3,11 @@ === innerTypeArgumentInference.ts === interface Generator { (): T; } function Generate(func: Generator): U { ->Generate : (func: Generator) => U +>Generate : (func: Generator) => U >func : Generator return Generate(func); >Generate(func) : U ->Generate : (func: Generator) => U +>Generate : (func: Generator) => U >func : Generator } diff --git a/testdata/baselines/reference/submodule/compiler/innerTypeArgumentInference.types.diff b/testdata/baselines/reference/submodule/compiler/innerTypeArgumentInference.types.diff deleted file mode 100644 index c904b9385c5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/innerTypeArgumentInference.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.innerTypeArgumentInference.types -+++ new.innerTypeArgumentInference.types -@@= skipped -2, +2 lines =@@ - === innerTypeArgumentInference.ts === - interface Generator { (): T; } - function Generate(func: Generator): U { -->Generate : (func: Generator) => U -+>Generate : (func: Generator) => U - >func : Generator - - return Generate(func); - >Generate(func) : U -->Generate : (func: Generator) => U -+>Generate : (func: Generator) => U - >func : Generator - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/instanceOfAssignability.types b/testdata/baselines/reference/submodule/compiler/instanceOfAssignability.types index 217b6d1caad..e98c01bdccf 100644 --- a/testdata/baselines/reference/submodule/compiler/instanceOfAssignability.types +++ b/testdata/baselines/reference/submodule/compiler/instanceOfAssignability.types @@ -44,7 +44,7 @@ class Giraffe extends Mammal { neck; } >neck : any function fn1(x: Array|Array|boolean) { ->fn1 : (x: boolean | string[] | number[]) => void +>fn1 : (x: Array | Array | boolean) => void >x : boolean | string[] | number[] if(x instanceof Array) { @@ -146,7 +146,7 @@ function fn6(x: Animal|Mammal) { } function fn7(x: Array|Array) { ->fn7 : (x: string[] | number[]) => void +>fn7 : (x: Array | Array) => void >x : string[] | number[] if(x instanceof Array) { diff --git a/testdata/baselines/reference/submodule/compiler/instanceOfAssignability.types.diff b/testdata/baselines/reference/submodule/compiler/instanceOfAssignability.types.diff deleted file mode 100644 index 33a4692ca58..00000000000 --- a/testdata/baselines/reference/submodule/compiler/instanceOfAssignability.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.instanceOfAssignability.types -+++ new.instanceOfAssignability.types -@@= skipped -43, +43 lines =@@ - >neck : any - - function fn1(x: Array|Array|boolean) { -->fn1 : (x: Array | Array | boolean) => void -+>fn1 : (x: boolean | string[] | number[]) => void - >x : boolean | string[] | number[] - - if(x instanceof Array) { -@@= skipped -102, +102 lines =@@ - } - - function fn7(x: Array|Array) { -->fn7 : (x: Array | Array) => void -+>fn7 : (x: string[] | number[]) => void - >x : string[] | number[] - - if(x instanceof Array) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/instanceofNarrowReadonlyArray.types b/testdata/baselines/reference/submodule/compiler/instanceofNarrowReadonlyArray.types index f3e0f6f0799..e78d7d9ca29 100644 --- a/testdata/baselines/reference/submodule/compiler/instanceofNarrowReadonlyArray.types +++ b/testdata/baselines/reference/submodule/compiler/instanceofNarrowReadonlyArray.types @@ -4,7 +4,7 @@ // @strict function narrow(x: readonly number[] | number): readonly number[] { ->narrow : (x: number | readonly number[]) => readonly number[] +>narrow : (x: readonly number[] | number) => readonly number[] >x : number | readonly number[] if (x instanceof Array) { diff --git a/testdata/baselines/reference/submodule/compiler/instanceofNarrowReadonlyArray.types.diff b/testdata/baselines/reference/submodule/compiler/instanceofNarrowReadonlyArray.types.diff deleted file mode 100644 index bc5c1879c87..00000000000 --- a/testdata/baselines/reference/submodule/compiler/instanceofNarrowReadonlyArray.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.instanceofNarrowReadonlyArray.types -+++ new.instanceofNarrowReadonlyArray.types -@@= skipped -3, +3 lines =@@ - // @strict - - function narrow(x: readonly number[] | number): readonly number[] { -->narrow : (x: readonly number[] | number) => readonly number[] -+>narrow : (x: number | readonly number[]) => readonly number[] - >x : number | readonly number[] - - if (x instanceof Array) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/instanceofTypeAliasToGenericClass.types b/testdata/baselines/reference/submodule/compiler/instanceofTypeAliasToGenericClass.types index 523c1833f9b..c98958e0c0c 100644 --- a/testdata/baselines/reference/submodule/compiler/instanceofTypeAliasToGenericClass.types +++ b/testdata/baselines/reference/submodule/compiler/instanceofTypeAliasToGenericClass.types @@ -22,7 +22,7 @@ function fn(o: T) { } function fn2(o: T) { ->fn2 : >(o: T) => boolean +>fn2 : (o: T) => boolean >o : T return o instanceof TableClass; diff --git a/testdata/baselines/reference/submodule/compiler/instanceofTypeAliasToGenericClass.types.diff b/testdata/baselines/reference/submodule/compiler/instanceofTypeAliasToGenericClass.types.diff deleted file mode 100644 index ec648d8ebd1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/instanceofTypeAliasToGenericClass.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.instanceofTypeAliasToGenericClass.types -+++ new.instanceofTypeAliasToGenericClass.types -@@= skipped -21, +21 lines =@@ - } - - function fn2(o: T) { -->fn2 : (o: T) => boolean -+>fn2 : >(o: T) => boolean - >o : T - - return o instanceof TableClass; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/instanceofWithPrimitiveUnion.types b/testdata/baselines/reference/submodule/compiler/instanceofWithPrimitiveUnion.types index e5a9ebd20a7..776cda13745 100644 --- a/testdata/baselines/reference/submodule/compiler/instanceofWithPrimitiveUnion.types +++ b/testdata/baselines/reference/submodule/compiler/instanceofWithPrimitiveUnion.types @@ -2,7 +2,7 @@ === instanceofWithPrimitiveUnion.ts === function test1(x: number | string) { ->test1 : (x: string | number) => void +>test1 : (x: number | string) => void >x : string | number if (x instanceof Object) { @@ -16,7 +16,7 @@ function test1(x: number | string) { } function test2(x: (number | string) | number) { ->test2 : (x: string | number) => void +>test2 : (x: (number | string) | number) => void >x : string | number if (x instanceof Object) { diff --git a/testdata/baselines/reference/submodule/compiler/instanceofWithPrimitiveUnion.types.diff b/testdata/baselines/reference/submodule/compiler/instanceofWithPrimitiveUnion.types.diff deleted file mode 100644 index e08d370febe..00000000000 --- a/testdata/baselines/reference/submodule/compiler/instanceofWithPrimitiveUnion.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.instanceofWithPrimitiveUnion.types -+++ new.instanceofWithPrimitiveUnion.types -@@= skipped -1, +1 lines =@@ - - === instanceofWithPrimitiveUnion.ts === - function test1(x: number | string) { -->test1 : (x: number | string) => void -+>test1 : (x: string | number) => void - >x : string | number - - if (x instanceof Object) { -@@= skipped -14, +14 lines =@@ - } - - function test2(x: (number | string) | number) { -->test2 : (x: (number | string) | number) => void -+>test2 : (x: string | number) => void - >x : string | number - - if (x instanceof Object) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/instantiateContextualTypes.types b/testdata/baselines/reference/submodule/compiler/instantiateContextualTypes.types index df149c3f882..905142581da 100644 --- a/testdata/baselines/reference/submodule/compiler/instantiateContextualTypes.types +++ b/testdata/baselines/reference/submodule/compiler/instantiateContextualTypes.types @@ -67,7 +67,7 @@ new GenericComponent({ initialValues: 12, nextValues: val => 12 }); // #22149 declare function useStringOrNumber(t: T, useIt: T extends string ? ((s: string) => void) : ((n: number) => void)): void; ->useStringOrNumber : (t: T, useIt: T extends string ? (s: string) => void : (n: number) => void) => void +>useStringOrNumber : (t: T, useIt: T extends string ? ((s: string) => void) : ((n: number) => void)) => void >t : T >useIt : T extends string ? (s: string) => void : (n: number) => void >s : string @@ -75,7 +75,7 @@ declare function useStringOrNumber(t: T, useIt: T ext useStringOrNumber("", foo => {}); >useStringOrNumber("", foo => {}) : void ->useStringOrNumber : (t: T, useIt: T extends string ? (s: string) => void : (n: number) => void) => void +>useStringOrNumber : (t: T, useIt: T extends string ? ((s: string) => void) : ((n: number) => void)) => void >"" : "" >foo => {} : (foo: string) => void >foo : string @@ -223,7 +223,7 @@ interface ComponentClass

{ } type CreateElementChildren

= ->CreateElementChildren : P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown +>CreateElementChildren : P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown P extends { children?: infer C } >children : C | undefined @@ -234,24 +234,24 @@ type CreateElementChildren

= : unknown; declare function createElement

( ->createElement :

(type: ComponentClass

, ...children: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any +>createElement :

(type: ComponentClass

, ...children: P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown) => any type: ComponentClass

, >type : ComponentClass

...children: CreateElementChildren

->children : P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown +>children : P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown ): any; declare function createElement2

( ->createElement2 :

(type: ComponentClass

, child: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any +>createElement2 :

(type: ComponentClass

, child: P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown) => any type: ComponentClass

, >type : ComponentClass

child: CreateElementChildren

->child : P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown +>child : P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown ): any; @@ -263,7 +263,7 @@ class InferFunctionTypes extends Component<{children: (foo: number) => string}> createElement(InferFunctionTypes, (foo) => "" + foo); >createElement(InferFunctionTypes, (foo) => "" + foo) : any ->createElement :

(type: ComponentClass

, ...children: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any +>createElement :

(type: ComponentClass

, ...children: P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown) => any >InferFunctionTypes : typeof InferFunctionTypes >(foo) => "" + foo : (foo: number) => string >foo : number @@ -273,7 +273,7 @@ createElement(InferFunctionTypes, (foo) => "" + foo); createElement2(InferFunctionTypes, [(foo) => "" + foo]); >createElement2(InferFunctionTypes, [(foo) => "" + foo]) : any ->createElement2 :

(type: ComponentClass

, child: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any +>createElement2 :

(type: ComponentClass

, child: P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown) => any >InferFunctionTypes : typeof InferFunctionTypes >[(foo) => "" + foo] : ((foo: number) => string)[] >(foo) => "" + foo : (foo: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/instantiateContextualTypes.types.diff b/testdata/baselines/reference/submodule/compiler/instantiateContextualTypes.types.diff deleted file mode 100644 index 91f4e59054e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/instantiateContextualTypes.types.diff +++ /dev/null @@ -1,76 +0,0 @@ ---- old.instantiateContextualTypes.types -+++ new.instantiateContextualTypes.types -@@= skipped -66, +66 lines =@@ - // #22149 - - declare function useStringOrNumber(t: T, useIt: T extends string ? ((s: string) => void) : ((n: number) => void)): void; -->useStringOrNumber : (t: T, useIt: T extends string ? ((s: string) => void) : ((n: number) => void)) => void -+>useStringOrNumber : (t: T, useIt: T extends string ? (s: string) => void : (n: number) => void) => void - >t : T - >useIt : T extends string ? (s: string) => void : (n: number) => void - >s : string -@@= skipped -8, +8 lines =@@ - - useStringOrNumber("", foo => {}); - >useStringOrNumber("", foo => {}) : void -->useStringOrNumber : (t: T, useIt: T extends string ? ((s: string) => void) : ((n: number) => void)) => void -+>useStringOrNumber : (t: T, useIt: T extends string ? (s: string) => void : (n: number) => void) => void - >"" : "" - >foo => {} : (foo: string) => void - >foo : string -@@= skipped -148, +148 lines =@@ - } - - type CreateElementChildren

= -->CreateElementChildren : P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown -+>CreateElementChildren : P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown - - P extends { children?: infer C } - >children : C | undefined -@@= skipped -11, +11 lines =@@ - : unknown; - - declare function createElement

( -->createElement :

(type: ComponentClass

, ...children: P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown) => any -+>createElement :

(type: ComponentClass

, ...children: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any - - type: ComponentClass

, - >type : ComponentClass

- - ...children: CreateElementChildren

-->children : P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown -+>children : P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown - - ): any; - - declare function createElement2

( -->createElement2 :

(type: ComponentClass

, child: P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown) => any -+>createElement2 :

(type: ComponentClass

, child: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any - - type: ComponentClass

, - >type : ComponentClass

- - child: CreateElementChildren

-->child : P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown -+>child : P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown - - ): any; - -@@= skipped -29, +29 lines =@@ - - createElement(InferFunctionTypes, (foo) => "" + foo); - >createElement(InferFunctionTypes, (foo) => "" + foo) : any -->createElement :

(type: ComponentClass

, ...children: P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown) => any -+>createElement :

(type: ComponentClass

, ...children: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any - >InferFunctionTypes : typeof InferFunctionTypes - >(foo) => "" + foo : (foo: number) => string - >foo : number -@@= skipped -10, +10 lines =@@ - - createElement2(InferFunctionTypes, [(foo) => "" + foo]); - >createElement2(InferFunctionTypes, [(foo) => "" + foo]) : any -->createElement2 :

(type: ComponentClass

, child: P extends { children?: infer C; } ? C extends any[] ? C : C[] : unknown) => any -+>createElement2 :

(type: ComponentClass

, child: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any - >InferFunctionTypes : typeof InferFunctionTypes - >[(foo) => "" + foo] : ((foo: number) => string)[] - >(foo) => "" + foo : (foo: number) => string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.errors.txt b/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.errors.txt index dbdc4002193..f18a33be596 100644 --- a/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.errors.txt @@ -1,6 +1,6 @@ -instantiationExpressionErrorNoCrash.ts(15,38): error TS2344: Type '{}' does not satisfy the constraint '(...args: any) => any'. - Type '{}' provides no match for the signature '(...args: any): any'. -instantiationExpressionErrorNoCrash.ts(15,64): error TS2635: Type '(queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. +instantiationExpressionErrorNoCrash.ts(15,38): error TS2344: Type 'typeof createCacheReducer' does not satisfy the constraint '(...args: any) => any'. + Type 'typeof createCacheReducer' provides no match for the signature '(...args: any): any'. +instantiationExpressionErrorNoCrash.ts(15,64): error TS2635: Type '(queries: Cache["queries"]) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. ==== instantiationExpressionErrorNoCrash.ts (2 errors) ==== @@ -20,9 +20,9 @@ instantiationExpressionErrorNoCrash.ts(15,64): error TS2635: Type '>; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2344: Type '{}' does not satisfy the constraint '(...args: any) => any'. -!!! error TS2344: Type '{}' provides no match for the signature '(...args: any): any'. +!!! error TS2344: Type 'typeof createCacheReducer' does not satisfy the constraint '(...args: any) => any'. +!!! error TS2344: Type 'typeof createCacheReducer' provides no match for the signature '(...args: any): any'. ~~ -!!! error TS2635: Type '(queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. +!!! error TS2635: Type '(queries: Cache["queries"]) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. }; }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.errors.txt.diff index b827b3da358..a86c7f619ae 100644 --- a/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.errors.txt.diff @@ -1,21 +1,18 @@ --- old.instantiationExpressionErrorNoCrash.errors.txt +++ new.instantiationExpressionErrorNoCrash.errors.txt @@= skipped -0, +0 lines =@@ --instantiationExpressionErrorNoCrash.ts(15,38): error TS2344: Type 'typeof createCacheReducer' does not satisfy the constraint '(...args: any) => any'. -- Type 'typeof createCacheReducer' provides no match for the signature '(...args: any): any'. -+instantiationExpressionErrorNoCrash.ts(15,38): error TS2344: Type '{}' does not satisfy the constraint '(...args: any) => any'. -+ Type '{}' provides no match for the signature '(...args: any): any'. - instantiationExpressionErrorNoCrash.ts(15,64): error TS2635: Type '(queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. + instantiationExpressionErrorNoCrash.ts(15,38): error TS2344: Type 'typeof createCacheReducer' does not satisfy the constraint '(...args: any) => any'. + Type 'typeof createCacheReducer' provides no match for the signature '(...args: any): any'. +-instantiationExpressionErrorNoCrash.ts(15,64): error TS2635: Type '(queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. ++instantiationExpressionErrorNoCrash.ts(15,64): error TS2635: Type '(queries: Cache["queries"]) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. -@@= skipped -19, +19 lines =@@ - queries: { - [QK in keyof QR]: ReturnType>; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS2344: Type 'typeof createCacheReducer' does not satisfy the constraint '(...args: any) => any'. --!!! error TS2344: Type 'typeof createCacheReducer' provides no match for the signature '(...args: any): any'. -+!!! error TS2344: Type '{}' does not satisfy the constraint '(...args: any) => any'. -+!!! error TS2344: Type '{}' provides no match for the signature '(...args: any): any'. + ==== instantiationExpressionErrorNoCrash.ts (2 errors) ==== +@@= skipped -22, +22 lines =@@ + !!! error TS2344: Type 'typeof createCacheReducer' does not satisfy the constraint '(...args: any) => any'. + !!! error TS2344: Type 'typeof createCacheReducer' provides no match for the signature '(...args: any): any'. ~~ - !!! error TS2635: Type '(queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. - }; \ No newline at end of file +-!!! error TS2635: Type '(queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. ++!!! error TS2635: Type '(queries: Cache["queries"]) => (state?: { queries: QR; }) => { queries: QR; }' has no signatures for which the type argument list is applicable. + }; + }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.types b/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.types index 1f663eb7798..85bd90c7621 100644 --- a/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.types +++ b/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.types @@ -2,8 +2,8 @@ === instantiationExpressionErrorNoCrash.ts === const createCacheReducer = ( ->createCacheReducer : (queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; } ->( queries: Cache["queries"],) => { const queriesMap = {} as QR; const initialState = { queries: queriesMap, }; return (state = initialState) => state;} : (queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; } +>createCacheReducer : (queries: Cache["queries"]) => (state?: { queries: QR; }) => { queries: QR; } +>( queries: Cache["queries"],) => { const queriesMap = {} as QR; const initialState = { queries: queriesMap, }; return (state = initialState) => state;} : (queries: Cache["queries"]) => (state?: { queries: QR; }) => { queries: QR; } queries: Cache["queries"], >queries : { [QK in keyof QR]: any; } @@ -39,7 +39,7 @@ export type Cache = { >queries : { [QK in keyof QR]: any; } [QK in keyof QR]: ReturnType>; ->createCacheReducer : (queries: { [QK in keyof QR_1]: any; }) => (state?: { queries: QR_1; }) => { queries: QR_1; } +>createCacheReducer : (queries: Cache["queries"]) => (state?: { queries: QR_1; }) => { queries: QR_1; } }; }; diff --git a/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.types.diff b/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.types.diff deleted file mode 100644 index 93f19e1e975..00000000000 --- a/testdata/baselines/reference/submodule/compiler/instantiationExpressionErrorNoCrash.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.instantiationExpressionErrorNoCrash.types -+++ new.instantiationExpressionErrorNoCrash.types -@@= skipped -1, +1 lines =@@ - - === instantiationExpressionErrorNoCrash.ts === - const createCacheReducer = ( -->createCacheReducer : (queries: Cache["queries"]) => (state?: { queries: QR; }) => { queries: QR; } -->( queries: Cache["queries"],) => { const queriesMap = {} as QR; const initialState = { queries: queriesMap, }; return (state = initialState) => state;} : (queries: Cache["queries"]) => (state?: { queries: QR; }) => { queries: QR; } -+>createCacheReducer : (queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; } -+>( queries: Cache["queries"],) => { const queriesMap = {} as QR; const initialState = { queries: queriesMap, }; return (state = initialState) => state;} : (queries: { [QK in keyof QR]: any; }) => (state?: { queries: QR; }) => { queries: QR; } - - queries: Cache["queries"], - >queries : { [QK in keyof QR]: any; } -@@= skipped -37, +37 lines =@@ - >queries : { [QK in keyof QR]: any; } - - [QK in keyof QR]: ReturnType>; -->createCacheReducer : (queries: Cache["queries"]) => (state?: { queries: QR_1; }) => { queries: QR_1; } -+>createCacheReducer : (queries: { [QK in keyof QR_1]: any; }) => (state?: { queries: QR_1; }) => { queries: QR_1; } - - }; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/intersectionOfTypeVariableHasApparentSignatures.types b/testdata/baselines/reference/submodule/compiler/intersectionOfTypeVariableHasApparentSignatures.types index eac90849028..5aa97813d99 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionOfTypeVariableHasApparentSignatures.types +++ b/testdata/baselines/reference/submodule/compiler/intersectionOfTypeVariableHasApparentSignatures.types @@ -3,7 +3,7 @@ === intersectionOfTypeVariableHasApparentSignatures.ts === interface Component

{ props: Readonly

& Readonly<{ children?: {} }>; ->props : Readonly

& Readonly<{ children?: {} | undefined; }> +>props : Readonly

& Readonly<{ children?: {}; }> >children : {} | undefined } diff --git a/testdata/baselines/reference/submodule/compiler/intersectionOfTypeVariableHasApparentSignatures.types.diff b/testdata/baselines/reference/submodule/compiler/intersectionOfTypeVariableHasApparentSignatures.types.diff deleted file mode 100644 index 9537df88e95..00000000000 --- a/testdata/baselines/reference/submodule/compiler/intersectionOfTypeVariableHasApparentSignatures.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.intersectionOfTypeVariableHasApparentSignatures.types -+++ new.intersectionOfTypeVariableHasApparentSignatures.types -@@= skipped -2, +2 lines =@@ - === intersectionOfTypeVariableHasApparentSignatures.ts === - interface Component

{ - props: Readonly

& Readonly<{ children?: {} }>; -->props : Readonly

& Readonly<{ children?: {}; }> -+>props : Readonly

& Readonly<{ children?: {} | undefined; }> - >children : {} | undefined - } diff --git a/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.errors.txt b/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.errors.txt index 023539bd7b2..3849af8f481 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.errors.txt @@ -1,8 +1,8 @@ intersectionPropertyCheck.ts(1,68): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: string; }'. -intersectionPropertyCheck.ts(4,5): error TS2322: Type '{ a: { y: string; }; }' is not assignable to type '{ a?: { x?: number | undefined; } | undefined; } & { c?: string | undefined; }'. +intersectionPropertyCheck.ts(4,5): error TS2322: Type '{ a: { y: string; }; }' is not assignable to type '{ a?: { x?: number; }; } & { c?: string; }'. Types of property 'a' are incompatible. - Type '{ y: string; }' has no properties in common with type '{ x?: number | undefined; }'. -intersectionPropertyCheck.ts(7,3): error TS2322: Type 'T & { a: boolean; }' is not assignable to type '{ a?: string | undefined; }'. + Type '{ y: string; }' has no properties in common with type '{ x?: number; }'. +intersectionPropertyCheck.ts(7,3): error TS2322: Type 'T & { a: boolean; }' is not assignable to type '{ a?: string; }'. Types of property 'a' are incompatible. Type 'boolean' is not assignable to type 'string'. intersectionPropertyCheck.ts(17,22): error TS2322: Type 'boolean' is not assignable to type 'string[]'. @@ -17,14 +17,14 @@ intersectionPropertyCheck.ts(17,22): error TS2322: Type 'boolean' is not assigna declare let wrong: { a: { y: string } }; let weak: { a?: { x?: number } } & { c?: string } = wrong; // Nested weak object type ~~~~ -!!! error TS2322: Type '{ a: { y: string; }; }' is not assignable to type '{ a?: { x?: number | undefined; } | undefined; } & { c?: string | undefined; }'. +!!! error TS2322: Type '{ a: { y: string; }; }' is not assignable to type '{ a?: { x?: number; }; } & { c?: string; }'. !!! error TS2322: Types of property 'a' are incompatible. -!!! error TS2322: Type '{ y: string; }' has no properties in common with type '{ x?: number | undefined; }'. +!!! error TS2322: Type '{ y: string; }' has no properties in common with type '{ x?: number; }'. function foo(x: { a?: string }, y: T & { a: boolean }) { x = y; // Mismatched property in source intersection ~ -!!! error TS2322: Type 'T & { a: boolean; }' is not assignable to type '{ a?: string | undefined; }'. +!!! error TS2322: Type 'T & { a: boolean; }' is not assignable to type '{ a?: string; }'. !!! error TS2322: Types of property 'a' are incompatible. !!! error TS2322: Type 'boolean' is not assignable to type 'string'. } diff --git a/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.errors.txt.diff new file mode 100644 index 00000000000..ac19623acc4 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.errors.txt.diff @@ -0,0 +1,32 @@ +--- old.intersectionPropertyCheck.errors.txt ++++ new.intersectionPropertyCheck.errors.txt +@@= skipped -0, +0 lines =@@ + intersectionPropertyCheck.ts(1,68): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: string; }'. +-intersectionPropertyCheck.ts(4,5): error TS2322: Type '{ a: { y: string; }; }' is not assignable to type '{ a?: { x?: number | undefined; } | undefined; } & { c?: string | undefined; }'. ++intersectionPropertyCheck.ts(4,5): error TS2322: Type '{ a: { y: string; }; }' is not assignable to type '{ a?: { x?: number; }; } & { c?: string; }'. + Types of property 'a' are incompatible. +- Type '{ y: string; }' has no properties in common with type '{ x?: number | undefined; }'. +-intersectionPropertyCheck.ts(7,3): error TS2322: Type 'T & { a: boolean; }' is not assignable to type '{ a?: string | undefined; }'. ++ Type '{ y: string; }' has no properties in common with type '{ x?: number; }'. ++intersectionPropertyCheck.ts(7,3): error TS2322: Type 'T & { a: boolean; }' is not assignable to type '{ a?: string; }'. + Types of property 'a' are incompatible. + Type 'boolean' is not assignable to type 'string'. + intersectionPropertyCheck.ts(17,22): error TS2322: Type 'boolean' is not assignable to type 'string[]'. +@@= skipped -16, +16 lines =@@ + declare let wrong: { a: { y: string } }; + let weak: { a?: { x?: number } } & { c?: string } = wrong; // Nested weak object type + ~~~~ +-!!! error TS2322: Type '{ a: { y: string; }; }' is not assignable to type '{ a?: { x?: number | undefined; } | undefined; } & { c?: string | undefined; }'. ++!!! error TS2322: Type '{ a: { y: string; }; }' is not assignable to type '{ a?: { x?: number; }; } & { c?: string; }'. + !!! error TS2322: Types of property 'a' are incompatible. +-!!! error TS2322: Type '{ y: string; }' has no properties in common with type '{ x?: number | undefined; }'. ++!!! error TS2322: Type '{ y: string; }' has no properties in common with type '{ x?: number; }'. + + function foo(x: { a?: string }, y: T & { a: boolean }) { + x = y; // Mismatched property in source intersection + ~ +-!!! error TS2322: Type 'T & { a: boolean; }' is not assignable to type '{ a?: string | undefined; }'. ++!!! error TS2322: Type 'T & { a: boolean; }' is not assignable to type '{ a?: string; }'. + !!! error TS2322: Types of property 'a' are incompatible. + !!! error TS2322: Type 'boolean' is not assignable to type 'string'. + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.types b/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.types index 70e45cc85ea..35f91472a1c 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.types +++ b/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.types @@ -22,22 +22,22 @@ declare let wrong: { a: { y: string } }; >y : string let weak: { a?: { x?: number } } & { c?: string } = wrong; // Nested weak object type ->weak : { a?: { x?: number | undefined; } | undefined; } & { c?: string | undefined; } ->a : { x?: number | undefined; } | undefined +>weak : { a?: { x?: number; }; } & { c?: string; } +>a : { x?: number; } | undefined >x : number | undefined >c : string | undefined >wrong : { a: { y: string; }; } function foo(x: { a?: string }, y: T & { a: boolean }) { ->foo : (x: { a?: string | undefined; }, y: T & { a: boolean; }) => void ->x : { a?: string | undefined; } +>foo : (x: { a?: string; }, y: T & { a: boolean; }) => void +>x : { a?: string; } >a : string | undefined >y : T & { a: boolean; } >a : boolean x = y; // Mismatched property in source intersection >x = y : T & { a: boolean; } ->x : { a?: string | undefined; } +>x : { a?: string; } >y : T & { a: boolean; } } diff --git a/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.types.diff b/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.types.diff deleted file mode 100644 index dc5d2d598f7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/intersectionPropertyCheck.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.intersectionPropertyCheck.types -+++ new.intersectionPropertyCheck.types -@@= skipped -21, +21 lines =@@ - >y : string - - let weak: { a?: { x?: number } } & { c?: string } = wrong; // Nested weak object type -->weak : { a?: { x?: number; }; } & { c?: string; } -->a : { x?: number; } | undefined -+>weak : { a?: { x?: number | undefined; } | undefined; } & { c?: string | undefined; } -+>a : { x?: number | undefined; } | undefined - >x : number | undefined - >c : string | undefined - >wrong : { a: { y: string; }; } - - function foo(x: { a?: string }, y: T & { a: boolean }) { -->foo : (x: { a?: string; }, y: T & { a: boolean; }) => void -->x : { a?: string; } -+>foo : (x: { a?: string | undefined; }, y: T & { a: boolean; }) => void -+>x : { a?: string | undefined; } - >a : string | undefined - >y : T & { a: boolean; } - >a : boolean - - x = y; // Mismatched property in source intersection - >x = y : T & { a: boolean; } -->x : { a?: string; } -+>x : { a?: string | undefined; } - >y : T & { a: boolean; } - } diff --git a/testdata/baselines/reference/submodule/compiler/intersectionTypeNormalization.types b/testdata/baselines/reference/submodule/compiler/intersectionTypeNormalization.types index 56c643596af..9483c95ad41 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionTypeNormalization.types +++ b/testdata/baselines/reference/submodule/compiler/intersectionTypeNormalization.types @@ -133,12 +133,12 @@ function getValueAsString(value: IntersectionFail): string { >'' + value.num : string >'' : "" >value.num : number ->value : { kind: "int"; num: number; } & ToString +>value : { kind: 'int'; num: number; } & ToString >num : number } return value.str; >value.str : string ->value : { kind: "string"; str: string; } & ToString +>value : { kind: 'string'; str: string; } & ToString >str : string } diff --git a/testdata/baselines/reference/submodule/compiler/intersectionTypeNormalization.types.diff b/testdata/baselines/reference/submodule/compiler/intersectionTypeNormalization.types.diff new file mode 100644 index 00000000000..f98eb8a938f --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/intersectionTypeNormalization.types.diff @@ -0,0 +1,16 @@ +--- old.intersectionTypeNormalization.types ++++ new.intersectionTypeNormalization.types +@@= skipped -132, +132 lines =@@ + >'' + value.num : string + >'' : "" + >value.num : number +->value : { kind: "int"; num: number; } & ToString ++>value : { kind: 'int'; num: number; } & ToString + >num : number + } + return value.str; + >value.str : string +->value : { kind: "string"; str: string; } & ToString ++>value : { kind: 'string'; str: string; } & ToString + >str : string + } diff --git a/testdata/baselines/reference/submodule/compiler/intersectionType_useDefineForClassFields.types b/testdata/baselines/reference/submodule/compiler/intersectionType_useDefineForClassFields.types index 2fab562db0f..06ef1a96a28 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionType_useDefineForClassFields.types +++ b/testdata/baselines/reference/submodule/compiler/intersectionType_useDefineForClassFields.types @@ -8,7 +8,7 @@ type Foo = { } function bar(_p: T): { new(): Foo } { ->bar : (_p: T) => new () => Foo +>bar : (_p: T) => { new (): Foo; } >_p : T return null as any; @@ -18,7 +18,7 @@ function bar(_p: T): { new(): Foo } { class Baz extends bar({ x: 1 }) { >Baz : Baz >bar({ x: 1 }) : Foo<{ x: number; }> ->bar : (_p: T) => new () => Foo +>bar : (_p: T) => { new (): Foo; } >{ x: 1 } : { x: number; } >x : number >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/intersectionType_useDefineForClassFields.types.diff b/testdata/baselines/reference/submodule/compiler/intersectionType_useDefineForClassFields.types.diff deleted file mode 100644 index 225f6429ffc..00000000000 --- a/testdata/baselines/reference/submodule/compiler/intersectionType_useDefineForClassFields.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.intersectionType_useDefineForClassFields.types -+++ new.intersectionType_useDefineForClassFields.types -@@= skipped -7, +7 lines =@@ - } - - function bar(_p: T): { new(): Foo } { -->bar : (_p: T) => { new (): Foo; } -+>bar : (_p: T) => new () => Foo - >_p : T - - return null as any; -@@= skipped -10, +10 lines =@@ - class Baz extends bar({ x: 1 }) { - >Baz : Baz - >bar({ x: 1 }) : Foo<{ x: number; }> -->bar : (_p: T) => { new (): Foo; } -+>bar : (_p: T) => new () => Foo - >{ x: 1 } : { x: number; } - >x : number - >1 : 1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/intersectionWithConflictingPrivates.types b/testdata/baselines/reference/submodule/compiler/intersectionWithConflictingPrivates.types index 8fbaafe49c7..7014ed02dfc 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionWithConflictingPrivates.types +++ b/testdata/baselines/reference/submodule/compiler/intersectionWithConflictingPrivates.types @@ -133,14 +133,14 @@ class Foo { await this.bar(node); >await this.bar(node) : undefined >this.bar(node) : Promise ->this.bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise +>this.bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise >this : this ->bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise +>bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise >node : CommitFileNode | ResultsFileNode } private async bar(node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) { ->bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise +>bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise >node : CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode >options : {} | undefined diff --git a/testdata/baselines/reference/submodule/compiler/intersectionWithConflictingPrivates.types.diff b/testdata/baselines/reference/submodule/compiler/intersectionWithConflictingPrivates.types.diff deleted file mode 100644 index b07ed55eaaa..00000000000 --- a/testdata/baselines/reference/submodule/compiler/intersectionWithConflictingPrivates.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.intersectionWithConflictingPrivates.types -+++ new.intersectionWithConflictingPrivates.types -@@= skipped -132, +132 lines =@@ - await this.bar(node); - >await this.bar(node) : undefined - >this.bar(node) : Promise -->this.bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise -+>this.bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise - >this : this -->bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise -+>bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise - >node : CommitFileNode | ResultsFileNode - } - - private async bar(node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) { -->bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise -+>bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise - >node : CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode - >options : {} | undefined diff --git a/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.errors.txt b/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.errors.txt index 584afd0ed1e..f3cb866160d 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.errors.txt @@ -1,7 +1,7 @@ -intersectionsAndOptionalProperties.ts(5,1): error TS2322: Type '{ a: null; b: string; }' is not assignable to type '{ a?: number | undefined; b: string; }'. +intersectionsAndOptionalProperties.ts(5,1): error TS2322: Type '{ a: null; b: string; }' is not assignable to type '{ a?: number; b: string; }'. Types of property 'a' are incompatible. Type 'null' is not assignable to type 'number | undefined'. -intersectionsAndOptionalProperties.ts(6,1): error TS2322: Type '{ a: null; } & { b: string; }' is not assignable to type '{ a?: number | undefined; b: string; }'. +intersectionsAndOptionalProperties.ts(6,1): error TS2322: Type '{ a: null; } & { b: string; }' is not assignable to type '{ a?: number; b: string; }'. Types of property 'a' are incompatible. Type 'null' is not assignable to type 'number | undefined'. intersectionsAndOptionalProperties.ts(19,5): error TS2322: Type 'From' is not assignable to type 'To'. @@ -17,12 +17,12 @@ intersectionsAndOptionalProperties.ts(20,5): error TS2322: Type 'null' is not as x = y; // Error ~ -!!! error TS2322: Type '{ a: null; b: string; }' is not assignable to type '{ a?: number | undefined; b: string; }'. +!!! error TS2322: Type '{ a: null; b: string; }' is not assignable to type '{ a?: number; b: string; }'. !!! error TS2322: Types of property 'a' are incompatible. !!! error TS2322: Type 'null' is not assignable to type 'number | undefined'. x = z; // Error ~ -!!! error TS2322: Type '{ a: null; } & { b: string; }' is not assignable to type '{ a?: number | undefined; b: string; }'. +!!! error TS2322: Type '{ a: null; } & { b: string; }' is not assignable to type '{ a?: number; b: string; }'. !!! error TS2322: Types of property 'a' are incompatible. !!! error TS2322: Type 'null' is not assignable to type 'number | undefined'. diff --git a/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.errors.txt.diff new file mode 100644 index 00000000000..0cf1a7fc9b1 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.errors.txt.diff @@ -0,0 +1,27 @@ +--- old.intersectionsAndOptionalProperties.errors.txt ++++ new.intersectionsAndOptionalProperties.errors.txt +@@= skipped -0, +0 lines =@@ +-intersectionsAndOptionalProperties.ts(5,1): error TS2322: Type '{ a: null; b: string; }' is not assignable to type '{ a?: number | undefined; b: string; }'. ++intersectionsAndOptionalProperties.ts(5,1): error TS2322: Type '{ a: null; b: string; }' is not assignable to type '{ a?: number; b: string; }'. + Types of property 'a' are incompatible. + Type 'null' is not assignable to type 'number | undefined'. +-intersectionsAndOptionalProperties.ts(6,1): error TS2322: Type '{ a: null; } & { b: string; }' is not assignable to type '{ a?: number | undefined; b: string; }'. ++intersectionsAndOptionalProperties.ts(6,1): error TS2322: Type '{ a: null; } & { b: string; }' is not assignable to type '{ a?: number; b: string; }'. + Types of property 'a' are incompatible. + Type 'null' is not assignable to type 'number | undefined'. + intersectionsAndOptionalProperties.ts(19,5): error TS2322: Type 'From' is not assignable to type 'To'. +@@= skipped -16, +16 lines =@@ + + x = y; // Error + ~ +-!!! error TS2322: Type '{ a: null; b: string; }' is not assignable to type '{ a?: number | undefined; b: string; }'. ++!!! error TS2322: Type '{ a: null; b: string; }' is not assignable to type '{ a?: number; b: string; }'. + !!! error TS2322: Types of property 'a' are incompatible. + !!! error TS2322: Type 'null' is not assignable to type 'number | undefined'. + x = z; // Error + ~ +-!!! error TS2322: Type '{ a: null; } & { b: string; }' is not assignable to type '{ a?: number | undefined; b: string; }'. ++!!! error TS2322: Type '{ a: null; } & { b: string; }' is not assignable to type '{ a?: number; b: string; }'. + !!! error TS2322: Types of property 'a' are incompatible. + !!! error TS2322: Type 'null' is not assignable to type 'number | undefined'. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.types b/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.types index 9a6576aa2d6..c2f5ceccaae 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.types +++ b/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.types @@ -2,7 +2,7 @@ === intersectionsAndOptionalProperties.ts === declare let x: { a?: number, b: string }; ->x : { a?: number | undefined; b: string; } +>x : { a?: number; b: string; } >a : number | undefined >b : string @@ -18,12 +18,12 @@ declare let z: { a: null } & { b: string }; x = y; // Error >x = y : { a: null; b: string; } ->x : { a?: number | undefined; b: string; } +>x : { a?: number; b: string; } >y : { a: null; b: string; } x = z; // Error >x = z : { a: null; } & { b: string; } ->x : { a?: number | undefined; b: string; } +>x : { a?: number; b: string; } >z : { a: null; } & { b: string; } // Repro from #36604 diff --git a/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.types.diff b/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.types.diff deleted file mode 100644 index 436e4cf093e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/intersectionsAndOptionalProperties.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.intersectionsAndOptionalProperties.types -+++ new.intersectionsAndOptionalProperties.types -@@= skipped -1, +1 lines =@@ - - === intersectionsAndOptionalProperties.ts === - declare let x: { a?: number, b: string }; -->x : { a?: number; b: string; } -+>x : { a?: number | undefined; b: string; } - >a : number | undefined - >b : string - -@@= skipped -16, +16 lines =@@ - - x = y; // Error - >x = y : { a: null; b: string; } -->x : { a?: number; b: string; } -+>x : { a?: number | undefined; b: string; } - >y : { a: null; b: string; } - - x = z; // Error - >x = z : { a: null; } & { b: string; } -->x : { a?: number; b: string; } -+>x : { a?: number | undefined; b: string; } - >z : { a: null; } & { b: string; } - - // Repro from #36604 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions.types b/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions.types index bb914f45529..79c5fc8ccac 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions.types +++ b/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions.types @@ -23,7 +23,7 @@ export function assertIsElement(node: Node | null): node is Element { } export function assertNodeTagName< ->assertNodeTagName : (node: Node | null, tagName: T) => node is U +>assertNodeTagName : (node: Node | null, tagName: T) => node is U T extends keyof ElementTagNameMap, U extends ElementTagNameMap[T]>(node: Node | null, tagName: T): node is U { @@ -54,7 +54,7 @@ export function assertNodeTagName< } export function assertNodeProperty< ->assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void +>assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void T extends keyof ElementTagNameMap, P extends keyof ElementTagNameMap[T], @@ -66,7 +66,7 @@ export function assertNodeProperty< if (assertNodeTagName(node, tagName)) { >assertNodeTagName(node, tagName) : boolean ->assertNodeTagName : (node: Node | null, tagName: T_1) => node is U +>assertNodeTagName : (node: Node | null, tagName: T_1) => node is U >node : Node | null >tagName : T diff --git a/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions.types.diff b/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions.types.diff deleted file mode 100644 index 2c2c9572557..00000000000 --- a/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.intersectionsOfLargeUnions.types -+++ new.intersectionsOfLargeUnions.types -@@= skipped -22, +22 lines =@@ - } - - export function assertNodeTagName< -->assertNodeTagName : (node: Node | null, tagName: T) => node is U -+>assertNodeTagName : (node: Node | null, tagName: T) => node is U - - T extends keyof ElementTagNameMap, - U extends ElementTagNameMap[T]>(node: Node | null, tagName: T): node is U { -@@= skipped -31, +31 lines =@@ - } - - export function assertNodeProperty< -->assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void -+>assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void - - T extends keyof ElementTagNameMap, - P extends keyof ElementTagNameMap[T], -@@= skipped -12, +12 lines =@@ - - if (assertNodeTagName(node, tagName)) { - >assertNodeTagName(node, tagName) : boolean -->assertNodeTagName : (node: Node | null, tagName: T_1) => node is U -+>assertNodeTagName : (node: Node | null, tagName: T_1) => node is U - >node : Node | null - >tagName : T diff --git a/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions2.types b/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions2.types index cf52055969b..f06052d7596 100644 --- a/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions2.types +++ b/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions2.types @@ -37,7 +37,7 @@ export function assertIsElement(node: Node | null): node is Element { } export function assertNodeTagName< ->assertNodeTagName : (node: Node | null, tagName: T) => node is U +>assertNodeTagName : (node: Node | null, tagName: T) => node is U T extends keyof ElementTagNameMap, U extends ElementTagNameMap[T]>(node: Node | null, tagName: T): node is U { @@ -68,7 +68,7 @@ export function assertNodeTagName< } export function assertNodeProperty< ->assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void +>assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void T extends keyof ElementTagNameMap, P extends keyof ElementTagNameMap[T], @@ -80,7 +80,7 @@ export function assertNodeProperty< if (assertNodeTagName(node, tagName)) { >assertNodeTagName(node, tagName) : boolean ->assertNodeTagName : (node: Node | null, tagName: T_1) => node is U +>assertNodeTagName : (node: Node | null, tagName: T_1) => node is U >node : Node | null >tagName : T diff --git a/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions2.types.diff b/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions2.types.diff deleted file mode 100644 index 83b50c49bb6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/intersectionsOfLargeUnions2.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.intersectionsOfLargeUnions2.types -+++ new.intersectionsOfLargeUnions2.types -@@= skipped -36, +36 lines =@@ - } - - export function assertNodeTagName< -->assertNodeTagName : (node: Node | null, tagName: T) => node is U -+>assertNodeTagName : (node: Node | null, tagName: T) => node is U - - T extends keyof ElementTagNameMap, - U extends ElementTagNameMap[T]>(node: Node | null, tagName: T): node is U { -@@= skipped -31, +31 lines =@@ - } - - export function assertNodeProperty< -->assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void -+>assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void - - T extends keyof ElementTagNameMap, - P extends keyof ElementTagNameMap[T], -@@= skipped -12, +12 lines =@@ - - if (assertNodeTagName(node, tagName)) { - >assertNodeTagName(node, tagName) : boolean -->assertNodeTagName : (node: Node | null, tagName: T_1) => node is U -+>assertNodeTagName : (node: Node | null, tagName: T_1) => node is U - >node : Node | null - >tagName : T diff --git a/testdata/baselines/reference/submodule/compiler/invalidSplice.types b/testdata/baselines/reference/submodule/compiler/invalidSplice.types index b3824e31caa..1f151f3e3a2 100644 --- a/testdata/baselines/reference/submodule/compiler/invalidSplice.types +++ b/testdata/baselines/reference/submodule/compiler/invalidSplice.types @@ -4,9 +4,9 @@ var arr = [].splice(0,3,4,5); >arr : never[] >[].splice(0,3,4,5) : never[] ->[].splice : { (start: number, deleteCount?: number | undefined): never[]; (start: number, deleteCount: number, ...items: never[]): never[]; } +>[].splice : { (start: number, deleteCount?: number): never[]; (start: number, deleteCount: number, ...items: never[]): never[]; } >[] : never[] ->splice : { (start: number, deleteCount?: number | undefined): never[]; (start: number, deleteCount: number, ...items: never[]): never[]; } +>splice : { (start: number, deleteCount?: number): never[]; (start: number, deleteCount: number, ...items: never[]): never[]; } >0 : 0 >3 : 3 >4 : 4 diff --git a/testdata/baselines/reference/submodule/compiler/invalidSplice.types.diff b/testdata/baselines/reference/submodule/compiler/invalidSplice.types.diff deleted file mode 100644 index 033637c3f77..00000000000 --- a/testdata/baselines/reference/submodule/compiler/invalidSplice.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.invalidSplice.types -+++ new.invalidSplice.types -@@= skipped -3, +3 lines =@@ - var arr = [].splice(0,3,4,5); - >arr : never[] - >[].splice(0,3,4,5) : never[] -->[].splice : { (start: number, deleteCount?: number): never[]; (start: number, deleteCount: number, ...items: never[]): never[]; } -+>[].splice : { (start: number, deleteCount?: number | undefined): never[]; (start: number, deleteCount: number, ...items: never[]): never[]; } - >[] : never[] -->splice : { (start: number, deleteCount?: number): never[]; (start: number, deleteCount: number, ...items: never[]): never[]; } -+>splice : { (start: number, deleteCount?: number | undefined): never[]; (start: number, deleteCount: number, ...items: never[]): never[]; } - >0 : 0 - >3 : 3 - >4 : 4 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/invariantGenericErrorElaboration.types b/testdata/baselines/reference/submodule/compiler/invariantGenericErrorElaboration.types index ef47b3994d2..794f2fc9a2c 100644 --- a/testdata/baselines/reference/submodule/compiler/invariantGenericErrorElaboration.types +++ b/testdata/baselines/reference/submodule/compiler/invariantGenericErrorElaboration.types @@ -41,7 +41,7 @@ interface Constraint> extends Runtype { >underlying : A check: (x: A['witness']) => void, ->check : (x: A["witness"]) => void +>check : (x: A['witness']) => void >x : A["witness"] } diff --git a/testdata/baselines/reference/submodule/compiler/invariantGenericErrorElaboration.types.diff b/testdata/baselines/reference/submodule/compiler/invariantGenericErrorElaboration.types.diff new file mode 100644 index 00000000000..700a0a18497 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/invariantGenericErrorElaboration.types.diff @@ -0,0 +1,10 @@ +--- old.invariantGenericErrorElaboration.types ++++ new.invariantGenericErrorElaboration.types +@@= skipped -40, +40 lines =@@ + >underlying : A + + check: (x: A['witness']) => void, +->check : (x: A["witness"]) => void ++>check : (x: A['witness']) => void + >x : A["witness"] + } diff --git a/testdata/baselines/reference/submodule/compiler/ipromise2.types b/testdata/baselines/reference/submodule/compiler/ipromise2.types index c6f78eb09d0..704516c6940 100644 --- a/testdata/baselines/reference/submodule/compiler/ipromise2.types +++ b/testdata/baselines/reference/submodule/compiler/ipromise2.types @@ -4,7 +4,7 @@ declare namespace Windows.Foundation { export interface IPromise { then(success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } +>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => IPromise) | undefined >value : T >error : ((error: any) => IPromise) | undefined @@ -15,7 +15,7 @@ declare namespace Windows.Foundation { >Foundation : any then(success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } +>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => IPromise) | undefined >value : T >error : ((error: any) => U) | undefined @@ -26,7 +26,7 @@ declare namespace Windows.Foundation { >Foundation : any then(success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } +>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => U) | undefined >value : T >error : ((error: any) => IPromise) | undefined @@ -37,7 +37,7 @@ declare namespace Windows.Foundation { >Foundation : any then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } +>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => U) | undefined >value : T >error : ((error: any) => U) | undefined @@ -48,7 +48,7 @@ declare namespace Windows.Foundation { >Foundation : any done(success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; ->done : (success?: ((value: T) => any) | undefined, error?: ((error: any) => any) | undefined, progress?: ((progress: any) => void) | undefined) => void +>done : (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void >success : ((value: T) => any) | undefined >value : T >error : ((error: any) => any) | undefined @@ -69,9 +69,9 @@ var p: Windows.Foundation.IPromise; var p2 = p.then(function (s) { >p2 : Windows.Foundation.IPromise >p.then(function (s) { return 34;} ) : Windows.Foundation.IPromise ->p.then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } +>p.then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >p : Windows.Foundation.IPromise ->then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } +>then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >function (s) { return 34;} : (s: string) => number >s : string diff --git a/testdata/baselines/reference/submodule/compiler/ipromise2.types.diff b/testdata/baselines/reference/submodule/compiler/ipromise2.types.diff index c0b36570b9e..6429b87daa0 100644 --- a/testdata/baselines/reference/submodule/compiler/ipromise2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/ipromise2.types.diff @@ -5,7 +5,7 @@ export interface IPromise { then(success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } ++>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => IPromise) | undefined >value : T >error : ((error: any) => IPromise) | undefined @@ -14,7 +14,7 @@ then(success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } ++>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => IPromise) | undefined >value : T >error : ((error: any) => U) | undefined @@ -23,7 +23,7 @@ then(success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } ++>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => U) | undefined >value : T >error : ((error: any) => IPromise) | undefined @@ -32,27 +32,7 @@ then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } ++>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => U) | undefined >value : T - >error : ((error: any) => U) | undefined -@@= skipped -11, +11 lines =@@ - >Foundation : any - - done(success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; -->done : (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void -+>done : (success?: ((value: T) => any) | undefined, error?: ((error: any) => any) | undefined, progress?: ((progress: any) => void) | undefined) => void - >success : ((value: T) => any) | undefined - >value : T - >error : ((error: any) => any) | undefined -@@= skipped -21, +21 lines =@@ - var p2 = p.then(function (s) { - >p2 : Windows.Foundation.IPromise - >p.then(function (s) { return 34;} ) : Windows.Foundation.IPromise -->p.then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>p.then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } - >p : Windows.Foundation.IPromise -->then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } - >function (s) { return 34;} : (s: string) => number - >s : string + >error : ((error: any) => U) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/ipromise3.types b/testdata/baselines/reference/submodule/compiler/ipromise3.types index 6481826bf34..9deaa5f10dd 100644 --- a/testdata/baselines/reference/submodule/compiler/ipromise3.types +++ b/testdata/baselines/reference/submodule/compiler/ipromise3.types @@ -3,7 +3,7 @@ === ipromise3.ts === interface IPromise3 { then(success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; ->then : { (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } +>then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } >success : ((value: T) => IPromise3) | undefined >value : T >error : ((error: any) => IPromise3) | undefined @@ -12,7 +12,7 @@ interface IPromise3 { >progress : any then(success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; ->then : { (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } +>then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } >success : ((value: T) => IPromise3) | undefined >value : T >error : ((error: any) => U) | undefined @@ -21,7 +21,7 @@ interface IPromise3 { >progress : any then(success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; ->then : { (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } +>then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } >success : ((value: T) => U) | undefined >value : T >error : ((error: any) => IPromise3) | undefined @@ -30,7 +30,7 @@ interface IPromise3 { >progress : any then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; ->then : { (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } +>then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } >success : ((value: T) => U) | undefined >value : T >error : ((error: any) => U) | undefined @@ -39,7 +39,7 @@ interface IPromise3 { >progress : any done? (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; ->done : ((success?: ((value: T) => any) | undefined, error?: ((error: any) => any) | undefined, progress?: ((progress: any) => void) | undefined) => void) | undefined +>done : ((success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void) | undefined >success : ((value: T) => any) | undefined >value : T >error : ((error: any) => any) | undefined @@ -53,9 +53,9 @@ var p1: IPromise3; var p2: IPromise3 = p1.then(function (x) { >p2 : IPromise3 >p1.then(function (x) { return x;}) : IPromise3 ->p1.then : { (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } +>p1.then : { (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): IPromise3; } >p1 : IPromise3 ->then : { (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } +>then : { (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): IPromise3; } >function (x) { return x;} : (x: string) => string >x : string diff --git a/testdata/baselines/reference/submodule/compiler/ipromise3.types.diff b/testdata/baselines/reference/submodule/compiler/ipromise3.types.diff index f4bd1839ade..f803696a606 100644 --- a/testdata/baselines/reference/submodule/compiler/ipromise3.types.diff +++ b/testdata/baselines/reference/submodule/compiler/ipromise3.types.diff @@ -5,7 +5,7 @@ interface IPromise3 { then(success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; ->then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_1, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise3; } -+>then : { (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } ++>then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } >success : ((value: T) => IPromise3) | undefined >value : T >error : ((error: any) => IPromise3) | undefined @@ -14,7 +14,7 @@ then(success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; ->then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_1, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise3; } -+>then : { (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } ++>then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } >success : ((value: T) => IPromise3) | undefined >value : T >error : ((error: any) => U) | undefined @@ -23,7 +23,7 @@ then(success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; ->then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise3; } -+>then : { (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } ++>then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } >success : ((value: T) => U) | undefined >value : T >error : ((error: any) => IPromise3) | undefined @@ -32,27 +32,7 @@ then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; ->then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_1, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } -+>then : { (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } ++>then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } >success : ((value: T) => U) | undefined >value : T - >error : ((error: any) => U) | undefined -@@= skipped -9, +9 lines =@@ - >progress : any - - done? (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; -->done : ((success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void) | undefined -+>done : ((success?: ((value: T) => any) | undefined, error?: ((error: any) => any) | undefined, progress?: ((progress: any) => void) | undefined) => void) | undefined - >success : ((value: T) => any) | undefined - >value : T - >error : ((error: any) => any) | undefined -@@= skipped -14, +14 lines =@@ - var p2: IPromise3 = p1.then(function (x) { - >p2 : IPromise3 - >p1.then(function (x) { return x;}) : IPromise3 -->p1.then : { (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): IPromise3; } -+>p1.then : { (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } - >p1 : IPromise3 -->then : { (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: (progress: any) => void): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): IPromise3; } -+>then : { (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => IPromise3) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => IPromise3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise3; } - >function (x) { return x;} : (x: string) => string - >x : string + >error : ((error: any) => U) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/ipromise4.types b/testdata/baselines/reference/submodule/compiler/ipromise4.types index 61e83271646..a72d9ac945a 100644 --- a/testdata/baselines/reference/submodule/compiler/ipromise4.types +++ b/testdata/baselines/reference/submodule/compiler/ipromise4.types @@ -4,7 +4,7 @@ declare namespace Windows.Foundation { export interface IPromise { then(success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } +>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => IPromise) | undefined >value : T >error : ((error: any) => IPromise) | undefined @@ -15,7 +15,7 @@ declare namespace Windows.Foundation { >Foundation : any then(success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } +>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => IPromise) | undefined >value : T >error : ((error: any) => U) | undefined @@ -26,7 +26,7 @@ declare namespace Windows.Foundation { >Foundation : any then(success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } +>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => U) | undefined >value : T >error : ((error: any) => IPromise) | undefined @@ -37,7 +37,7 @@ declare namespace Windows.Foundation { >Foundation : any then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } +>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => U) | undefined >value : T >error : ((error: any) => U) | undefined @@ -48,7 +48,7 @@ declare namespace Windows.Foundation { >Foundation : any done? (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; ->done : ((success?: ((value: T) => any) | undefined, error?: ((error: any) => any) | undefined, progress?: ((progress: any) => void) | undefined) => void) | undefined +>done : ((success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void) | undefined >success : ((value: T) => any) | undefined >value : T >error : ((error: any) => any) | undefined @@ -65,23 +65,23 @@ var p: Windows.Foundation.IPromise = null; p.then(function (x) { } ); // should not error >p.then(function (x) { } ) : Windows.Foundation.IPromise ->p.then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } +>p.then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >p : Windows.Foundation.IPromise ->then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } +>then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >function (x) { } : (x: number) => void >x : number p.then(function (x) { return "hello"; } ).then(function (x) { return x } ); // should not error >p.then(function (x) { return "hello"; } ).then(function (x) { return x } ) : Windows.Foundation.IPromise ->p.then(function (x) { return "hello"; } ).then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } +>p.then(function (x) { return "hello"; } ).then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >p.then(function (x) { return "hello"; } ) : Windows.Foundation.IPromise ->p.then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } +>p.then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >p : Windows.Foundation.IPromise ->then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } +>then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >function (x) { return "hello"; } : (x: number) => string >x : number >"hello" : "hello" ->then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } +>then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >function (x) { return x } : (x: string) => string >x : string >x : string diff --git a/testdata/baselines/reference/submodule/compiler/ipromise4.types.diff b/testdata/baselines/reference/submodule/compiler/ipromise4.types.diff index c16c3928115..d6fd7d313c6 100644 --- a/testdata/baselines/reference/submodule/compiler/ipromise4.types.diff +++ b/testdata/baselines/reference/submodule/compiler/ipromise4.types.diff @@ -5,7 +5,7 @@ export interface IPromise { then(success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } ++>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => IPromise) | undefined >value : T >error : ((error: any) => IPromise) | undefined @@ -14,7 +14,7 @@ then(success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } ++>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => IPromise) | undefined >value : T >error : ((error: any) => U) | undefined @@ -23,7 +23,7 @@ then(success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } ++>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => U) | undefined >value : T >error : ((error: any) => IPromise) | undefined @@ -32,46 +32,7 @@ then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: T) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } ++>then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >success : ((value: T) => U) | undefined >value : T - >error : ((error: any) => U) | undefined -@@= skipped -11, +11 lines =@@ - >Foundation : any - - done? (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; -->done : ((success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void) | undefined -+>done : ((success?: ((value: T) => any) | undefined, error?: ((error: any) => any) | undefined, progress?: ((progress: any) => void) | undefined) => void) | undefined - >success : ((value: T) => any) | undefined - >value : T - >error : ((error: any) => any) | undefined -@@= skipped -17, +17 lines =@@ - - p.then(function (x) { } ); // should not error - >p.then(function (x) { } ) : Windows.Foundation.IPromise -->p.then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>p.then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } - >p : Windows.Foundation.IPromise -->then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } - >function (x) { } : (x: number) => void - >x : number - - p.then(function (x) { return "hello"; } ).then(function (x) { return x } ); // should not error - >p.then(function (x) { return "hello"; } ).then(function (x) { return x } ) : Windows.Foundation.IPromise -->p.then(function (x) { return "hello"; } ).then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>p.then(function (x) { return "hello"; } ).then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } - >p.then(function (x) { return "hello"; } ) : Windows.Foundation.IPromise -->p.then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>p.then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } - >p : Windows.Foundation.IPromise -->then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: number) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } - >function (x) { return "hello"; } : (x: number) => string - >x : number - >"hello" : "hello" -->then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -+>then : { (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => Windows.Foundation.IPromise) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => Windows.Foundation.IPromise) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; (success?: ((value: string) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): Windows.Foundation.IPromise; } - >function (x) { return x } : (x: string) => string - >x : string - >x : string \ No newline at end of file + >error : ((error: any) => U) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isDeclarationVisibleNodeKinds(target=es2015).types b/testdata/baselines/reference/submodule/compiler/isDeclarationVisibleNodeKinds(target=es2015).types index b412672796e..efd41d1fc8f 100644 --- a/testdata/baselines/reference/submodule/compiler/isDeclarationVisibleNodeKinds(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/isDeclarationVisibleNodeKinds(target=es2015).types @@ -34,7 +34,7 @@ namespace schema { >schema : typeof schema export function createValidator3(schema: any): number | { new (data: T): T; } { ->createValidator3 : (schema: any) => number | (new (data: T) => T) +>createValidator3 : (schema: any) => number | { new (data: T): T; } >schema : any >data : T @@ -48,7 +48,7 @@ namespace schema { >schema : typeof schema export function createValidator4(schema: any): { new (data: T): T; }[] { ->createValidator4 : (schema: any) => (new (data: T) => T)[] +>createValidator4 : (schema: any) => { new (data: T): T; }[] >schema : any >data : T @@ -63,7 +63,7 @@ namespace schema { >schema : typeof schema export function createValidator5(schema: any): { new (data: T): T } { ->createValidator5 : (schema: any) => new (data: T) => T +>createValidator5 : (schema: any) => { new (data: T): T; } >schema : any >data : T @@ -105,7 +105,7 @@ namespace schema { >schema : typeof schema export function createValidator8(schema: any): Array<{ (data: T) : T}> { ->createValidator8 : (schema: any) => ((data: T) => T)[] +>createValidator8 : (schema: any) => Array<{ (data: T): T; }> >schema : any >data : T diff --git a/testdata/baselines/reference/submodule/compiler/isDeclarationVisibleNodeKinds(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/isDeclarationVisibleNodeKinds(target=es2015).types.diff deleted file mode 100644 index af0bfe90814..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isDeclarationVisibleNodeKinds(target=es2015).types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.isDeclarationVisibleNodeKinds(target=es2015).types -+++ new.isDeclarationVisibleNodeKinds(target=es2015).types -@@= skipped -33, +33 lines =@@ - >schema : typeof schema - - export function createValidator3(schema: any): number | { new (data: T): T; } { -->createValidator3 : (schema: any) => number | { new (data: T): T; } -+>createValidator3 : (schema: any) => number | (new (data: T) => T) - >schema : any - >data : T - -@@= skipped -14, +14 lines =@@ - >schema : typeof schema - - export function createValidator4(schema: any): { new (data: T): T; }[] { -->createValidator4 : (schema: any) => { new (data: T): T; }[] -+>createValidator4 : (schema: any) => (new (data: T) => T)[] - >schema : any - >data : T - -@@= skipped -15, +15 lines =@@ - >schema : typeof schema - - export function createValidator5(schema: any): { new (data: T): T } { -->createValidator5 : (schema: any) => { new (data: T): T; } -+>createValidator5 : (schema: any) => new (data: T) => T - >schema : any - >data : T - -@@= skipped -42, +42 lines =@@ - >schema : typeof schema - - export function createValidator8(schema: any): Array<{ (data: T) : T}> { -->createValidator8 : (schema: any) => Array<{ (data: T): T; }> -+>createValidator8 : (schema: any) => ((data: T) => T)[] - >schema : any - >data : T diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.js b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.js index 64ad2de25b5..1949d31f6b9 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.js +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.js @@ -24,6 +24,7 @@ exports.foo3 = foo3; //// [isolatedDeclarationErrorTypes1.d.ts] -export declare const foo1: (type?: any) => void; -export declare const foo2: (type?: any) => void; +import { Unresolved } from "foo"; +export declare const foo1: (type?: Unresolved) => void; +export declare const foo2: (type?: Unresolved | undefined) => void; export declare const foo3: (type: Unresolved) => void; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.js.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.js.diff deleted file mode 100644 index 4134efb25c4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.js.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.isolatedDeclarationErrorTypes1.js -+++ new.isolatedDeclarationErrorTypes1.js -@@= skipped -23, +23 lines =@@ - - - //// [isolatedDeclarationErrorTypes1.d.ts] --import { Unresolved } from "foo"; --export declare const foo1: (type?: Unresolved) => void; --export declare const foo2: (type?: Unresolved | undefined) => void; -+export declare const foo1: (type?: any) => void; -+export declare const foo2: (type?: any) => void; - export declare const foo3: (type: Unresolved) => void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.types b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.types index 53060180983..752aa30f147 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.types +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.types @@ -7,13 +7,13 @@ import { Unresolved } from "foo"; >Unresolved : any export const foo1 = (type?: Unresolved): void => {}; ->foo1 : (type?: any) => void ->(type?: Unresolved): void => {} : (type?: any) => void +>foo1 : (type?: Unresolved) => void +>(type?: Unresolved): void => {} : (type?: Unresolved) => void >type : any export const foo2 = (type?: Unresolved | undefined): void => {}; ->foo2 : (type?: any) => void ->(type?: Unresolved | undefined): void => {} : (type?: any) => void +>foo2 : (type?: Unresolved | undefined) => void +>(type?: Unresolved | undefined): void => {} : (type?: Unresolved | undefined) => void >type : any export const foo3 = (type: Unresolved): void => {}; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.types.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.types.diff deleted file mode 100644 index f3d9de62960..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorTypes1.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.isolatedDeclarationErrorTypes1.types -+++ new.isolatedDeclarationErrorTypes1.types -@@= skipped -6, +6 lines =@@ - >Unresolved : any - - export const foo1 = (type?: Unresolved): void => {}; -->foo1 : (type?: Unresolved) => void -->(type?: Unresolved): void => {} : (type?: Unresolved) => void -+>foo1 : (type?: any) => void -+>(type?: Unresolved): void => {} : (type?: any) => void - >type : any - - export const foo2 = (type?: Unresolved | undefined): void => {}; -->foo2 : (type?: Unresolved | undefined) => void -->(type?: Unresolved | undefined): void => {} : (type?: Unresolved | undefined) => void -+>foo2 : (type?: any) => void -+>(type?: Unresolved | undefined): void => {} : (type?: any) => void - >type : any - - export const foo3 = (type: Unresolved): void => {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrors.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrors.errors.txt new file mode 100644 index 00000000000..8c939b389e4 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrors.errors.txt @@ -0,0 +1,29 @@ +isolatedDeclarationErrors.ts(2,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. +isolatedDeclarationErrors.ts(5,1): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrors.ts(7,30): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrors.ts(8,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. +isolatedDeclarationErrors.ts(8,1): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + + +==== isolatedDeclarationErrors.ts (5 errors) ==== + function errorOnAssignmentBelowDecl(): void {} + errorOnAssignmentBelowDecl.a = ""; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + + const errorOnAssignmentBelow = (): void => {} + errorOnAssignmentBelow.a = ""; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. + + const errorOnMissingReturn = () => {} + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrors.ts:7:7: Add a type annotation to the variable errorOnMissingReturn. +!!! related TS9030 isolatedDeclarationErrors.ts:7:30: Add a return type to the function expression. + errorOnMissingReturn.a = ""; + ~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrors.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrors.errors.txt.diff index 8afcefb1f0e..0c2bdf605ad 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrors.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrors.errors.txt.diff @@ -1,30 +1,36 @@ --- old.isolatedDeclarationErrors.errors.txt +++ new.isolatedDeclarationErrors.errors.txt @@= skipped -0, +0 lines =@@ --isolatedDeclarationErrors.ts(2,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + isolatedDeclarationErrors.ts(2,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -isolatedDeclarationErrors.ts(5,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. --isolatedDeclarationErrors.ts(7,30): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrors.ts(8,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++isolatedDeclarationErrors.ts(5,1): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrors.ts(7,30): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrors.ts(8,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. - - -==== isolatedDeclarationErrors.ts (4 errors) ==== -- function errorOnAssignmentBelowDecl(): void {} -- errorOnAssignmentBelowDecl.a = ""; -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- -- const errorOnAssignmentBelow = (): void => {} -- errorOnAssignmentBelow.a = ""; ++isolatedDeclarationErrors.ts(8,1): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++ ++ ++==== isolatedDeclarationErrors.ts (5 errors) ==== + function errorOnAssignmentBelowDecl(): void {} + errorOnAssignmentBelowDecl.a = ""; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@@= skipped -11, +12 lines =@@ + + const errorOnAssignmentBelow = (): void => {} + errorOnAssignmentBelow.a = ""; - ~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- -- const errorOnMissingReturn = () => {} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrors.ts:7:7: Add a type annotation to the variable errorOnMissingReturn. --!!! related TS9030 isolatedDeclarationErrors.ts:7:30: Add a return type to the function expression. -- errorOnMissingReturn.a = ""; -- ~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- -+ \ No newline at end of file ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. + + const errorOnMissingReturn = () => {} + ~~~~~~~~ +@@= skipped -11, +11 lines =@@ + errorOnMissingReturn.a = ""; + ~~~~~~~~~~~~~~~~~~~~~~ + !!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsAugmentation.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsAugmentation.errors.txt new file mode 100644 index 00000000000..4ccbc285f11 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsAugmentation.errors.txt @@ -0,0 +1,28 @@ +child1.ts(9,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +parent.ts(1,1): error TS9026: Declaration emit for this file requires preserving this import for augmentations. This is not supported with --isolatedDeclarations. + + +==== child1.ts (1 errors) ==== + import { ParentThing } from './parent'; + + declare module './parent' { + interface ParentThing { + add: (a: number, b: number) => number; + } + } + + export function child1(prototype: ParentThing) { + ~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9031 child1.ts:9:17: Add a return type to the function declaration. + prototype.add = (a: number, b: number) => a + b; + } + +==== parent.ts (1 errors) ==== + import { child1 } from './child1'; // this import should still exist in some form in the output, since it augments this module + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9026: Declaration emit for this file requires preserving this import for augmentations. This is not supported with --isolatedDeclarations. + + export class ParentThing implements ParentThing {} + + child1(ParentThing.prototype); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsAugmentation.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsAugmentation.errors.txt.diff deleted file mode 100644 index f69f117c7ed..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsAugmentation.errors.txt.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- old.isolatedDeclarationErrorsAugmentation.errors.txt -+++ new.isolatedDeclarationErrorsAugmentation.errors.txt -@@= skipped -0, +0 lines =@@ --child1.ts(9,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --parent.ts(1,1): error TS9026: Declaration emit for this file requires preserving this import for augmentations. This is not supported with --isolatedDeclarations. -- -- --==== child1.ts (1 errors) ==== -- import { ParentThing } from './parent'; -- -- declare module './parent' { -- interface ParentThing { -- add: (a: number, b: number) => number; -- } -- } -- -- export function child1(prototype: ParentThing) { -- ~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9031 child1.ts:9:17: Add a return type to the function declaration. -- prototype.add = (a: number, b: number) => a + b; -- } -- --==== parent.ts (1 errors) ==== -- import { child1 } from './child1'; // this import should still exist in some form in the output, since it augments this module -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9026: Declaration emit for this file requires preserving this import for augmentations. This is not supported with --isolatedDeclarations. -- -- export class ParentThing implements ParentThing {} -- -- child1(ParentThing.prototype); -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClasses.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClasses.errors.txt index 822b9b4f41a..3ad94372e0c 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClasses.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClasses.errors.txt @@ -1,33 +1,69 @@ +isolatedDeclarationErrorsClasses.ts(3,5): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsClasses.ts(4,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. isolatedDeclarationErrorsClasses.ts(8,18): error TS7006: Parameter 'p' implicitly has an 'any' type. +isolatedDeclarationErrorsClasses.ts(8,18): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsClasses.ts(9,23): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsClasses.ts(11,28): error TS9013: Expression type can't be inferred with --isolatedDeclarations. isolatedDeclarationErrorsClasses.ts(12,9): error TS7032: Property 'setOnly' implicitly has type 'any', because its set accessor lacks a parameter type annotation. isolatedDeclarationErrorsClasses.ts(12,17): error TS7006: Parameter 'value' implicitly has an 'any' type. +isolatedDeclarationErrorsClasses.ts(12,17): error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsClasses.ts(36,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. isolatedDeclarationErrorsClasses.ts(36,6): error TS2304: Cannot find name 'missing'. +isolatedDeclarationErrorsClasses.ts(38,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsClasses.ts(40,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsClasses.ts(42,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsClasses.ts(42,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsClasses.ts(44,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. isolatedDeclarationErrorsClasses.ts(44,35): error TS7006: Parameter 'v' implicitly has an 'any' type. +isolatedDeclarationErrorsClasses.ts(44,35): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsClasses.ts(46,9): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. isolatedDeclarationErrorsClasses.ts(48,9): error TS7032: Property '[noParamAnnotationStringName]' implicitly has type 'any', because its set accessor lacks a parameter type annotation. +isolatedDeclarationErrorsClasses.ts(48,9): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. isolatedDeclarationErrorsClasses.ts(48,39): error TS7006: Parameter 'value' implicitly has an 'any' type. isolatedDeclarationErrorsClasses.ts(50,5): error TS1166: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type. +isolatedDeclarationErrorsClasses.ts(50,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. isolatedDeclarationErrorsClasses.ts(56,5): error TS7010: '[noAnnotationLiteralName]', which lacks return-type annotation, implicitly has an 'any' return type. +isolatedDeclarationErrorsClasses.ts(56,5): error TS9013: Expression type can't be inferred with --isolatedDeclarations. -==== isolatedDeclarationErrorsClasses.ts (9 errors) ==== +==== isolatedDeclarationErrorsClasses.ts (26 errors) ==== export class Cls { field = 1 + 1; + ~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsClasses.ts:3:5: Add a type annotation to the property field. method() {} + ~~~~~~ +!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9034 isolatedDeclarationErrorsClasses.ts:4:5: Add a return type to the method methodOk(): void {} methodParams(p): void {} ~ !!! error TS7006: Parameter 'p' implicitly has an 'any' type. + ~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsClasses.ts:8:18: Add a type annotation to the parameter p. methodParams2(p = 1 + 1): void {} + ~~~~~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsClasses.ts:9:19: Add a type annotation to the parameter p. get getOnly() { return 1 + 1 } + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9032 isolatedDeclarationErrorsClasses.ts:11:9: Add a return type to the get accessor declaration. +!!! related TS9035 isolatedDeclarationErrorsClasses.ts:11:28: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. set setOnly(value) { } ~~~~~~~ !!! error TS7032: Property 'setOnly' implicitly has type 'any', because its set accessor lacks a parameter type annotation. ~~~~~ !!! error TS7006: Parameter 'value' implicitly has an 'any' type. + ~~~~~ +!!! error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9033 isolatedDeclarationErrorsClasses.ts:12:9: Add a type to parameter of the set accessor declaration. get getSetBad() { return 0 } set getSetBad(value) { } @@ -52,30 +88,52 @@ isolatedDeclarationErrorsClasses.ts(56,5): error TS7010: '[noAnnotationLiteralNa // Should not be reported as an isolated declaration error [missing] = 1; + ~~~~~~~~~ +!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. ~~~~~~~ !!! error TS2304: Cannot find name 'missing'. [noAnnotationLiteralName](): void { } + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. [noParamAnnotationLiteralName](v: string): void { } + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. [noAnnotationStringName]() { } + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9034 isolatedDeclarationErrorsClasses.ts:42:5: Add a return type to the method + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. [noParamAnnotationStringName](v): void { } + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. ~ !!! error TS7006: Parameter 'v' implicitly has an 'any' type. + ~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsClasses.ts:44:35: Add a type annotation to the parameter v. get [noAnnotationStringName]() { return 0;} + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. set [noParamAnnotationStringName](value) { } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS7032: Property '[noParamAnnotationStringName]' implicitly has type 'any', because its set accessor lacks a parameter type annotation. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. ~~~~~ !!! error TS7006: Parameter 'value' implicitly has an 'any' type. [("A" + "B") as "AB"] = 1; ~~~~~~~~~~~~~~~~~~~~~ !!! error TS1166: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type. + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. } @@ -84,4 +142,6 @@ isolatedDeclarationErrorsClasses.ts(56,5): error TS7010: '[noAnnotationLiteralNa [noAnnotationLiteralName](); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS7010: '[noAnnotationLiteralName]', which lacks return-type annotation, implicitly has an 'any' return type. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClasses.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClasses.errors.txt.diff index ae4a7935ff4..125f06adf32 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClasses.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClasses.errors.txt.diff @@ -1,134 +1,24 @@ --- old.isolatedDeclarationErrorsClasses.errors.txt +++ new.isolatedDeclarationErrorsClasses.errors.txt -@@= skipped -0, +0 lines =@@ --isolatedDeclarationErrorsClasses.ts(3,5): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsClasses.ts(4,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +@@= skipped -2, +2 lines =@@ isolatedDeclarationErrorsClasses.ts(8,18): error TS7006: Parameter 'p' implicitly has an 'any' type. --isolatedDeclarationErrorsClasses.ts(8,18): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsClasses.ts(9,23): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsClasses.ts(8,18): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsClasses.ts(9,23): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. -isolatedDeclarationErrorsClasses.ts(11,9): error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsClasses.ts(11,28): error TS9013: Expression type can't be inferred with --isolatedDeclarations. isolatedDeclarationErrorsClasses.ts(12,9): error TS7032: Property 'setOnly' implicitly has type 'any', because its set accessor lacks a parameter type annotation. isolatedDeclarationErrorsClasses.ts(12,17): error TS7006: Parameter 'value' implicitly has an 'any' type. --isolatedDeclarationErrorsClasses.ts(12,17): error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsClasses.ts(36,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - isolatedDeclarationErrorsClasses.ts(36,6): error TS2304: Cannot find name 'missing'. --isolatedDeclarationErrorsClasses.ts(38,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsClasses.ts(40,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsClasses.ts(42,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsClasses.ts(42,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsClasses.ts(44,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - isolatedDeclarationErrorsClasses.ts(44,35): error TS7006: Parameter 'v' implicitly has an 'any' type. --isolatedDeclarationErrorsClasses.ts(44,35): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsClasses.ts(46,9): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - isolatedDeclarationErrorsClasses.ts(48,9): error TS7032: Property '[noParamAnnotationStringName]' implicitly has type 'any', because its set accessor lacks a parameter type annotation. --isolatedDeclarationErrorsClasses.ts(48,9): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - isolatedDeclarationErrorsClasses.ts(48,39): error TS7006: Parameter 'value' implicitly has an 'any' type. - isolatedDeclarationErrorsClasses.ts(50,5): error TS1166: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type. --isolatedDeclarationErrorsClasses.ts(50,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - isolatedDeclarationErrorsClasses.ts(56,5): error TS7010: '[noAnnotationLiteralName]', which lacks return-type annotation, implicitly has an 'any' return type. --isolatedDeclarationErrorsClasses.ts(56,5): error TS9013: Expression type can't be inferred with --isolatedDeclarations. -- -- --==== isolatedDeclarationErrorsClasses.ts (26 errors) ==== -+ -+ -+==== isolatedDeclarationErrorsClasses.ts (9 errors) ==== - export class Cls { - - field = 1 + 1; -- ~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsClasses.ts:3:5: Add a type annotation to the property field. - method() {} -- ~~~~~~ --!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9034 isolatedDeclarationErrorsClasses.ts:4:5: Add a return type to the method - - methodOk(): void {} - - methodParams(p): void {} - ~ - !!! error TS7006: Parameter 'p' implicitly has an 'any' type. -- ~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsClasses.ts:8:18: Add a type annotation to the parameter p. - methodParams2(p = 1 + 1): void {} -- ~~~~~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsClasses.ts:9:19: Add a type annotation to the parameter p. + isolatedDeclarationErrorsClasses.ts(12,17): error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. +@@= skipped -49, +49 lines =@@ + !!! related TS9028 isolatedDeclarationErrorsClasses.ts:9:19: Add a type annotation to the parameter p. get getOnly() { return 1 + 1 } - ~~~~~~~ -!!! error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9032 isolatedDeclarationErrorsClasses.ts:11:9: Add a return type to the get accessor declaration. ++ ~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. + !!! related TS9032 isolatedDeclarationErrorsClasses.ts:11:9: Add a return type to the get accessor declaration. ++!!! related TS9035 isolatedDeclarationErrorsClasses.ts:11:28: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. set setOnly(value) { } ~~~~~~~ - !!! error TS7032: Property 'setOnly' implicitly has type 'any', because its set accessor lacks a parameter type annotation. - ~~~~~ - !!! error TS7006: Parameter 'value' implicitly has an 'any' type. -- ~~~~~ --!!! error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9033 isolatedDeclarationErrorsClasses.ts:12:9: Add a type to parameter of the set accessor declaration. - - get getSetBad() { return 0 } - set getSetBad(value) { } -@@= skipped -86, +51 lines =@@ - - // Should not be reported as an isolated declaration error - [missing] = 1; -- ~~~~~~~~~ --!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - ~~~~~~~ - !!! error TS2304: Cannot find name 'missing'. - - [noAnnotationLiteralName](): void { } -- ~~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - - [noParamAnnotationLiteralName](v: string): void { } -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - - [noAnnotationStringName]() { } -- ~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9034 isolatedDeclarationErrorsClasses.ts:42:5: Add a return type to the method -- ~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - - [noParamAnnotationStringName](v): void { } -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - ~ - !!! error TS7006: Parameter 'v' implicitly has an 'any' type. -- ~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsClasses.ts:44:35: Add a type annotation to the parameter v. - - get [noAnnotationStringName]() { return 0;} -- ~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - - set [noParamAnnotationStringName](value) { } - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - !!! error TS7032: Property '[noParamAnnotationStringName]' implicitly has type 'any', because its set accessor lacks a parameter type annotation. -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - ~~~~~ - !!! error TS7006: Parameter 'value' implicitly has an 'any' type. - - [("A" + "B") as "AB"] = 1; - ~~~~~~~~~~~~~~~~~~~~~ - !!! error TS1166: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type. -- ~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - - } - -@@= skipped -54, +32 lines =@@ - [noAnnotationLiteralName](); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - !!! error TS7010: '[noAnnotationLiteralName]', which lacks return-type annotation, implicitly has an 'any' return type. -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. - } \ No newline at end of file + !!! error TS7032: Property 'setOnly' implicitly has type 'any', because its set accessor lacks a parameter type annotation. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClassesExpressions.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClassesExpressions.errors.txt new file mode 100644 index 00000000000..cb950e83e73 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClassesExpressions.errors.txt @@ -0,0 +1,36 @@ +isolatedDeclarationErrorsClassesExpressions.ts(1,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsClassesExpressions.ts(19,25): error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. +isolatedDeclarationErrorsClassesExpressions.ts(19,35): error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. + + +==== isolatedDeclarationErrorsClassesExpressions.ts (3 errors) ==== + export const cls = class { + ~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsClassesExpressions.ts:1:14: Add a type annotation to the variable cls. + foo: string = ""; + } + + + function id any>(cls: T) { + return cls; + } + + + export class Base { + + } + + export class Mix extends id(Base) { + + } + + export const classes = [class {}, class{}] as const + ~~~~~ +!!! error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsClassesExpressions.ts:19:14: Add a type annotation to the variable classes. +!!! related TS9035 isolatedDeclarationErrorsClassesExpressions.ts:19:25: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~ +!!! error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsClassesExpressions.ts:19:14: Add a type annotation to the variable classes. +!!! related TS9035 isolatedDeclarationErrorsClassesExpressions.ts:19:35: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClassesExpressions.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClassesExpressions.errors.txt.diff index b5e3b13bc76..d4e9b71ab1b 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClassesExpressions.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsClassesExpressions.errors.txt.diff @@ -3,41 +3,27 @@ @@= skipped -0, +0 lines =@@ -isolatedDeclarationErrorsClassesExpressions.ts(1,20): error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. -isolatedDeclarationErrorsClassesExpressions.ts(15,26): error TS9021: Extends clause can't contain an expression with --isolatedDeclarations. --isolatedDeclarationErrorsClassesExpressions.ts(19,25): error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. --isolatedDeclarationErrorsClassesExpressions.ts(19,35): error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. -- -- ++isolatedDeclarationErrorsClassesExpressions.ts(1,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsClassesExpressions.ts(19,25): error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. + isolatedDeclarationErrorsClassesExpressions.ts(19,35): error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. + + -==== isolatedDeclarationErrorsClassesExpressions.ts (4 errors) ==== -- export const cls = class { ++==== isolatedDeclarationErrorsClassesExpressions.ts (3 errors) ==== + export const cls = class { - ~~~~~ -!!! error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsClassesExpressions.ts:1:14: Add a type annotation to the variable cls. -- foo: string = ""; -- } -- -- -- function id any>(cls: T) { -- return cls; -- } -- -- -- export class Base { -- -- } -- -- export class Mix extends id(Base) { ++ ~~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 isolatedDeclarationErrorsClassesExpressions.ts:1:14: Add a type annotation to the variable cls. + foo: string = ""; + } +@@= skipped -22, +21 lines =@@ + } + + export class Mix extends id(Base) { - ~~~~~~~~ -!!! error TS9021: Extends clause can't contain an expression with --isolatedDeclarations. -- -- } -- -- export const classes = [class {}, class{}] as const -- ~~~~~ --!!! error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsClassesExpressions.ts:19:14: Add a type annotation to the variable classes. --!!! related TS9035 isolatedDeclarationErrorsClassesExpressions.ts:19:25: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. -- ~~~~~ --!!! error TS9022: Inference from class expressions is not supported with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsClassesExpressions.ts:19:14: Add a type annotation to the variable classes. --!!! related TS9035 isolatedDeclarationErrorsClassesExpressions.ts:19:35: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. -+ \ No newline at end of file + + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsDefault.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsDefault.errors.txt new file mode 100644 index 00000000000..b07df12ef54 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsDefault.errors.txt @@ -0,0 +1,49 @@ +a.ts(1,16): error TS9037: Default exports can't be inferred with --isolatedDeclarations. +b.ts(1,23): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +c.ts(1,16): error TS9017: Only const arrays can be inferred with --isolatedDeclarations. +c.ts(1,24): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +d.ts(1,24): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +e.ts(1,24): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + + +==== a.ts (1 errors) ==== + export default 1 + 1; + ~~~~~ +!!! error TS9037: Default exports can't be inferred with --isolatedDeclarations. +!!! related TS9036 a.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. + + +==== b.ts (1 errors) ==== + export default { foo: 1 + 1 }; + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9036 b.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. +!!! related TS9035 b.ts:1:23: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + +==== c.ts (2 errors) ==== + export default [{ foo: 1 + 1 }]; + ~~~~~~~~~~~~~~~~ +!!! error TS9017: Only const arrays can be inferred with --isolatedDeclarations. +!!! related TS9036 c.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9036 c.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. +!!! related TS9035 c.ts:1:24: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + +==== d.ts (1 errors) ==== + export default [{ foo: 1 + 1 }] as const; + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9036 d.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. +!!! related TS9035 d.ts:1:24: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + +==== e.ts (1 errors) ==== + export default [{ foo: 1 + 1 }] as const; + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9036 e.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. +!!! related TS9035 e.ts:1:24: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + +==== f.ts (0 errors) ==== + const a = { foo: 1 }; + export default a; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsDefault.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsDefault.errors.txt.diff index e888c93fb60..251537b48dd 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsDefault.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsDefault.errors.txt.diff @@ -1,48 +1,27 @@ --- old.isolatedDeclarationErrorsDefault.errors.txt +++ new.isolatedDeclarationErrorsDefault.errors.txt @@= skipped -0, +0 lines =@@ --a.ts(1,16): error TS9037: Default exports can't be inferred with --isolatedDeclarations. --b.ts(1,23): error TS9013: Expression type can't be inferred with --isolatedDeclarations. --c.ts(1,16): error TS9017: Only const arrays can be inferred with --isolatedDeclarations. --d.ts(1,24): error TS9013: Expression type can't be inferred with --isolatedDeclarations. --e.ts(1,24): error TS9013: Expression type can't be inferred with --isolatedDeclarations. -- -- --==== a.ts (1 errors) ==== -- export default 1 + 1; -- ~~~~~ --!!! error TS9037: Default exports can't be inferred with --isolatedDeclarations. --!!! related TS9036 a.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. -- -- --==== b.ts (1 errors) ==== -- export default { foo: 1 + 1 }; -- ~~~~~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9036 b.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. --!!! related TS9035 b.ts:1:23: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. -- + a.ts(1,16): error TS9037: Default exports can't be inferred with --isolatedDeclarations. + b.ts(1,23): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + c.ts(1,16): error TS9017: Only const arrays can be inferred with --isolatedDeclarations. ++c.ts(1,24): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + d.ts(1,24): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + e.ts(1,24): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + +@@= skipped -18, +19 lines =@@ + !!! related TS9036 b.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. + !!! related TS9035 b.ts:1:23: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + -==== c.ts (1 errors) ==== -- export default [{ foo: 1 + 1 }]; -- ~~~~~~~~~~~~~~~~ --!!! error TS9017: Only const arrays can be inferred with --isolatedDeclarations. --!!! related TS9036 c.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. -- --==== d.ts (1 errors) ==== -- export default [{ foo: 1 + 1 }] as const; -- ~~~~~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9036 d.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. --!!! related TS9035 d.ts:1:24: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. -- --==== e.ts (1 errors) ==== -- export default [{ foo: 1 + 1 }] as const; -- ~~~~~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9036 e.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. --!!! related TS9035 e.ts:1:24: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. -- --==== f.ts (0 errors) ==== -- const a = { foo: 1 }; -- export default a; -+ \ No newline at end of file ++==== c.ts (2 errors) ==== + export default [{ foo: 1 + 1 }]; + ~~~~~~~~~~~~~~~~ + !!! error TS9017: Only const arrays can be inferred with --isolatedDeclarations. + !!! related TS9036 c.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. ++ ~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9036 c.ts:1:1: Move the expression in default export to a variable and add a type annotation to it. ++!!! related TS9035 c.ts:1:24: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + ==== d.ts (1 errors) ==== + export default [{ foo: 1 + 1 }] as const; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsEnums.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsEnums.errors.txt new file mode 100644 index 00000000000..2d744d53cf4 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsEnums.errors.txt @@ -0,0 +1,70 @@ +isolatedDeclarationErrorsEnums.ts(12,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. +isolatedDeclarationErrorsEnums.ts(13,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. +isolatedDeclarationErrorsEnums.ts(29,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. +isolatedDeclarationErrorsEnums.ts(30,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. +isolatedDeclarationErrorsEnums.ts(31,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. +isolatedDeclarationErrorsEnums.ts(44,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. +isolatedDeclarationErrorsEnums.ts(45,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. + + +==== isolatedDeclarationErrorsEnums.ts (7 errors) ==== + declare function computed(x: number): number; + + enum E { + A = computed(0), + B = computed(1), + C = computed(2), + D = computed(3), + } + + + enum F { + A = E.A, + ~ +!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. + B = A, + ~ +!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. + } + + + enum Flag { + A = 1 >> 1, + B = 2 >> 2, + C = 3 >> 2, + AB = A | B, + ABC = Flag.AB | C, + AC = Flag["A"] | C, + } + + const EV = 1; + enum ExtFlags { + D = 4 >> 1, + E = EV, + ~ +!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. + ABCD = Flag.ABC | D, + ~~~~ +!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. + AC = Flag["A"] | D, + ~~ +!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. + } + + + enum Str { + A = "A", + B = "B", + AB = A + B + } + + + enum StrExt { + D = "D", + ABD = Str.AB + D, + ~~~ +!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. + AD = Str["A"] + D, + ~~ +!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsEnums.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsEnums.errors.txt.diff deleted file mode 100644 index 4202748898f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsEnums.errors.txt.diff +++ /dev/null @@ -1,74 +0,0 @@ ---- old.isolatedDeclarationErrorsEnums.errors.txt -+++ new.isolatedDeclarationErrorsEnums.errors.txt -@@= skipped -0, +0 lines =@@ --isolatedDeclarationErrorsEnums.ts(12,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. --isolatedDeclarationErrorsEnums.ts(13,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. --isolatedDeclarationErrorsEnums.ts(29,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. --isolatedDeclarationErrorsEnums.ts(30,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. --isolatedDeclarationErrorsEnums.ts(31,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. --isolatedDeclarationErrorsEnums.ts(44,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. --isolatedDeclarationErrorsEnums.ts(45,5): error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. -- -- --==== isolatedDeclarationErrorsEnums.ts (7 errors) ==== -- declare function computed(x: number): number; -- -- enum E { -- A = computed(0), -- B = computed(1), -- C = computed(2), -- D = computed(3), -- } -- -- -- enum F { -- A = E.A, -- ~ --!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. -- B = A, -- ~ --!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. -- } -- -- -- enum Flag { -- A = 1 >> 1, -- B = 2 >> 2, -- C = 3 >> 2, -- AB = A | B, -- ABC = Flag.AB | C, -- AC = Flag["A"] | C, -- } -- -- const EV = 1; -- enum ExtFlags { -- D = 4 >> 1, -- E = EV, -- ~ --!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. -- ABCD = Flag.ABC | D, -- ~~~~ --!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. -- AC = Flag["A"] | D, -- ~~ --!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. -- } -- -- -- enum Str { -- A = "A", -- B = "B", -- AB = A + B -- } -- -- -- enum StrExt { -- D = "D", -- ABD = Str.AB + D, -- ~~~ --!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. -- AD = Str["A"] + D, -- ~~ --!!! error TS9020: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations. -- } -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpandoFunctions.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpandoFunctions.errors.txt new file mode 100644 index 00000000000..4f7fe5c475b --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpandoFunctions.errors.txt @@ -0,0 +1,55 @@ +isolatedDeclarationErrorsExpandoFunctions.ts(1,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpandoFunctions.ts(3,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. +isolatedDeclarationErrorsExpandoFunctions.ts(3,13): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpandoFunctions.ts(4,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. +isolatedDeclarationErrorsExpandoFunctions.ts(4,12): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpandoFunctions.ts(5,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. +isolatedDeclarationErrorsExpandoFunctions.ts(5,12): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpandoFunctions.ts(6,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. +isolatedDeclarationErrorsExpandoFunctions.ts(6,14): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpandoFunctions.ts(7,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. +isolatedDeclarationErrorsExpandoFunctions.ts(7,16): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpandoFunctions.ts(8,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + + +==== isolatedDeclarationErrorsExpandoFunctions.ts (12 errors) ==== + export function foo() {} + ~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9031 isolatedDeclarationErrorsExpandoFunctions.ts:1:17: Add a return type to the function declaration. + + foo.apply = () => {} + ~~~~~~~~~ +!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:3:13: Add a return type to the function expression. + foo.call = ()=> {} + ~~~~~~~~ +!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + ~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:4:12: Add a return type to the function expression. + foo.bind = ()=> {} + ~~~~~~~~ +!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + ~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:5:12: Add a return type to the function expression. + foo.caller = ()=> {} + ~~~~~~~~~~ +!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + ~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:6:14: Add a return type to the function expression. + foo.toString = ()=> {} + ~~~~~~~~~~~~ +!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + ~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:7:16: Add a return type to the function expression. + foo.length = 10 + ~~~~~~~~~~ +!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + foo.length = 10 + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpandoFunctions.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpandoFunctions.errors.txt.diff index 7c94802e8f9..f1dbaf03ca6 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpandoFunctions.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpandoFunctions.errors.txt.diff @@ -1,39 +1,56 @@ --- old.isolatedDeclarationErrorsExpandoFunctions.errors.txt +++ new.isolatedDeclarationErrorsExpandoFunctions.errors.txt @@= skipped -0, +0 lines =@@ --isolatedDeclarationErrorsExpandoFunctions.ts(1,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpandoFunctions.ts(3,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. --isolatedDeclarationErrorsExpandoFunctions.ts(4,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. --isolatedDeclarationErrorsExpandoFunctions.ts(5,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. --isolatedDeclarationErrorsExpandoFunctions.ts(6,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. --isolatedDeclarationErrorsExpandoFunctions.ts(7,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. --isolatedDeclarationErrorsExpandoFunctions.ts(8,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- -- + isolatedDeclarationErrorsExpandoFunctions.ts(1,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpandoFunctions.ts(3,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++isolatedDeclarationErrorsExpandoFunctions.ts(3,13): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpandoFunctions.ts(4,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++isolatedDeclarationErrorsExpandoFunctions.ts(4,12): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpandoFunctions.ts(5,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++isolatedDeclarationErrorsExpandoFunctions.ts(5,12): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpandoFunctions.ts(6,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++isolatedDeclarationErrorsExpandoFunctions.ts(6,14): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpandoFunctions.ts(7,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++isolatedDeclarationErrorsExpandoFunctions.ts(7,16): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpandoFunctions.ts(8,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. + + -==== isolatedDeclarationErrorsExpandoFunctions.ts (7 errors) ==== -- export function foo() {} -- ~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9031 isolatedDeclarationErrorsExpandoFunctions.ts:1:17: Add a return type to the function declaration. -- -- foo.apply = () => {} -- ~~~~~~~~~ --!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- foo.call = ()=> {} -- ~~~~~~~~ --!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- foo.bind = ()=> {} -- ~~~~~~~~ --!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- foo.caller = ()=> {} -- ~~~~~~~~~~ --!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- foo.toString = ()=> {} -- ~~~~~~~~~~~~ --!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- foo.length = 10 -- ~~~~~~~~~~ --!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. -- foo.length = 10 -- -+ \ No newline at end of file ++==== isolatedDeclarationErrorsExpandoFunctions.ts (12 errors) ==== + export function foo() {} + ~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +@@= skipped -15, +20 lines =@@ + foo.apply = () => {} + ~~~~~~~~~ + !!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++ ~~~~~~~~ ++!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:3:13: Add a return type to the function expression. + foo.call = ()=> {} + ~~~~~~~~ + !!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++ ~~~~~~~ ++!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:4:12: Add a return type to the function expression. + foo.bind = ()=> {} + ~~~~~~~~ + !!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++ ~~~~~~~ ++!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:5:12: Add a return type to the function expression. + foo.caller = ()=> {} + ~~~~~~~~~~ + !!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++ ~~~~~~~ ++!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:6:14: Add a return type to the function expression. + foo.toString = ()=> {} + ~~~~~~~~~~~~ + !!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. ++ ~~~~~~~ ++!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++!!! related TS9030 isolatedDeclarationErrorsExpandoFunctions.ts:7:16: Add a return type to the function expression. + foo.length = 10 + ~~~~~~~~~~ + !!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.errors.txt new file mode 100644 index 00000000000..65a5f6b97e3 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.errors.txt @@ -0,0 +1,345 @@ +isolatedDeclarationErrorsExpressions.ts(3,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(4,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(5,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(8,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(9,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(10,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(13,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(17,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(18,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(19,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(20,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(23,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(24,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(25,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(28,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(29,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(30,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(33,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(49,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(50,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(51,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(53,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(55,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(59,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(60,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(61,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(64,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(65,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(66,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(69,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(78,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(79,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(80,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(83,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(84,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(85,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(88,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(91,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(92,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(93,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(102,5): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(103,5): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(104,5): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(109,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(110,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(111,37): error TS9039: Type containing private name 'numberParam' can't be used with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(114,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(115,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(116,37): error TS9039: Type containing private name 'bigIntParam' can't be used with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(119,36): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(127,16): error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. +isolatedDeclarationErrorsExpressions.ts(128,19): error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. + + +==== isolatedDeclarationErrorsExpressions.ts (52 errors) ==== + declare function time(): bigint + export const numberConst = 1; + export const numberConstBad1 = 1 + 1; + ~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:3:14: Add a type annotation to the variable numberConstBad1. + export const numberConstBad2 = Math.random(); + ~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:4:14: Add a type annotation to the variable numberConstBad2. + export const numberConstBad3 = numberConst; + ~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:5:14: Add a type annotation to the variable numberConstBad3. + + export const bigIntConst = 1n; + export const bigIntConstBad1 = 1n + 1n; + ~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:8:14: Add a type annotation to the variable bigIntConstBad1. + export const bigIntConstBad2 = time(); + ~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:9:14: Add a type annotation to the variable bigIntConstBad2. + export const bigIntConstBad3 = bigIntConst; + ~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:10:14: Add a type annotation to the variable bigIntConstBad3. + + export const stringConst = "s"; + export const stringConstBad = "s" + "s"; + ~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:13:14: Add a type annotation to the variable stringConstBad. + + // These are just strings + export const templateConstOk1 = `s`; + export const templateConstNotOk2 = `s${1n}`; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:17:14: Add a type annotation to the variable templateConstNotOk2. + export const templateConstNotOk3 = `s${1} - ${"S"}`; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:18:14: Add a type annotation to the variable templateConstNotOk3. + export const templateConstNotOk4 = `s${1} - ${"S"} - ${false}`; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:19:14: Add a type annotation to the variable templateConstNotOk4. + export const templateConstNotOk5 = `s${1 + 1} - ${"S"} - ${!false}`; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:20:14: Add a type annotation to the variable templateConstNotOk5. + + export let numberLet = 1; + export let numberLetBad1 = 1 + 1; + ~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:23:12: Add a type annotation to the variable numberLetBad1. + export let numberLetBad2 = Math.random(); + ~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:24:12: Add a type annotation to the variable numberLetBad2. + export let numberLetBad3 = numberLet; + ~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:25:12: Add a type annotation to the variable numberLetBad3. + + export let bigIntLet = 1n; + export let bigIntLetBad1 = 1n + 1n; + ~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:28:12: Add a type annotation to the variable bigIntLetBad1. + export let bigIntLetBad2 = time(); + ~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:29:12: Add a type annotation to the variable bigIntLetBad2. + export let bigIntLetBad3 = bigIntLet; + ~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:30:12: Add a type annotation to the variable bigIntLetBad3. + + export let stringLet = "s"; + export let stringLetBad = "s" + "s"; + ~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:33:12: Add a type annotation to the variable stringLetBad. + + export let templateLetOk1 = `s`; + export let templateLetOk2 = `s${1} - ${"S"}`; + export let templateLetOk3 = `s${1} - ${"S"} - ${false}`; + export let templateLetOk4 = `s${1 + 1} - ${"S"} - ${!false}`; + + // As const + + export let numberLetAsConst = 1 as const; + + export let bigIntLetAsConst = 1n as const; + + export let stringLetAsConst = "s" as const; + + export let templateLetOk1AsConst = `s` as const; + export let templateLetOk2AsConst = `s${1} - ${"S"}` as const; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:49:12: Add a type annotation to the variable templateLetOk2AsConst. + export let templateLetOk3AsConst = `s${1} - ${"S"} - ${false}` as const; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:50:12: Add a type annotation to the variable templateLetOk3AsConst. + export let templateLetOk4AsConst = `s${1 + 1} - ${"S"} - ${!false}` as const; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:51:12: Add a type annotation to the variable templateLetOk4AsConst. + + export let arr = [1, 2, 3]; + ~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:53:12: Add a type annotation to the variable arr. + export let arrConst = [1, 2, 3] as const; + export let arrWithSpread = [1, 2, 3, ...arr] as const; + ~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:55:12: Add a type annotation to the variable arrWithSpread. + + export class Exported { + public numberLet = 1; + public numberLetBad1 = 1 + 1; + ~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:59:12: Add a type annotation to the property numberLetBad1. + public numberLetBad2 = Math.random(); + ~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:60:12: Add a type annotation to the property numberLetBad2. + public numberLetBad3 = numberLet; + ~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:61:12: Add a type annotation to the property numberLetBad3. + + public bigIntLet = 1n; + public bigIntLetBad1 = 1n + 1n; + ~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:64:12: Add a type annotation to the property bigIntLetBad1. + public bigIntLetBad2 = time(); + ~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:65:12: Add a type annotation to the property bigIntLetBad2. + public bigIntLetBad3 = bigIntLet; + ~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:66:12: Add a type annotation to the property bigIntLetBad3. + + public stringLet = "s"; + public stringLetBad = "s" + "s"; + ~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:69:12: Add a type annotation to the property stringLetBad. + + public templateLetOk1 = `s`; + public templateLetOk2 = `s${1} - ${"S"}`; + public templateLetOk3 = `s${1} - ${"S"} - ${false}`; + public templateLetOk4 = `s${1 + 1} - ${"S"} - ${!false}`; + + + readonly numberConst = 1; + readonly numberConstBad1 = 1 + 1; + ~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:78:14: Add a type annotation to the property numberConstBad1. + readonly numberConstBad2 = Math.random(); + ~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:79:14: Add a type annotation to the property numberConstBad2. + readonly numberConstBad3 = numberConst; + ~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:80:14: Add a type annotation to the property numberConstBad3. + + readonly bigIntConst = 1n; + readonly bigIntConstBad1 = 1n + 1n; + ~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:83:14: Add a type annotation to the property bigIntConstBad1. + readonly bigIntConstBad2 = time(); + ~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:84:14: Add a type annotation to the property bigIntConstBad2. + readonly bigIntConstBad3 = bigIntConst; + ~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:85:14: Add a type annotation to the property bigIntConstBad3. + + readonly stringConst = "s"; + readonly stringConstBad = "s" + "s"; + ~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:88:14: Add a type annotation to the property stringConstBad. + + readonly templateConstOk1 = `s`; + readonly templateConstNotOk2 = `s${1} - ${"S"}`; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:91:14: Add a type annotation to the property templateConstNotOk2. + readonly templateConstNotOk3 = `s${1} - ${"S"} - ${false}`; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:92:14: Add a type annotation to the property templateConstNotOk3. + readonly templateConstNotOk4 = `s${1 + 1} - ${"S"} - ${!false}`; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:93:14: Add a type annotation to the property templateConstNotOk4. + + numberLetAsConst = 1 as const; + + bigIntLetAsConst = 1n as const; + + stringLetAsConst = "s" as const; + + templateLetOk1AsConst = `s` as const; + templateLetOk2AsConst = `s${1} - ${"S"}` as const; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:102:5: Add a type annotation to the property templateLetOk2AsConst. + templateLetOk3AsConst = `s${1} - ${"S"} - ${false}` as const; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:103:5: Add a type annotation to the property templateLetOk3AsConst. + templateLetOk4AsConst = `s${1 + 1} - ${"S"} - ${!false}` as const; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:104:5: Add a type annotation to the property templateLetOk4AsConst. + + } + + export function numberParam(p = 1): void { } + export function numberParamBad1(p = 1 + 1): void { } + ~~~~~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:109:33: Add a type annotation to the parameter p. + export function numberParamBad2(p = Math.random()): void { } + ~~~~~~~~~~~~~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:110:33: Add a type annotation to the parameter p. + export function numberParamBad3(p = numberParam): void { } + ~~~~~~~~~~~ +!!! error TS9039: Type containing private name 'numberParam' can't be used with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:111:33: Add a type annotation to the parameter p. + + export function bigIntParam(p = 1n): void { } + export function bigIntParamBad1(p = 1n + 1n): void { } + ~~~~~~~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:114:33: Add a type annotation to the parameter p. + export function bigIntParamBad2(p = time()): void { } + ~~~~~~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:115:33: Add a type annotation to the parameter p. + export function bigIntParamBad3(p = bigIntParam): void { } + ~~~~~~~~~~~ +!!! error TS9039: Type containing private name 'bigIntParam' can't be used with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:116:33: Add a type annotation to the parameter p. + + export function stringParam(p = "s"): void { } + export function stringParamBad(p = "s" + "s"): void { } + ~~~~~~~~~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:119:32: Add a type annotation to the parameter p. + + export function templateParamOk1(p = `s`): void { } + export function templateParamOk2(p = `s${1} - ${"S"}`): void { } + export function templateParamOk3(p = `s${1} - ${"S"} - ${false}`): void { } + export function templateParamOk4(p = `s${1 + 1} - ${"S"} - ${!false}`): void { } + + + export const { a } = { a: 1 }; + ~ +!!! error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. + export const [, , b = 1]: [number, number, number | undefined] = [0, 1, 2]; + ~ +!!! error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. + + export function foo([, , b]: [ + number, + number, + number + ] = [0, 1, 2]): void { + + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.errors.txt.diff index e8c1e852df2..da8ac97dc63 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.errors.txt.diff @@ -1,349 +1,62 @@ --- old.isolatedDeclarationErrorsExpressions.errors.txt +++ new.isolatedDeclarationErrorsExpressions.errors.txt -@@= skipped -0, +0 lines =@@ --isolatedDeclarationErrorsExpressions.ts(3,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(4,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(5,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(8,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(9,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(10,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(13,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(17,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(18,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(19,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(20,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(23,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(24,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(25,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(28,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(29,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(30,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(33,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(49,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(50,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(51,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +@@= skipped -18, +18 lines =@@ + isolatedDeclarationErrorsExpressions.ts(49,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(50,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(51,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. -isolatedDeclarationErrorsExpressions.ts(53,18): error TS9017: Only const arrays can be inferred with --isolatedDeclarations. -isolatedDeclarationErrorsExpressions.ts(55,38): error TS9018: Arrays with spread elements can't inferred with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(59,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(60,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(61,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(64,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(65,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(66,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(69,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(78,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(79,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(80,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(83,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(84,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(85,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(88,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(91,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(92,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(93,14): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(102,5): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(103,5): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(104,5): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(109,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(110,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsExpressions.ts(53,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsExpressions.ts(55,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(59,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(60,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(61,12): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. +@@= skipped -24, +24 lines =@@ + isolatedDeclarationErrorsExpressions.ts(104,5): error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(109,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(110,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. -isolatedDeclarationErrorsExpressions.ts(111,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(114,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(115,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsExpressions.ts(111,37): error TS9039: Type containing private name 'numberParam' can't be used with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(114,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(115,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. -isolatedDeclarationErrorsExpressions.ts(116,37): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(119,36): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(127,16): error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. --isolatedDeclarationErrorsExpressions.ts(128,19): error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. -- -- --==== isolatedDeclarationErrorsExpressions.ts (52 errors) ==== -- declare function time(): bigint -- export const numberConst = 1; -- export const numberConstBad1 = 1 + 1; -- ~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:3:14: Add a type annotation to the variable numberConstBad1. -- export const numberConstBad2 = Math.random(); -- ~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:4:14: Add a type annotation to the variable numberConstBad2. -- export const numberConstBad3 = numberConst; -- ~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:5:14: Add a type annotation to the variable numberConstBad3. -- -- export const bigIntConst = 1n; -- export const bigIntConstBad1 = 1n + 1n; -- ~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:8:14: Add a type annotation to the variable bigIntConstBad1. -- export const bigIntConstBad2 = time(); -- ~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:9:14: Add a type annotation to the variable bigIntConstBad2. -- export const bigIntConstBad3 = bigIntConst; -- ~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:10:14: Add a type annotation to the variable bigIntConstBad3. -- -- export const stringConst = "s"; -- export const stringConstBad = "s" + "s"; -- ~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:13:14: Add a type annotation to the variable stringConstBad. -- -- // These are just strings -- export const templateConstOk1 = `s`; -- export const templateConstNotOk2 = `s${1n}`; -- ~~~~~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:17:14: Add a type annotation to the variable templateConstNotOk2. -- export const templateConstNotOk3 = `s${1} - ${"S"}`; -- ~~~~~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:18:14: Add a type annotation to the variable templateConstNotOk3. -- export const templateConstNotOk4 = `s${1} - ${"S"} - ${false}`; -- ~~~~~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:19:14: Add a type annotation to the variable templateConstNotOk4. -- export const templateConstNotOk5 = `s${1 + 1} - ${"S"} - ${!false}`; -- ~~~~~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:20:14: Add a type annotation to the variable templateConstNotOk5. -- -- export let numberLet = 1; -- export let numberLetBad1 = 1 + 1; -- ~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:23:12: Add a type annotation to the variable numberLetBad1. -- export let numberLetBad2 = Math.random(); -- ~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:24:12: Add a type annotation to the variable numberLetBad2. -- export let numberLetBad3 = numberLet; -- ~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:25:12: Add a type annotation to the variable numberLetBad3. -- -- export let bigIntLet = 1n; -- export let bigIntLetBad1 = 1n + 1n; -- ~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:28:12: Add a type annotation to the variable bigIntLetBad1. -- export let bigIntLetBad2 = time(); -- ~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:29:12: Add a type annotation to the variable bigIntLetBad2. -- export let bigIntLetBad3 = bigIntLet; -- ~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:30:12: Add a type annotation to the variable bigIntLetBad3. -- -- export let stringLet = "s"; -- export let stringLetBad = "s" + "s"; -- ~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:33:12: Add a type annotation to the variable stringLetBad. -- -- export let templateLetOk1 = `s`; -- export let templateLetOk2 = `s${1} - ${"S"}`; -- export let templateLetOk3 = `s${1} - ${"S"} - ${false}`; -- export let templateLetOk4 = `s${1 + 1} - ${"S"} - ${!false}`; -- -- // As const -- -- export let numberLetAsConst = 1 as const; -- -- export let bigIntLetAsConst = 1n as const; -- -- export let stringLetAsConst = "s" as const; -- -- export let templateLetOk1AsConst = `s` as const; -- export let templateLetOk2AsConst = `s${1} - ${"S"}` as const; -- ~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:49:12: Add a type annotation to the variable templateLetOk2AsConst. -- export let templateLetOk3AsConst = `s${1} - ${"S"} - ${false}` as const; -- ~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:50:12: Add a type annotation to the variable templateLetOk3AsConst. -- export let templateLetOk4AsConst = `s${1 + 1} - ${"S"} - ${!false}` as const; -- ~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:51:12: Add a type annotation to the variable templateLetOk4AsConst. -- -- export let arr = [1, 2, 3]; ++isolatedDeclarationErrorsExpressions.ts(116,37): error TS9039: Type containing private name 'bigIntParam' can't be used with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(119,36): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(127,16): error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. + isolatedDeclarationErrorsExpressions.ts(128,19): error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. +@@= skipped -126, +126 lines =@@ + !!! related TS9027 isolatedDeclarationErrorsExpressions.ts:51:12: Add a type annotation to the variable templateLetOk4AsConst. + + export let arr = [1, 2, 3]; - ~~~~~~~~~ -!!! error TS9017: Only const arrays can be inferred with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:53:12: Add a type annotation to the variable arr. -- export let arrConst = [1, 2, 3] as const; -- export let arrWithSpread = [1, 2, 3, ...arr] as const; ++ ~~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 isolatedDeclarationErrorsExpressions.ts:53:12: Add a type annotation to the variable arr. + export let arrConst = [1, 2, 3] as const; + export let arrWithSpread = [1, 2, 3, ...arr] as const; - ~~~~~~ -!!! error TS9018: Arrays with spread elements can't inferred with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsExpressions.ts:55:12: Add a type annotation to the variable arrWithSpread. -- -- export class Exported { -- public numberLet = 1; -- public numberLetBad1 = 1 + 1; -- ~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:59:12: Add a type annotation to the property numberLetBad1. -- public numberLetBad2 = Math.random(); -- ~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:60:12: Add a type annotation to the property numberLetBad2. -- public numberLetBad3 = numberLet; -- ~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:61:12: Add a type annotation to the property numberLetBad3. -- -- public bigIntLet = 1n; -- public bigIntLetBad1 = 1n + 1n; -- ~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:64:12: Add a type annotation to the property bigIntLetBad1. -- public bigIntLetBad2 = time(); -- ~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:65:12: Add a type annotation to the property bigIntLetBad2. -- public bigIntLetBad3 = bigIntLet; -- ~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:66:12: Add a type annotation to the property bigIntLetBad3. -- -- public stringLet = "s"; -- public stringLetBad = "s" + "s"; -- ~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:69:12: Add a type annotation to the property stringLetBad. -- -- public templateLetOk1 = `s`; -- public templateLetOk2 = `s${1} - ${"S"}`; -- public templateLetOk3 = `s${1} - ${"S"} - ${false}`; -- public templateLetOk4 = `s${1 + 1} - ${"S"} - ${!false}`; -- -- -- readonly numberConst = 1; -- readonly numberConstBad1 = 1 + 1; -- ~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:78:14: Add a type annotation to the property numberConstBad1. -- readonly numberConstBad2 = Math.random(); -- ~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:79:14: Add a type annotation to the property numberConstBad2. -- readonly numberConstBad3 = numberConst; -- ~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:80:14: Add a type annotation to the property numberConstBad3. -- -- readonly bigIntConst = 1n; -- readonly bigIntConstBad1 = 1n + 1n; -- ~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:83:14: Add a type annotation to the property bigIntConstBad1. -- readonly bigIntConstBad2 = time(); -- ~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:84:14: Add a type annotation to the property bigIntConstBad2. -- readonly bigIntConstBad3 = bigIntConst; -- ~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:85:14: Add a type annotation to the property bigIntConstBad3. -- -- readonly stringConst = "s"; -- readonly stringConstBad = "s" + "s"; -- ~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:88:14: Add a type annotation to the property stringConstBad. -- -- readonly templateConstOk1 = `s`; -- readonly templateConstNotOk2 = `s${1} - ${"S"}`; -- ~~~~~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:91:14: Add a type annotation to the property templateConstNotOk2. -- readonly templateConstNotOk3 = `s${1} - ${"S"} - ${false}`; -- ~~~~~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:92:14: Add a type annotation to the property templateConstNotOk3. -- readonly templateConstNotOk4 = `s${1 + 1} - ${"S"} - ${!false}`; -- ~~~~~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:93:14: Add a type annotation to the property templateConstNotOk4. -- -- numberLetAsConst = 1 as const; -- -- bigIntLetAsConst = 1n as const; -- -- stringLetAsConst = "s" as const; -- -- templateLetOk1AsConst = `s` as const; -- templateLetOk2AsConst = `s${1} - ${"S"}` as const; -- ~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:102:5: Add a type annotation to the property templateLetOk2AsConst. -- templateLetOk3AsConst = `s${1} - ${"S"} - ${false}` as const; -- ~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:103:5: Add a type annotation to the property templateLetOk3AsConst. -- templateLetOk4AsConst = `s${1 + 1} - ${"S"} - ${!false}` as const; -- ~~~~~~~~~~~~~~~~~~~~~ --!!! error TS9012: Property must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9029 isolatedDeclarationErrorsExpressions.ts:104:5: Add a type annotation to the property templateLetOk4AsConst. -- -- } -- -- export function numberParam(p = 1): void { } -- export function numberParamBad1(p = 1 + 1): void { } -- ~~~~~ ++ ~~~~~~~~~~~~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + !!! related TS9027 isolatedDeclarationErrorsExpressions.ts:55:12: Add a type annotation to the variable arrWithSpread. + + export class Exported { +@@= skipped -131, +131 lines =@@ + !!! related TS9028 isolatedDeclarationErrorsExpressions.ts:110:33: Add a type annotation to the parameter p. + export function numberParamBad3(p = numberParam): void { } + ~~~~~~~~~~~ -!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:109:33: Add a type annotation to the parameter p. -- export function numberParamBad2(p = Math.random()): void { } -- ~~~~~~~~~~~~~ ++!!! error TS9039: Type containing private name 'numberParam' can't be used with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsExpressions.ts:111:33: Add a type annotation to the parameter p. + + export function bigIntParam(p = 1n): void { } +@@= skipped -14, +14 lines =@@ + !!! related TS9028 isolatedDeclarationErrorsExpressions.ts:115:33: Add a type annotation to the parameter p. + export function bigIntParamBad3(p = bigIntParam): void { } + ~~~~~~~~~~~ -!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:110:33: Add a type annotation to the parameter p. -- export function numberParamBad3(p = numberParam): void { } -- ~~~~~~~~~~~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:111:33: Add a type annotation to the parameter p. -- -- export function bigIntParam(p = 1n): void { } -- export function bigIntParamBad1(p = 1n + 1n): void { } -- ~~~~~~~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:114:33: Add a type annotation to the parameter p. -- export function bigIntParamBad2(p = time()): void { } -- ~~~~~~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:115:33: Add a type annotation to the parameter p. -- export function bigIntParamBad3(p = bigIntParam): void { } -- ~~~~~~~~~~~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:116:33: Add a type annotation to the parameter p. -- -- export function stringParam(p = "s"): void { } -- export function stringParamBad(p = "s" + "s"): void { } -- ~~~~~~~~~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsExpressions.ts:119:32: Add a type annotation to the parameter p. -- -- export function templateParamOk1(p = `s`): void { } -- export function templateParamOk2(p = `s${1} - ${"S"}`): void { } -- export function templateParamOk3(p = `s${1} - ${"S"} - ${false}`): void { } -- export function templateParamOk4(p = `s${1 + 1} - ${"S"} - ${!false}`): void { } -- -- -- export const { a } = { a: 1 }; -- ~ --!!! error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. -- export const [, , b = 1]: [number, number, number | undefined] = [0, 1, 2]; -- ~ --!!! error TS9019: Binding elements can't be exported directly with --isolatedDeclarations. -- -- export function foo([, , b]: [ -- number, -- number, -- number -- ] = [0, 1, 2]): void { -- -- } -+ \ No newline at end of file ++!!! error TS9039: Type containing private name 'bigIntParam' can't be used with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsExpressions.ts:116:33: Add a type annotation to the parameter p. + + export function stringParam(p = "s"): void { } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.js b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.js index d810e8e0f2e..f5b1282e154 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.js +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.js @@ -270,7 +270,7 @@ export declare let templateLetOk4: string; export declare let numberLetAsConst: 1; export declare let bigIntLetAsConst: 1n; export declare let stringLetAsConst: "s"; -export declare let templateLetOk1AsConst: "s"; +export declare let templateLetOk1AsConst: `s`; export declare let templateLetOk2AsConst: "s1 - S"; export declare let templateLetOk3AsConst: "s1 - S - false"; export declare let templateLetOk4AsConst: `s${number} - S - true`; @@ -309,7 +309,7 @@ export declare class Exported { numberLetAsConst: 1; bigIntLetAsConst: 1n; stringLetAsConst: "s"; - templateLetOk1AsConst: "s"; + templateLetOk1AsConst: `s`; templateLetOk2AsConst: "s1 - S"; templateLetOk3AsConst: "s1 - S - false"; templateLetOk4AsConst: `s${number} - S - true`; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.js.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.js.diff index e802d469fd6..32c9d7c5d4e 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.js.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsExpressions.js.diff @@ -39,7 +39,7 @@ +export declare let numberLetAsConst: 1; +export declare let bigIntLetAsConst: 1n; +export declare let stringLetAsConst: "s"; -+export declare let templateLetOk1AsConst: "s"; ++export declare let templateLetOk1AsConst: `s`; +export declare let templateLetOk2AsConst: "s1 - S"; +export declare let templateLetOk3AsConst: "s1 - S - false"; +export declare let templateLetOk4AsConst: `s${number} - S - true`; @@ -78,7 +78,7 @@ + numberLetAsConst: 1; + bigIntLetAsConst: 1n; + stringLetAsConst: "s"; -+ templateLetOk1AsConst: "s"; ++ templateLetOk1AsConst: `s`; + templateLetOk2AsConst: "s1 - S"; + templateLetOk3AsConst: "s1 - S - false"; + templateLetOk4AsConst: `s${number} - S - true`; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsFunctionDeclarations.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsFunctionDeclarations.errors.txt new file mode 100644 index 00000000000..cbec933ded0 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsFunctionDeclarations.errors.txt @@ -0,0 +1,40 @@ +isolatedDeclarationErrorsFunctionDeclarations.ts(1,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsFunctionDeclarations.ts(3,35): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsFunctionDeclarations.ts(7,49): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsFunctionDeclarations.ts(7,66): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsFunctionDeclarations.ts(7,81): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsFunctionDeclarations.ts(9,55): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + + +==== isolatedDeclarationErrorsFunctionDeclarations.ts (6 errors) ==== + export function noReturn() {} + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9031 isolatedDeclarationErrorsFunctionDeclarations.ts:1:17: Add a return type to the function declaration. + + export function noParamAnnotation(p): void {} + ~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:3:35: Add a type annotation to the parameter p. + + export function noParamAnnotationDefault(p = 1): void {} + + export function noParamAnnotationBadDefault(p = 1 + 1, p2 = { a: 1 + 1 }, p3 = [1 + 1] as const): void {} + ~~~~~ +!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:7:45: Add a type annotation to the parameter p. + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:7:56: Add a type annotation to the parameter p2. +!!! related TS9035 isolatedDeclarationErrorsFunctionDeclarations.ts:7:66: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:7:75: Add a type annotation to the parameter p3. +!!! related TS9035 isolatedDeclarationErrorsFunctionDeclarations.ts:7:81: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export function noParamAnnotationBadDefault2(p = { a: 1 + 1 }): void {} + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:9:46: Add a type annotation to the parameter p. +!!! related TS9035 isolatedDeclarationErrorsFunctionDeclarations.ts:9:55: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsFunctionDeclarations.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsFunctionDeclarations.errors.txt.diff deleted file mode 100644 index 1c8f9d31a71..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsFunctionDeclarations.errors.txt.diff +++ /dev/null @@ -1,44 +0,0 @@ ---- old.isolatedDeclarationErrorsFunctionDeclarations.errors.txt -+++ new.isolatedDeclarationErrorsFunctionDeclarations.errors.txt -@@= skipped -0, +0 lines =@@ --isolatedDeclarationErrorsFunctionDeclarations.ts(1,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsFunctionDeclarations.ts(3,35): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsFunctionDeclarations.ts(7,49): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsFunctionDeclarations.ts(7,66): error TS9013: Expression type can't be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsFunctionDeclarations.ts(7,81): error TS9013: Expression type can't be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsFunctionDeclarations.ts(9,55): error TS9013: Expression type can't be inferred with --isolatedDeclarations. -- -- --==== isolatedDeclarationErrorsFunctionDeclarations.ts (6 errors) ==== -- export function noReturn() {} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9031 isolatedDeclarationErrorsFunctionDeclarations.ts:1:17: Add a return type to the function declaration. -- -- export function noParamAnnotation(p): void {} -- ~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:3:35: Add a type annotation to the parameter p. -- -- export function noParamAnnotationDefault(p = 1): void {} -- -- export function noParamAnnotationBadDefault(p = 1 + 1, p2 = { a: 1 + 1 }, p3 = [1 + 1] as const): void {} -- ~~~~~ --!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:7:45: Add a type annotation to the parameter p. -- ~~~~~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:7:56: Add a type annotation to the parameter p2. --!!! related TS9035 isolatedDeclarationErrorsFunctionDeclarations.ts:7:66: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. -- ~~~~~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:7:75: Add a type annotation to the parameter p3. --!!! related TS9035 isolatedDeclarationErrorsFunctionDeclarations.ts:7:81: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. -- -- export function noParamAnnotationBadDefault2(p = { a: 1 + 1 }): void {} -- ~~~~~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsFunctionDeclarations.ts:9:46: Add a type annotation to the parameter p. --!!! related TS9035 isolatedDeclarationErrorsFunctionDeclarations.ts:9:55: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. -- -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.errors.txt index a2396a36066..4136c28c66d 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.errors.txt @@ -1,8 +1,23 @@ +isolatedDeclarationErrorsObjects.ts(7,8): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(12,12): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(14,8): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(16,12): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(21,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(24,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(25,8): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(28,10): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(29,9): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(32,9): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. isolatedDeclarationErrorsObjects.ts(40,9): error TS7032: Property 'singleSetterBad' implicitly has type 'any', because its set accessor lacks a parameter type annotation. isolatedDeclarationErrorsObjects.ts(40,25): error TS7006: Parameter 'value' implicitly has an 'any' type. +isolatedDeclarationErrorsObjects.ts(40,25): error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(62,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(73,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(77,5): error TS9016: Objects that contain shorthand properties can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsObjects.ts(83,13): error TS9013: Expression type can't be inferred with --isolatedDeclarations. -==== isolatedDeclarationErrorsObjects.ts (2 errors) ==== +==== isolatedDeclarationErrorsObjects.ts (17 errors) ==== export let o = { a: 1, b: "" @@ -10,32 +25,80 @@ isolatedDeclarationErrorsObjects.ts(40,25): error TS7006: Parameter 'value' impl export let oBad = { a: Math.random(), + ~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:6:12: Add a type annotation to the variable oBad. +!!! related TS9035 isolatedDeclarationErrorsObjects.ts:7:8: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. } export const V = 1; export let oBad2 = { a: { b: Math.random(), + ~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:10:12: Add a type annotation to the variable oBad2. +!!! related TS9035 isolatedDeclarationErrorsObjects.ts:12:12: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. }, c: { + ~ d: 1, + ~~~~~~~~~~~~~ e: V, + ~~~~~~~~~~~~~ + ~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:10:12: Add a type annotation to the variable oBad2. +!!! related TS9035 isolatedDeclarationErrorsObjects.ts:16:12: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. } + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:10:12: Add a type annotation to the variable oBad2. +!!! related TS9035 isolatedDeclarationErrorsObjects.ts:14:8: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. } export let oWithMethods = { method() { }, + ~~~~~~ +!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:20:12: Add a type annotation to the variable oWithMethods. +!!! related TS9034 isolatedDeclarationErrorsObjects.ts:21:5: Add a return type to the method okMethod(): void { }, a: 1, bad() { }, + ~~~ +!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:20:12: Add a type annotation to the variable oWithMethods. +!!! related TS9034 isolatedDeclarationErrorsObjects.ts:24:5: Add a return type to the method e: V, + ~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:20:12: Add a type annotation to the variable oWithMethods. +!!! related TS9035 isolatedDeclarationErrorsObjects.ts:25:8: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. } export let oWithMethodsNested = { foo: { + ~ method() { }, + ~~~~~~~~~~~~~~~~~~~~~ + ~~~~~~ +!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:27:12: Add a type annotation to the variable oWithMethodsNested. +!!! related TS9034 isolatedDeclarationErrorsObjects.ts:29:9: Add a return type to the method a: 1, + ~~~~~~~~~~~~~ okMethod(): void { }, + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bad() { } + ~~~~~~~~~~~~~~~~~ + ~~~ +!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:27:12: Add a type annotation to the variable oWithMethodsNested. +!!! related TS9034 isolatedDeclarationErrorsObjects.ts:32:9: Add a return type to the method } + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:27:12: Add a type annotation to the variable oWithMethodsNested. +!!! related TS9035 isolatedDeclarationErrorsObjects.ts:28:10: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. } @@ -47,6 +110,9 @@ isolatedDeclarationErrorsObjects.ts(40,25): error TS7006: Parameter 'value' impl !!! error TS7032: Property 'singleSetterBad' implicitly has type 'any', because its set accessor lacks a parameter type annotation. ~~~~~ !!! error TS7006: Parameter 'value' implicitly has an 'any' type. + ~~~~~ +!!! error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9033 isolatedDeclarationErrorsObjects.ts:40:9: Add a type to parameter of the set accessor declaration. get getSetBad() { return 0 }, set getSetBad(value) { }, @@ -69,6 +135,9 @@ isolatedDeclarationErrorsObjects.ts(40,25): error TS7006: Parameter 'value' impl V = 10, } export const oWithComputedProperties = { + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:62:14: Add a type annotation to the variable oWithComputedProperties. [1]: 1, [1 + 3]: 1, [prop(2)]: 2, @@ -80,18 +149,30 @@ isolatedDeclarationErrorsObjects.ts(40,25): error TS7006: Parameter 'value' impl const part = { a: 1 }; export const oWithSpread = { + ~~~~~~~~~~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:73:14: Add a type annotation to the variable oWithSpread. b: 1, ...part, c: 1, part, + ~~~~ +!!! error TS9016: Objects that contain shorthand properties can't be inferred with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:73:14: Add a type annotation to the variable oWithSpread. } export const oWithSpread2 = { b: 1, nested: { + ~ ...part, + ~~~~~~~~~~~~~~~~ }, + ~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationErrorsObjects.ts:81:14: Add a type annotation to the variable oWithSpread2. +!!! related TS9035 isolatedDeclarationErrorsObjects.ts:83:13: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. c: 1, } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.errors.txt.diff index 758b55d2294..21d8bfee4b0 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.errors.txt.diff @@ -1,110 +1,96 @@ --- old.isolatedDeclarationErrorsObjects.errors.txt +++ new.isolatedDeclarationErrorsObjects.errors.txt @@= skipped -0, +0 lines =@@ --isolatedDeclarationErrorsObjects.ts(7,8): error TS9013: Expression type can't be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsObjects.ts(12,12): error TS9013: Expression type can't be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsObjects.ts(16,12): error TS9013: Expression type can't be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsObjects.ts(21,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsObjects.ts(24,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsObjects.ts(25,8): error TS9013: Expression type can't be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsObjects.ts(29,9): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsObjects.ts(32,9): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(7,8): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(12,12): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsObjects.ts(14,8): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(16,12): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(21,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(24,5): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(25,8): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsObjects.ts(28,10): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(29,9): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(32,9): error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. isolatedDeclarationErrorsObjects.ts(40,9): error TS7032: Property 'singleSetterBad' implicitly has type 'any', because its set accessor lacks a parameter type annotation. isolatedDeclarationErrorsObjects.ts(40,25): error TS7006: Parameter 'value' implicitly has an 'any' type. --isolatedDeclarationErrorsObjects.ts(40,25): error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(40,25): error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. -isolatedDeclarationErrorsObjects.ts(64,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. -isolatedDeclarationErrorsObjects.ts(65,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. -isolatedDeclarationErrorsObjects.ts(66,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. -isolatedDeclarationErrorsObjects.ts(67,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. -isolatedDeclarationErrorsObjects.ts(68,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. -isolatedDeclarationErrorsObjects.ts(75,5): error TS9015: Objects that contain spread assignments can't be inferred with --isolatedDeclarations. --isolatedDeclarationErrorsObjects.ts(77,5): error TS9016: Objects that contain shorthand properties can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsObjects.ts(62,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsObjects.ts(73,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + isolatedDeclarationErrorsObjects.ts(77,5): error TS9016: Objects that contain shorthand properties can't be inferred with --isolatedDeclarations. -isolatedDeclarationErrorsObjects.ts(84,9): error TS9015: Objects that contain spread assignments can't be inferred with --isolatedDeclarations. - - -==== isolatedDeclarationErrorsObjects.ts (19 errors) ==== ++isolatedDeclarationErrorsObjects.ts(83,13): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + + -+==== isolatedDeclarationErrorsObjects.ts (2 errors) ==== ++==== isolatedDeclarationErrorsObjects.ts (17 errors) ==== export let o = { a: 1, b: "" -@@= skipped -26, +9 lines =@@ - - export let oBad = { - a: Math.random(), -- ~~~~~~~~~~~~~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:6:12: Add a type annotation to the variable oBad. --!!! related TS9035 isolatedDeclarationErrorsObjects.ts:7:8: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. - } - export const V = 1; - export let oBad2 = { - a: { - b: Math.random(), -- ~~~~~~~~~~~~~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:10:12: Add a type annotation to the variable oBad2. --!!! related TS9035 isolatedDeclarationErrorsObjects.ts:12:12: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. +@@= skipped -41, +39 lines =@@ + !!! related TS9035 isolatedDeclarationErrorsObjects.ts:12:12: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. }, c: { ++ ~ d: 1, ++ ~~~~~~~~~~~~~ e: V, -- ~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:10:12: Add a type annotation to the variable oBad2. --!!! related TS9035 isolatedDeclarationErrorsObjects.ts:16:12: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. ++ ~~~~~~~~~~~~~ + ~ + !!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. + !!! related TS9027 isolatedDeclarationErrorsObjects.ts:10:12: Add a type annotation to the variable oBad2. + !!! related TS9035 isolatedDeclarationErrorsObjects.ts:16:12: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. } ++ ~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9027 isolatedDeclarationErrorsObjects.ts:10:12: Add a type annotation to the variable oBad2. ++!!! related TS9035 isolatedDeclarationErrorsObjects.ts:14:8: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. } export let oWithMethods = { - method() { }, -- ~~~~~~ --!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:20:12: Add a type annotation to the variable oWithMethods. --!!! related TS9034 isolatedDeclarationErrorsObjects.ts:21:5: Add a return type to the method - okMethod(): void { }, - a: 1, - bad() { }, -- ~~~ --!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:20:12: Add a type annotation to the variable oWithMethods. --!!! related TS9034 isolatedDeclarationErrorsObjects.ts:24:5: Add a return type to the method - e: V, -- ~ --!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:20:12: Add a type annotation to the variable oWithMethods. --!!! related TS9035 isolatedDeclarationErrorsObjects.ts:25:8: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. +@@= skipped -30, +37 lines =@@ } export let oWithMethodsNested = { foo: { ++ ~ method() { }, -- ~~~~~~ --!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:27:12: Add a type annotation to the variable oWithMethodsNested. --!!! related TS9034 isolatedDeclarationErrorsObjects.ts:29:9: Add a return type to the method ++ ~~~~~~~~~~~~~~~~~~~~~ + ~~~~~~ + !!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9027 isolatedDeclarationErrorsObjects.ts:27:12: Add a type annotation to the variable oWithMethodsNested. + !!! related TS9034 isolatedDeclarationErrorsObjects.ts:29:9: Add a return type to the method a: 1, ++ ~~~~~~~~~~~~~ okMethod(): void { }, ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bad() { } -- ~~~ --!!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:27:12: Add a type annotation to the variable oWithMethodsNested. --!!! related TS9034 isolatedDeclarationErrorsObjects.ts:32:9: Add a return type to the method ++ ~~~~~~~~~~~~~~~~~ + ~~~ + !!! error TS9008: Method must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9027 isolatedDeclarationErrorsObjects.ts:27:12: Add a type annotation to the variable oWithMethodsNested. + !!! related TS9034 isolatedDeclarationErrorsObjects.ts:32:9: Add a return type to the method } ++ ~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9027 isolatedDeclarationErrorsObjects.ts:27:12: Add a type annotation to the variable oWithMethodsNested. ++!!! related TS9035 isolatedDeclarationErrorsObjects.ts:28:10: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. } -@@= skipped -69, +37 lines =@@ - !!! error TS7032: Property 'singleSetterBad' implicitly has type 'any', because its set accessor lacks a parameter type annotation. - ~~~~~ - !!! error TS7006: Parameter 'value' implicitly has an 'any' type. -- ~~~~~ --!!! error TS9009: At least one accessor must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9033 isolatedDeclarationErrorsObjects.ts:40:9: Add a type to parameter of the set accessor declaration. - get getSetBad() { return 0 }, - set getSetBad(value) { }, -@@= skipped -27, +24 lines =@@ +@@= skipped -49, +58 lines =@@ + V = 10, + } export const oWithComputedProperties = { ++ ~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++!!! related TS9027 isolatedDeclarationErrorsObjects.ts:62:14: Add a type annotation to the variable oWithComputedProperties. [1]: 1, [1 + 3]: 1, - ~~~~~~~ @@ -129,8 +115,11 @@ } const part = { a: 1 }; -@@= skipped -26, +11 lines =@@ + export const oWithSpread = { ++ ~~~~~~~~~~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++!!! related TS9027 isolatedDeclarationErrorsObjects.ts:73:14: Add a type annotation to the variable oWithSpread. b: 1, ...part, - ~~~~~~~ @@ -138,19 +127,22 @@ -!!! related TS9027 isolatedDeclarationErrorsObjects.ts:73:14: Add a type annotation to the variable oWithSpread. c: 1, part, -- ~~~~ --!!! error TS9016: Objects that contain shorthand properties can't be inferred with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:73:14: Add a type annotation to the variable oWithSpread. - } - - -@@= skipped -15, +9 lines =@@ + ~~~~ +@@= skipped -42, +30 lines =@@ + export const oWithSpread2 = { b: 1, nested: { ++ ~ ...part, - ~~~~~~~ -!!! error TS9015: Objects that contain spread assignments can't be inferred with --isolatedDeclarations. --!!! related TS9027 isolatedDeclarationErrorsObjects.ts:81:14: Add a type annotation to the variable oWithSpread2. - }, ++ ~~~~~~~~~~~~~~~~ ++ }, ++ ~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. + !!! related TS9027 isolatedDeclarationErrorsObjects.ts:81:14: Add a type annotation to the variable oWithSpread2. +- }, ++!!! related TS9035 isolatedDeclarationErrorsObjects.ts:83:13: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. c: 1, - } \ No newline at end of file + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsReturnTypes.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsReturnTypes.errors.txt new file mode 100644 index 00000000000..b5a735773b9 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsReturnTypes.errors.txt @@ -0,0 +1,656 @@ +isolatedDeclarationErrorsReturnTypes.ts(13,40): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(13,45): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(16,36): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(16,41): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(19,36): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(19,41): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(109,60): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(109,65): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(110,43): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(112,56): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(112,61): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(113,39): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(115,56): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(115,61): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(116,39): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(119,78): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(119,83): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(120,61): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(120,66): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(122,74): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(122,79): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(123,57): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(123,62): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(125,74): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(125,79): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(126,57): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(126,62): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(129,62): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(130,45): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(132,58): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(133,41): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(135,58): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(136,41): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(138,68): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(138,73): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(139,51): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(141,64): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(141,69): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(142,47): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(144,64): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(144,69): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(145,47): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(151,33): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(151,38): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(152,16): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(152,21): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(153,52): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(153,57): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(154,35): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(154,40): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(156,46): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(156,51): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(157,29): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(157,34): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(158,65): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(158,70): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(159,48): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(159,53): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(162,48): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(162,53): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(163,31): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(163,36): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(164,67): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(164,72): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(165,50): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(165,55): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(167,61): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(167,66): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(168,44): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(168,49): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(169,80): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(169,85): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(170,63): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(170,68): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(173,44): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(174,27): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(175,63): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(176,46): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(178,57): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(179,40): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(180,76): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(181,59): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(184,35): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(185,18): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(186,54): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(187,37): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(189,48): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(190,31): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(191,67): error TS9013: Expression type can't be inferred with --isolatedDeclarations. +isolatedDeclarationErrorsReturnTypes.ts(192,50): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + + +==== isolatedDeclarationErrorsReturnTypes.ts (90 errors) ==== + // Function Variables + export const fnExpressionConstVariable = function foo() { return 0;} + export const fnArrowConstVariable = () => "S"; + + export let fnExpressionLetVariable = function foo() { return 0;} + export let fnArrowLetVariable = () => "S"; + + export var fnExpressionVarVariable = function foo() { return 0;} + export var fnArrowVarVariable = () => "S"; + + // No Errors + export const fnExpressionConstVariableOk = function foo(): number { return 0;} + export const fnArrowConstVariableOk = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:13:40: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:13:40: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:13:40: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:13:45: Add a return type to the function expression. + + export let fnExpressionLetVariableOk = function foo(): number { return 0;} + export let fnArrowLetVariableOk = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:16:36: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:16:36: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:16:36: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:16:41: Add a return type to the function expression. + + export var fnExpressionVarVariableOk = function foo(): number { return 0;} + export var fnArrowVarVariableOk = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:19:36: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:19:36: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:19:36: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:19:41: Add a return type to the function expression. + + // Not exported + const fnExpressionConstVariableInternal = function foo() { return 0;} + const fnArrowConstVariableInternal = () => "S"; + + let fnExpressionLetVariableInternal = function foo() { return 0;} + let fnArrowLetVariableInternal = () => "S"; + + var fnExpressionVarVariableInternal = function foo() { return 0;} + var fnArrowVarVariableInternal = () => "S"; + + // Function Fields + export class ExportedClass { + // Should Error + fnExpression = function foo() { return 0; } + fnArrow = () => "S"; + protected fnExpressionProtected = function foo() { return 0; } + protected fnArrowProtected = () => "S"; + + static fnStaticExpression = function foo() { return 0; } + static fnStaticArrow = () => "S"; + protected static fnStaticExpressionProtected = function foo() { return 0; } + protected static fnStaticArrowProtected = () => "S"; + + // Have annotation, so ok + fnExpressionOk = function foo(): number { return 0; } + fnArrowOK = (): string => "S"; + protected fnExpressionProtectedOk = function foo(): number { return 0; } + protected fnArrowProtectedOK = (): string => "S"; + + static fnStaticExpressionOk = function foo(): number { return 0; } + static fnStaticArrowOk = (): string => "S"; + protected static fnStaticExpressionProtectedOk = function foo(): number { return 0; } + protected static fnStaticArrowProtectedOk = (): string => "S"; + + + // No Error not in declarations + private fnExpressionPrivate = function foo() { return 0; } + private fnArrowPrivate = () => "S"; + #fnArrow = () => "S"; + #fnExpression = function foo() { return 0;} + private static fnStaticExpressionPrivate = function foo() { return 0; } + private static fnStaticArrowPrivate = () => "S"; + } + + // Should error + class IndirectlyExportedClass { + fnExpression = function foo() { return 0; } + fnArrow = () => "S"; + + static fnStaticExpression = function foo() { return 0; } + static fnStaticArrow = () => "S"; + + protected static fnStaticExpressionProtected = function foo() { return 0; } + protected static fnStaticArrowProtected = () => "S"; + + private fnExpressionPrivate = function foo() { return 0; } + private fnArrowPrivate = () => "S"; + #fnArrow = () => "S"; + #fnExpression = function foo() { return 0;} + private static fnStaticExpressionPrivate = function foo() { return 0; } + private static fnStaticArrowPrivate = () => "S"; + } + export const instance: IndirectlyExportedClass = new IndirectlyExportedClass(); + + // No Errors + class InternalClass { + fnExpression = function foo() { return 0; } + fnArrow = () => "S"; + + static fnStaticExpression = function foo() { return 0; } + static fnStaticArrow = () => "S"; + + protected static fnStaticExpressionProtected = function foo() { return 0; } + protected static fnStaticArrowProtected = () => "S"; + + private fnExpressionPrivate = function foo() { return 0; } + private fnArrowPrivate = () => "S"; + #fnArrow = () => "S"; + #fnExpression = function foo() { return 0;} + private static fnStaticExpressionPrivate = function foo() { return 0; } + private static fnStaticArrowPrivate = () => "S"; + } + const internalInstance: InternalClass = new InternalClass(); + + + // Function parameters + + // In Function Variables - No annotations + export const fnParamExpressionConstVariable = function foo(cb = function(){ }) { return 0;} + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:109:60: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:109:60: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:109:60: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:109:65: Add a return type to the function expression. + export const fnParamArrowConstVariable = (cb = () => 1) => "S"; + ~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:110:43: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:110:43: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export let fnParamExpressionLetVariable = function foo(cb = function(){ }) { return 0;} + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:112:56: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:112:56: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:112:56: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:112:61: Add a return type to the function expression. + export let fnParamArrowLetVariable = (cb = () => 1) => "S"; + ~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:113:39: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:113:39: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export var fnParamExpressionVarVariable = function foo(cb = function(){ }) { return 0;} + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:115:56: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:115:56: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:115:56: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:115:61: Add a return type to the function expression. + export var fnParamArrowVarVariable = (cb = () => 1) => "S"; + ~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:116:39: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:116:39: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + // In Function Variables - No annotations on parameter + export const fnParamExpressionConstVariableOwnerHasReturnType = function foo(cb = function(){ }): number { return 0;} + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:119:78: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:119:78: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:119:78: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:119:83: Add a return type to the function expression. + export const fnParamArrowConstVariableOwnerHasReturnType = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:120:61: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:120:61: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:120:61: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:120:66: Add a return type to the function expression. + + export let fnParamExpressionLetVariableOwnerHasReturnType = function foo(cb = function(){ }): number { return 0;} + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:122:74: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:122:74: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:122:74: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:122:79: Add a return type to the function expression. + export let fnParamArrowLetVariableOwnerHasReturnType = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:123:57: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:123:57: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:123:57: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:123:62: Add a return type to the function expression. + + export var fnParamExpressionVarVariableOwnerHasReturnType = function foo(cb = function(){ }): number { return 0;} + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:125:74: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:125:74: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:125:74: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:125:79: Add a return type to the function expression. + export var fnParamArrowVarVariableOwnerHasReturnType = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:126:57: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:126:57: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:126:57: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:126:62: Add a return type to the function expression. + + // No Errors + export const fnParamExpressionConstVariableOk = function foo(cb = function(): void{ }): number { return 0;} + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:129:62: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:129:62: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + export const fnParamArrowConstVariableOk = (cb = function(): void{ }): string => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:130:45: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:130:45: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export let fnParamExpressionLetVariableOk = function foo(cb = function(): void{ }): number { return 0;} + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:132:58: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:132:58: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + export let fnParamArrowLetVariableOk = (cb = function(): void{ }): string => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:133:41: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:133:41: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export var fnParamExpressionVarVariableOk = function foo(cb = function(): void{ }): number { return 0;} + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:135:58: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:135:58: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + export var fnParamArrowVarVariableOk = (cb = function(): void{ }): string => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:136:41: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:136:41: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export const fnParamExpressionConstVariableInternal = function foo(cb = function(){ }) { return 0;} + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:138:68: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:138:68: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:138:68: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:138:73: Add a return type to the function expression. + export const fnParamArrowConstVariableInternal = (cb = () => 1) => "S"; + ~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:139:51: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:139:51: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export let fnParamExpressionLetVariableInternal = function foo(cb = function(){ }) { return 0;} + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:141:64: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:141:64: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:141:64: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:141:69: Add a return type to the function expression. + export let fnParamArrowLetVariableInternal = (cb = () => 1) => "S"; + ~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:142:47: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:142:47: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export var fnParamExpressionVarVariableInternal = function foo(cb = function(){ }) { return 0;} + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:144:64: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:144:64: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:144:64: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:144:69: Add a return type to the function expression. + export var fnParamArrowVarVariableInternal = (cb = () => 1) => "S"; + ~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:145:47: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:145:47: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + + // In Function Fields + export class FnParamsExportedClass { + // Should Error + fnExpression = function foo(cb = function(){ }) { return 0; } + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:151:33: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:151:33: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:151:33: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:151:38: Add a return type to the function expression. + fnArrow = (cb = function(){ }) => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:152:16: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:152:16: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:152:16: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:152:21: Add a return type to the function expression. + protected fnExpressionProtected = function foo(cb = function(){ }) { return 0; } + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:153:52: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:153:52: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:153:52: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:153:57: Add a return type to the function expression. + protected fnArrowProtected = (cb = function(){ }) => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:154:35: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:154:35: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:154:35: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:154:40: Add a return type to the function expression. + + static fnStaticExpression = function foo(cb = function(){ }) { return 0; } + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:156:46: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:156:46: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:156:46: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:156:51: Add a return type to the function expression. + static fnStaticArrow = (cb = function(){ }) => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:157:29: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:157:29: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:157:29: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:157:34: Add a return type to the function expression. + protected static fnStaticExpressionProtected = function foo(cb = function(){ }) { return 0; } + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:158:65: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:158:65: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:158:65: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:158:70: Add a return type to the function expression. + protected static fnStaticArrowProtected = (cb = function(){ }) => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:159:48: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:159:48: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:159:48: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:159:53: Add a return type to the function expression. + + // Have annotation on owner + fnExpressionMethodHasReturn = function foo(cb = function(){ }): number { return 0; } + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:162:48: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:162:48: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:162:48: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:162:53: Add a return type to the function expression. + fnArrowMethodHasReturn = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:163:31: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:163:31: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:163:31: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:163:36: Add a return type to the function expression. + protected fnExpressionProtectedMethodHasReturn = function foo(cb = function(){ }): number { return 0; } + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:164:67: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:164:67: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:164:67: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:164:72: Add a return type to the function expression. + protected fnArrowProtectedMethodHasReturn = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:165:50: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:165:50: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:165:50: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:165:55: Add a return type to the function expression. + + static fnStaticExpressionMethodHasReturn = function foo(cb = function(){ }): number { return 0; } + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:167:61: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:167:61: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:167:61: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:167:66: Add a return type to the function expression. + static fnStaticArrowMethodHasReturn = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:168:44: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:168:44: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:168:44: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:168:49: Add a return type to the function expression. + protected static fnStaticExpressionProtectedMethodHasReturn = function foo(cb = function(){ }): number { return 0; } + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:169:80: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:169:80: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:169:80: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:169:85: Add a return type to the function expression. + protected static fnStaticArrowProtectedMethodHasReturn = (cb = function(){ }): string => "S"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:170:63: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:170:63: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:170:63: Add a type annotation to the parameter cb. +!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:170:68: Add a return type to the function expression. + + // Have annotation only on parameter + fnExpressionOnlyOnParam = function foo(cb = function(): void { }) { return 0; } + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:173:44: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:173:44: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + fnArrowOnlyOnParam = (cb = function(): void { }) => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:174:27: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:174:27: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected fnExpressionProtectedOnlyOnParam = function foo(cb = function(): void { }) { return 0; } + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:175:63: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:175:63: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected fnArrowProtectedOnlyOnParam = (cb = function(): void { }) => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:176:46: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:176:46: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + static fnStaticExpressionOnlyOnParam = function foo(cb = function(): void{ }) { return 0; } + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:178:57: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:178:57: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + static fnStaticArrowOnlyOnParam = (cb = function(): void{ }) => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:179:40: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:179:40: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected static fnStaticExpressionProtectedOnlyOnParam = function foo(cb = function(): void{ }) { return 0; } + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:180:76: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:180:76: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected static fnStaticArrowProtectedOnlyOnParam = (cb = function(): void{ }) => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:181:59: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:181:59: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + // Have annotation, so ok + fnExpressionOk = function foo(cb = function(): void { }): number { return 0; } + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:184:35: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:184:35: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + fnArrowOK = (cb = function(): void { }): string => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:185:18: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:185:18: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected fnExpressionProtectedOk = function foo(cb = function(): void { }): number { return 0; } + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:186:54: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:186:54: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected fnArrowProtectedOK = (cb = function(): void { }): string => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:187:37: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:187:37: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + static fnStaticExpressionOk = function foo(cb = function(): void{ }): number { return 0; } + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:189:48: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:189:48: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + static fnStaticArrowOk = (cb = function(): void{ }): string => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:190:31: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:190:31: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected static fnStaticExpressionProtectedOk = function foo(cb = function(): void{ }): number { return 0; } + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:191:67: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:191:67: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected static fnStaticArrowProtectedOk = (cb = function(): void{ }): string => "S"; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. +!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:192:50: Add a type annotation to the parameter cb. +!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:192:50: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + + // No Error, not in declarations + private fnExpressionPrivate = function foo(cb = function(){ }) { return 0; } + private fnArrowPrivate = (cb = function(){ }) => "S"; + #fnArrow = (cb = function(){ }) => "S"; + #fnExpression = function foo(cb = function(){ }) { return 0;} + private static fnStaticExpressionPrivate = function foo(cb = function(){ }) { return 0; } + private static fnStaticArrowPrivate = (cb = function(){ }) => "S"; + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsReturnTypes.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsReturnTypes.errors.txt.diff index 211aeb1d58e..cdc14d5ee7f 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsReturnTypes.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsReturnTypes.errors.txt.diff @@ -1,365 +1,561 @@ --- old.isolatedDeclarationErrorsReturnTypes.errors.txt +++ new.isolatedDeclarationErrorsReturnTypes.errors.txt @@= skipped -0, +0 lines =@@ --isolatedDeclarationErrorsReturnTypes.ts(13,45): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(16,41): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(19,41): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(109,65): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(112,61): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(115,61): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(119,83): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(120,66): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(122,79): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(123,62): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(125,79): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(126,62): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(138,73): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(141,69): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(144,69): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(151,38): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(152,21): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(153,57): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(154,40): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(156,51): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(157,34): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(158,70): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(159,53): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(162,53): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(163,36): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(164,72): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(165,55): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(167,66): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(168,49): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(169,85): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationErrorsReturnTypes.ts(170,68): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(13,40): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(13,45): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(16,36): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(16,41): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(19,36): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(19,41): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(109,60): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(109,65): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(110,43): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(112,56): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(112,61): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(113,39): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(115,56): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(115,61): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(116,39): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(119,78): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(119,83): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(120,61): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(120,66): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(122,74): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(122,79): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(123,57): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(123,62): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(125,74): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(125,79): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(126,57): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(126,62): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(129,62): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(130,45): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(132,58): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(133,41): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(135,58): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(136,41): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(138,68): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(138,73): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(139,51): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(141,64): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(141,69): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(142,47): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(144,64): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(144,69): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(145,47): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(151,33): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(151,38): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(152,16): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(152,21): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(153,52): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(153,57): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(154,35): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(154,40): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(156,46): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(156,51): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(157,29): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(157,34): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(158,65): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(158,70): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(159,48): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(159,53): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(162,48): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(162,53): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(163,31): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(163,36): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(164,67): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(164,72): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(165,50): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(165,55): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(167,61): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(167,66): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(168,44): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(168,49): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(169,80): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(169,85): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(170,63): error TS9013: Expression type can't be inferred with --isolatedDeclarations. + isolatedDeclarationErrorsReturnTypes.ts(170,68): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. - - -==== isolatedDeclarationErrorsReturnTypes.ts (31 errors) ==== -- // Function Variables -- export const fnExpressionConstVariable = function foo() { return 0;} -- export const fnArrowConstVariable = () => "S"; -- -- export let fnExpressionLetVariable = function foo() { return 0;} -- export let fnArrowLetVariable = () => "S"; -- -- export var fnExpressionVarVariable = function foo() { return 0;} -- export var fnArrowVarVariable = () => "S"; -- -- // No Errors -- export const fnExpressionConstVariableOk = function foo(): number { return 0;} -- export const fnArrowConstVariableOk = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:13:40: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:13:45: Add a return type to the function expression. -- -- export let fnExpressionLetVariableOk = function foo(): number { return 0;} -- export let fnArrowLetVariableOk = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:16:36: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:16:41: Add a return type to the function expression. -- -- export var fnExpressionVarVariableOk = function foo(): number { return 0;} -- export var fnArrowVarVariableOk = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:19:36: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:19:41: Add a return type to the function expression. -- -- // Not exported -- const fnExpressionConstVariableInternal = function foo() { return 0;} -- const fnArrowConstVariableInternal = () => "S"; -- -- let fnExpressionLetVariableInternal = function foo() { return 0;} -- let fnArrowLetVariableInternal = () => "S"; -- -- var fnExpressionVarVariableInternal = function foo() { return 0;} -- var fnArrowVarVariableInternal = () => "S"; -- -- // Function Fields -- export class ExportedClass { -- // Should Error -- fnExpression = function foo() { return 0; } -- fnArrow = () => "S"; -- protected fnExpressionProtected = function foo() { return 0; } -- protected fnArrowProtected = () => "S"; -- -- static fnStaticExpression = function foo() { return 0; } -- static fnStaticArrow = () => "S"; -- protected static fnStaticExpressionProtected = function foo() { return 0; } -- protected static fnStaticArrowProtected = () => "S"; -- -- // Have annotation, so ok -- fnExpressionOk = function foo(): number { return 0; } -- fnArrowOK = (): string => "S"; -- protected fnExpressionProtectedOk = function foo(): number { return 0; } -- protected fnArrowProtectedOK = (): string => "S"; -- -- static fnStaticExpressionOk = function foo(): number { return 0; } -- static fnStaticArrowOk = (): string => "S"; -- protected static fnStaticExpressionProtectedOk = function foo(): number { return 0; } -- protected static fnStaticArrowProtectedOk = (): string => "S"; -- -- -- // No Error not in declarations -- private fnExpressionPrivate = function foo() { return 0; } -- private fnArrowPrivate = () => "S"; -- #fnArrow = () => "S"; -- #fnExpression = function foo() { return 0;} -- private static fnStaticExpressionPrivate = function foo() { return 0; } -- private static fnStaticArrowPrivate = () => "S"; -- } -- -- // Should error -- class IndirectlyExportedClass { -- fnExpression = function foo() { return 0; } -- fnArrow = () => "S"; -- -- static fnStaticExpression = function foo() { return 0; } -- static fnStaticArrow = () => "S"; -- -- protected static fnStaticExpressionProtected = function foo() { return 0; } -- protected static fnStaticArrowProtected = () => "S"; -- -- private fnExpressionPrivate = function foo() { return 0; } -- private fnArrowPrivate = () => "S"; -- #fnArrow = () => "S"; -- #fnExpression = function foo() { return 0;} -- private static fnStaticExpressionPrivate = function foo() { return 0; } -- private static fnStaticArrowPrivate = () => "S"; -- } -- export const instance: IndirectlyExportedClass = new IndirectlyExportedClass(); -- -- // No Errors -- class InternalClass { -- fnExpression = function foo() { return 0; } -- fnArrow = () => "S"; -- -- static fnStaticExpression = function foo() { return 0; } -- static fnStaticArrow = () => "S"; -- -- protected static fnStaticExpressionProtected = function foo() { return 0; } -- protected static fnStaticArrowProtected = () => "S"; -- -- private fnExpressionPrivate = function foo() { return 0; } -- private fnArrowPrivate = () => "S"; -- #fnArrow = () => "S"; -- #fnExpression = function foo() { return 0;} -- private static fnStaticExpressionPrivate = function foo() { return 0; } -- private static fnStaticArrowPrivate = () => "S"; -- } -- const internalInstance: InternalClass = new InternalClass(); -- -- -- // Function parameters -- -- // In Function Variables - No annotations -- export const fnParamExpressionConstVariable = function foo(cb = function(){ }) { return 0;} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:109:60: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:109:65: Add a return type to the function expression. -- export const fnParamArrowConstVariable = (cb = () => 1) => "S"; -- -- export let fnParamExpressionLetVariable = function foo(cb = function(){ }) { return 0;} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:112:56: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:112:61: Add a return type to the function expression. -- export let fnParamArrowLetVariable = (cb = () => 1) => "S"; -- -- export var fnParamExpressionVarVariable = function foo(cb = function(){ }) { return 0;} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:115:56: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:115:61: Add a return type to the function expression. -- export var fnParamArrowVarVariable = (cb = () => 1) => "S"; -- -- // In Function Variables - No annotations on parameter -- export const fnParamExpressionConstVariableOwnerHasReturnType = function foo(cb = function(){ }): number { return 0;} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:119:78: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:119:83: Add a return type to the function expression. -- export const fnParamArrowConstVariableOwnerHasReturnType = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:120:61: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:120:66: Add a return type to the function expression. -- -- export let fnParamExpressionLetVariableOwnerHasReturnType = function foo(cb = function(){ }): number { return 0;} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:122:74: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:122:79: Add a return type to the function expression. -- export let fnParamArrowLetVariableOwnerHasReturnType = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:123:57: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:123:62: Add a return type to the function expression. -- -- export var fnParamExpressionVarVariableOwnerHasReturnType = function foo(cb = function(){ }): number { return 0;} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:125:74: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:125:79: Add a return type to the function expression. -- export var fnParamArrowVarVariableOwnerHasReturnType = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:126:57: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:126:62: Add a return type to the function expression. -- -- // No Errors -- export const fnParamExpressionConstVariableOk = function foo(cb = function(): void{ }): number { return 0;} -- export const fnParamArrowConstVariableOk = (cb = function(): void{ }): string => "S"; -- -- export let fnParamExpressionLetVariableOk = function foo(cb = function(): void{ }): number { return 0;} -- export let fnParamArrowLetVariableOk = (cb = function(): void{ }): string => "S"; -- -- export var fnParamExpressionVarVariableOk = function foo(cb = function(): void{ }): number { return 0;} -- export var fnParamArrowVarVariableOk = (cb = function(): void{ }): string => "S"; -- -- export const fnParamExpressionConstVariableInternal = function foo(cb = function(){ }) { return 0;} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:138:68: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:138:73: Add a return type to the function expression. -- export const fnParamArrowConstVariableInternal = (cb = () => 1) => "S"; -- -- export let fnParamExpressionLetVariableInternal = function foo(cb = function(){ }) { return 0;} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:141:64: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:141:69: Add a return type to the function expression. -- export let fnParamArrowLetVariableInternal = (cb = () => 1) => "S"; -- -- export var fnParamExpressionVarVariableInternal = function foo(cb = function(){ }) { return 0;} -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:144:64: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:144:69: Add a return type to the function expression. -- export var fnParamArrowVarVariableInternal = (cb = () => 1) => "S"; -- -- -- // In Function Fields -- export class FnParamsExportedClass { -- // Should Error -- fnExpression = function foo(cb = function(){ }) { return 0; } -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:151:33: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:151:38: Add a return type to the function expression. -- fnArrow = (cb = function(){ }) => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:152:16: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:152:21: Add a return type to the function expression. -- protected fnExpressionProtected = function foo(cb = function(){ }) { return 0; } -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:153:52: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:153:57: Add a return type to the function expression. -- protected fnArrowProtected = (cb = function(){ }) => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:154:35: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:154:40: Add a return type to the function expression. -- -- static fnStaticExpression = function foo(cb = function(){ }) { return 0; } -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:156:46: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:156:51: Add a return type to the function expression. -- static fnStaticArrow = (cb = function(){ }) => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:157:29: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:157:34: Add a return type to the function expression. -- protected static fnStaticExpressionProtected = function foo(cb = function(){ }) { return 0; } -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:158:65: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:158:70: Add a return type to the function expression. -- protected static fnStaticArrowProtected = (cb = function(){ }) => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:159:48: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:159:53: Add a return type to the function expression. -- -- // Have annotation on owner -- fnExpressionMethodHasReturn = function foo(cb = function(){ }): number { return 0; } -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:162:48: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:162:53: Add a return type to the function expression. -- fnArrowMethodHasReturn = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:163:31: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:163:36: Add a return type to the function expression. -- protected fnExpressionProtectedMethodHasReturn = function foo(cb = function(){ }): number { return 0; } -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:164:67: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:164:72: Add a return type to the function expression. -- protected fnArrowProtectedMethodHasReturn = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:165:50: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:165:55: Add a return type to the function expression. -- -- static fnStaticExpressionMethodHasReturn = function foo(cb = function(){ }): number { return 0; } -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:167:61: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:167:66: Add a return type to the function expression. -- static fnStaticArrowMethodHasReturn = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:168:44: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:168:49: Add a return type to the function expression. -- protected static fnStaticExpressionProtectedMethodHasReturn = function foo(cb = function(){ }): number { return 0; } -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:169:80: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:169:85: Add a return type to the function expression. -- protected static fnStaticArrowProtectedMethodHasReturn = (cb = function(){ }): string => "S"; -- ~~~~~~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:170:63: Add a type annotation to the parameter cb. --!!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:170:68: Add a return type to the function expression. -- -- // Have annotation only on parameter -- fnExpressionOnlyOnParam = function foo(cb = function(): void { }) { return 0; } -- fnArrowOnlyOnParam = (cb = function(): void { }) => "S"; -- protected fnExpressionProtectedOnlyOnParam = function foo(cb = function(): void { }) { return 0; } -- protected fnArrowProtectedOnlyOnParam = (cb = function(): void { }) => "S"; -- -- static fnStaticExpressionOnlyOnParam = function foo(cb = function(): void{ }) { return 0; } -- static fnStaticArrowOnlyOnParam = (cb = function(): void{ }) => "S"; -- protected static fnStaticExpressionProtectedOnlyOnParam = function foo(cb = function(): void{ }) { return 0; } -- protected static fnStaticArrowProtectedOnlyOnParam = (cb = function(): void{ }) => "S"; -- -- // Have annotation, so ok -- fnExpressionOk = function foo(cb = function(): void { }): number { return 0; } -- fnArrowOK = (cb = function(): void { }): string => "S"; -- protected fnExpressionProtectedOk = function foo(cb = function(): void { }): number { return 0; } -- protected fnArrowProtectedOK = (cb = function(): void { }): string => "S"; -- -- static fnStaticExpressionOk = function foo(cb = function(): void{ }): number { return 0; } -- static fnStaticArrowOk = (cb = function(): void{ }): string => "S"; -- protected static fnStaticExpressionProtectedOk = function foo(cb = function(): void{ }): number { return 0; } -- protected static fnStaticArrowProtectedOk = (cb = function(): void{ }): string => "S"; -- -- -- // No Error, not in declarations -- private fnExpressionPrivate = function foo(cb = function(){ }) { return 0; } -- private fnArrowPrivate = (cb = function(){ }) => "S"; -- #fnArrow = (cb = function(){ }) => "S"; -- #fnExpression = function foo(cb = function(){ }) { return 0;} -- private static fnStaticExpressionPrivate = function foo(cb = function(){ }) { return 0; } -- private static fnStaticArrowPrivate = (cb = function(){ }) => "S"; -- } -- -+ \ No newline at end of file ++isolatedDeclarationErrorsReturnTypes.ts(173,44): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(174,27): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(175,63): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(176,46): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(178,57): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(179,40): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(180,76): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(181,59): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(184,35): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(185,18): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(186,54): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(187,37): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(189,48): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(190,31): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(191,67): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++isolatedDeclarationErrorsReturnTypes.ts(192,50): error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++ ++ ++==== isolatedDeclarationErrorsReturnTypes.ts (90 errors) ==== + // Function Variables + export const fnExpressionConstVariable = function foo() { return 0;} + export const fnArrowConstVariable = () => "S"; +@@= skipped -44, +103 lines =@@ + // No Errors + export const fnExpressionConstVariableOk = function foo(): number { return 0;} + export const fnArrowConstVariableOk = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:13:40: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:13:40: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:13:40: Add a type annotation to the parameter cb. +@@= skipped -7, +11 lines =@@ + + export let fnExpressionLetVariableOk = function foo(): number { return 0;} + export let fnArrowLetVariableOk = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:16:36: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:16:36: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:16:36: Add a type annotation to the parameter cb. +@@= skipped -7, +11 lines =@@ + + export var fnExpressionVarVariableOk = function foo(): number { return 0;} + export var fnArrowVarVariableOk = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:19:36: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:19:36: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:19:36: Add a type annotation to the parameter cb. +@@= skipped -94, +98 lines =@@ + + // In Function Variables - No annotations + export const fnParamExpressionConstVariable = function foo(cb = function(){ }) { return 0;} ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:109:60: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:109:60: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:109:60: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:109:65: Add a return type to the function expression. + export const fnParamArrowConstVariable = (cb = () => 1) => "S"; ++ ~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:110:43: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:110:43: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export let fnParamExpressionLetVariable = function foo(cb = function(){ }) { return 0;} ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:112:56: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:112:56: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:112:56: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:112:61: Add a return type to the function expression. + export let fnParamArrowLetVariable = (cb = () => 1) => "S"; ++ ~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:113:39: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:113:39: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export var fnParamExpressionVarVariable = function foo(cb = function(){ }) { return 0;} ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:115:56: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:115:56: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:115:56: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:115:61: Add a return type to the function expression. + export var fnParamArrowVarVariable = (cb = () => 1) => "S"; ++ ~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:116:39: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:116:39: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + // In Function Variables - No annotations on parameter + export const fnParamExpressionConstVariableOwnerHasReturnType = function foo(cb = function(){ }): number { return 0;} ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:119:78: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:119:78: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:119:78: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:119:83: Add a return type to the function expression. + export const fnParamArrowConstVariableOwnerHasReturnType = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:120:61: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:120:61: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:120:61: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:120:66: Add a return type to the function expression. + + export let fnParamExpressionLetVariableOwnerHasReturnType = function foo(cb = function(){ }): number { return 0;} ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:122:74: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:122:74: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:122:74: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:122:79: Add a return type to the function expression. + export let fnParamArrowLetVariableOwnerHasReturnType = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:123:57: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:123:57: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:123:57: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:123:62: Add a return type to the function expression. + + export var fnParamExpressionVarVariableOwnerHasReturnType = function foo(cb = function(){ }): number { return 0;} ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:125:74: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:125:74: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:125:74: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:125:79: Add a return type to the function expression. + export var fnParamArrowVarVariableOwnerHasReturnType = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:126:57: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:126:57: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:126:57: Add a type annotation to the parameter cb. +@@= skipped -56, +104 lines =@@ + + // No Errors + export const fnParamExpressionConstVariableOk = function foo(cb = function(): void{ }): number { return 0;} ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:129:62: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:129:62: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + export const fnParamArrowConstVariableOk = (cb = function(): void{ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:130:45: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:130:45: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export let fnParamExpressionLetVariableOk = function foo(cb = function(): void{ }): number { return 0;} ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:132:58: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:132:58: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + export let fnParamArrowLetVariableOk = (cb = function(): void{ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:133:41: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:133:41: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export var fnParamExpressionVarVariableOk = function foo(cb = function(): void{ }): number { return 0;} ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:135:58: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:135:58: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + export var fnParamArrowVarVariableOk = (cb = function(): void{ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:136:41: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:136:41: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export const fnParamExpressionConstVariableInternal = function foo(cb = function(){ }) { return 0;} ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:138:68: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:138:68: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:138:68: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:138:73: Add a return type to the function expression. + export const fnParamArrowConstVariableInternal = (cb = () => 1) => "S"; ++ ~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:139:51: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:139:51: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export let fnParamExpressionLetVariableInternal = function foo(cb = function(){ }) { return 0;} ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:141:64: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:141:64: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:141:64: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:141:69: Add a return type to the function expression. + export let fnParamArrowLetVariableInternal = (cb = () => 1) => "S"; ++ ~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:142:47: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:142:47: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + export var fnParamExpressionVarVariableInternal = function foo(cb = function(){ }) { return 0;} ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:144:64: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:144:64: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:144:64: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:144:69: Add a return type to the function expression. + export var fnParamArrowVarVariableInternal = (cb = () => 1) => "S"; ++ ~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:145:47: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:145:47: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + + // In Function Fields + export class FnParamsExportedClass { + // Should Error + fnExpression = function foo(cb = function(){ }) { return 0; } ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:151:33: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:151:33: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:151:33: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:151:38: Add a return type to the function expression. + fnArrow = (cb = function(){ }) => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:152:16: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:152:16: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:152:16: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:152:21: Add a return type to the function expression. + protected fnExpressionProtected = function foo(cb = function(){ }) { return 0; } ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:153:52: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:153:52: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:153:52: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:153:57: Add a return type to the function expression. + protected fnArrowProtected = (cb = function(){ }) => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:154:35: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:154:35: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:154:35: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:154:40: Add a return type to the function expression. + + static fnStaticExpression = function foo(cb = function(){ }) { return 0; } ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:156:46: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:156:46: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:156:46: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:156:51: Add a return type to the function expression. + static fnStaticArrow = (cb = function(){ }) => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:157:29: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:157:29: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:157:29: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:157:34: Add a return type to the function expression. + protected static fnStaticExpressionProtected = function foo(cb = function(){ }) { return 0; } ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:158:65: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:158:65: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:158:65: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:158:70: Add a return type to the function expression. + protected static fnStaticArrowProtected = (cb = function(){ }) => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:159:48: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:159:48: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:159:48: Add a type annotation to the parameter cb. +@@= skipped -77, +157 lines =@@ + + // Have annotation on owner + fnExpressionMethodHasReturn = function foo(cb = function(){ }): number { return 0; } ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:162:48: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:162:48: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:162:48: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:162:53: Add a return type to the function expression. + fnArrowMethodHasReturn = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:163:31: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:163:31: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:163:31: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:163:36: Add a return type to the function expression. + protected fnExpressionProtectedMethodHasReturn = function foo(cb = function(){ }): number { return 0; } ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:164:67: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:164:67: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:164:67: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:164:72: Add a return type to the function expression. + protected fnArrowProtectedMethodHasReturn = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:165:50: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:165:50: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:165:50: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:165:55: Add a return type to the function expression. + + static fnStaticExpressionMethodHasReturn = function foo(cb = function(){ }): number { return 0; } ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:167:61: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:167:61: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:167:61: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:167:66: Add a return type to the function expression. + static fnStaticArrowMethodHasReturn = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:168:44: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:168:44: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:168:44: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:168:49: Add a return type to the function expression. + protected static fnStaticExpressionProtectedMethodHasReturn = function foo(cb = function(){ }): number { return 0; } ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:169:80: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:169:80: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:169:80: Add a type annotation to the parameter cb. + !!! related TS9030 isolatedDeclarationErrorsReturnTypes.ts:169:85: Add a return type to the function expression. + protected static fnStaticArrowProtectedMethodHasReturn = (cb = function(){ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:170:63: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:170:63: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + ~~~~~~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. + !!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:170:63: Add a type annotation to the parameter cb. +@@= skipped -43, +75 lines =@@ + + // Have annotation only on parameter + fnExpressionOnlyOnParam = function foo(cb = function(): void { }) { return 0; } ++ ~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:173:44: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:173:44: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + fnArrowOnlyOnParam = (cb = function(): void { }) => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:174:27: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:174:27: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected fnExpressionProtectedOnlyOnParam = function foo(cb = function(): void { }) { return 0; } ++ ~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:175:63: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:175:63: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected fnArrowProtectedOnlyOnParam = (cb = function(): void { }) => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:176:46: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:176:46: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + static fnStaticExpressionOnlyOnParam = function foo(cb = function(): void{ }) { return 0; } ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:178:57: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:178:57: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + static fnStaticArrowOnlyOnParam = (cb = function(): void{ }) => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:179:40: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:179:40: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected static fnStaticExpressionProtectedOnlyOnParam = function foo(cb = function(): void{ }) { return 0; } ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:180:76: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:180:76: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected static fnStaticArrowProtectedOnlyOnParam = (cb = function(): void{ }) => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:181:59: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:181:59: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + // Have annotation, so ok + fnExpressionOk = function foo(cb = function(): void { }): number { return 0; } ++ ~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:184:35: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:184:35: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + fnArrowOK = (cb = function(): void { }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:185:18: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:185:18: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected fnExpressionProtectedOk = function foo(cb = function(): void { }): number { return 0; } ++ ~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:186:54: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:186:54: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected fnArrowProtectedOK = (cb = function(): void { }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:187:37: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:187:37: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + static fnStaticExpressionOk = function foo(cb = function(): void{ }): number { return 0; } ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:189:48: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:189:48: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + static fnStaticArrowOk = (cb = function(): void{ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:190:31: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:190:31: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected static fnStaticExpressionProtectedOk = function foo(cb = function(): void{ }): number { return 0; } ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:191:67: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:191:67: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + protected static fnStaticArrowProtectedOk = (cb = function(): void{ }): string => "S"; ++ ~~~~~~~~~~~~~~~~~~~~~~~~ ++!!! error TS9013: Expression type can't be inferred with --isolatedDeclarations. ++!!! related TS9028 isolatedDeclarationErrorsReturnTypes.ts:192:50: Add a type annotation to the parameter cb. ++!!! related TS9035 isolatedDeclarationErrorsReturnTypes.ts:192:50: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit. + + + // No Error, not in declarations \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationLazySymbols.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationLazySymbols.errors.txt index c010344e7e9..1d718f8a1f8 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationLazySymbols.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationLazySymbols.errors.txt @@ -1,8 +1,15 @@ +isolatedDeclarationLazySymbols.ts(1,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +isolatedDeclarationLazySymbols.ts(13,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. isolatedDeclarationLazySymbols.ts(16,5): error TS1166: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type. +isolatedDeclarationLazySymbols.ts(16,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. +isolatedDeclarationLazySymbols.ts(20,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. -==== isolatedDeclarationLazySymbols.ts (1 errors) ==== +==== isolatedDeclarationLazySymbols.ts (5 errors) ==== export function foo() { + ~~~ +!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +!!! related TS9031 isolatedDeclarationLazySymbols.ts:1:17: Add a return type to the function declaration. } @@ -15,15 +22,22 @@ isolatedDeclarationLazySymbols.ts(16,5): error TS1166: A computed property name foo[o["prop.inner"]] ="A"; foo[o.prop.inner] = "B"; + ~~~~~~~~~~~~~~~~~ +!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. export class Foo { [o["prop.inner"]] ="A" ~~~~~~~~~~~~~~~~~ !!! error TS1166: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type. + ~~~~~~~~~~~~~~~~~ +!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. [o.prop.inner] = "B" } export let oo = { + ~~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 isolatedDeclarationLazySymbols.ts:20:12: Add a type annotation to the variable oo. [o['prop.inner']]:"A", [o.prop.inner]: "B", } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationLazySymbols.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationLazySymbols.errors.txt.diff index 41ae53e2a7c..b8d25a00a27 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationLazySymbols.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationLazySymbols.errors.txt.diff @@ -1,42 +1,28 @@ --- old.isolatedDeclarationLazySymbols.errors.txt +++ new.isolatedDeclarationLazySymbols.errors.txt -@@= skipped -0, +0 lines =@@ --isolatedDeclarationLazySymbols.ts(1,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --isolatedDeclarationLazySymbols.ts(13,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. +@@= skipped -1, +1 lines =@@ + isolatedDeclarationLazySymbols.ts(13,1): error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. isolatedDeclarationLazySymbols.ts(16,5): error TS1166: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type. --isolatedDeclarationLazySymbols.ts(16,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. + isolatedDeclarationLazySymbols.ts(16,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. -isolatedDeclarationLazySymbols.ts(21,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. -isolatedDeclarationLazySymbols.ts(22,5): error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - - -==== isolatedDeclarationLazySymbols.ts (6 errors) ==== ++isolatedDeclarationLazySymbols.ts(20,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + + -+==== isolatedDeclarationLazySymbols.ts (1 errors) ==== ++==== isolatedDeclarationLazySymbols.ts (5 errors) ==== export function foo() { -- ~~~ --!!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. --!!! related TS9031 isolatedDeclarationLazySymbols.ts:1:17: Add a return type to the function declaration. - - } - -@@= skipped -22, +14 lines =@@ - - foo[o["prop.inner"]] ="A"; - foo[o.prop.inner] = "B"; -- ~~~~~~~~~~~~~~~~~ --!!! error TS9023: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function. - - export class Foo { - [o["prop.inner"]] ="A" - ~~~~~~~~~~~~~~~~~ - !!! error TS1166: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type. -- ~~~~~~~~~~~~~~~~~ --!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. - [o.prop.inner] = "B" + ~~~ + !!! error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations. +@@= skipped -34, +33 lines =@@ } export let oo = { ++ ~~ ++!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. ++!!! related TS9027 isolatedDeclarationLazySymbols.ts:20:12: Add a type annotation to the variable oo. [o['prop.inner']]:"A", - ~~~~~~~~~~~~~~~~~ -!!! error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations. diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.errors.txt new file mode 100644 index 00000000000..7e851397165 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.errors.txt @@ -0,0 +1,28 @@ +file2.ts(1,26): error TS9025: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations. +file2.ts(4,27): error TS9025: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations. + + +==== file1.ts (0 errors) ==== + type N = 1; + export class Bar { + c? = [2 as N] as const; + c3? = 1 as N; + readonly r = 1; + f = 2; + } + +==== file2.ts (2 errors) ==== + export function foo(p = (ip = 10, v: number): void => {}): void{ + ~~~~~~~ +!!! error TS9025: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations. +!!! related TS9028 file2.ts:1:26: Add a type annotation to the parameter ip. + } + type T = number + export function foo2(p = (ip = 10 as T, v: number): void => {}): void{} + ~~~~~~~~~~~~ +!!! error TS9025: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations. +!!! related TS9028 file2.ts:4:27: Add a type annotation to the parameter ip. + export class Bar2 { + readonly r = 1; + f = 2; + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.errors.txt.diff index a57933591be..e8a6c572585 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.errors.txt.diff @@ -2,27 +2,28 @@ +++ new.isolatedDeclarationsAddUndefined.errors.txt @@= skipped -0, +0 lines =@@ -file2.ts(4,38): error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. -- -- --==== file1.ts (0 errors) ==== -- type N = 1; -- export class Bar { -- c? = [2 as N] as const; -- c3? = 1 as N; -- readonly r = 1; -- f = 2; -- } -- ++file2.ts(1,26): error TS9025: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations. ++file2.ts(4,27): error TS9025: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations. + + + ==== file1.ts (0 errors) ==== +@@= skipped -9, +10 lines =@@ + f = 2; + } + -==== file2.ts (1 errors) ==== -- export function foo(p = (ip = 10, v: number): void => {}): void{ -- } -- type T = number -- export function foo2(p = (ip = 10 as T, v: number): void => {}): void{} ++==== file2.ts (2 errors) ==== + export function foo(p = (ip = 10, v: number): void => {}): void{ ++ ~~~~~~~ ++!!! error TS9025: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations. ++!!! related TS9028 file2.ts:1:26: Add a type annotation to the parameter ip. + } + type T = number + export function foo2(p = (ip = 10 as T, v: number): void => {}): void{} - ~ -!!! error TS9011: Parameter must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9028 file2.ts:4:27: Add a type annotation to the parameter ip. -- export class Bar2 { -- readonly r = 1; -- f = 2; -- } -+ \ No newline at end of file ++ ~~~~~~~~~~~~ ++!!! error TS9025: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations. + !!! related TS9028 file2.ts:4:27: Add a type annotation to the parameter ip. + export class Bar2 { + readonly r = 1; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.js b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.js index 673d0e6ae40..47d4a6592fc 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.js +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.js @@ -51,16 +51,20 @@ exports.Bar2 = Bar2; //// [file1.d.ts] +type N = 1; export declare class Bar { c?: readonly [1] | undefined; - c3?: 1 | undefined; + c3?: N; readonly r = 1; f: number; } +export {}; //// [file2.d.ts] export declare function foo(p?: (ip: number | undefined, v: number) => void): void; -export declare function foo2(p?: (ip: number | undefined, v: number) => void): void; +type T = number; +export declare function foo2(p?: (ip: T | undefined, v: number) => void): void; export declare class Bar2 { readonly r = 1; f: number; } +export {}; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.js.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.js.diff index c196065a98a..3d77ffad0ae 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.js.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.js.diff @@ -1,25 +1,15 @@ --- old.isolatedDeclarationsAddUndefined.js +++ new.isolatedDeclarationsAddUndefined.js -@@= skipped -50, +50 lines =@@ - - - //// [file1.d.ts] --type N = 1; - export declare class Bar { - c?: readonly [1] | undefined; -- c3?: N; -- readonly r = 1; -- f: number; --} --export {}; -+ c3?: 1 | undefined; -+ readonly r = 1; -+ f: number; -+} +@@= skipped -58, +58 lines =@@ + f: number; + } + export {}; +//// [file2.d.ts] +export declare function foo(p?: (ip: number | undefined, v: number) => void): void; -+export declare function foo2(p?: (ip: number | undefined, v: number) => void): void; ++type T = number; ++export declare function foo2(p?: (ip: T | undefined, v: number) => void): void; +export declare class Bar2 { + readonly r = 1; + f: number; -+} \ No newline at end of file ++} ++export {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.types b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.types index 88bc865b42a..7f2ee5f7a77 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.types +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.types @@ -41,9 +41,9 @@ type T = number >T : number export function foo2(p = (ip = 10 as T, v: number): void => {}): void{} ->foo2 : (p?: (ip: number | undefined, v: number) => void) => void ->p : (ip: number | undefined, v: number) => void ->(ip = 10 as T, v: number): void => {} : (ip: number | undefined, v: number) => void +>foo2 : (p?: (ip: T | undefined, v: number) => void) => void +>p : (ip: T | undefined, v: number) => void +>(ip = 10 as T, v: number): void => {} : (ip: T | undefined, v: number) => void >ip : number >10 as T : number >10 : 10 diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.types.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.types.diff deleted file mode 100644 index 8b69d04bde2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.isolatedDeclarationsAddUndefined.types -+++ new.isolatedDeclarationsAddUndefined.types -@@= skipped -40, +40 lines =@@ - >T : number - - export function foo2(p = (ip = 10 as T, v: number): void => {}): void{} -->foo2 : (p?: (ip: T | undefined, v: number) => void) => void -->p : (ip: T | undefined, v: number) => void -->(ip = 10 as T, v: number): void => {} : (ip: T | undefined, v: number) => void -+>foo2 : (p?: (ip: number | undefined, v: number) => void) => void -+>p : (ip: number | undefined, v: number) => void -+>(ip = 10 as T, v: number): void => {} : (ip: number | undefined, v: number) => void - >ip : number - >10 as T : number - >10 : 10 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined2.types b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined2.types index 20a91586c2d..ddf13e3be11 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined2.types +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined2.types @@ -32,14 +32,14 @@ export class Bar4 { } export function test1(x?: Array | undefined): void {} ->test1 : (x?: any) => void +>test1 : (x?: Array | undefined) => void >x : any export function test2(x?: Unresolved | undefined): void {} ->test2 : (x?: any) => void +>test2 : (x?: Unresolved | undefined) => void >x : any export function test3(x?: Unresolved): void {} ->test3 : (x?: any) => void +>test3 : (x?: Unresolved) => void >x : any diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined2.types.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined2.types.diff deleted file mode 100644 index 9ebac7de8d5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAddUndefined2.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.isolatedDeclarationsAddUndefined2.types -+++ new.isolatedDeclarationsAddUndefined2.types -@@= skipped -31, +31 lines =@@ - } - - export function test1(x?: Array | undefined): void {} -->test1 : (x?: Array | undefined) => void -+>test1 : (x?: any) => void - >x : any - - export function test2(x?: Unresolved | undefined): void {} -->test2 : (x?: Unresolved | undefined) => void -+>test2 : (x?: any) => void - >x : any - - export function test3(x?: Unresolved): void {} -->test3 : (x?: Unresolved) => void -+>test3 : (x?: any) => void - >x : any diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAllowJs.errors.txt b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAllowJs.errors.txt index 079434a32ae..ae204812e84 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAllowJs.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAllowJs.errors.txt @@ -1,12 +1,16 @@ error TS5053: Option 'allowJs' cannot be specified with option 'isolatedDeclarations'. error TS5055: Cannot write file 'file2.js' because it would overwrite input file. Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig. +file1.ts(1,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. !!! error TS5053: Option 'allowJs' cannot be specified with option 'isolatedDeclarations'. !!! error TS5055: Cannot write file 'file2.js' because it would overwrite input file. !!! error TS5055: Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig. -==== file1.ts (0 errors) ==== +==== file1.ts (1 errors) ==== export var x; + ~ +!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. +!!! related TS9027 file1.ts:1:12: Add a type annotation to the variable x. ==== file2.js (0 errors) ==== export var y; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAllowJs.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAllowJs.errors.txt.diff deleted file mode 100644 index 1241ea74bbb..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsAllowJs.errors.txt.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.isolatedDeclarationsAllowJs.errors.txt -+++ new.isolatedDeclarationsAllowJs.errors.txt -@@= skipped -0, +0 lines =@@ - error TS5053: Option 'allowJs' cannot be specified with option 'isolatedDeclarations'. - error TS5055: Cannot write file 'file2.js' because it would overwrite input file. - Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig. --file1.ts(1,12): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. - - - !!! error TS5053: Option 'allowJs' cannot be specified with option 'isolatedDeclarations'. - !!! error TS5055: Cannot write file 'file2.js' because it would overwrite input file. - !!! error TS5055: Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig. --==== file1.ts (1 errors) ==== -+==== file1.ts (0 errors) ==== - export var x; -- ~ --!!! error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. --!!! related TS9027 file1.ts:1:12: Add a type annotation to the variable x. - ==== file2.js (0 errors) ==== - export var y; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.js b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.js index 24f3eba4434..81f31c8065d 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.js +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.js @@ -143,9 +143,9 @@ export declare const constObject: { /** Value Of "1" */ readonly oneStrDoubleQuote: "1"; /** Value Of '1' */ - readonly oneStrSingleQuote: "1"; + readonly oneStrSingleQuote: '1'; /** Value Of `1` */ - readonly oneStrTemplate: "1"; + readonly oneStrTemplate: `1`; /** A method */ readonly method: () => void; }; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.js.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.js.diff new file mode 100644 index 00000000000..3ac92944c97 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.js.diff @@ -0,0 +1,14 @@ +--- old.isolatedDeclarationsLiterals.js ++++ new.isolatedDeclarationsLiterals.js +@@= skipped -142, +142 lines =@@ + /** Value Of "1" */ + readonly oneStrDoubleQuote: "1"; + /** Value Of '1' */ +- readonly oneStrSingleQuote: "1"; ++ readonly oneStrSingleQuote: '1'; + /** Value Of `1` */ +- readonly oneStrTemplate: "1"; ++ readonly oneStrTemplate: `1`; + /** A method */ + readonly method: () => void; + }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.types b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.types index ce775c65b57..e15175c75a9 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.types +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.types @@ -2,9 +2,9 @@ === file1.ts === export const constObject = { ->constObject : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: "1"; readonly oneStrTemplate: "1"; readonly method: () => void; } ->{ /** Value Of 1 */ one: 1, /** Value Of 0o1 */ oneOctal: 0o1, /** Value Of 0x1 */ oneHex: 0x1, /** Value Of +1 */ pOne: +1, /** Value Of -1 */ mOne: -1, array: [1, -1, 1n, -1n], /** Value Of 1n */ onen: 1n, /** Value Of -1n */ mOnen: -1n, /** Value Of "1" */ oneStrDoubleQuote: "1", /** Value Of '1' */ oneStrSingleQuote: '1', /** Value Of `1` */ oneStrTemplate: `1`, /** A method */ method(): void { },} as const : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: "1"; readonly oneStrTemplate: "1"; readonly method: () => void; } ->{ /** Value Of 1 */ one: 1, /** Value Of 0o1 */ oneOctal: 0o1, /** Value Of 0x1 */ oneHex: 0x1, /** Value Of +1 */ pOne: +1, /** Value Of -1 */ mOne: -1, array: [1, -1, 1n, -1n], /** Value Of 1n */ onen: 1n, /** Value Of -1n */ mOnen: -1n, /** Value Of "1" */ oneStrDoubleQuote: "1", /** Value Of '1' */ oneStrSingleQuote: '1', /** Value Of `1` */ oneStrTemplate: `1`, /** A method */ method(): void { },} : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: "1"; readonly oneStrTemplate: "1"; readonly method: () => void; } +>constObject : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: '1'; readonly oneStrTemplate: `1`; readonly method: () => void; } +>{ /** Value Of 1 */ one: 1, /** Value Of 0o1 */ oneOctal: 0o1, /** Value Of 0x1 */ oneHex: 0x1, /** Value Of +1 */ pOne: +1, /** Value Of -1 */ mOne: -1, array: [1, -1, 1n, -1n], /** Value Of 1n */ onen: 1n, /** Value Of -1n */ mOnen: -1n, /** Value Of "1" */ oneStrDoubleQuote: "1", /** Value Of '1' */ oneStrSingleQuote: '1', /** Value Of `1` */ oneStrTemplate: `1`, /** A method */ method(): void { },} as const : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: '1'; readonly oneStrTemplate: `1`; readonly method: () => void; } +>{ /** Value Of 1 */ one: 1, /** Value Of 0o1 */ oneOctal: 0o1, /** Value Of 0x1 */ oneHex: 0x1, /** Value Of +1 */ pOne: +1, /** Value Of -1 */ mOne: -1, array: [1, -1, 1n, -1n], /** Value Of 1n */ onen: 1n, /** Value Of -1n */ mOnen: -1n, /** Value Of "1" */ oneStrDoubleQuote: "1", /** Value Of '1' */ oneStrSingleQuote: '1', /** Value Of `1` */ oneStrTemplate: `1`, /** A method */ method(): void { },} : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: '1'; readonly oneStrTemplate: `1`; readonly method: () => void; } /** Value Of 1 */ one: 1, diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.types.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.types.diff new file mode 100644 index 00000000000..f2bc1c3fa2d --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsLiterals.types.diff @@ -0,0 +1,15 @@ +--- old.isolatedDeclarationsLiterals.types ++++ new.isolatedDeclarationsLiterals.types +@@= skipped -1, +1 lines =@@ + + === file1.ts === + export const constObject = { +->constObject : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: "1"; readonly oneStrTemplate: "1"; readonly method: () => void; } +->{ /** Value Of 1 */ one: 1, /** Value Of 0o1 */ oneOctal: 0o1, /** Value Of 0x1 */ oneHex: 0x1, /** Value Of +1 */ pOne: +1, /** Value Of -1 */ mOne: -1, array: [1, -1, 1n, -1n], /** Value Of 1n */ onen: 1n, /** Value Of -1n */ mOnen: -1n, /** Value Of "1" */ oneStrDoubleQuote: "1", /** Value Of '1' */ oneStrSingleQuote: '1', /** Value Of `1` */ oneStrTemplate: `1`, /** A method */ method(): void { },} as const : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: "1"; readonly oneStrTemplate: "1"; readonly method: () => void; } +->{ /** Value Of 1 */ one: 1, /** Value Of 0o1 */ oneOctal: 0o1, /** Value Of 0x1 */ oneHex: 0x1, /** Value Of +1 */ pOne: +1, /** Value Of -1 */ mOne: -1, array: [1, -1, 1n, -1n], /** Value Of 1n */ onen: 1n, /** Value Of -1n */ mOnen: -1n, /** Value Of "1" */ oneStrDoubleQuote: "1", /** Value Of '1' */ oneStrSingleQuote: '1', /** Value Of `1` */ oneStrTemplate: `1`, /** A method */ method(): void { },} : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: "1"; readonly oneStrTemplate: "1"; readonly method: () => void; } ++>constObject : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: '1'; readonly oneStrTemplate: `1`; readonly method: () => void; } ++>{ /** Value Of 1 */ one: 1, /** Value Of 0o1 */ oneOctal: 0o1, /** Value Of 0x1 */ oneHex: 0x1, /** Value Of +1 */ pOne: +1, /** Value Of -1 */ mOne: -1, array: [1, -1, 1n, -1n], /** Value Of 1n */ onen: 1n, /** Value Of -1n */ mOnen: -1n, /** Value Of "1" */ oneStrDoubleQuote: "1", /** Value Of '1' */ oneStrSingleQuote: '1', /** Value Of `1` */ oneStrTemplate: `1`, /** A method */ method(): void { },} as const : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: '1'; readonly oneStrTemplate: `1`; readonly method: () => void; } ++>{ /** Value Of 1 */ one: 1, /** Value Of 0o1 */ oneOctal: 0o1, /** Value Of 0x1 */ oneHex: 0x1, /** Value Of +1 */ pOne: +1, /** Value Of -1 */ mOne: -1, array: [1, -1, 1n, -1n], /** Value Of 1n */ onen: 1n, /** Value Of -1n */ mOnen: -1n, /** Value Of "1" */ oneStrDoubleQuote: "1", /** Value Of '1' */ oneStrSingleQuote: '1', /** Value Of `1` */ oneStrTemplate: `1`, /** A method */ method(): void { },} : { readonly one: 1; readonly oneOctal: 1; readonly oneHex: 1; readonly pOne: 1; readonly mOne: -1; readonly array: readonly [1, -1, 1n, -1n]; readonly onen: 1n; readonly mOnen: -1n; readonly oneStrDoubleQuote: "1"; readonly oneStrSingleQuote: '1'; readonly oneStrTemplate: `1`; readonly method: () => void; } + + /** Value Of 1 */ + one: 1, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js index 173b8bf10b0..78dbc240dd5 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js @@ -97,16 +97,16 @@ declare function f12(): IterableIterator; declare function f13(): IterableIterator; declare function f14(): IterableIterator; declare const a1: () => Iterable; -declare const a2: () => Iterable; -declare const a3: () => Iterable; +declare const a2: () => Iterable; +declare const a3: () => Iterable; declare const a4: () => Iterable; -declare const a5: () => Iterable; -declare const a6: () => Iterable; -declare const a7: () => Iterable; +declare const a5: () => Iterable; +declare const a6: () => Iterable; +declare const a7: () => Iterable; declare const a8: () => IterableIterator; -declare const a9: () => IterableIterator; -declare const a10: () => IterableIterator; +declare const a9: () => IterableIterator; +declare const a10: () => IterableIterator; declare const a11: () => IterableIterator; -declare const a12: () => IterableIterator; -declare const a13: () => IterableIterator; -declare const a14: () => IterableIterator; +declare const a12: () => IterableIterator; +declare const a13: () => IterableIterator; +declare const a14: () => IterableIterator; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js.diff deleted file mode 100644 index 20f9085af42..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js -+++ new.isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=false).js -@@= skipped -96, +96 lines =@@ - declare function f13(): IterableIterator; - declare function f14(): IterableIterator; - declare const a1: () => Iterable; --declare const a2: () => Iterable; --declare const a3: () => Iterable; -+declare const a2: () => Iterable; -+declare const a3: () => Iterable; - declare const a4: () => Iterable; --declare const a5: () => Iterable; --declare const a6: () => Iterable; --declare const a7: () => Iterable; -+declare const a5: () => Iterable; -+declare const a6: () => Iterable; -+declare const a7: () => Iterable; - declare const a8: () => IterableIterator; --declare const a9: () => IterableIterator; --declare const a10: () => IterableIterator; -+declare const a9: () => IterableIterator; -+declare const a10: () => IterableIterator; - declare const a11: () => IterableIterator; --declare const a12: () => IterableIterator; --declare const a13: () => IterableIterator; --declare const a14: () => IterableIterator; -+declare const a12: () => IterableIterator; -+declare const a13: () => IterableIterator; -+declare const a14: () => IterableIterator; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js index cb304070dd9..78dbc240dd5 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js @@ -97,16 +97,16 @@ declare function f12(): IterableIterator; declare function f13(): IterableIterator; declare function f14(): IterableIterator; declare const a1: () => Iterable; -declare const a2: () => Iterable; -declare const a3: () => Iterable; +declare const a2: () => Iterable; +declare const a3: () => Iterable; declare const a4: () => Iterable; -declare const a5: () => Iterable; -declare const a6: () => Iterable; -declare const a7: () => Iterable; +declare const a5: () => Iterable; +declare const a6: () => Iterable; +declare const a7: () => Iterable; declare const a8: () => IterableIterator; -declare const a9: () => IterableIterator; -declare const a10: () => IterableIterator; +declare const a9: () => IterableIterator; +declare const a10: () => IterableIterator; declare const a11: () => IterableIterator; -declare const a12: () => IterableIterator; -declare const a13: () => IterableIterator; -declare const a14: () => IterableIterator; +declare const a12: () => IterableIterator; +declare const a13: () => IterableIterator; +declare const a14: () => IterableIterator; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js.diff deleted file mode 100644 index e86f5c16549..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js -+++ new.isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=false,strictbuiltiniteratorreturn=true).js -@@= skipped -96, +96 lines =@@ - declare function f13(): IterableIterator; - declare function f14(): IterableIterator; - declare const a1: () => Iterable; --declare const a2: () => Iterable; --declare const a3: () => Iterable; -+declare const a2: () => Iterable; -+declare const a3: () => Iterable; - declare const a4: () => Iterable; --declare const a5: () => Iterable; --declare const a6: () => Iterable; --declare const a7: () => Iterable; -+declare const a5: () => Iterable; -+declare const a6: () => Iterable; -+declare const a7: () => Iterable; - declare const a8: () => IterableIterator; --declare const a9: () => IterableIterator; --declare const a10: () => IterableIterator; -+declare const a9: () => IterableIterator; -+declare const a10: () => IterableIterator; - declare const a11: () => IterableIterator; --declare const a12: () => IterableIterator; --declare const a13: () => IterableIterator; --declare const a14: () => IterableIterator; -+declare const a12: () => IterableIterator; -+declare const a13: () => IterableIterator; -+declare const a14: () => IterableIterator; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js index 173b8bf10b0..78dbc240dd5 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js @@ -97,16 +97,16 @@ declare function f12(): IterableIterator; declare function f13(): IterableIterator; declare function f14(): IterableIterator; declare const a1: () => Iterable; -declare const a2: () => Iterable; -declare const a3: () => Iterable; +declare const a2: () => Iterable; +declare const a3: () => Iterable; declare const a4: () => Iterable; -declare const a5: () => Iterable; -declare const a6: () => Iterable; -declare const a7: () => Iterable; +declare const a5: () => Iterable; +declare const a6: () => Iterable; +declare const a7: () => Iterable; declare const a8: () => IterableIterator; -declare const a9: () => IterableIterator; -declare const a10: () => IterableIterator; +declare const a9: () => IterableIterator; +declare const a10: () => IterableIterator; declare const a11: () => IterableIterator; -declare const a12: () => IterableIterator; -declare const a13: () => IterableIterator; -declare const a14: () => IterableIterator; +declare const a12: () => IterableIterator; +declare const a13: () => IterableIterator; +declare const a14: () => IterableIterator; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js.diff deleted file mode 100644 index 77d7edd32c8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js -+++ new.isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=false).js -@@= skipped -96, +96 lines =@@ - declare function f13(): IterableIterator; - declare function f14(): IterableIterator; - declare const a1: () => Iterable; --declare const a2: () => Iterable; --declare const a3: () => Iterable; -+declare const a2: () => Iterable; -+declare const a3: () => Iterable; - declare const a4: () => Iterable; --declare const a5: () => Iterable; --declare const a6: () => Iterable; --declare const a7: () => Iterable; -+declare const a5: () => Iterable; -+declare const a6: () => Iterable; -+declare const a7: () => Iterable; - declare const a8: () => IterableIterator; --declare const a9: () => IterableIterator; --declare const a10: () => IterableIterator; -+declare const a9: () => IterableIterator; -+declare const a10: () => IterableIterator; - declare const a11: () => IterableIterator; --declare const a12: () => IterableIterator; --declare const a13: () => IterableIterator; --declare const a14: () => IterableIterator; -+declare const a12: () => IterableIterator; -+declare const a13: () => IterableIterator; -+declare const a14: () => IterableIterator; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js index cb304070dd9..78dbc240dd5 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js @@ -97,16 +97,16 @@ declare function f12(): IterableIterator; declare function f13(): IterableIterator; declare function f14(): IterableIterator; declare const a1: () => Iterable; -declare const a2: () => Iterable; -declare const a3: () => Iterable; +declare const a2: () => Iterable; +declare const a3: () => Iterable; declare const a4: () => Iterable; -declare const a5: () => Iterable; -declare const a6: () => Iterable; -declare const a7: () => Iterable; +declare const a5: () => Iterable; +declare const a6: () => Iterable; +declare const a7: () => Iterable; declare const a8: () => IterableIterator; -declare const a9: () => IterableIterator; -declare const a10: () => IterableIterator; +declare const a9: () => IterableIterator; +declare const a10: () => IterableIterator; declare const a11: () => IterableIterator; -declare const a12: () => IterableIterator; -declare const a13: () => IterableIterator; -declare const a14: () => IterableIterator; +declare const a12: () => IterableIterator; +declare const a13: () => IterableIterator; +declare const a14: () => IterableIterator; diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js.diff deleted file mode 100644 index 55910a41b1b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js -+++ new.isolatedDeclarationsStrictBuiltinIteratorReturn(isolateddeclarations=true,strictbuiltiniteratorreturn=true).js -@@= skipped -96, +96 lines =@@ - declare function f13(): IterableIterator; - declare function f14(): IterableIterator; - declare const a1: () => Iterable; --declare const a2: () => Iterable; --declare const a3: () => Iterable; -+declare const a2: () => Iterable; -+declare const a3: () => Iterable; - declare const a4: () => Iterable; --declare const a5: () => Iterable; --declare const a6: () => Iterable; --declare const a7: () => Iterable; -+declare const a5: () => Iterable; -+declare const a6: () => Iterable; -+declare const a7: () => Iterable; - declare const a8: () => IterableIterator; --declare const a9: () => IterableIterator; --declare const a10: () => IterableIterator; -+declare const a9: () => IterableIterator; -+declare const a10: () => IterableIterator; - declare const a11: () => IterableIterator; --declare const a12: () => IterableIterator; --declare const a13: () => IterableIterator; --declare const a14: () => IterableIterator; -+declare const a12: () => IterableIterator; -+declare const a13: () => IterableIterator; -+declare const a14: () => IterableIterator; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/iterableWithNeverAsUnionMember(target=esnext).types b/testdata/baselines/reference/submodule/compiler/iterableWithNeverAsUnionMember(target=esnext).types index 38a140daaee..3c70132a2c4 100644 --- a/testdata/baselines/reference/submodule/compiler/iterableWithNeverAsUnionMember(target=esnext).types +++ b/testdata/baselines/reference/submodule/compiler/iterableWithNeverAsUnionMember(target=esnext).types @@ -26,9 +26,9 @@ for (const elem of x) { // ok elem.toFixed(); >elem.toFixed() : string ->elem.toFixed : (fractionDigits?: number | undefined) => string +>elem.toFixed : (fractionDigits?: number) => string >elem : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } type Shape = @@ -48,8 +48,8 @@ type Circle = Shape & { kind: "circle" }; >kind : "circle" function doStuffWithCircle(arg: Circle | [Circle, (newValue: Circle) => void]) { ->doStuffWithCircle : (arg: [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; })) => void ->arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; }) +>doStuffWithCircle : (arg: Circle | [Circle, (newValue: Circle) => void]) => void +>arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: Circle) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; }) >newValue : { kind: "circle"; radius: number; } & { kind: "circle"; } if (Array.isArray(arg)) { @@ -57,17 +57,17 @@ function doStuffWithCircle(arg: Circle | [Circle, (newValue: Circle) => void]) { >Array.isArray : (arg: any) => arg is any[] >Array : ArrayConstructor >isArray : (arg: any) => arg is any[] ->arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; }) +>arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: Circle) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; }) let [value, setValue] = arg; // ok >value : { kind: "circle"; radius: number; } & { kind: "circle"; } ->setValue : (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void ->arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void] +>setValue : (newValue: Circle) => void +>arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: Circle) => void] } } function f1(x: T) { ->f1 : (x: T) => void +>f1 : (x: T) => void >a : "foo" >a : "bar" >x : T diff --git a/testdata/baselines/reference/submodule/compiler/iterableWithNeverAsUnionMember(target=esnext).types.diff b/testdata/baselines/reference/submodule/compiler/iterableWithNeverAsUnionMember(target=esnext).types.diff deleted file mode 100644 index a775e673ea9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/iterableWithNeverAsUnionMember(target=esnext).types.diff +++ /dev/null @@ -1,47 +0,0 @@ ---- old.iterableWithNeverAsUnionMember(target=esnext).types -+++ new.iterableWithNeverAsUnionMember(target=esnext).types -@@= skipped -25, +25 lines =@@ - - elem.toFixed(); - >elem.toFixed() : string -->elem.toFixed : (fractionDigits?: number) => string -+>elem.toFixed : (fractionDigits?: number | undefined) => string - >elem : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - - type Shape = -@@= skipped -22, +22 lines =@@ - >kind : "circle" - - function doStuffWithCircle(arg: Circle | [Circle, (newValue: Circle) => void]) { -->doStuffWithCircle : (arg: Circle | [Circle, (newValue: Circle) => void]) => void -->arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: Circle) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; }) -+>doStuffWithCircle : (arg: [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; })) => void -+>arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; }) - >newValue : { kind: "circle"; radius: number; } & { kind: "circle"; } - - if (Array.isArray(arg)) { -@@= skipped -9, +9 lines =@@ - >Array.isArray : (arg: any) => arg is any[] - >Array : ArrayConstructor - >isArray : (arg: any) => arg is any[] -->arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: Circle) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; }) -+>arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void] | ({ kind: "circle"; radius: number; } & { kind: "circle"; }) - - let [value, setValue] = arg; // ok - >value : { kind: "circle"; radius: number; } & { kind: "circle"; } -->setValue : (newValue: Circle) => void -->arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: Circle) => void] -+>setValue : (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void -+>arg : [{ kind: "circle"; radius: number; } & { kind: "circle"; }, (newValue: { kind: "circle"; radius: number; } & { kind: "circle"; }) => void] - } - } - - function f1(x: T) { -->f1 : (x: T) => void -+>f1 : (x: T) => void - >a : "foo" - >a : "bar" - >x : T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/iteratorsAndStrictNullChecks.types b/testdata/baselines/reference/submodule/compiler/iteratorsAndStrictNullChecks.types index 771818c77c6..4a408a06306 100644 --- a/testdata/baselines/reference/submodule/compiler/iteratorsAndStrictNullChecks.types +++ b/testdata/baselines/reference/submodule/compiler/iteratorsAndStrictNullChecks.types @@ -9,9 +9,9 @@ for (const x of ["a", "b"]) { >"b" : "b" x.substring; ->x.substring : (start: number, end?: number | undefined) => string +>x.substring : (start: number, end?: number) => string >x : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string } // Spread diff --git a/testdata/baselines/reference/submodule/compiler/iteratorsAndStrictNullChecks.types.diff b/testdata/baselines/reference/submodule/compiler/iteratorsAndStrictNullChecks.types.diff deleted file mode 100644 index 19d4405a411..00000000000 --- a/testdata/baselines/reference/submodule/compiler/iteratorsAndStrictNullChecks.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.iteratorsAndStrictNullChecks.types -+++ new.iteratorsAndStrictNullChecks.types -@@= skipped -8, +8 lines =@@ - >"b" : "b" - - x.substring; -->x.substring : (start: number, end?: number) => string -+>x.substring : (start: number, end?: number | undefined) => string - >x : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - } - - // Spread \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types b/testdata/baselines/reference/submodule/compiler/jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types index 7839c3eb532..896f76dcd3d 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types +++ b/testdata/baselines/reference/submodule/compiler/jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types @@ -21,7 +21,7 @@ export class NewAjax { * @param {LionRequestInit} [init] */ case5_unexpectedlyResolvesPathToNodeModules(init) {} ->case5_unexpectedlyResolvesPathToNodeModules : (init?: import("./node_modules/@lion/ajax/dist-types/types/types.js").LionRequestInit | undefined) => void +>case5_unexpectedlyResolvesPathToNodeModules : (init?: LionRequestInit) => void >init : import("./node_modules/@lion/ajax/dist-types/types/types.js").LionRequestInit | undefined } diff --git a/testdata/baselines/reference/submodule/compiler/jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types.diff b/testdata/baselines/reference/submodule/compiler/jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types.diff index f7fc6f1fbb6..0a18ab9cdb8 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types.diff @@ -1,15 +1,6 @@ --- old.jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types +++ new.jsDocDeclarationEmitDoesNotUseNodeModulesPathWithoutError.types -@@= skipped -20, +20 lines =@@ - * @param {LionRequestInit} [init] - */ - case5_unexpectedlyResolvesPathToNodeModules(init) {} -->case5_unexpectedlyResolvesPathToNodeModules : (init?: LionRequestInit) => void -+>case5_unexpectedlyResolvesPathToNodeModules : (init?: import("./node_modules/@lion/ajax/dist-types/types/types.js").LionRequestInit | undefined) => void - >init : import("./node_modules/@lion/ajax/dist-types/types/types.js").LionRequestInit | undefined - } - -@@= skipped -9, +9 lines =@@ +@@= skipped -29, +29 lines =@@ */ // @ts-expect-error NewAjax.prototype.case6_unexpectedlyResolvesPathToNodeModules; diff --git a/testdata/baselines/reference/submodule/compiler/jsEnumTagOnObjectFrozen.types b/testdata/baselines/reference/submodule/compiler/jsEnumTagOnObjectFrozen.types index 3c115330a88..19d92f95619 100644 --- a/testdata/baselines/reference/submodule/compiler/jsEnumTagOnObjectFrozen.types +++ b/testdata/baselines/reference/submodule/compiler/jsEnumTagOnObjectFrozen.types @@ -51,9 +51,9 @@ cbThing(type => { const Thing = Object.freeze({ >Thing : Readonly<{ a: "thing"; b: "chill"; }> >Object.freeze({ a: "thing", b: "chill"}) : Readonly<{ a: "thing"; b: "chill"; }> ->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: "thing", b: "chill"} : { a: "thing"; b: "chill"; } a: "thing", diff --git a/testdata/baselines/reference/submodule/compiler/jsEnumTagOnObjectFrozen.types.diff b/testdata/baselines/reference/submodule/compiler/jsEnumTagOnObjectFrozen.types.diff index 32e52f30f5e..d3d6c617319 100644 --- a/testdata/baselines/reference/submodule/compiler/jsEnumTagOnObjectFrozen.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsEnumTagOnObjectFrozen.types.diff @@ -26,19 +26,7 @@ }; }); -@@= skipped -10, +10 lines =@@ - const Thing = Object.freeze({ - >Thing : Readonly<{ a: "thing"; b: "chill"; }> - >Object.freeze({ a: "thing", b: "chill"}) : Readonly<{ a: "thing"; b: "chill"; }> -->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: "thing", b: "chill"} : { a: "thing"; b: "chill"; } - - a: "thing", -@@= skipped -27, +27 lines =@@ +@@= skipped -37, +37 lines =@@ */ function useThing(x) {} >useThing : (x: Thing) => void diff --git a/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads.types b/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads.types index aaff87ee303..fb2265c8d59 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads.types +++ b/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads.types @@ -21,7 +21,7 @@ * @returns {string} */ function getTypeName(x) { ->getTypeName : { (x: number): "number"; (x: string): "string"; (x: boolean): "boolean"; } +>getTypeName : { (x: number): 'number'; (x: string): 'string'; (x: boolean): 'boolean'; } >x : unknown return typeof x; diff --git a/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads.types.diff b/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads.types.diff index ff629280dbc..f70f0ed2736 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads.types.diff @@ -1,6 +1,15 @@ --- old.jsFileFunctionOverloads.types +++ new.jsFileFunctionOverloads.types -@@= skipped -62, +62 lines =@@ +@@= skipped -20, +20 lines =@@ + * @returns {string} + */ + function getTypeName(x) { +->getTypeName : { (x: number): "number"; (x: string): "string"; (x: boolean): "boolean"; } ++>getTypeName : { (x: number): 'number'; (x: string): 'string'; (x: boolean): 'boolean'; } + >x : unknown + + return typeof x; +@@= skipped -42, +42 lines =@@ >flatMap : { (array: T[], iterable: (x: T) => U[]): U[]; (array: T[][]): T[]; } >array : unknown[] >iterable : (x: unknown) => unknown diff --git a/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads2.types b/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads2.types index be1a9f1e05c..ffb8eadd959 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads2.types +++ b/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads2.types @@ -19,7 +19,7 @@ * @returns {string} */ function getTypeName(x) { ->getTypeName : { (x: number): "number"; (x: string): "string"; (x: boolean): "boolean"; } +>getTypeName : { (x: number): 'number'; (x: string): 'string'; (x: boolean): 'boolean'; } >x : unknown return typeof x; diff --git a/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads2.types.diff b/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads2.types.diff index fd4bb23a149..4d44db9d4bc 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsFileFunctionOverloads2.types.diff @@ -1,6 +1,15 @@ --- old.jsFileFunctionOverloads2.types +++ new.jsFileFunctionOverloads2.types -@@= skipped -54, +54 lines =@@ +@@= skipped -18, +18 lines =@@ + * @returns {string} + */ + function getTypeName(x) { +->getTypeName : { (x: number): "number"; (x: string): "string"; (x: boolean): "boolean"; } ++>getTypeName : { (x: number): 'number'; (x: string): 'string'; (x: boolean): 'boolean'; } + >x : unknown + + return typeof x; +@@= skipped -36, +36 lines =@@ * @returns {unknown[]} */ function flatMap(array, iterable = identity) { diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads.types b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads.types index 96904bd0cbe..48a2fd56e29 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads.types +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads.types @@ -35,7 +35,7 @@ * @returns {string} */ getTypeName() { ->getTypeName : { (this: Example): "number"; (this: Example): "string"; } +>getTypeName : { (this: Example): 'number'; (this: Example): 'string'; } return typeof this.value; >typeof this.value : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads.types.diff b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads.types.diff new file mode 100644 index 00000000000..1f7efb5ae9b --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads.types.diff @@ -0,0 +1,11 @@ +--- old.jsFileMethodOverloads.types ++++ new.jsFileMethodOverloads.types +@@= skipped -34, +34 lines =@@ + * @returns {string} + */ + getTypeName() { +->getTypeName : { (this: Example): "number"; (this: Example): "string"; } ++>getTypeName : { (this: Example): 'number'; (this: Example): 'string'; } + + return typeof this.value; + >typeof this.value : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads2.types b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads2.types index bc16a738aa0..fcb6976b81b 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads2.types +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads2.types @@ -34,7 +34,7 @@ * @returns {string} */ getTypeName() { ->getTypeName : { (this: Example): "number"; (this: Example): "string"; } +>getTypeName : { (this: Example): 'number'; (this: Example): 'string'; } return typeof this.value; >typeof this.value : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads2.types.diff b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads2.types.diff index 7af68d058f5..419e54ad7ce 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads2.types.diff @@ -1,6 +1,15 @@ --- old.jsFileMethodOverloads2.types +++ new.jsFileMethodOverloads2.types -@@= skipped -55, +55 lines =@@ +@@= skipped -33, +33 lines =@@ + * @returns {string} + */ + getTypeName() { +->getTypeName : { (this: Example): "number"; (this: Example): "string"; } ++>getTypeName : { (this: Example): 'number'; (this: Example): 'string'; } + + return typeof this.value; + >typeof this.value : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" +@@= skipped -22, +22 lines =@@ * @returns {unknown} */ transform(fn) { diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads4.types b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads4.types index 24c8b413da2..15a0b011256 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads4.types +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads4.types @@ -23,13 +23,13 @@ export function Foo() { } * @return {void} */ Foo.prototype.bar = function (a, b) { } ->Foo.prototype.bar = function (a, b) { } : (a: string | number, b?: string | undefined) => void +>Foo.prototype.bar = function (a, b) { } : (a: string | number, b?: string) => void >Foo.prototype.bar : any >Foo.prototype : any >Foo : () => void >prototype : any >bar : any ->function (a, b) { } : (a: string | number, b?: string | undefined) => void +>function (a, b) { } : (a: string | number, b?: string) => void >a : string | number >b : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads4.types.diff b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads4.types.diff index 1473d0d9bee..76f71c53d45 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads4.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads4.types.diff @@ -14,7 +14,7 @@ */ Foo.prototype.bar = function (a, b) { } ->Foo.prototype.bar = function (a, b) { } : { (a: string): void; (a: number, b: string): void; } -+>Foo.prototype.bar = function (a, b) { } : (a: string | number, b?: string | undefined) => void ++>Foo.prototype.bar = function (a, b) { } : (a: string | number, b?: string) => void >Foo.prototype.bar : any >Foo.prototype : any ->Foo : typeof Foo @@ -22,6 +22,6 @@ >prototype : any >bar : any ->function (a, b) { } : { (a: string): void; (a: number, b: string): void; } -+>function (a, b) { } : (a: string | number, b?: string | undefined) => void ++>function (a, b) { } : (a: string | number, b?: string) => void >a : string | number >b : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.js b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.js index 8daa77598f3..77afcc7088c 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.js +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.js @@ -39,4 +39,4 @@ export const foo = function (a, b) { } * @param {string | number} a * @param {number} [b] */ -export declare const foo: (a: string | number, b?: number | undefined) => void; +export declare const foo: (a: string | number, b?: number) => void; diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.js.diff b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.js.diff index 80954680f17..8619edf3b95 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.js.diff +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.js.diff @@ -16,4 +16,4 @@ + * @param {string | number} a + * @param {number} [b] + */ -+export declare const foo: (a: string | number, b?: number | undefined) => void; \ No newline at end of file ++export declare const foo: (a: string | number, b?: number) => void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.types b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.types index 950bdeab780..80a34b8ad16 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.types +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.types @@ -19,8 +19,8 @@ * @param {number} [b] */ export const foo = function (a, b) { } ->foo : (a: string | number, b?: number | undefined) => void ->function (a, b) { } : (a: string | number, b?: number | undefined) => void +>foo : (a: string | number, b?: number) => void +>function (a, b) { } : (a: string | number, b?: number) => void >a : string | number >b : number | undefined diff --git a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.types.diff b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.types.diff index 343d59f297c..a9641c4716f 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsFileMethodOverloads5.types.diff @@ -6,7 +6,7 @@ export const foo = function (a, b) { } ->foo : { (a: string): void; (a: number, b?: number | undefined): void; } ->function (a, b) { } : { (a: string): void; (a: number, b?: number | undefined): void; } -+>foo : (a: string | number, b?: number | undefined) => void -+>function (a, b) { } : (a: string | number, b?: number | undefined) => void ++>foo : (a: string | number, b?: number) => void ++>function (a, b) { } : (a: string | number, b?: number) => void >a : string | number >b : number | undefined diff --git a/testdata/baselines/reference/submodule/compiler/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types b/testdata/baselines/reference/submodule/compiler/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types index 7ee14cd593c..4a0539f4828 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types +++ b/testdata/baselines/reference/submodule/compiler/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types @@ -2,7 +2,7 @@ === index.js === function Color(obj) { ->Color : { (obj: any): void; prototype: { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; } +>Color : { (obj: any): void; prototype: { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; }; } >obj : any this.example = true @@ -14,15 +14,15 @@ function Color(obj) { }; Color.prototype = { ->Color.prototype = { negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } ->Color.prototype : { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } ->Color : { (obj: any): void; prototype: { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; } ->prototype : { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } ->{ negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } +>Color.prototype = { negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; } +>Color.prototype : { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; } +>Color : { (obj: any): void; prototype: { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; }; } +>prototype : { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; } +>{ negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; } negate: function () {return this;}, ->negate : () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } ->function () {return this;} : () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } +>negate : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } +>function () {return this;} : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } >this : { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } lighten: function (ratio) {return this;}, @@ -62,8 +62,8 @@ Color.prototype = { >this : { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } greyscale: function () {return this;}, ->greyscale : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: any; clearer: (ratio: any) => any; toJSON: () => any; } ->function () {return this;} : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: any; clearer: (ratio: any) => any; toJSON: () => any; } +>greyscale : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } +>function () {return this;} : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } >this : { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } clearer: function (ratio) {return this;}, diff --git a/testdata/baselines/reference/submodule/compiler/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types.diff b/testdata/baselines/reference/submodule/compiler/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types.diff index 80a21076a62..b5249b2cccf 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types.diff @@ -5,7 +5,7 @@ === index.js === function Color(obj) { ->Color : typeof Color -+>Color : { (obj: any): void; prototype: { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; } ++>Color : { (obj: any): void; prototype: { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; }; } >obj : any this.example = true @@ -23,18 +23,18 @@ ->Color : typeof Color ->prototype : { negate: () => this; lighten: (ratio: any) => this; darken: (ratio: any) => this; saturate: (ratio: any) => this; desaturate: (ratio: any) => this; whiten: (ratio: any) => this; blacken: (ratio: any) => this; greyscale: () => this; clearer: (ratio: any) => this; toJSON: () => any; } ->{ negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => this; lighten: (ratio: any) => this; darken: (ratio: any) => this; saturate: (ratio: any) => this; desaturate: (ratio: any) => this; whiten: (ratio: any) => this; blacken: (ratio: any) => this; greyscale: () => this; clearer: (ratio: any) => this; toJSON: () => any; } -+>Color.prototype = { negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } -+>Color.prototype : { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } -+>Color : { (obj: any): void; prototype: { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; } -+>prototype : { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } -+>{ negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } ++>Color.prototype = { negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; } ++>Color.prototype : { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; } ++>Color : { (obj: any): void; prototype: { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; }; } ++>prototype : { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; } ++>{ negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; }; clearer: (ratio: any) => any; toJSON: () => any; } negate: function () {return this;}, ->negate : () => this ->function () {return this;} : () => this ->this : this -+>negate : () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } -+>function () {return this;} : () => { negate: any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } ++>negate : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } ++>function () {return this;} : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } +>this : { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } lighten: function (ratio) {return this;}, @@ -95,8 +95,8 @@ ->greyscale : () => this ->function () {return this;} : () => this ->this : this -+>greyscale : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: any; clearer: (ratio: any) => any; toJSON: () => any; } -+>function () {return this;} : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: any; clearer: (ratio: any) => any; toJSON: () => any; } ++>greyscale : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } ++>function () {return this;} : () => { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } +>this : { negate: () => any; lighten: (ratio: any) => any; darken: (ratio: any) => any; saturate: (ratio: any) => any; desaturate: (ratio: any) => any; whiten: (ratio: any) => any; blacken: (ratio: any) => any; greyscale: () => any; clearer: (ratio: any) => any; toJSON: () => any; } clearer: function (ratio) {return this;}, diff --git a/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseImplicitAny.types b/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseImplicitAny.types index 24869748d54..d6975a4d8b1 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseImplicitAny.types +++ b/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseImplicitAny.types @@ -18,7 +18,7 @@ var numberArray = [5]; * @return {Array} */ function returnAnyArray(arr) { ->returnAnyArray : (arr: any[]) => any[] +>returnAnyArray : (arr: Array) => Array >arr : any[] return arr; @@ -48,7 +48,7 @@ var numberPromise = Promise.resolve(5); * @return {Promise} */ function returnAnyPromise(pr) { ->returnAnyPromise : (pr: Promise) => Promise +>returnAnyPromise : (pr: Promise) => Promise >pr : Promise return pr; diff --git a/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseImplicitAny.types.diff b/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseImplicitAny.types.diff index 61a0878dd08..f66b251c7ea 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseImplicitAny.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseImplicitAny.types.diff @@ -1,6 +1,24 @@ --- old.jsdocArrayObjectPromiseImplicitAny.types +++ new.jsdocArrayObjectPromiseImplicitAny.types -@@= skipped -56, +56 lines =@@ +@@= skipped -17, +17 lines =@@ + * @return {Array} + */ + function returnAnyArray(arr) { +->returnAnyArray : (arr: any[]) => any[] ++>returnAnyArray : (arr: Array) => Array + >arr : any[] + + return arr; +@@= skipped -30, +30 lines =@@ + * @return {Promise} + */ + function returnAnyPromise(pr) { +->returnAnyPromise : (pr: Promise) => Promise ++>returnAnyPromise : (pr: Promise) => Promise + >pr : Promise + + return pr; +@@= skipped -9, +9 lines =@@ /** @type {Object} */ var anyObject = {valueOf: 1}; // not an error since assigning to any. diff --git a/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseNoImplicitAny.types b/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseNoImplicitAny.types index 3b7748c4ba2..3aa0d697bd8 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseNoImplicitAny.types +++ b/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseNoImplicitAny.types @@ -18,7 +18,7 @@ var numberArray = [5]; * @return {Array} */ function returnNotAnyArray(arr) { ->returnNotAnyArray : (arr: any[]) => any[] +>returnNotAnyArray : (arr: Array) => Array >arr : any[] return arr; @@ -48,7 +48,7 @@ var numberPromise = Promise.resolve(5); * @return {Promise} */ function returnNotAnyPromise(pr) { ->returnNotAnyPromise : (pr: Promise) => Promise +>returnNotAnyPromise : (pr: Promise) => Promise >pr : Promise return pr; diff --git a/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseNoImplicitAny.types.diff b/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseNoImplicitAny.types.diff index 07347fb1e08..e48202b28db 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseNoImplicitAny.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsdocArrayObjectPromiseNoImplicitAny.types.diff @@ -1,6 +1,24 @@ --- old.jsdocArrayObjectPromiseNoImplicitAny.types +++ new.jsdocArrayObjectPromiseNoImplicitAny.types -@@= skipped -63, +63 lines =@@ +@@= skipped -17, +17 lines =@@ + * @return {Array} + */ + function returnNotAnyArray(arr) { +->returnNotAnyArray : (arr: any[]) => any[] ++>returnNotAnyArray : (arr: Array) => Array + >arr : any[] + + return arr; +@@= skipped -30, +30 lines =@@ + * @return {Promise} + */ + function returnNotAnyPromise(pr) { +->returnNotAnyPromise : (pr: Promise) => Promise ++>returnNotAnyPromise : (pr: Promise) => Promise + >pr : Promise + + return pr; +@@= skipped -16, +16 lines =@@ /** @type {Object} */ var paramedObject = {valueOf: 1}; diff --git a/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.errors.txt b/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.errors.txt index 5a5cdfddd4a..b5c0ea88b6a 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.errors.txt @@ -27,5 +27,5 @@ index.js(20,16): error TS2322: Type '"other"' is not assignable to type '"bar" | const obj2 = { type: "other", prop: 10 }; ~~~~ !!! error TS2322: Type '"other"' is not assignable to type '"bar" | "foo"'. -!!! related TS6500 index.js:19:14: The expected type comes from property 'type' which is declared here on type '({ type: "foo"; } | { type: "bar"; }) & { prop: number; }' +!!! related TS6500 index.js:19:14: The expected type comes from property 'type' which is declared here on type '({ type: 'foo'; } | { type: 'bar'; }) & { prop: number; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.errors.txt.diff new file mode 100644 index 00000000000..a7c65471611 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.errors.txt.diff @@ -0,0 +1,9 @@ +--- old.jsdocBracelessTypeTag1.errors.txt ++++ new.jsdocBracelessTypeTag1.errors.txt +@@= skipped -26, +26 lines =@@ + const obj2 = { type: "other", prop: 10 }; + ~~~~ + !!! error TS2322: Type '"other"' is not assignable to type '"bar" | "foo"'. +-!!! related TS6500 index.js:19:14: The expected type comes from property 'type' which is declared here on type '({ type: "foo"; } | { type: "bar"; }) & { prop: number; }' ++!!! related TS6500 index.js:19:14: The expected type comes from property 'type' which is declared here on type '({ type: 'foo'; } | { type: 'bar'; }) & { prop: number; }' + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.types b/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.types index 670d5bd9337..8f9dda394e5 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.types +++ b/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.types @@ -28,7 +28,7 @@ function fn3(arg) { /** @type ({ type: 'foo' } | { type: 'bar' }) & { prop: number } */ const obj1 = { type: "foo", prop: 10 }; ->obj1 : ({ type: "foo"; } | { type: "bar"; }) & { prop: number; } +>obj1 : ({ type: 'foo'; } | { type: 'bar'; }) & { prop: number; } >{ type: "foo", prop: 10 } : { type: "foo"; prop: number; } >type : "foo" >"foo" : "foo" @@ -37,7 +37,7 @@ const obj1 = { type: "foo", prop: 10 }; /** @type ({ type: 'foo' } | { type: 'bar' }) & { prop: number } */ const obj2 = { type: "other", prop: 10 }; ->obj2 : ({ type: "foo"; } | { type: "bar"; }) & { prop: number; } +>obj2 : ({ type: 'foo'; } | { type: 'bar'; }) & { prop: number; } >{ type: "other", prop: 10 } : { type: "other"; prop: number; } >type : "other" >"other" : "other" diff --git a/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.types.diff b/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.types.diff new file mode 100644 index 00000000000..fc98b00d312 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/jsdocBracelessTypeTag1.types.diff @@ -0,0 +1,20 @@ +--- old.jsdocBracelessTypeTag1.types ++++ new.jsdocBracelessTypeTag1.types +@@= skipped -27, +27 lines =@@ + + /** @type ({ type: 'foo' } | { type: 'bar' }) & { prop: number } */ + const obj1 = { type: "foo", prop: 10 }; +->obj1 : ({ type: "foo"; } | { type: "bar"; }) & { prop: number; } ++>obj1 : ({ type: 'foo'; } | { type: 'bar'; }) & { prop: number; } + >{ type: "foo", prop: 10 } : { type: "foo"; prop: number; } + >type : "foo" + >"foo" : "foo" +@@= skipped -9, +9 lines =@@ + + /** @type ({ type: 'foo' } | { type: 'bar' }) & { prop: number } */ + const obj2 = { type: "other", prop: 10 }; +->obj2 : ({ type: "foo"; } | { type: "bar"; }) & { prop: number; } ++>obj2 : ({ type: 'foo'; } | { type: 'bar'; }) & { prop: number; } + >{ type: "other", prop: 10 } : { type: "other"; prop: number; } + >type : "other" + >"other" : "other" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsdocClassMissingTypeArguments.types b/testdata/baselines/reference/submodule/compiler/jsdocClassMissingTypeArguments.types index cf0f14ca4dd..b03041d8562 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocClassMissingTypeArguments.types +++ b/testdata/baselines/reference/submodule/compiler/jsdocClassMissingTypeArguments.types @@ -7,6 +7,6 @@ class C {} /** @param {C} p */ function f(p) {} ->f : (p: C) => void +>f : (p: C) => void >p : C diff --git a/testdata/baselines/reference/submodule/compiler/jsdocClassMissingTypeArguments.types.diff b/testdata/baselines/reference/submodule/compiler/jsdocClassMissingTypeArguments.types.diff new file mode 100644 index 00000000000..bf2e4bb0f3a --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/jsdocClassMissingTypeArguments.types.diff @@ -0,0 +1,9 @@ +--- old.jsdocClassMissingTypeArguments.types ++++ new.jsdocClassMissingTypeArguments.types +@@= skipped -6, +6 lines =@@ + + /** @param {C} p */ + function f(p) {} +->f : (p: C) => void ++>f : (p: C) => void + >p : C diff --git a/testdata/baselines/reference/submodule/compiler/jsdocResolveNameFailureInTypedef.types b/testdata/baselines/reference/submodule/compiler/jsdocResolveNameFailureInTypedef.types index dbb176d8b99..1153551c983 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocResolveNameFailureInTypedef.types +++ b/testdata/baselines/reference/submodule/compiler/jsdocResolveNameFailureInTypedef.types @@ -5,7 +5,7 @@ * @param {Ty} x */ function f(x) {} ->f : (x: CantResolveThis) => void +>f : (x: Ty) => void >x : CantResolveThis /** diff --git a/testdata/baselines/reference/submodule/compiler/jsdocResolveNameFailureInTypedef.types.diff b/testdata/baselines/reference/submodule/compiler/jsdocResolveNameFailureInTypedef.types.diff deleted file mode 100644 index ff6182fe266..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsdocResolveNameFailureInTypedef.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.jsdocResolveNameFailureInTypedef.types -+++ new.jsdocResolveNameFailureInTypedef.types -@@= skipped -4, +4 lines =@@ - * @param {Ty} x - */ - function f(x) {} -->f : (x: Ty) => void -+>f : (x: CantResolveThis) => void - >x : CantResolveThis - - /** \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsdocTypeGenericInstantiationAttempt.types b/testdata/baselines/reference/submodule/compiler/jsdocTypeGenericInstantiationAttempt.types index e4bf7c27502..7650504e27c 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocTypeGenericInstantiationAttempt.types +++ b/testdata/baselines/reference/submodule/compiler/jsdocTypeGenericInstantiationAttempt.types @@ -5,7 +5,7 @@ * @param {Array<*>} list */ function thing(list) { ->thing : (list: any[]) => any[] +>thing : (list: Array) => any[] >list : any[] return list; diff --git a/testdata/baselines/reference/submodule/compiler/jsdocTypeGenericInstantiationAttempt.types.diff b/testdata/baselines/reference/submodule/compiler/jsdocTypeGenericInstantiationAttempt.types.diff deleted file mode 100644 index ff844fccd87..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsdocTypeGenericInstantiationAttempt.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.jsdocTypeGenericInstantiationAttempt.types -+++ new.jsdocTypeGenericInstantiationAttempt.types -@@= skipped -4, +4 lines =@@ - * @param {Array<*>} list - */ - function thing(list) { -->thing : (list: Array) => any[] -+>thing : (list: any[]) => any[] - >list : any[] - - return list; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsdocTypeNongenericInstantiationAttempt.types b/testdata/baselines/reference/submodule/compiler/jsdocTypeNongenericInstantiationAttempt.types index 1783c242b0e..cb305ab0faa 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocTypeNongenericInstantiationAttempt.types +++ b/testdata/baselines/reference/submodule/compiler/jsdocTypeNongenericInstantiationAttempt.types @@ -5,13 +5,13 @@ * @param {(m: Boolean) => string} somebody */ function sayHello(somebody) { ->sayHello : (somebody: (m: any) => string) => string ->somebody : (m: any) => string +>sayHello : (somebody: (m: Boolean) => string) => string +>somebody : (m: Boolean) => string return 'Hello ' + somebody; >'Hello ' + somebody : string >'Hello ' : "Hello " ->somebody : (m: any) => string +>somebody : (m: Boolean) => string } === index2.js === @@ -49,13 +49,13 @@ function sayHello3(somebody) { * @param {(m: Function) => string} somebody */ function sayHello4(somebody) { ->sayHello4 : (somebody: (m: any) => string) => string ->somebody : (m: any) => string +>sayHello4 : (somebody: (m: Function) => string) => string +>somebody : (m: Function) => string return 'Hello ' + somebody; >'Hello ' + somebody : string >'Hello ' : "Hello " ->somebody : (m: any) => string +>somebody : (m: Function) => string } @@ -64,13 +64,13 @@ function sayHello4(somebody) { * @param {(m: String) => string} somebody */ function sayHello5(somebody) { ->sayHello5 : (somebody: (m: any) => string) => string ->somebody : (m: any) => string +>sayHello5 : (somebody: (m: String) => string) => string +>somebody : (m: String) => string return 'Hello ' + somebody; >'Hello ' + somebody : string >'Hello ' : "Hello " ->somebody : (m: any) => string +>somebody : (m: String) => string } @@ -79,13 +79,13 @@ function sayHello5(somebody) { * @param {(m: Number) => string} somebody */ function sayHello6(somebody) { ->sayHello6 : (somebody: (m: any) => string) => string ->somebody : (m: any) => string +>sayHello6 : (somebody: (m: Number) => string) => string +>somebody : (m: Number) => string return 'Hello ' + somebody; >'Hello ' + somebody : string >'Hello ' : "Hello " ->somebody : (m: any) => string +>somebody : (m: Number) => string } @@ -94,13 +94,13 @@ function sayHello6(somebody) { * @param {(m: Object) => string} somebody */ function sayHello7(somebody) { ->sayHello7 : (somebody: (m: any) => string) => string ->somebody : (m: any) => string +>sayHello7 : (somebody: (m: Object) => string) => string +>somebody : (m: Object) => string return 'Hello ' + somebody; >'Hello ' + somebody : string >'Hello ' : "Hello " ->somebody : (m: any) => string +>somebody : (m: Object) => string } === index8.js === diff --git a/testdata/baselines/reference/submodule/compiler/jsdocTypeNongenericInstantiationAttempt.types.diff b/testdata/baselines/reference/submodule/compiler/jsdocTypeNongenericInstantiationAttempt.types.diff index 56d68c605b4..e2602506452 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocTypeNongenericInstantiationAttempt.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsdocTypeNongenericInstantiationAttempt.types.diff @@ -6,14 +6,14 @@ function sayHello(somebody) { ->sayHello : (somebody: (m: boolean) => string) => string ->somebody : (m: boolean) => string -+>sayHello : (somebody: (m: any) => string) => string -+>somebody : (m: any) => string ++>sayHello : (somebody: (m: Boolean) => string) => string ++>somebody : (m: Boolean) => string return 'Hello ' + somebody; >'Hello ' + somebody : string >'Hello ' : "Hello " ->somebody : (m: boolean) => string -+>somebody : (m: any) => string ++>somebody : (m: Boolean) => string } === index2.js === @@ -57,14 +57,14 @@ function sayHello4(somebody) { ->sayHello4 : (somebody: (m: Function) => string) => string ->somebody : (m: Function) => string -+>sayHello4 : (somebody: (m: any) => string) => string -+>somebody : (m: any) => string ++>sayHello4 : (somebody: (m: Function) => string) => string ++>somebody : (m: Function) => string return 'Hello ' + somebody; >'Hello ' + somebody : string >'Hello ' : "Hello " ->somebody : (m: Function) => string -+>somebody : (m: any) => string ++>somebody : (m: Function) => string } @@ -74,14 +74,14 @@ function sayHello5(somebody) { ->sayHello5 : (somebody: (m: string) => string) => string ->somebody : (m: string) => string -+>sayHello5 : (somebody: (m: any) => string) => string -+>somebody : (m: any) => string ++>sayHello5 : (somebody: (m: String) => string) => string ++>somebody : (m: String) => string return 'Hello ' + somebody; >'Hello ' + somebody : string >'Hello ' : "Hello " ->somebody : (m: string) => string -+>somebody : (m: any) => string ++>somebody : (m: String) => string } @@ -91,35 +91,18 @@ function sayHello6(somebody) { ->sayHello6 : (somebody: (m: number) => string) => string ->somebody : (m: number) => string -+>sayHello6 : (somebody: (m: any) => string) => string -+>somebody : (m: any) => string ++>sayHello6 : (somebody: (m: Number) => string) => string ++>somebody : (m: Number) => string return 'Hello ' + somebody; >'Hello ' + somebody : string >'Hello ' : "Hello " ->somebody : (m: number) => string -+>somebody : (m: any) => string ++>somebody : (m: Number) => string } -@@= skipped -15, +15 lines =@@ - * @param {(m: Object) => string} somebody - */ - function sayHello7(somebody) { -->sayHello7 : (somebody: (m: Object) => string) => string -->somebody : (m: Object) => string -+>sayHello7 : (somebody: (m: any) => string) => string -+>somebody : (m: any) => string - - return 'Hello ' + somebody; - >'Hello ' + somebody : string - >'Hello ' : "Hello " -->somebody : (m: Object) => string -+>somebody : (m: any) => string - } - - === index8.js === -@@= skipped -17, +17 lines =@@ +@@= skipped -32, +32 lines =@@ * @param {fn} somebody */ function sayHello8(somebody) { } diff --git a/testdata/baselines/reference/submodule/compiler/jsdocTypedefBeforeParenthesizedExpression.types b/testdata/baselines/reference/submodule/compiler/jsdocTypedefBeforeParenthesizedExpression.types index 6a018ffbb17..daf5fa0ecd4 100644 --- a/testdata/baselines/reference/submodule/compiler/jsdocTypedefBeforeParenthesizedExpression.types +++ b/testdata/baselines/reference/submodule/compiler/jsdocTypedefBeforeParenthesizedExpression.types @@ -27,7 +27,7 @@ * @param b {AlsoNotADuplicate} */ function makeSureTypedefsAreStillRecognized(a, b) {} ->makeSureTypedefsAreStillRecognized : (a: number, b: number) => void +>makeSureTypedefsAreStillRecognized : (a: NotADuplicateIdentifier, b: AlsoNotADuplicate) => void >a : number >b : number diff --git a/testdata/baselines/reference/submodule/compiler/jsdocTypedefBeforeParenthesizedExpression.types.diff b/testdata/baselines/reference/submodule/compiler/jsdocTypedefBeforeParenthesizedExpression.types.diff new file mode 100644 index 00000000000..1c77984b899 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/jsdocTypedefBeforeParenthesizedExpression.types.diff @@ -0,0 +1,10 @@ +--- old.jsdocTypedefBeforeParenthesizedExpression.types ++++ new.jsdocTypedefBeforeParenthesizedExpression.types +@@= skipped -26, +26 lines =@@ + * @param b {AlsoNotADuplicate} + */ + function makeSureTypedefsAreStillRecognized(a, b) {} +->makeSureTypedefsAreStillRecognized : (a: number, b: number) => void ++>makeSureTypedefsAreStillRecognized : (a: NotADuplicateIdentifier, b: AlsoNotADuplicate) => void + >a : number + >b : number diff --git a/testdata/baselines/reference/submodule/compiler/json.stringify.types b/testdata/baselines/reference/submodule/compiler/json.stringify.types index 6f4ad8fbd92..b563d446972 100644 --- a/testdata/baselines/reference/submodule/compiler/json.stringify.types +++ b/testdata/baselines/reference/submodule/compiler/json.stringify.types @@ -6,26 +6,26 @@ var value = null; JSON.stringify(value, undefined, 2); >JSON.stringify(value, undefined, 2) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >value : null >undefined : undefined >2 : 2 JSON.stringify(value, null, 2); >JSON.stringify(value, null, 2) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >value : null >2 : 2 JSON.stringify(value, ["a", 1], 2); >JSON.stringify(value, ["a", 1], 2) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >value : null >["a", 1] : (string | number)[] >"a" : "a" @@ -34,9 +34,9 @@ JSON.stringify(value, ["a", 1], 2); JSON.stringify(value, (k) => undefined, 2); >JSON.stringify(value, (k) => undefined, 2) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >value : null >(k) => undefined : (this: any, k: string) => undefined >k : string @@ -45,9 +45,9 @@ JSON.stringify(value, (k) => undefined, 2); JSON.stringify(value, undefined, 2); >JSON.stringify(value, undefined, 2) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >value : null >undefined : undefined >2 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/json.stringify.types.diff b/testdata/baselines/reference/submodule/compiler/json.stringify.types.diff deleted file mode 100644 index 07f58688903..00000000000 --- a/testdata/baselines/reference/submodule/compiler/json.stringify.types.diff +++ /dev/null @@ -1,59 +0,0 @@ ---- old.json.stringify.types -+++ new.json.stringify.types -@@= skipped -5, +5 lines =@@ - - JSON.stringify(value, undefined, 2); - >JSON.stringify(value, undefined, 2) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >value : null - >undefined : undefined - >2 : 2 - - JSON.stringify(value, null, 2); - >JSON.stringify(value, null, 2) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >value : null - >2 : 2 - - JSON.stringify(value, ["a", 1], 2); - >JSON.stringify(value, ["a", 1], 2) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >value : null - >["a", 1] : (string | number)[] - >"a" : "a" -@@= skipped -28, +28 lines =@@ - - JSON.stringify(value, (k) => undefined, 2); - >JSON.stringify(value, (k) => undefined, 2) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >value : null - >(k) => undefined : (this: any, k: string) => undefined - >k : string -@@= skipped -11, +11 lines =@@ - - JSON.stringify(value, undefined, 2); - >JSON.stringify(value, undefined, 2) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >value : null - >undefined : undefined - >2 : 2 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxCallElaborationCheckNoCrash1.types b/testdata/baselines/reference/submodule/compiler/jsxCallElaborationCheckNoCrash1.types index ca5aae6ecd6..a62e4d21b46 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxCallElaborationCheckNoCrash1.types +++ b/testdata/baselines/reference/submodule/compiler/jsxCallElaborationCheckNoCrash1.types @@ -10,8 +10,8 @@ type Tags = "span" | "div"; >Tags : Tags export const Hoc = ( ->Hoc : (TagElement: Tag) => React.SFC<{}> ->( TagElement: Tag,): React.SFC => { const Component = () => ; return Component;} : (TagElement: Tag) => React.SFC<{}> +>Hoc : (TagElement: Tag) => React.SFC +>( TagElement: Tag,): React.SFC => { const Component = () => ; return Component;} : (TagElement: Tag) => React.SFC TagElement: Tag, >TagElement : Tag diff --git a/testdata/baselines/reference/submodule/compiler/jsxCallElaborationCheckNoCrash1.types.diff b/testdata/baselines/reference/submodule/compiler/jsxCallElaborationCheckNoCrash1.types.diff deleted file mode 100644 index ce054bcd95d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxCallElaborationCheckNoCrash1.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.jsxCallElaborationCheckNoCrash1.types -+++ new.jsxCallElaborationCheckNoCrash1.types -@@= skipped -9, +9 lines =@@ - >Tags : Tags - - export const Hoc = ( -->Hoc : (TagElement: Tag) => React.SFC -->( TagElement: Tag,): React.SFC => { const Component = () => ; return Component;} : (TagElement: Tag) => React.SFC -+>Hoc : (TagElement: Tag) => React.SFC<{}> -+>( TagElement: Tag,): React.SFC => { const Component = () => ; return Component;} : (TagElement: Tag) => React.SFC<{}> - - TagElement: Tag, - >TagElement : Tag \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxCallbackWithDestructuring.types b/testdata/baselines/reference/submodule/compiler/jsxCallbackWithDestructuring.types index a6ea643279c..e665fba66c4 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxCallbackWithDestructuring.types +++ b/testdata/baselines/reference/submodule/compiler/jsxCallbackWithDestructuring.types @@ -14,7 +14,7 @@ declare class Component { >render : () => {} props: Readonly<{ children?: {} }> & Readonly

; ->props : Readonly<{ children?: {} | undefined; }> & Readonly

+>props : Readonly<{ children?: {}; }> & Readonly

>children : {} | undefined } diff --git a/testdata/baselines/reference/submodule/compiler/jsxCallbackWithDestructuring.types.diff b/testdata/baselines/reference/submodule/compiler/jsxCallbackWithDestructuring.types.diff deleted file mode 100644 index dc3d9ea0ad3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxCallbackWithDestructuring.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.jsxCallbackWithDestructuring.types -+++ new.jsxCallbackWithDestructuring.types -@@= skipped -13, +13 lines =@@ - >render : () => {} - - props: Readonly<{ children?: {} }> & Readonly

; -->props : Readonly<{ children?: {}; }> & Readonly

-+>props : Readonly<{ children?: {} | undefined; }> & Readonly

- >children : {} | undefined - } diff --git a/testdata/baselines/reference/submodule/compiler/jsxComponentTypeErrors.types b/testdata/baselines/reference/submodule/compiler/jsxComponentTypeErrors.types index 56dfa7a6531..0495676a57a 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxComponentTypeErrors.types +++ b/testdata/baselines/reference/submodule/compiler/jsxComponentTypeErrors.types @@ -13,7 +13,7 @@ namespace JSX { } function FunctionComponent({type}: {type?: T}) { ->FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } +>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >type : T | undefined >type : T | undefined @@ -27,13 +27,13 @@ function FunctionComponent({type}: {type?: T}) { FunctionComponent.useThis = function() { >FunctionComponent.useThis = function() { return ;} : () => JSX.Element >FunctionComponent.useThis : () => JSX.Element ->FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } +>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >useThis : () => JSX.Element >function() { return ;} : () => JSX.Element return ; > : JSX.Element ->this : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } +>this : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >type : "foo" } @@ -46,25 +46,25 @@ class ClassComponent { } const MixedComponent = Math.random() ? FunctionComponent : ClassComponent; ->MixedComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent ->Math.random() ? FunctionComponent : ClassComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent +>MixedComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent +>Math.random() ? FunctionComponent : ClassComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent >Math.random() : number >Math.random : () => number >Math : Math >random : () => number ->FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } +>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >ClassComponent : typeof ClassComponent const elem1 = ; >elem1 : JSX.Element > : JSX.Element ->FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } +>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >type : "abc" const elem2 = />; >elem2 : JSX.Element > /> : JSX.Element ->FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } +>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } const elem3 = ; >elem3 : JSX.Element @@ -74,7 +74,7 @@ const elem3 = ; const elem4 = ; >elem4 : JSX.Element > : JSX.Element ->MixedComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent +>MixedComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent const obj = { >obj : { MemberFunctionComponent(): {}; MemberClassComponent: typeof MemberClassComponent; } diff --git a/testdata/baselines/reference/submodule/compiler/jsxComponentTypeErrors.types.diff b/testdata/baselines/reference/submodule/compiler/jsxComponentTypeErrors.types.diff index d26ff82cb7b..55efb63e4d2 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxComponentTypeErrors.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsxComponentTypeErrors.types.diff @@ -5,7 +5,7 @@ function FunctionComponent({type}: {type?: T}) { ->FunctionComponent : typeof FunctionComponent -+>FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } ++>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >type : T | undefined >type : T | undefined @@ -14,14 +14,14 @@ >FunctionComponent.useThis = function() { return ;} : () => JSX.Element >FunctionComponent.useThis : () => JSX.Element ->FunctionComponent : typeof FunctionComponent -+>FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } ++>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >useThis : () => JSX.Element >function() { return ;} : () => JSX.Element return ; > : JSX.Element ->this : typeof FunctionComponent -+>this : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } ++>this : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >type : "foo" } @@ -31,28 +31,28 @@ const MixedComponent = Math.random() ? FunctionComponent : ClassComponent; ->MixedComponent : typeof FunctionComponent | typeof ClassComponent ->Math.random() ? FunctionComponent : ClassComponent : typeof FunctionComponent | typeof ClassComponent -+>MixedComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent -+>Math.random() ? FunctionComponent : ClassComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent ++>MixedComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent ++>Math.random() ? FunctionComponent : ClassComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent >Math.random() : number >Math.random : () => number >Math : Math >random : () => number ->FunctionComponent : typeof FunctionComponent -+>FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } ++>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >ClassComponent : typeof ClassComponent const elem1 = ; >elem1 : JSX.Element > : JSX.Element ->FunctionComponent : typeof FunctionComponent -+>FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } ++>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } >type : "abc" const elem2 = />; >elem2 : JSX.Element > /> : JSX.Element ->FunctionComponent : typeof FunctionComponent -+>FunctionComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } ++>FunctionComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } const elem3 = ; >elem3 : JSX.Element @@ -61,7 +61,7 @@ >elem4 : JSX.Element > : JSX.Element ->MixedComponent : typeof FunctionComponent | typeof ClassComponent -+>MixedComponent : { ({ type }: { type?: T | undefined; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent ++>MixedComponent : { ({ type }: { type?: T; }): { type: T | undefined; }; useThis: () => JSX.Element; } | typeof ClassComponent const obj = { >obj : { MemberFunctionComponent(): {}; MemberClassComponent: typeof MemberClassComponent; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxElementType.errors.txt b/testdata/baselines/reference/submodule/compiler/jsxElementType.errors.txt index c0ca33593a4..8976f3de42a 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxElementType.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/jsxElementType.errors.txt @@ -23,8 +23,8 @@ jsxElementType.tsx(72,20): error TS2769: No overload matches this call. jsxElementType.tsx(78,1): error TS2339: Property 'boop' does not exist on type 'JSX.IntrinsicElements'. jsxElementType.tsx(79,1): error TS2339: Property 'my-undeclared-custom-element' does not exist on type 'JSX.IntrinsicElements'. jsxElementType.tsx(91,2): error TS2786: 'ReactNativeFlatList' cannot be used as a JSX component. - Its type '(props: {}, ref: ForwardedRef) => null' is not a valid JSX element type. - Type '(props: {}, ref: ForwardedRef) => null' is not assignable to type '(props: any) => React18ReactNode'. + Its type '(props: {}, ref: React.ForwardedRef) => null' is not a valid JSX element type. + Type '(props: {}, ref: React.ForwardedRef) => null' is not assignable to type '(props: any) => React18ReactNode'. Target signature provides too few arguments. Expected 2 or more, but got 1. jsxElementType.tsx(95,11): error TS2322: Type '{}' is not assignable to type 'LibraryManagedAttributes'. jsxElementType.tsx(98,2): error TS2304: Cannot find name 'Unresolved'. @@ -175,8 +175,8 @@ jsxElementType.tsx(111,19): error TS2322: Type '{ a: string; b: string; }' is no ; ~~~~~~~~~~~~~~~~~~~ !!! error TS2786: 'ReactNativeFlatList' cannot be used as a JSX component. -!!! error TS2786: Its type '(props: {}, ref: ForwardedRef) => null' is not a valid JSX element type. -!!! error TS2786: Type '(props: {}, ref: ForwardedRef) => null' is not assignable to type '(props: any) => React18ReactNode'. +!!! error TS2786: Its type '(props: {}, ref: React.ForwardedRef) => null' is not a valid JSX element type. +!!! error TS2786: Type '(props: {}, ref: React.ForwardedRef) => null' is not assignable to type '(props: any) => React18ReactNode'. !!! error TS2786: Target signature provides too few arguments. Expected 2 or more, but got 1. // testing higher-order component compat diff --git a/testdata/baselines/reference/submodule/compiler/jsxElementType.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/jsxElementType.errors.txt.diff index 5c5d5179ba7..5a7043e789d 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxElementType.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/jsxElementType.errors.txt.diff @@ -18,6 +18,15 @@ Type '{ excessProp: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ title: string; }>'. Property 'excessProp' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ title: string; }>'. jsxElementType.tsx(78,1): error TS2339: Property 'boop' does not exist on type 'JSX.IntrinsicElements'. + jsxElementType.tsx(79,1): error TS2339: Property 'my-undeclared-custom-element' does not exist on type 'JSX.IntrinsicElements'. + jsxElementType.tsx(91,2): error TS2786: 'ReactNativeFlatList' cannot be used as a JSX component. +- Its type '(props: {}, ref: ForwardedRef) => null' is not a valid JSX element type. +- Type '(props: {}, ref: ForwardedRef) => null' is not assignable to type '(props: any) => React18ReactNode'. ++ Its type '(props: {}, ref: React.ForwardedRef) => null' is not a valid JSX element type. ++ Type '(props: {}, ref: React.ForwardedRef) => null' is not assignable to type '(props: any) => React18ReactNode'. + Target signature provides too few arguments. Expected 2 or more, but got 1. + jsxElementType.tsx(95,11): error TS2322: Type '{}' is not assignable to type 'LibraryManagedAttributes'. + jsxElementType.tsx(98,2): error TS2304: Cannot find name 'Unresolved'. @@= skipped -129, +124 lines =@@ ; ~~~~~~~~~~~~~~~~~ @@ -48,4 +57,15 @@ +!!! related TS2771 react16.d.ts:357:13: The last overload is declared here. // Host element types still work -

; \ No newline at end of file +
; +@@= skipped -41, +37 lines =@@ + ; + ~~~~~~~~~~~~~~~~~~~ + !!! error TS2786: 'ReactNativeFlatList' cannot be used as a JSX component. +-!!! error TS2786: Its type '(props: {}, ref: ForwardedRef) => null' is not a valid JSX element type. +-!!! error TS2786: Type '(props: {}, ref: ForwardedRef) => null' is not assignable to type '(props: any) => React18ReactNode'. ++!!! error TS2786: Its type '(props: {}, ref: React.ForwardedRef) => null' is not a valid JSX element type. ++!!! error TS2786: Type '(props: {}, ref: React.ForwardedRef) => null' is not assignable to type '(props: any) => React18ReactNode'. + !!! error TS2786: Target signature provides too few arguments. Expected 2 or more, but got 1. + + // testing higher-order component compat \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.errors.txt b/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.errors.txt index 2060eafe1c3..dc668c04c36 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.errors.txt @@ -1,4 +1,4 @@ -jsxEmptyExpressionNotCountedAsChild2.tsx(28,2): error TS2322: Type '{}' is not assignable to type '{ bar?: number | undefined; } & { __children__: () => number; }'. +jsxEmptyExpressionNotCountedAsChild2.tsx(28,2): error TS2322: Type '{}' is not assignable to type '{ bar?: number; } & { __children__: () => number; }'. Property '__children__' is missing in type '{}' but required in type '{ __children__: () => number; }'. @@ -32,7 +32,7 @@ jsxEmptyExpressionNotCountedAsChild2.tsx(28,2): error TS2322: Type '{}' is not a {}; // error ~~~~~~~~~~~~~ -!!! error TS2322: Type '{}' is not assignable to type '{ bar?: number | undefined; } & { __children__: () => number; }'. +!!! error TS2322: Type '{}' is not assignable to type '{ bar?: number; } & { __children__: () => number; }'. !!! error TS2322: Property '__children__' is missing in type '{}' but required in type '{ __children__: () => number; }'. !!! related TS2728 jsxEmptyExpressionNotCountedAsChild2.tsx:22:46: '__children__' is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.errors.txt.diff new file mode 100644 index 00000000000..d0feb0c5006 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.jsxEmptyExpressionNotCountedAsChild2.errors.txt ++++ new.jsxEmptyExpressionNotCountedAsChild2.errors.txt +@@= skipped -0, +0 lines =@@ +-jsxEmptyExpressionNotCountedAsChild2.tsx(28,2): error TS2322: Type '{}' is not assignable to type '{ bar?: number | undefined; } & { __children__: () => number; }'. ++jsxEmptyExpressionNotCountedAsChild2.tsx(28,2): error TS2322: Type '{}' is not assignable to type '{ bar?: number; } & { __children__: () => number; }'. + Property '__children__' is missing in type '{}' but required in type '{ __children__: () => number; }'. + + +@@= skipped -31, +31 lines =@@ + + {}; // error + ~~~~~~~~~~~~~ +-!!! error TS2322: Type '{}' is not assignable to type '{ bar?: number | undefined; } & { __children__: () => number; }'. ++!!! error TS2322: Type '{}' is not assignable to type '{ bar?: number; } & { __children__: () => number; }'. + !!! error TS2322: Property '__children__' is missing in type '{}' but required in type '{ __children__: () => number; }'. + !!! related TS2728 jsxEmptyExpressionNotCountedAsChild2.tsx:22:46: '__children__' is declared here. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.types b/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.types index 599f1cae8d9..03452661679 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.types +++ b/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.types @@ -30,7 +30,7 @@ declare global { interface MockComponentInterface { new (): { __properties__: { bar?: number } & { __children__: () => number }; ->__properties__ : { bar?: number | undefined; } & { __children__: () => number; } +>__properties__ : { bar?: number; } & { __children__: () => number; } >bar : number | undefined >__children__ : () => number diff --git a/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.types.diff b/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.types.diff deleted file mode 100644 index 40f5fe8b547..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxEmptyExpressionNotCountedAsChild2.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.jsxEmptyExpressionNotCountedAsChild2.types -+++ new.jsxEmptyExpressionNotCountedAsChild2.types -@@= skipped -29, +29 lines =@@ - interface MockComponentInterface { - new (): { - __properties__: { bar?: number } & { __children__: () => number }; -->__properties__ : { bar?: number; } & { __children__: () => number; } -+>__properties__ : { bar?: number | undefined; } & { __children__: () => number; } - >bar : number | undefined - >__children__ : () => number diff --git a/testdata/baselines/reference/submodule/compiler/jsxExcessPropsAndAssignability.types b/testdata/baselines/reference/submodule/compiler/jsxExcessPropsAndAssignability.types index 1469e837a8e..f1e19342f97 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxExcessPropsAndAssignability.types +++ b/testdata/baselines/reference/submodule/compiler/jsxExcessPropsAndAssignability.types @@ -7,8 +7,8 @@ import * as React from 'react'; >React : typeof React const myHoc = ( ->myHoc : (ComposedComponent: React.ComponentClass) => void ->( ComposedComponent: React.ComponentClass,) => { type WrapperComponentProps = ComposedComponentProps & { myProp: string }; const WrapperComponent: React.ComponentClass = null as any; const props: ComposedComponentProps = null as any; ; ;} : (ComposedComponent: React.ComponentClass) => void +>myHoc : (ComposedComponent: React.ComponentClass) => void +>( ComposedComponent: React.ComponentClass,) => { type WrapperComponentProps = ComposedComponentProps & { myProp: string }; const WrapperComponent: React.ComponentClass = null as any; const props: ComposedComponentProps = null as any; ; ;} : (ComposedComponent: React.ComponentClass) => void ComposedComponent: React.ComponentClass, >ComposedComponent : React.ComponentClass diff --git a/testdata/baselines/reference/submodule/compiler/jsxExcessPropsAndAssignability.types.diff b/testdata/baselines/reference/submodule/compiler/jsxExcessPropsAndAssignability.types.diff deleted file mode 100644 index 6dab98c7a37..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxExcessPropsAndAssignability.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.jsxExcessPropsAndAssignability.types -+++ new.jsxExcessPropsAndAssignability.types -@@= skipped -6, +6 lines =@@ - >React : typeof React - - const myHoc = ( -->myHoc : (ComposedComponent: React.ComponentClass) => void -->( ComposedComponent: React.ComponentClass,) => { type WrapperComponentProps = ComposedComponentProps & { myProp: string }; const WrapperComponent: React.ComponentClass = null as any; const props: ComposedComponentProps = null as any; ; ;} : (ComposedComponent: React.ComponentClass) => void -+>myHoc : (ComposedComponent: React.ComponentClass) => void -+>( ComposedComponent: React.ComponentClass,) => { type WrapperComponentProps = ComposedComponentProps & { myProp: string }; const WrapperComponent: React.ComponentClass = null as any; const props: ComposedComponentProps = null as any; ; ;} : (ComposedComponent: React.ComponentClass) => void - - ComposedComponent: React.ComponentClass, - >ComposedComponent : React.ComponentClass \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxFragmentFactoryNoUnusedLocals.types b/testdata/baselines/reference/submodule/compiler/jsxFragmentFactoryNoUnusedLocals.types index 85103eac57e..d64ed6da024 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxFragmentFactoryNoUnusedLocals.types +++ b/testdata/baselines/reference/submodule/compiler/jsxFragmentFactoryNoUnusedLocals.types @@ -4,7 +4,7 @@ /// import { Fragment, createElement } from "react" >Fragment : import("react").ComponentType<{}> ->createElement : { (type: "input", props?: (import("react").InputHTMLAttributes & import("react").ClassAttributes) | null | undefined, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

, T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement;

, T extends SVGElement>(type: keyof import("react").ReactSVG, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").ReactSVGElement;

, T extends Element>(type: string, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").DOMElement;

(type: import("react").SFC

, props?: (import("react").Attributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").SFCElement

;

(type: import("react").ClassType, import("react").ClassicComponentClass

>, props?: (import("react").ClassAttributes> & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass>(type: import("react").ClassType, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").CElement;

(type: string | import("react").ComponentClass | import("react").SFC

, props?: (import("react").Attributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").ReactElement

; (type: "input", props?: (import("react").InputHTMLAttributes & import("react").ClassAttributes) | null | undefined, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

, T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement;

, T extends SVGElement>(type: keyof import("react").ReactSVG, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").ReactSVGElement;

, T extends Element>(type: string, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").DOMElement;

(type: import("react").SFC

, props?: (import("react").Attributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").SFCElement

;

(type: import("react").ClassType, import("react").ClassicComponentClass

>, props?: (import("react").ClassAttributes> & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass>(type: import("react").ClassType, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").CElement;

(type: string | import("react").ComponentClass | import("react").SFC

, props?: (import("react").Attributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").ReactElement

; } +>createElement : { (type: "input", props?: (import("react").InputHTMLAttributes & import("react").ClassAttributes) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

, T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement;

, T extends SVGElement>(type: keyof import("react").ReactSVG, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactSVGElement;

, T extends Element>(type: string, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DOMElement;

(type: import("react").SFC

, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").SFCElement

;

(type: import("react").ClassType, import("react").ClassicComponentClass

>, props?: (import("react").ClassAttributes> & P) | null, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass

>(type: import("react").ClassType, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").CElement;

(type: import("react").SFC

| import("react").ComponentClass

| string, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactElement

; (type: "input", props?: (import("react").InputHTMLAttributes & import("react").ClassAttributes) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

, T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement;

, T extends SVGElement>(type: keyof import("react").ReactSVG, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactSVGElement;

, T extends Element>(type: string, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DOMElement;

(type: import("react").SFC

, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").SFCElement

;

(type: import("react").ClassType, import("react").ClassicComponentClass

>, props?: (import("react").ClassAttributes> & P) | null, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass

>(type: import("react").ClassType, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").CElement;

(type: import("react").SFC

| import("react").ComponentClass

| string, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactElement

; } type CounterProps = { >CounterProps : CounterProps diff --git a/testdata/baselines/reference/submodule/compiler/jsxFragmentFactoryNoUnusedLocals.types.diff b/testdata/baselines/reference/submodule/compiler/jsxFragmentFactoryNoUnusedLocals.types.diff index 93046cb8334..13d3d8e3a4d 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxFragmentFactoryNoUnusedLocals.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsxFragmentFactoryNoUnusedLocals.types.diff @@ -5,7 +5,7 @@ import { Fragment, createElement } from "react" >Fragment : import("react").ComponentType<{}> ->createElement : { (type: "input", props?: (import("react").InputHTMLAttributes & import("react").ClassAttributes) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

, T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement;

, T extends SVGElement>(type: keyof import("react").ReactSVG, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactSVGElement;

, T extends Element>(type: string, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DOMElement;

(type: import("react").SFC

, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").SFCElement

;

(type: import("react").ClassType, import("react").ClassicComponentClass

>, props?: (import("react").ClassAttributes> & P) | null, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass

>(type: import("react").ClassType, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").CElement;

(type: import("react").SFC

| import("react").ComponentClass

| string, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactElement

; } -+>createElement : { (type: "input", props?: (import("react").InputHTMLAttributes & import("react").ClassAttributes) | null | undefined, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

, T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement;

, T extends SVGElement>(type: keyof import("react").ReactSVG, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").ReactSVGElement;

, T extends Element>(type: string, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").DOMElement;

(type: import("react").SFC

, props?: (import("react").Attributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").SFCElement

;

(type: import("react").ClassType, import("react").ClassicComponentClass

>, props?: (import("react").ClassAttributes> & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass>(type: import("react").ClassType, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").CElement;

(type: string | import("react").ComponentClass | import("react").SFC

, props?: (import("react").Attributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").ReactElement

; (type: "input", props?: (import("react").InputHTMLAttributes & import("react").ClassAttributes) | null | undefined, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

, T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement;

, T extends SVGElement>(type: keyof import("react").ReactSVG, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").ReactSVGElement;

, T extends Element>(type: string, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").DOMElement;

(type: import("react").SFC

, props?: (import("react").Attributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").SFCElement

;

(type: import("react").ClassType, import("react").ClassicComponentClass

>, props?: (import("react").ClassAttributes> & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass>(type: import("react").ClassType, props?: (import("react").ClassAttributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").CElement;

(type: string | import("react").ComponentClass | import("react").SFC

, props?: (import("react").Attributes & P) | null | undefined, ...children: import("react").ReactNode[]): import("react").ReactElement

; } ++>createElement : { (type: "input", props?: (import("react").InputHTMLAttributes & import("react").ClassAttributes) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

, T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement;

, T extends SVGElement>(type: keyof import("react").ReactSVG, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactSVGElement;

, T extends Element>(type: string, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DOMElement;

(type: import("react").SFC

, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").SFCElement

;

(type: import("react").ClassType, import("react").ClassicComponentClass

>, props?: (import("react").ClassAttributes> & P) | null, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass

>(type: import("react").ClassType, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").CElement;

(type: import("react").SFC

| import("react").ComponentClass

| string, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactElement

; (type: "input", props?: (import("react").InputHTMLAttributes & import("react").ClassAttributes) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

, T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement;

, T extends SVGElement>(type: keyof import("react").ReactSVG, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactSVGElement;

, T extends Element>(type: string, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").DOMElement;

(type: import("react").SFC

, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").SFCElement

;

(type: import("react").ClassType, import("react").ClassicComponentClass

>, props?: (import("react").ClassAttributes> & P) | null, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass

>(type: import("react").ClassType, props?: (import("react").ClassAttributes & P) | null, ...children: import("react").ReactNode[]): import("react").CElement;

(type: import("react").SFC

| import("react").ComponentClass

| string, props?: (import("react").Attributes & P) | null, ...children: import("react").ReactNode[]): import("react").ReactElement

; } type CounterProps = { >CounterProps : CounterProps \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.errors.txt b/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.errors.txt index f979faf99b4..458afc475a6 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.errors.txt @@ -1,4 +1,4 @@ -a.tsx(6,28): error TS2322: Type '{ children: () => string; }' is not assignable to type '{ children?: ReactNode; }'. +a.tsx(6,28): error TS2322: Type '{ children: () => string; }' is not assignable to type '{ children?: ReactNode | undefined; }'. Types of property 'children' are incompatible. Type '() => string' is not assignable to type 'ReactNode'. a.tsx(7,47): error TS2322: Type '() => string' is not assignable to type 'ReactNode'. @@ -12,7 +12,7 @@ a.tsx(7,47): error TS2322: Type '() => string' is not assignable to type 'ReactN const jsxWithJsxFragment = <>{test}; ~~ -!!! error TS2322: Type '{ children: () => string; }' is not assignable to type '{ children?: ReactNode; }'. +!!! error TS2322: Type '{ children: () => string; }' is not assignable to type '{ children?: ReactNode | undefined; }'. !!! error TS2322: Types of property 'children' are incompatible. !!! error TS2322: Type '() => string' is not assignable to type 'ReactNode'. const jsxWithReactFragment = {test}; diff --git a/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.errors.txt.diff new file mode 100644 index 00000000000..a08db5e03cb --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.jsxFragmentWrongType.errors.txt ++++ new.jsxFragmentWrongType.errors.txt +@@= skipped -0, +0 lines =@@ +-a.tsx(6,28): error TS2322: Type '{ children: () => string; }' is not assignable to type '{ children?: ReactNode; }'. ++a.tsx(6,28): error TS2322: Type '{ children: () => string; }' is not assignable to type '{ children?: ReactNode | undefined; }'. + Types of property 'children' are incompatible. + Type '() => string' is not assignable to type 'ReactNode'. + a.tsx(7,47): error TS2322: Type '() => string' is not assignable to type 'ReactNode'. +@@= skipped -11, +11 lines =@@ + + const jsxWithJsxFragment = <>{test}; + ~~ +-!!! error TS2322: Type '{ children: () => string; }' is not assignable to type '{ children?: ReactNode; }'. ++!!! error TS2322: Type '{ children: () => string; }' is not assignable to type '{ children?: ReactNode | undefined; }'. + !!! error TS2322: Types of property 'children' are incompatible. + !!! error TS2322: Type '() => string' is not assignable to type 'ReactNode'. + const jsxWithReactFragment = {test}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.types b/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.types index 5def0ec3b3f..f9c6d2f38b6 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.types +++ b/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.types @@ -17,11 +17,11 @@ const jsxWithJsxFragment = <>{test}; const jsxWithReactFragment = {test}; >jsxWithReactFragment : JSX.Element >{test} : JSX.Element ->React.Fragment : React.ExoticComponent<{ children?: React.ReactNode; }> +>React.Fragment : React.ExoticComponent<{ children?: React.ReactNode | undefined; }> >React : typeof React ->Fragment : React.ExoticComponent<{ children?: React.ReactNode; }> +>Fragment : React.ExoticComponent<{ children?: React.ReactNode | undefined; }> >test : () => string ->React.Fragment : React.ExoticComponent<{ children?: React.ReactNode; }> +>React.Fragment : React.ExoticComponent<{ children?: React.ReactNode | undefined; }> >React : typeof React ->Fragment : React.ExoticComponent<{ children?: React.ReactNode; }> +>Fragment : React.ExoticComponent<{ children?: React.ReactNode | undefined; }> diff --git a/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.types.diff b/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.types.diff deleted file mode 100644 index 3ac76e223d6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxFragmentWrongType.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.jsxFragmentWrongType.types -+++ new.jsxFragmentWrongType.types -@@= skipped -16, +16 lines =@@ - const jsxWithReactFragment = {test}; - >jsxWithReactFragment : JSX.Element - >{test} : JSX.Element -->React.Fragment : React.ExoticComponent<{ children?: React.ReactNode | undefined; }> -+>React.Fragment : React.ExoticComponent<{ children?: React.ReactNode; }> - >React : typeof React -->Fragment : React.ExoticComponent<{ children?: React.ReactNode | undefined; }> -+>Fragment : React.ExoticComponent<{ children?: React.ReactNode; }> - >test : () => string -->React.Fragment : React.ExoticComponent<{ children?: React.ReactNode | undefined; }> -+>React.Fragment : React.ExoticComponent<{ children?: React.ReactNode; }> - >React : typeof React -->Fragment : React.ExoticComponent<{ children?: React.ReactNode | undefined; }> -+>Fragment : React.ExoticComponent<{ children?: React.ReactNode; }> diff --git a/testdata/baselines/reference/submodule/compiler/jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt b/testdata/baselines/reference/submodule/compiler/jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt index 57f0d21f68e..1c2571a8590 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt @@ -22,5 +22,5 @@ jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.tsx(14,12): error TS2322: ; ~~~~ !!! error TS2322: Type '"smth"' is not assignable to type '"literal"'. -!!! related TS6500 jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.tsx:5:28: The expected type comes from property 'prop' which is declared here on type '{ prop: string; } & { prop: "literal"; }' +!!! related TS6500 jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.tsx:5:28: The expected type comes from property 'prop' which is declared here on type '{ prop: string; } & { prop: 'literal'; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt.diff new file mode 100644 index 00000000000..a862438fdbc --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt.diff @@ -0,0 +1,9 @@ +--- old.jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt ++++ new.jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.errors.txt +@@= skipped -21, +21 lines =@@ + ; + ~~~~ + !!! error TS2322: Type '"smth"' is not assignable to type '"literal"'. +-!!! related TS6500 jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.tsx:5:28: The expected type comes from property 'prop' which is declared here on type '{ prop: string; } & { prop: "literal"; }' ++!!! related TS6500 jsxIntrinsicDeclaredUsingTemplateLiteralTypeSignatures.tsx:5:28: The expected type comes from property 'prop' which is declared here on type '{ prop: string; } & { prop: 'literal'; }' + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxIntrinsicElementsCompatability.types b/testdata/baselines/reference/submodule/compiler/jsxIntrinsicElementsCompatability.types index 9f7c0e5672f..4edeb8ffe66 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxIntrinsicElementsCompatability.types +++ b/testdata/baselines/reference/submodule/compiler/jsxIntrinsicElementsCompatability.types @@ -6,8 +6,8 @@ import * as React from "react"; >React : typeof React function SomeComponent(props: { element?: T } & JSX.IntrinsicElements[T]): JSX.Element { ->SomeComponent : (props: { element?: T | undefined; } & JSX.IntrinsicElements[T]) => JSX.Element ->props : { element?: T | undefined; } & JSX.IntrinsicElements[T] +>SomeComponent : (props: { element?: T; } & JSX.IntrinsicElements[T]) => JSX.Element +>props : { element?: T; } & JSX.IntrinsicElements[T] >element : T | undefined >JSX : any >JSX : any @@ -19,12 +19,12 @@ function SomeComponent(props: { element?: T } & JSX.In } function Test(el: T) { ->Test : (el: T) => JSX.Element +>Test : (el: T) => JSX.Element >el : T return > : JSX.Element ->SomeComponent : (props: { element?: T_1 | undefined; } & JSX.IntrinsicElements[T_1]) => JSX.Element +>SomeComponent : (props: { element?: T_1; } & JSX.IntrinsicElements[T_1]) => JSX.Element >element : T >el : T } diff --git a/testdata/baselines/reference/submodule/compiler/jsxIntrinsicElementsCompatability.types.diff b/testdata/baselines/reference/submodule/compiler/jsxIntrinsicElementsCompatability.types.diff index ddd542c84f8..427a8b15c02 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxIntrinsicElementsCompatability.types.diff +++ b/testdata/baselines/reference/submodule/compiler/jsxIntrinsicElementsCompatability.types.diff @@ -5,24 +5,22 @@ function SomeComponent(props: { element?: T } & JSX.IntrinsicElements[T]): JSX.Element { ->SomeComponent : (props: { element?: T; } & JSX.IntrinsicElements[T]) => JSX.Element -->props : { element?: T; } & JSX.IntrinsicElements[T] -+>SomeComponent : (props: { element?: T | undefined; } & JSX.IntrinsicElements[T]) => JSX.Element -+>props : { element?: T | undefined; } & JSX.IntrinsicElements[T] ++>SomeComponent : (props: { element?: T; } & JSX.IntrinsicElements[T]) => JSX.Element + >props : { element?: T; } & JSX.IntrinsicElements[T] >element : T | undefined >JSX : any - >JSX : any @@= skipped -13, +13 lines =@@ } function Test(el: T) { ->Test : (el: T) => JSX.Element -+>Test : (el: T) => JSX.Element ++>Test : (el: T) => JSX.Element >el : T return > : JSX.Element ->SomeComponent : (props: { element?: T_1; } & JSX.IntrinsicElements[T_1]) => JSX.Element -+>SomeComponent : (props: { element?: T_1 | undefined; } & JSX.IntrinsicElements[T_1]) => JSX.Element ++>SomeComponent : (props: { element?: T_1; } & JSX.IntrinsicElements[T_1]) => JSX.Element >element : T >el : T } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxIssuesErrorWhenTagExpectsTooManyArguments.types b/testdata/baselines/reference/submodule/compiler/jsxIssuesErrorWhenTagExpectsTooManyArguments.types index a26d1620224..425993b0810 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxIssuesErrorWhenTagExpectsTooManyArguments.types +++ b/testdata/baselines/reference/submodule/compiler/jsxIssuesErrorWhenTagExpectsTooManyArguments.types @@ -67,7 +67,7 @@ const c = ; // Should be OK, `context` is allowed, per react ru >2 : 2 declare function MyTagWithOptionalNonJSXBits(props: MyProps, context: any, nonReactArg?: string): JSX.Element; ->MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string | undefined) => JSX.Element +>MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string) => JSX.Element >props : MyProps >context : any >nonReactArg : string | undefined @@ -76,7 +76,7 @@ declare function MyTagWithOptionalNonJSXBits(props: MyProps, context: any, nonRe const d = ; // Technically OK, but probably questionable >d : JSX.Element > : JSX.Element ->MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string | undefined) => JSX.Element +>MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string) => JSX.Element >x : number >2 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/jsxIssuesErrorWhenTagExpectsTooManyArguments.types.diff b/testdata/baselines/reference/submodule/compiler/jsxIssuesErrorWhenTagExpectsTooManyArguments.types.diff deleted file mode 100644 index 9223f8cccfe..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxIssuesErrorWhenTagExpectsTooManyArguments.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.jsxIssuesErrorWhenTagExpectsTooManyArguments.types -+++ new.jsxIssuesErrorWhenTagExpectsTooManyArguments.types -@@= skipped -66, +66 lines =@@ - >2 : 2 - - declare function MyTagWithOptionalNonJSXBits(props: MyProps, context: any, nonReactArg?: string): JSX.Element; -->MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string) => JSX.Element -+>MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string | undefined) => JSX.Element - >props : MyProps - >context : any - >nonReactArg : string | undefined -@@= skipped -9, +9 lines =@@ - const d = ; // Technically OK, but probably questionable - >d : JSX.Element - > : JSX.Element -->MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string) => JSX.Element -+>MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string | undefined) => JSX.Element - >x : number - >2 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/jsxLibraryManagedAttributesUnusedGeneric.types b/testdata/baselines/reference/submodule/compiler/jsxLibraryManagedAttributesUnusedGeneric.types index cb1d7735dc7..cd6e08d9540 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxLibraryManagedAttributesUnusedGeneric.types +++ b/testdata/baselines/reference/submodule/compiler/jsxLibraryManagedAttributesUnusedGeneric.types @@ -41,12 +41,12 @@ namespace jsx { } declare const Comp: (p: { className?: string }) => null ->Comp : (p: { className?: string | undefined; }) => null ->p : { className?: string | undefined; } +>Comp : (p: { className?: string; }) => null +>p : { className?: string; } >className : string | undefined ; > : jsx.JSX.Element ->Comp : (p: { className?: string | undefined; }) => null +>Comp : (p: { className?: string; }) => null >css : string diff --git a/testdata/baselines/reference/submodule/compiler/jsxLibraryManagedAttributesUnusedGeneric.types.diff b/testdata/baselines/reference/submodule/compiler/jsxLibraryManagedAttributesUnusedGeneric.types.diff deleted file mode 100644 index 72245f9dc80..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxLibraryManagedAttributesUnusedGeneric.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.jsxLibraryManagedAttributesUnusedGeneric.types -+++ new.jsxLibraryManagedAttributesUnusedGeneric.types -@@= skipped -40, +40 lines =@@ - } - - declare const Comp: (p: { className?: string }) => null -->Comp : (p: { className?: string; }) => null -->p : { className?: string; } -+>Comp : (p: { className?: string | undefined; }) => null -+>p : { className?: string | undefined; } - >className : string | undefined - - ; - > : jsx.JSX.Element -->Comp : (p: { className?: string; }) => null -+>Comp : (p: { className?: string | undefined; }) => null - >css : string diff --git a/testdata/baselines/reference/submodule/compiler/jsxLocalNamespaceIndexSignatureNoCrash.types b/testdata/baselines/reference/submodule/compiler/jsxLocalNamespaceIndexSignatureNoCrash.types index 557758c1f2e..695474d172f 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxLocalNamespaceIndexSignatureNoCrash.types +++ b/testdata/baselines/reference/submodule/compiler/jsxLocalNamespaceIndexSignatureNoCrash.types @@ -9,9 +9,9 @@ export class X { return document.createElement('p'); >document.createElement('p') : HTMLParagraphElement ->document.createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } +>document.createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } >document : Document ->createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } +>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } >'p' : "p" } } diff --git a/testdata/baselines/reference/submodule/compiler/jsxLocalNamespaceIndexSignatureNoCrash.types.diff b/testdata/baselines/reference/submodule/compiler/jsxLocalNamespaceIndexSignatureNoCrash.types.diff deleted file mode 100644 index 69cf0e30742..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxLocalNamespaceIndexSignatureNoCrash.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.jsxLocalNamespaceIndexSignatureNoCrash.types -+++ new.jsxLocalNamespaceIndexSignatureNoCrash.types -@@= skipped -8, +8 lines =@@ - - return document.createElement('p'); - >document.createElement('p') : HTMLParagraphElement -->document.createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -+>document.createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } - >document : Document -->createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -+>createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } - >'p' : "p" - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexport.types b/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexport.types index e649e3fa744..d46c677c500 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexport.types +++ b/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexport.types @@ -92,13 +92,13 @@ import { JSXInternal } from '..'; >JSXInternal : any export function jsx( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): 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 props: JSXInternal.HTMLAttributes & ->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; } +>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild; } >JSXInternal : any JSXInternal.SVGAttributes & @@ -112,13 +112,13 @@ export function jsx( ): VNode; export function jsx

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

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): 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

props: Attributes & P & { children?: ComponentChild }, ->props : P & { children?: ComponentChild | undefined; } +>props : P & { children?: ComponentChild; } >children : ComponentChild | undefined key?: string @@ -127,13 +127,13 @@ export function jsx

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

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): 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 props: JSXInternal.HTMLAttributes & ->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[] | undefined; } +>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[]; } >JSXInternal : any JSXInternal.SVGAttributes & @@ -147,13 +147,13 @@ export function jsxs( ): VNode; export function jsxs

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

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): 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

props: Attributes & P & { children?: ComponentChild[] }, ->props : P & { children?: ComponentChild[] | undefined; } +>props : P & { children?: ComponentChild[]; } >children : ComponentChild[] | undefined key?: string @@ -162,13 +162,13 @@ export function jsxs

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

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): 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 props: JSXInternal.HTMLAttributes & ->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren | undefined; } +>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren; } >JSXInternal : any JSXInternal.SVGAttributes & @@ -182,13 +182,13 @@ export function jsxDEV( ): VNode; export function jsxDEV

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

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): 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

props: Attributes & P & { children?: ComponentChildren }, ->props : P & { children?: ComponentChildren | undefined; } +>props : P & { children?: ComponentChildren; } >children : ComponentChildren | undefined key?: string diff --git a/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexport.types.diff b/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexport.types.diff deleted file mode 100644 index baff05564eb..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexport.types.diff +++ /dev/null @@ -1,98 +0,0 @@ ---- old.jsxNamespaceGlobalReexport.types -+++ new.jsxNamespaceGlobalReexport.types -@@= skipped -91, +91 lines =@@ - >JSXInternal : any - - 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode; } - - type: string, - >type : string - - props: JSXInternal.HTMLAttributes & -->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild; } -+>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; } - >JSXInternal : any - - JSXInternal.SVGAttributes & -@@= skipped -20, +20 lines =@@ - - ): 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode; } - - type: ComponentType

, - >type : ComponentType

- - props: Attributes & P & { children?: ComponentChild }, -->props : P & { children?: ComponentChild; } -+>props : P & { children?: ComponentChild | undefined; } - >children : ComponentChild | undefined - - key?: string -@@= skipped -15, +15 lines =@@ - ): 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[] | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode; } - - type: string, - >type : string - - props: JSXInternal.HTMLAttributes & -->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[]; } -+>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[] | undefined; } - >JSXInternal : any - - JSXInternal.SVGAttributes & -@@= skipped -20, +20 lines =@@ - - ): 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[] | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode; } - - type: ComponentType

, - >type : ComponentType

- - props: Attributes & P & { children?: ComponentChild[] }, -->props : P & { children?: ComponentChild[]; } -+>props : P & { children?: ComponentChild[] | undefined; } - >children : ComponentChild[] | undefined - - key?: string -@@= skipped -15, +15 lines =@@ - ): 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode; } - - type: string, - >type : string - - props: JSXInternal.HTMLAttributes & -->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren; } -+>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren | undefined; } - >JSXInternal : any - - JSXInternal.SVGAttributes & -@@= skipped -20, +20 lines =@@ - - ): 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode; } - - type: ComponentType

, - >type : ComponentType

- - props: Attributes & P & { children?: ComponentChildren }, -->props : P & { children?: ComponentChildren; } -+>props : P & { children?: ComponentChildren | undefined; } - >children : ComponentChildren | undefined - - key?: string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexportMissingAliasTarget.types b/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexportMissingAliasTarget.types index 7778e2f09c1..48636609650 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexportMissingAliasTarget.types +++ b/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexportMissingAliasTarget.types @@ -92,13 +92,13 @@ import { JSXInternal } from '..'; >JSXInternal : any export function jsx( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): 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 props: JSXInternal.HTMLAttributes & ->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; } +>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild; } >JSXInternal : any JSXInternal.SVGAttributes & @@ -112,13 +112,13 @@ export function jsx( ): VNode; export function jsx

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

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): 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

props: Attributes & P & { children?: ComponentChild }, ->props : P & { children?: ComponentChild | undefined; } +>props : P & { children?: ComponentChild; } >children : ComponentChild | undefined key?: string @@ -127,13 +127,13 @@ export function jsx

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

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): 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 props: JSXInternal.HTMLAttributes & ->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[] | undefined; } +>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[]; } >JSXInternal : any JSXInternal.SVGAttributes & @@ -147,13 +147,13 @@ export function jsxs( ): VNode; export function jsxs

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

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): 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

props: Attributes & P & { children?: ComponentChild[] }, ->props : P & { children?: ComponentChild[] | undefined; } +>props : P & { children?: ComponentChild[]; } >children : ComponentChild[] | undefined key?: string @@ -162,13 +162,13 @@ export function jsxs

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

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): 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 props: JSXInternal.HTMLAttributes & ->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren | undefined; } +>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren; } >JSXInternal : any JSXInternal.SVGAttributes & @@ -182,13 +182,13 @@ export function jsxDEV( ): VNode; export function jsxDEV

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

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): 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

props: Attributes & P & { children?: ComponentChildren }, ->props : P & { children?: ComponentChildren | undefined; } +>props : P & { children?: ComponentChildren; } >children : ComponentChildren | undefined key?: string diff --git a/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexportMissingAliasTarget.types.diff b/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexportMissingAliasTarget.types.diff deleted file mode 100644 index d1c30037dd2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxNamespaceGlobalReexportMissingAliasTarget.types.diff +++ /dev/null @@ -1,98 +0,0 @@ ---- old.jsxNamespaceGlobalReexportMissingAliasTarget.types -+++ new.jsxNamespaceGlobalReexportMissingAliasTarget.types -@@= skipped -91, +91 lines =@@ - >JSXInternal : any - - 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode; } - - type: string, - >type : string - - props: JSXInternal.HTMLAttributes & -->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild; } -+>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; } - >JSXInternal : any - - JSXInternal.SVGAttributes & -@@= skipped -20, +20 lines =@@ - - ): 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode; } - - type: ComponentType

, - >type : ComponentType

- - props: Attributes & P & { children?: ComponentChild }, -->props : P & { children?: ComponentChild; } -+>props : P & { children?: ComponentChild | undefined; } - >children : ComponentChild | undefined - - key?: string -@@= skipped -15, +15 lines =@@ - ): 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[] | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode; } - - type: string, - >type : string - - props: JSXInternal.HTMLAttributes & -->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[]; } -+>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[] | undefined; } - >JSXInternal : any - - JSXInternal.SVGAttributes & -@@= skipped -20, +20 lines =@@ - - ): 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[] | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode; } - - type: ComponentType

, - >type : ComponentType

- - props: Attributes & P & { children?: ComponentChild[] }, -->props : P & { children?: ComponentChild[]; } -+>props : P & { children?: ComponentChild[] | undefined; } - >children : ComponentChild[] | undefined - - key?: string -@@= skipped -15, +15 lines =@@ - ): 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode; } - - type: string, - >type : string - - props: JSXInternal.HTMLAttributes & -->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren; } -+>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren | undefined; } - >JSXInternal : any - - JSXInternal.SVGAttributes & -@@= skipped -20, +20 lines =@@ - - ): 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode; } - - type: ComponentType

, - >type : ComponentType

- - props: Attributes & P & { children?: ComponentChildren }, -->props : P & { children?: ComponentChildren; } -+>props : P & { children?: ComponentChildren | undefined; } - >children : ComponentChildren | undefined - - key?: string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxNamespaceImplicitImportJSXNamespace.types b/testdata/baselines/reference/submodule/compiler/jsxNamespaceImplicitImportJSXNamespace.types index 4419539beed..5e8455f18f9 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxNamespaceImplicitImportJSXNamespace.types +++ b/testdata/baselines/reference/submodule/compiler/jsxNamespaceImplicitImportJSXNamespace.types @@ -92,13 +92,13 @@ import { JSXInternal } from '..'; >JSXInternal : any export function jsx( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): 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 props: JSXInternal.HTMLAttributes & ->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; } +>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild; } >JSXInternal : any JSXInternal.SVGAttributes & @@ -112,13 +112,13 @@ export function jsx( ): VNode; export function jsx

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

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): 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

props: Attributes & P & { children?: ComponentChild }, ->props : P & { children?: ComponentChild | undefined; } +>props : P & { children?: ComponentChild; } >children : ComponentChild | undefined key?: string @@ -128,13 +128,13 @@ export function jsx

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

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): 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 props: JSXInternal.HTMLAttributes & ->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[] | undefined; } +>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[]; } >JSXInternal : any JSXInternal.SVGAttributes & @@ -148,13 +148,13 @@ export function jsxs( ): VNode; export function jsxs

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

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): 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

props: Attributes & P & { children?: ComponentChild[] }, ->props : P & { children?: ComponentChild[] | undefined; } +>props : P & { children?: ComponentChild[]; } >children : ComponentChild[] | undefined key?: string @@ -164,13 +164,13 @@ export function jsxs

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

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): 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 props: JSXInternal.HTMLAttributes & ->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren | undefined; } +>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren; } >JSXInternal : any JSXInternal.SVGAttributes & @@ -184,13 +184,13 @@ export function jsxDEV( ): VNode; export function jsxDEV

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

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): 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

props: Attributes & P & { children?: ComponentChildren }, ->props : P & { children?: ComponentChildren | undefined; } +>props : P & { children?: ComponentChildren; } >children : ComponentChildren | undefined key?: string diff --git a/testdata/baselines/reference/submodule/compiler/jsxNamespaceImplicitImportJSXNamespace.types.diff b/testdata/baselines/reference/submodule/compiler/jsxNamespaceImplicitImportJSXNamespace.types.diff deleted file mode 100644 index 67a6e0c8333..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxNamespaceImplicitImportJSXNamespace.types.diff +++ /dev/null @@ -1,98 +0,0 @@ ---- old.jsxNamespaceImplicitImportJSXNamespace.types -+++ new.jsxNamespaceImplicitImportJSXNamespace.types -@@= skipped -91, +91 lines =@@ - >JSXInternal : any - - 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode; } - - type: string, - >type : string - - props: JSXInternal.HTMLAttributes & -->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild; } -+>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; } - >JSXInternal : any - - JSXInternal.SVGAttributes & -@@= skipped -20, +20 lines =@@ - - ): 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode; } - - type: ComponentType

, - >type : ComponentType

- - props: Attributes & P & { children?: ComponentChild }, -->props : P & { children?: ComponentChild; } -+>props : P & { children?: ComponentChild | undefined; } - >children : ComponentChild | undefined - - key?: string -@@= skipped -16, +16 lines =@@ - - - 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[] | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode; } - - type: string, - >type : string - - props: JSXInternal.HTMLAttributes & -->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[]; } -+>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[] | undefined; } - >JSXInternal : any - - JSXInternal.SVGAttributes & -@@= skipped -20, +20 lines =@@ - - ): 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[] | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode; } - - type: ComponentType

, - >type : ComponentType

- - props: Attributes & P & { children?: ComponentChild[] }, -->props : P & { children?: ComponentChild[]; } -+>props : P & { children?: ComponentChild[] | undefined; } - >children : ComponentChild[] | undefined - - key?: string -@@= skipped -16, +16 lines =@@ - - - 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode; } - - type: string, - >type : string - - props: JSXInternal.HTMLAttributes & -->props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren; } -+>props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren | undefined; } - >JSXInternal : any - - JSXInternal.SVGAttributes & -@@= skipped -20, +20 lines =@@ - - ): 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 | undefined; }, key?: string | undefined): VNode;

(type: ComponentType

, props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode; } - - type: ComponentType

, - >type : ComponentType

- - props: Attributes & P & { children?: ComponentChildren }, -->props : P & { children?: ComponentChildren; } -+>props : P & { children?: ComponentChildren | undefined; } - >children : ComponentChildren | undefined - - key?: string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxPartialSpread.types b/testdata/baselines/reference/submodule/compiler/jsxPartialSpread.types index 98adf8ad088..cab2808c9ed 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxPartialSpread.types +++ b/testdata/baselines/reference/submodule/compiler/jsxPartialSpread.types @@ -15,7 +15,7 @@ import React from 'react'; >React : typeof React export function Repro({ SelectProps = {} }: { SelectProps?: Partial[0]> }) { ->Repro : ({ SelectProps }: { SelectProps?: Partial<{ value?: unknown; }> | undefined; }) => JSX.Element +>Repro : ({ SelectProps }: { SelectProps?: Partial[0]>; }) => JSX.Element >SelectProps : Partial<{ value?: unknown; }> >{} : {} >SelectProps : Partial<{ value?: unknown; }> | undefined diff --git a/testdata/baselines/reference/submodule/compiler/jsxPartialSpread.types.diff b/testdata/baselines/reference/submodule/compiler/jsxPartialSpread.types.diff deleted file mode 100644 index 1e6b0ee3802..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxPartialSpread.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.jsxPartialSpread.types -+++ new.jsxPartialSpread.types -@@= skipped -14, +14 lines =@@ - >React : typeof React - - export function Repro({ SelectProps = {} }: { SelectProps?: Partial[0]> }) { -->Repro : ({ SelectProps }: { SelectProps?: Partial[0]>; }) => JSX.Element -+>Repro : ({ SelectProps }: { SelectProps?: Partial<{ value?: unknown; }> | undefined; }) => JSX.Element - >SelectProps : Partial<{ value?: unknown; }> - >{} : {} - >SelectProps : Partial<{ value?: unknown; }> | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsxPropsAsIdentifierNames.types b/testdata/baselines/reference/submodule/compiler/jsxPropsAsIdentifierNames.types index 15d00822a6d..ad3cbf79f02 100644 --- a/testdata/baselines/reference/submodule/compiler/jsxPropsAsIdentifierNames.types +++ b/testdata/baselines/reference/submodule/compiler/jsxPropsAsIdentifierNames.types @@ -5,7 +5,7 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { div: { ->div : { static?: boolean | undefined; } +>div : { static?: boolean; } static?: boolean; >static : boolean | undefined diff --git a/testdata/baselines/reference/submodule/compiler/jsxPropsAsIdentifierNames.types.diff b/testdata/baselines/reference/submodule/compiler/jsxPropsAsIdentifierNames.types.diff deleted file mode 100644 index 577055cf4d7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/jsxPropsAsIdentifierNames.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.jsxPropsAsIdentifierNames.types -+++ new.jsxPropsAsIdentifierNames.types -@@= skipped -4, +4 lines =@@ - interface Element { } - interface IntrinsicElements { - div: { -->div : { static?: boolean; } -+>div : { static?: boolean | undefined; } - - static?: boolean; - >static : boolean | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/largeTupleTypes.types b/testdata/baselines/reference/submodule/compiler/largeTupleTypes.types index 2f19a708b95..5c66ccfd21e 100644 --- a/testdata/baselines/reference/submodule/compiler/largeTupleTypes.types +++ b/testdata/baselines/reference/submodule/compiler/largeTupleTypes.types @@ -27,7 +27,7 @@ declare class ArrayValidator { >ArrayValidator : ArrayValidator lengthRange(start: S, endBefore: E): ArrayValidator]>>, ExpandSmallerTuples]>>>>; ->lengthRange : (start: S, endBefore: E) => ArrayValidator]>>, ExpandSmallerTuples]>>>, Exclude]>>, ExpandSmallerTuples]>>>[number]> +>lengthRange : (start: S, endBefore: E) => ArrayValidator]>>, ExpandSmallerTuples]>>>> >start : S >endBefore : E } diff --git a/testdata/baselines/reference/submodule/compiler/largeTupleTypes.types.diff b/testdata/baselines/reference/submodule/compiler/largeTupleTypes.types.diff deleted file mode 100644 index 817652dd6e3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/largeTupleTypes.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.largeTupleTypes.types -+++ new.largeTupleTypes.types -@@= skipped -26, +26 lines =@@ - >ArrayValidator : ArrayValidator - - lengthRange(start: S, endBefore: E): ArrayValidator]>>, ExpandSmallerTuples]>>>>; -->lengthRange : (start: S, endBefore: E) => ArrayValidator]>>, ExpandSmallerTuples]>>>> -+>lengthRange : (start: S, endBefore: E) => ArrayValidator]>>, ExpandSmallerTuples]>>>, Exclude]>>, ExpandSmallerTuples]>>>[number]> - >start : S - >endBefore : E - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/letDeclarations-access.types b/testdata/baselines/reference/submodule/compiler/letDeclarations-access.types index a5a2fcdb951..0d9892d6052 100644 --- a/testdata/baselines/reference/submodule/compiler/letDeclarations-access.types +++ b/testdata/baselines/reference/submodule/compiler/letDeclarations-access.types @@ -118,7 +118,7 @@ x; x.toString(); >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/letDeclarations-access.types.diff b/testdata/baselines/reference/submodule/compiler/letDeclarations-access.types.diff deleted file mode 100644 index d2590fce018..00000000000 --- a/testdata/baselines/reference/submodule/compiler/letDeclarations-access.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.letDeclarations-access.types -+++ new.letDeclarations-access.types -@@= skipped -117, +117 lines =@@ - - x.toString(); - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/library_ArraySlice.types b/testdata/baselines/reference/submodule/compiler/library_ArraySlice.types index e3acef3752b..e2ee6a3513e 100644 --- a/testdata/baselines/reference/submodule/compiler/library_ArraySlice.types +++ b/testdata/baselines/reference/submodule/compiler/library_ArraySlice.types @@ -4,28 +4,28 @@ // Array.prototype.slice can have zero, one, or two arguments Array.prototype.slice(); >Array.prototype.slice() : any[] ->Array.prototype.slice : (start?: number | undefined, end?: number | undefined) => any[] +>Array.prototype.slice : (start?: number, end?: number) => any[] >Array.prototype : any[] >Array : ArrayConstructor >prototype : any[] ->slice : (start?: number | undefined, end?: number | undefined) => any[] +>slice : (start?: number, end?: number) => any[] Array.prototype.slice(0); >Array.prototype.slice(0) : any[] ->Array.prototype.slice : (start?: number | undefined, end?: number | undefined) => any[] +>Array.prototype.slice : (start?: number, end?: number) => any[] >Array.prototype : any[] >Array : ArrayConstructor >prototype : any[] ->slice : (start?: number | undefined, end?: number | undefined) => any[] +>slice : (start?: number, end?: number) => any[] >0 : 0 Array.prototype.slice(0, 1); >Array.prototype.slice(0, 1) : any[] ->Array.prototype.slice : (start?: number | undefined, end?: number | undefined) => any[] +>Array.prototype.slice : (start?: number, end?: number) => any[] >Array.prototype : any[] >Array : ArrayConstructor >prototype : any[] ->slice : (start?: number | undefined, end?: number | undefined) => any[] +>slice : (start?: number, end?: number) => any[] >0 : 0 >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/library_ArraySlice.types.diff b/testdata/baselines/reference/submodule/compiler/library_ArraySlice.types.diff deleted file mode 100644 index 192aebbef50..00000000000 --- a/testdata/baselines/reference/submodule/compiler/library_ArraySlice.types.diff +++ /dev/null @@ -1,36 +0,0 @@ ---- old.library_ArraySlice.types -+++ new.library_ArraySlice.types -@@= skipped -3, +3 lines =@@ - // Array.prototype.slice can have zero, one, or two arguments - Array.prototype.slice(); - >Array.prototype.slice() : any[] -->Array.prototype.slice : (start?: number, end?: number) => any[] -+>Array.prototype.slice : (start?: number | undefined, end?: number | undefined) => any[] - >Array.prototype : any[] - >Array : ArrayConstructor - >prototype : any[] -->slice : (start?: number, end?: number) => any[] -+>slice : (start?: number | undefined, end?: number | undefined) => any[] - - Array.prototype.slice(0); - >Array.prototype.slice(0) : any[] -->Array.prototype.slice : (start?: number, end?: number) => any[] -+>Array.prototype.slice : (start?: number | undefined, end?: number | undefined) => any[] - >Array.prototype : any[] - >Array : ArrayConstructor - >prototype : any[] -->slice : (start?: number, end?: number) => any[] -+>slice : (start?: number | undefined, end?: number | undefined) => any[] - >0 : 0 - - Array.prototype.slice(0, 1); - >Array.prototype.slice(0, 1) : any[] -->Array.prototype.slice : (start?: number, end?: number) => any[] -+>Array.prototype.slice : (start?: number | undefined, end?: number | undefined) => any[] - >Array.prototype : any[] - >Array : ArrayConstructor - >prototype : any[] -->slice : (start?: number, end?: number) => any[] -+>slice : (start?: number | undefined, end?: number | undefined) => any[] - >0 : 0 - >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/library_DatePrototypeProperties.types b/testdata/baselines/reference/submodule/compiler/library_DatePrototypeProperties.types index e04307a8da7..d87fa11cf18 100644 --- a/testdata/baselines/reference/submodule/compiler/library_DatePrototypeProperties.types +++ b/testdata/baselines/reference/submodule/compiler/library_DatePrototypeProperties.types @@ -36,27 +36,27 @@ Date.prototype.toTimeString(); Date.prototype.toLocaleString(); >Date.prototype.toLocaleString() : string ->Date.prototype.toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } +>Date.prototype.toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } >Date.prototype : Date >Date : DateConstructor >prototype : Date ->toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } Date.prototype.toLocaleDateString(); >Date.prototype.toLocaleDateString() : string ->Date.prototype.toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } +>Date.prototype.toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } >Date.prototype : Date >Date : DateConstructor >prototype : Date ->toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } +>toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } Date.prototype.toLocaleTimeString(); >Date.prototype.toLocaleTimeString() : string ->Date.prototype.toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } +>Date.prototype.toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } >Date.prototype : Date >Date : DateConstructor >prototype : Date ->toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } +>toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } Date.prototype.valueOf(); >Date.prototype.valueOf() : number @@ -239,56 +239,56 @@ Date.prototype.setUTCMilliseconds(0); Date.prototype.setSeconds(0); >Date.prototype.setSeconds(0) : number ->Date.prototype.setSeconds : (sec: number, ms?: number | undefined) => number +>Date.prototype.setSeconds : (sec: number, ms?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setSeconds : (sec: number, ms?: number | undefined) => number +>setSeconds : (sec: number, ms?: number) => number >0 : 0 Date.prototype.setUTCSeconds(0); >Date.prototype.setUTCSeconds(0) : number ->Date.prototype.setUTCSeconds : (sec: number, ms?: number | undefined) => number +>Date.prototype.setUTCSeconds : (sec: number, ms?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setUTCSeconds : (sec: number, ms?: number | undefined) => number +>setUTCSeconds : (sec: number, ms?: number) => number >0 : 0 Date.prototype.setMinutes(0); >Date.prototype.setMinutes(0) : number ->Date.prototype.setMinutes : (min: number, sec?: number | undefined, ms?: number | undefined) => number +>Date.prototype.setMinutes : (min: number, sec?: number, ms?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setMinutes : (min: number, sec?: number | undefined, ms?: number | undefined) => number +>setMinutes : (min: number, sec?: number, ms?: number) => number >0 : 0 Date.prototype.setUTCMinutes(0); >Date.prototype.setUTCMinutes(0) : number ->Date.prototype.setUTCMinutes : (min: number, sec?: number | undefined, ms?: number | undefined) => number +>Date.prototype.setUTCMinutes : (min: number, sec?: number, ms?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setUTCMinutes : (min: number, sec?: number | undefined, ms?: number | undefined) => number +>setUTCMinutes : (min: number, sec?: number, ms?: number) => number >0 : 0 Date.prototype.setHours(0); >Date.prototype.setHours(0) : number ->Date.prototype.setHours : (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number +>Date.prototype.setHours : (hours: number, min?: number, sec?: number, ms?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setHours : (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number +>setHours : (hours: number, min?: number, sec?: number, ms?: number) => number >0 : 0 Date.prototype.setUTCHours(0); >Date.prototype.setUTCHours(0) : number ->Date.prototype.setUTCHours : (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number +>Date.prototype.setUTCHours : (hours: number, min?: number, sec?: number, ms?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setUTCHours : (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number +>setUTCHours : (hours: number, min?: number, sec?: number, ms?: number) => number >0 : 0 Date.prototype.setDate(0); @@ -311,38 +311,38 @@ Date.prototype.setUTCDate(0); Date.prototype.setMonth(0); >Date.prototype.setMonth(0) : number ->Date.prototype.setMonth : (month: number, date?: number | undefined) => number +>Date.prototype.setMonth : (month: number, date?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setMonth : (month: number, date?: number | undefined) => number +>setMonth : (month: number, date?: number) => number >0 : 0 Date.prototype.setUTCMonth(0); >Date.prototype.setUTCMonth(0) : number ->Date.prototype.setUTCMonth : (month: number, date?: number | undefined) => number +>Date.prototype.setUTCMonth : (month: number, date?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setUTCMonth : (month: number, date?: number | undefined) => number +>setUTCMonth : (month: number, date?: number) => number >0 : 0 Date.prototype.setFullYear(0); >Date.prototype.setFullYear(0) : number ->Date.prototype.setFullYear : (year: number, month?: number | undefined, date?: number | undefined) => number +>Date.prototype.setFullYear : (year: number, month?: number, date?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setFullYear : (year: number, month?: number | undefined, date?: number | undefined) => number +>setFullYear : (year: number, month?: number, date?: number) => number >0 : 0 Date.prototype.setUTCFullYear(0); >Date.prototype.setUTCFullYear(0) : number ->Date.prototype.setUTCFullYear : (year: number, month?: number | undefined, date?: number | undefined) => number +>Date.prototype.setUTCFullYear : (year: number, month?: number, date?: number) => number >Date.prototype : Date >Date : DateConstructor >prototype : Date ->setUTCFullYear : (year: number, month?: number | undefined, date?: number | undefined) => number +>setUTCFullYear : (year: number, month?: number, date?: number) => number >0 : 0 Date.prototype.toUTCString(); diff --git a/testdata/baselines/reference/submodule/compiler/library_DatePrototypeProperties.types.diff b/testdata/baselines/reference/submodule/compiler/library_DatePrototypeProperties.types.diff deleted file mode 100644 index 3d276930b71..00000000000 --- a/testdata/baselines/reference/submodule/compiler/library_DatePrototypeProperties.types.diff +++ /dev/null @@ -1,152 +0,0 @@ ---- old.library_DatePrototypeProperties.types -+++ new.library_DatePrototypeProperties.types -@@= skipped -35, +35 lines =@@ - - Date.prototype.toLocaleString(); - >Date.prototype.toLocaleString() : string -->Date.prototype.toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } -+>Date.prototype.toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } - - Date.prototype.toLocaleDateString(); - >Date.prototype.toLocaleDateString() : string -->Date.prototype.toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } -+>Date.prototype.toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } -+>toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } - - Date.prototype.toLocaleTimeString(); - >Date.prototype.toLocaleTimeString() : string -->Date.prototype.toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } -+>Date.prototype.toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; } -+>toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; } - - Date.prototype.valueOf(); - >Date.prototype.valueOf() : number -@@= skipped -203, +203 lines =@@ - - Date.prototype.setSeconds(0); - >Date.prototype.setSeconds(0) : number -->Date.prototype.setSeconds : (sec: number, ms?: number) => number -+>Date.prototype.setSeconds : (sec: number, ms?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setSeconds : (sec: number, ms?: number) => number -+>setSeconds : (sec: number, ms?: number | undefined) => number - >0 : 0 - - Date.prototype.setUTCSeconds(0); - >Date.prototype.setUTCSeconds(0) : number -->Date.prototype.setUTCSeconds : (sec: number, ms?: number) => number -+>Date.prototype.setUTCSeconds : (sec: number, ms?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setUTCSeconds : (sec: number, ms?: number) => number -+>setUTCSeconds : (sec: number, ms?: number | undefined) => number - >0 : 0 - - Date.prototype.setMinutes(0); - >Date.prototype.setMinutes(0) : number -->Date.prototype.setMinutes : (min: number, sec?: number, ms?: number) => number -+>Date.prototype.setMinutes : (min: number, sec?: number | undefined, ms?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setMinutes : (min: number, sec?: number, ms?: number) => number -+>setMinutes : (min: number, sec?: number | undefined, ms?: number | undefined) => number - >0 : 0 - - Date.prototype.setUTCMinutes(0); - >Date.prototype.setUTCMinutes(0) : number -->Date.prototype.setUTCMinutes : (min: number, sec?: number, ms?: number) => number -+>Date.prototype.setUTCMinutes : (min: number, sec?: number | undefined, ms?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setUTCMinutes : (min: number, sec?: number, ms?: number) => number -+>setUTCMinutes : (min: number, sec?: number | undefined, ms?: number | undefined) => number - >0 : 0 - - Date.prototype.setHours(0); - >Date.prototype.setHours(0) : number -->Date.prototype.setHours : (hours: number, min?: number, sec?: number, ms?: number) => number -+>Date.prototype.setHours : (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setHours : (hours: number, min?: number, sec?: number, ms?: number) => number -+>setHours : (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number - >0 : 0 - - Date.prototype.setUTCHours(0); - >Date.prototype.setUTCHours(0) : number -->Date.prototype.setUTCHours : (hours: number, min?: number, sec?: number, ms?: number) => number -+>Date.prototype.setUTCHours : (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setUTCHours : (hours: number, min?: number, sec?: number, ms?: number) => number -+>setUTCHours : (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number - >0 : 0 - - Date.prototype.setDate(0); -@@= skipped -72, +72 lines =@@ - - Date.prototype.setMonth(0); - >Date.prototype.setMonth(0) : number -->Date.prototype.setMonth : (month: number, date?: number) => number -+>Date.prototype.setMonth : (month: number, date?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setMonth : (month: number, date?: number) => number -+>setMonth : (month: number, date?: number | undefined) => number - >0 : 0 - - Date.prototype.setUTCMonth(0); - >Date.prototype.setUTCMonth(0) : number -->Date.prototype.setUTCMonth : (month: number, date?: number) => number -+>Date.prototype.setUTCMonth : (month: number, date?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setUTCMonth : (month: number, date?: number) => number -+>setUTCMonth : (month: number, date?: number | undefined) => number - >0 : 0 - - Date.prototype.setFullYear(0); - >Date.prototype.setFullYear(0) : number -->Date.prototype.setFullYear : (year: number, month?: number, date?: number) => number -+>Date.prototype.setFullYear : (year: number, month?: number | undefined, date?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setFullYear : (year: number, month?: number, date?: number) => number -+>setFullYear : (year: number, month?: number | undefined, date?: number | undefined) => number - >0 : 0 - - Date.prototype.setUTCFullYear(0); - >Date.prototype.setUTCFullYear(0) : number -->Date.prototype.setUTCFullYear : (year: number, month?: number, date?: number) => number -+>Date.prototype.setUTCFullYear : (year: number, month?: number | undefined, date?: number | undefined) => number - >Date.prototype : Date - >Date : DateConstructor - >prototype : Date -->setUTCFullYear : (year: number, month?: number, date?: number) => number -+>setUTCFullYear : (year: number, month?: number | undefined, date?: number | undefined) => number - >0 : 0 - - Date.prototype.toUTCString(); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/library_RegExpExecArraySlice.types b/testdata/baselines/reference/submodule/compiler/library_RegExpExecArraySlice.types index 803dadd7b55..6671f275cf9 100644 --- a/testdata/baselines/reference/submodule/compiler/library_RegExpExecArraySlice.types +++ b/testdata/baselines/reference/submodule/compiler/library_RegExpExecArraySlice.types @@ -7,22 +7,22 @@ var regExpExecArrayValue: RegExpExecArray; regExpExecArrayValue.slice(); >regExpExecArrayValue.slice() : string[] ->regExpExecArrayValue.slice : (start?: number | undefined, end?: number | undefined) => string[] +>regExpExecArrayValue.slice : (start?: number, end?: number) => string[] >regExpExecArrayValue : RegExpExecArray ->slice : (start?: number | undefined, end?: number | undefined) => string[] +>slice : (start?: number, end?: number) => string[] regExpExecArrayValue.slice(0); >regExpExecArrayValue.slice(0) : string[] ->regExpExecArrayValue.slice : (start?: number | undefined, end?: number | undefined) => string[] +>regExpExecArrayValue.slice : (start?: number, end?: number) => string[] >regExpExecArrayValue : RegExpExecArray ->slice : (start?: number | undefined, end?: number | undefined) => string[] +>slice : (start?: number, end?: number) => string[] >0 : 0 regExpExecArrayValue.slice(0,1); >regExpExecArrayValue.slice(0,1) : string[] ->regExpExecArrayValue.slice : (start?: number | undefined, end?: number | undefined) => string[] +>regExpExecArrayValue.slice : (start?: number, end?: number) => string[] >regExpExecArrayValue : RegExpExecArray ->slice : (start?: number | undefined, end?: number | undefined) => string[] +>slice : (start?: number, end?: number) => string[] >0 : 0 >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/library_RegExpExecArraySlice.types.diff b/testdata/baselines/reference/submodule/compiler/library_RegExpExecArraySlice.types.diff deleted file mode 100644 index 6570bb19454..00000000000 --- a/testdata/baselines/reference/submodule/compiler/library_RegExpExecArraySlice.types.diff +++ /dev/null @@ -1,30 +0,0 @@ ---- old.library_RegExpExecArraySlice.types -+++ new.library_RegExpExecArraySlice.types -@@= skipped -6, +6 lines =@@ - - regExpExecArrayValue.slice(); - >regExpExecArrayValue.slice() : string[] -->regExpExecArrayValue.slice : (start?: number, end?: number) => string[] -+>regExpExecArrayValue.slice : (start?: number | undefined, end?: number | undefined) => string[] - >regExpExecArrayValue : RegExpExecArray -->slice : (start?: number, end?: number) => string[] -+>slice : (start?: number | undefined, end?: number | undefined) => string[] - - regExpExecArrayValue.slice(0); - >regExpExecArrayValue.slice(0) : string[] -->regExpExecArrayValue.slice : (start?: number, end?: number) => string[] -+>regExpExecArrayValue.slice : (start?: number | undefined, end?: number | undefined) => string[] - >regExpExecArrayValue : RegExpExecArray -->slice : (start?: number, end?: number) => string[] -+>slice : (start?: number | undefined, end?: number | undefined) => string[] - >0 : 0 - - regExpExecArrayValue.slice(0,1); - >regExpExecArrayValue.slice(0,1) : string[] -->regExpExecArrayValue.slice : (start?: number, end?: number) => string[] -+>regExpExecArrayValue.slice : (start?: number | undefined, end?: number | undefined) => string[] - >regExpExecArrayValue : RegExpExecArray -->slice : (start?: number, end?: number) => string[] -+>slice : (start?: number | undefined, end?: number | undefined) => string[] - >0 : 0 - >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/library_StringSlice.types b/testdata/baselines/reference/submodule/compiler/library_StringSlice.types index 902fe01edec..63710a09b75 100644 --- a/testdata/baselines/reference/submodule/compiler/library_StringSlice.types +++ b/testdata/baselines/reference/submodule/compiler/library_StringSlice.types @@ -4,28 +4,28 @@ // String.prototype.slice can have zero, one, or two arguments String.prototype.slice(); >String.prototype.slice() : string ->String.prototype.slice : (start?: number | undefined, end?: number | undefined) => string +>String.prototype.slice : (start?: number, end?: number) => string >String.prototype : String >String : StringConstructor >prototype : String ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string String.prototype.slice(0); >String.prototype.slice(0) : string ->String.prototype.slice : (start?: number | undefined, end?: number | undefined) => string +>String.prototype.slice : (start?: number, end?: number) => string >String.prototype : String >String : StringConstructor >prototype : String ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string >0 : 0 String.prototype.slice(0,1); >String.prototype.slice(0,1) : string ->String.prototype.slice : (start?: number | undefined, end?: number | undefined) => string +>String.prototype.slice : (start?: number, end?: number) => string >String.prototype : String >String : StringConstructor >prototype : String ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string >0 : 0 >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/library_StringSlice.types.diff b/testdata/baselines/reference/submodule/compiler/library_StringSlice.types.diff deleted file mode 100644 index 9c66f29e797..00000000000 --- a/testdata/baselines/reference/submodule/compiler/library_StringSlice.types.diff +++ /dev/null @@ -1,36 +0,0 @@ ---- old.library_StringSlice.types -+++ new.library_StringSlice.types -@@= skipped -3, +3 lines =@@ - // String.prototype.slice can have zero, one, or two arguments - String.prototype.slice(); - >String.prototype.slice() : string -->String.prototype.slice : (start?: number, end?: number) => string -+>String.prototype.slice : (start?: number | undefined, end?: number | undefined) => string - >String.prototype : String - >String : StringConstructor - >prototype : String -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - - String.prototype.slice(0); - >String.prototype.slice(0) : string -->String.prototype.slice : (start?: number, end?: number) => string -+>String.prototype.slice : (start?: number | undefined, end?: number | undefined) => string - >String.prototype : String - >String : StringConstructor - >prototype : String -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - >0 : 0 - - String.prototype.slice(0,1); - >String.prototype.slice(0,1) : string -->String.prototype.slice : (start?: number, end?: number) => string -+>String.prototype.slice : (start?: number | undefined, end?: number | undefined) => string - >String.prototype : String - >String : StringConstructor - >prototype : String -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - >0 : 0 - >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/literalsInComputedProperties1.types b/testdata/baselines/reference/submodule/compiler/literalsInComputedProperties1.types index c1e3dac8037..f99ef146076 100644 --- a/testdata/baselines/reference/submodule/compiler/literalsInComputedProperties1.types +++ b/testdata/baselines/reference/submodule/compiler/literalsInComputedProperties1.types @@ -25,35 +25,35 @@ let x = { } x[1].toExponential(); >x[1].toExponential() : string ->x[1].toExponential : (fractionDigits?: number | undefined) => string +>x[1].toExponential : (fractionDigits?: number) => string >x[1] : number >x : { 1: number; 2: number; "3": number; "4": number; } >1 : 1 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string x[2].toExponential(); >x[2].toExponential() : string ->x[2].toExponential : (fractionDigits?: number | undefined) => string +>x[2].toExponential : (fractionDigits?: number) => string >x[2] : number >x : { 1: number; 2: number; "3": number; "4": number; } >2 : 2 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string x[3].toExponential(); >x[3].toExponential() : string ->x[3].toExponential : (fractionDigits?: number | undefined) => string +>x[3].toExponential : (fractionDigits?: number) => string >x[3] : number >x : { 1: number; 2: number; "3": number; "4": number; } >3 : 3 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string x[4].toExponential(); >x[4].toExponential() : string ->x[4].toExponential : (fractionDigits?: number | undefined) => string +>x[4].toExponential : (fractionDigits?: number) => string >x[4] : number >x : { 1: number; 2: number; "3": number; "4": number; } >4 : 4 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string interface A { 1:number; @@ -76,35 +76,35 @@ declare let y:A; y[1].toExponential(); >y[1].toExponential() : string ->y[1].toExponential : (fractionDigits?: number | undefined) => string +>y[1].toExponential : (fractionDigits?: number) => string >y[1] : number >y : A >1 : 1 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string y[2].toExponential(); >y[2].toExponential() : string ->y[2].toExponential : (fractionDigits?: number | undefined) => string +>y[2].toExponential : (fractionDigits?: number) => string >y[2] : number >y : A >2 : 2 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string y[3].toExponential(); >y[3].toExponential() : string ->y[3].toExponential : (fractionDigits?: number | undefined) => string +>y[3].toExponential : (fractionDigits?: number) => string >y[3] : number >y : A >3 : 3 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string y[4].toExponential(); >y[4].toExponential() : string ->y[4].toExponential : (fractionDigits?: number | undefined) => string +>y[4].toExponential : (fractionDigits?: number) => string >y[4] : number >y : A >4 : 4 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string class C { >C : C @@ -129,35 +129,35 @@ declare let z:C; z[1].toExponential(); >z[1].toExponential() : string ->z[1].toExponential : (fractionDigits?: number | undefined) => string +>z[1].toExponential : (fractionDigits?: number) => string >z[1] : number >z : C >1 : 1 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string z[2].toExponential(); >z[2].toExponential() : string ->z[2].toExponential : (fractionDigits?: number | undefined) => string +>z[2].toExponential : (fractionDigits?: number) => string >z[2] : number >z : C >2 : 2 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string z[3].toExponential(); >z[3].toExponential() : string ->z[3].toExponential : (fractionDigits?: number | undefined) => string +>z[3].toExponential : (fractionDigits?: number) => string >z[3] : number >z : C >3 : 3 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string z[4].toExponential(); >z[4].toExponential() : string ->z[4].toExponential : (fractionDigits?: number | undefined) => string +>z[4].toExponential : (fractionDigits?: number) => string >z[4] : number >z : C >4 : 4 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string enum X { >X : X diff --git a/testdata/baselines/reference/submodule/compiler/literalsInComputedProperties1.types.diff b/testdata/baselines/reference/submodule/compiler/literalsInComputedProperties1.types.diff deleted file mode 100644 index 7f39de9a750..00000000000 --- a/testdata/baselines/reference/submodule/compiler/literalsInComputedProperties1.types.diff +++ /dev/null @@ -1,134 +0,0 @@ ---- old.literalsInComputedProperties1.types -+++ new.literalsInComputedProperties1.types -@@= skipped -24, +24 lines =@@ - } - x[1].toExponential(); - >x[1].toExponential() : string -->x[1].toExponential : (fractionDigits?: number) => string -+>x[1].toExponential : (fractionDigits?: number | undefined) => string - >x[1] : number - >x : { 1: number; 2: number; "3": number; "4": number; } - >1 : 1 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - x[2].toExponential(); - >x[2].toExponential() : string -->x[2].toExponential : (fractionDigits?: number) => string -+>x[2].toExponential : (fractionDigits?: number | undefined) => string - >x[2] : number - >x : { 1: number; 2: number; "3": number; "4": number; } - >2 : 2 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - x[3].toExponential(); - >x[3].toExponential() : string -->x[3].toExponential : (fractionDigits?: number) => string -+>x[3].toExponential : (fractionDigits?: number | undefined) => string - >x[3] : number - >x : { 1: number; 2: number; "3": number; "4": number; } - >3 : 3 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - x[4].toExponential(); - >x[4].toExponential() : string -->x[4].toExponential : (fractionDigits?: number) => string -+>x[4].toExponential : (fractionDigits?: number | undefined) => string - >x[4] : number - >x : { 1: number; 2: number; "3": number; "4": number; } - >4 : 4 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - interface A { - 1:number; -@@= skipped -51, +51 lines =@@ - - y[1].toExponential(); - >y[1].toExponential() : string -->y[1].toExponential : (fractionDigits?: number) => string -+>y[1].toExponential : (fractionDigits?: number | undefined) => string - >y[1] : number - >y : A - >1 : 1 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - y[2].toExponential(); - >y[2].toExponential() : string -->y[2].toExponential : (fractionDigits?: number) => string -+>y[2].toExponential : (fractionDigits?: number | undefined) => string - >y[2] : number - >y : A - >2 : 2 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - y[3].toExponential(); - >y[3].toExponential() : string -->y[3].toExponential : (fractionDigits?: number) => string -+>y[3].toExponential : (fractionDigits?: number | undefined) => string - >y[3] : number - >y : A - >3 : 3 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - y[4].toExponential(); - >y[4].toExponential() : string -->y[4].toExponential : (fractionDigits?: number) => string -+>y[4].toExponential : (fractionDigits?: number | undefined) => string - >y[4] : number - >y : A - >4 : 4 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - class C { - >C : C -@@= skipped -53, +53 lines =@@ - - z[1].toExponential(); - >z[1].toExponential() : string -->z[1].toExponential : (fractionDigits?: number) => string -+>z[1].toExponential : (fractionDigits?: number | undefined) => string - >z[1] : number - >z : C - >1 : 1 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - z[2].toExponential(); - >z[2].toExponential() : string -->z[2].toExponential : (fractionDigits?: number) => string -+>z[2].toExponential : (fractionDigits?: number | undefined) => string - >z[2] : number - >z : C - >2 : 2 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - z[3].toExponential(); - >z[3].toExponential() : string -->z[3].toExponential : (fractionDigits?: number) => string -+>z[3].toExponential : (fractionDigits?: number | undefined) => string - >z[3] : number - >z : C - >3 : 3 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - z[4].toExponential(); - >z[4].toExponential() : string -->z[4].toExponential : (fractionDigits?: number) => string -+>z[4].toExponential : (fractionDigits?: number | undefined) => string - >z[4] : number - >z : C - >4 : 4 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - enum X { - >X : X \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/localTypeParameterInferencePriority.types b/testdata/baselines/reference/submodule/compiler/localTypeParameterInferencePriority.types index 40cb4a3d5d3..fd0fb4fd7ea 100644 --- a/testdata/baselines/reference/submodule/compiler/localTypeParameterInferencePriority.types +++ b/testdata/baselines/reference/submodule/compiler/localTypeParameterInferencePriority.types @@ -19,7 +19,7 @@ class Table { // Removing this line, removes the error getRows(): Array>> { ->getRows : () => UnrollOnHover>[] +>getRows : () => Array>> return null! >null! : never diff --git a/testdata/baselines/reference/submodule/compiler/localTypeParameterInferencePriority.types.diff b/testdata/baselines/reference/submodule/compiler/localTypeParameterInferencePriority.types.diff deleted file mode 100644 index 7e80e81a977..00000000000 --- a/testdata/baselines/reference/submodule/compiler/localTypeParameterInferencePriority.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.localTypeParameterInferencePriority.types -+++ new.localTypeParameterInferencePriority.types -@@= skipped -18, +18 lines =@@ - - // Removing this line, removes the error - getRows(): Array>> { -->getRows : () => Array>> -+>getRows : () => UnrollOnHover>[] - - return null! - >null! : never \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeContextualTypesApplied.types b/testdata/baselines/reference/submodule/compiler/mappedTypeContextualTypesApplied.types index 70ae1185452..63c1dffa7ad 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeContextualTypesApplied.types +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeContextualTypesApplied.types @@ -8,7 +8,7 @@ type TakeString = (s: string) => any; // Various functions accepting an object whose properties are TakeString functions. // Note these all use mapped types. declare function mapped1(obj: T): void; ->mapped1 : (obj: T) => void +>mapped1 : (obj: T) => void >obj : T declare function mapped2(obj: T): void; @@ -16,7 +16,7 @@ declare function mapped2(obj: T): void; >obj : T declare function mapped3(obj: T): void; ->mapped3 : (obj: T) => void +>mapped3 : (obj: T) => void >obj : T declare function mapped4(obj: T & {[P in keyof T]: TakeString}): void; @@ -32,20 +32,20 @@ declare function mapped6(obj: {[P in K]: TakeString}): void; >obj : { [P in K]: TakeString; } declare function mapped7(obj: {[P in K]: TakeString}): void; ->mapped7 : (obj: { [P in K]: TakeString; }) => void +>mapped7 : (obj: { [P in K]: TakeString; }) => void >obj : { [P in K]: TakeString; } declare function mapped8(obj: {[P in K]: TakeString}): void; ->mapped8 : (obj: { [P in K]: TakeString; }) => void +>mapped8 : (obj: { [P in K]: TakeString; }) => void >obj : { [P in K]: TakeString; } declare function mapped9(obj: {[P in K]: TakeString}): void; ->mapped9 : (obj: { [P in K]: TakeString; }) => void +>mapped9 : (obj: { [P in K]: TakeString; }) => void >obj : { [P in K]: TakeString; } mapped1({foo: s => 42}); >mapped1({foo: s => 42}) : void ->mapped1 : (obj: T) => void +>mapped1 : (obj: T) => void >{foo: s => 42} : { foo: (s: string) => number; } >foo : (s: string) => number >s => 42 : (s: string) => number @@ -63,7 +63,7 @@ mapped2({foo: s => 42}); mapped3({foo: s => 42}); >mapped3({foo: s => 42}) : void ->mapped3 : (obj: T) => void +>mapped3 : (obj: T) => void >{foo: s => 42} : { foo: (s: string) => number; } >foo : (s: string) => number >s => 42 : (s: string) => number @@ -99,7 +99,7 @@ mapped6({foo: s => 42}); mapped7({foo: s => 42}); >mapped7({foo: s => 42}) : void ->mapped7 : (obj: { [P in K]: TakeString; }) => void +>mapped7 : (obj: { [P in K]: TakeString; }) => void >{foo: s => 42} : { foo: (s: string) => number; } >foo : (s: string) => number >s => 42 : (s: string) => number @@ -108,7 +108,7 @@ mapped7({foo: s => 42}); mapped8({foo: s => 42}); >mapped8({foo: s => 42}) : void ->mapped8 : (obj: { [P in K]: TakeString; }) => void +>mapped8 : (obj: { [P in K]: TakeString; }) => void >{foo: s => 42} : { foo: (s: string) => number; } >foo : (s: string) => number >s => 42 : (s: string) => number @@ -117,7 +117,7 @@ mapped8({foo: s => 42}); mapped9({foo: s => 42}); >mapped9({foo: s => 42}) : void ->mapped9 : (obj: { [P in K]: TakeString; }) => void +>mapped9 : (obj: { [P in K]: TakeString; }) => void >{foo: s => 42} : { foo: (s: string) => number; } >foo : (s: string) => number >s => 42 : (s: string) => number diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeContextualTypesApplied.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeContextualTypesApplied.types.diff index 7d17cb0ffb7..29b98f9431f 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeContextualTypesApplied.types.diff +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeContextualTypesApplied.types.diff @@ -1,71 +1,34 @@ --- old.mappedTypeContextualTypesApplied.types +++ new.mappedTypeContextualTypesApplied.types -@@= skipped -7, +7 lines =@@ - // Various functions accepting an object whose properties are TakeString functions. - // Note these all use mapped types. - declare function mapped1(obj: T): void; -->mapped1 : (obj: T) => void -+>mapped1 : (obj: T) => void - >obj : T - - declare function mapped2(obj: T): void; -@@= skipped -8, +8 lines =@@ - >obj : T - - declare function mapped3(obj: T): void; -->mapped3 : (obj: T) => void -+>mapped3 : (obj: T) => void - >obj : T - - declare function mapped4(obj: T & {[P in keyof T]: TakeString}): void; -@@= skipped -16, +16 lines =@@ - >obj : { [P in K]: TakeString; } - - declare function mapped7(obj: {[P in K]: TakeString}): void; -->mapped7 : (obj: { [P in K]: TakeString; }) => void -+>mapped7 : (obj: { [P in K]: TakeString; }) => void +@@= skipped -35, +35 lines =@@ >obj : { [P in K]: TakeString; } declare function mapped8(obj: {[P in K]: TakeString}): void; -@@= skipped -8, +8 lines =@@ +->mapped8 : (obj: { [P in K]: TakeString; }) => void ++>mapped8 : (obj: { [P in K]: TakeString; }) => void >obj : { [P in K]: TakeString; } declare function mapped9(obj: {[P in K]: TakeString}): void; ->mapped9 : (obj: { [P in K]: TakeString; }) => void -+>mapped9 : (obj: { [P in K]: TakeString; }) => void ++>mapped9 : (obj: { [P in K]: TakeString; }) => void >obj : { [P in K]: TakeString; } mapped1({foo: s => 42}); - >mapped1({foo: s => 42}) : void -->mapped1 : (obj: T) => void -+>mapped1 : (obj: T) => void - >{foo: s => 42} : { foo: (s: string) => number; } - >foo : (s: string) => number - >s => 42 : (s: string) => number -@@= skipped -23, +23 lines =@@ - - mapped3({foo: s => 42}); - >mapped3({foo: s => 42}) : void -->mapped3 : (obj: T) => void -+>mapped3 : (obj: T) => void - >{foo: s => 42} : { foo: (s: string) => number; } - >foo : (s: string) => number - >s => 42 : (s: string) => number -@@= skipped -36, +36 lines =@@ +@@= skipped -72, +72 lines =@@ - mapped7({foo: s => 42}); - >mapped7({foo: s => 42}) : void -->mapped7 : (obj: { [P in K]: TakeString; }) => void -+>mapped7 : (obj: { [P in K]: TakeString; }) => void + mapped8({foo: s => 42}); + >mapped8({foo: s => 42}) : void +->mapped8 : (obj: { [P in K]: TakeString; }) => void ++>mapped8 : (obj: { [P in K]: TakeString; }) => void >{foo: s => 42} : { foo: (s: string) => number; } >foo : (s: string) => number >s => 42 : (s: string) => number -@@= skipped -18, +18 lines =@@ +@@= skipped -9, +9 lines =@@ mapped9({foo: s => 42}); >mapped9({foo: s => 42}) : void ->mapped9 : (obj: { [P in K]: TakeString; }) => void -+>mapped9 : (obj: { [P in K]: TakeString; }) => void ++>mapped9 : (obj: { [P in K]: TakeString; }) => void >{foo: s => 42} : { foo: (s: string) => number; } >foo : (s: string) => number >s => 42 : (s: string) => number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericIndexedAccess.types b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericIndexedAccess.types index 8448beab768..2e35a13172a 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericIndexedAccess.types +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericIndexedAccess.types @@ -78,12 +78,12 @@ type TypesMap = { >TypesMap : TypesMap [0]: { foo: 'bar'; }; ->[0] : { foo: "bar"; } +>[0] : { foo: 'bar'; } >0 : 0 >foo : "bar" [1]: { a: 'b'; }; ->[1] : { a: "b"; } +>[1] : { a: 'b'; } >1 : 1 >a : "b" @@ -143,7 +143,7 @@ const onSomeEvent = (p: P) => >typeHandlers[p.t] : ((p: P) => void) | undefined >typeHandlers : TypeHandlers >p.t : T ->p : { t: T; } & ({ foo: "bar"; } | { a: "b"; }) +>p : { t: T; } & ({ foo: 'bar'; } | { a: 'b'; }) >t : T >p : P diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericIndexedAccess.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericIndexedAccess.types.diff new file mode 100644 index 00000000000..49fbbb49dd6 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericIndexedAccess.types.diff @@ -0,0 +1,25 @@ +--- old.mappedTypeGenericIndexedAccess.types ++++ new.mappedTypeGenericIndexedAccess.types +@@= skipped -77, +77 lines =@@ + >TypesMap : TypesMap + + [0]: { foo: 'bar'; }; +->[0] : { foo: "bar"; } ++>[0] : { foo: 'bar'; } + >0 : 0 + >foo : "bar" + + [1]: { a: 'b'; }; +->[1] : { a: "b"; } ++>[1] : { a: 'b'; } + >1 : 1 + >a : "b" + +@@= skipped -65, +65 lines =@@ + >typeHandlers[p.t] : ((p: P) => void) | undefined + >typeHandlers : TypeHandlers + >p.t : T +->p : { t: T; } & ({ foo: "bar"; } | { a: "b"; }) ++>p : { t: T; } & ({ foo: 'bar'; } | { a: 'b'; }) + >t : T + >p : P diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types b/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types index 743cbd7bdfb..3cee57647fd 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types @@ -26,39 +26,39 @@ function foo(m1: M1[K], m2: M2[K], m3: M3[K]) { m1.toString(); // Error >m1.toString() : string ->m1.toString : (radix?: number | undefined) => string +>m1.toString : (radix?: number) => string >m1 : 1 | 2 | undefined ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string m1?.toString(); >m1?.toString() : string | undefined ->m1?.toString : ((radix?: number | undefined) => string) | undefined +>m1?.toString : ((radix?: number) => string) | undefined >m1 : 1 | 2 | undefined ->toString : ((radix?: number | undefined) => string) | undefined +>toString : ((radix?: number) => string) | undefined m2.toString(); // Error >m2.toString() : string ->m2.toString : (radix?: number | undefined) => string +>m2.toString : (radix?: number) => string >m2 : 1 | 2 | undefined ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string m2?.toString(); >m2?.toString() : string | undefined ->m2?.toString : ((radix?: number | undefined) => string) | undefined +>m2?.toString : ((radix?: number) => string) | undefined >m2 : 1 | 2 | undefined ->toString : ((radix?: number | undefined) => string) | undefined +>toString : ((radix?: number) => string) | undefined m3.toString(); // Error >m3.toString() : string ->m3.toString : (radix?: number | undefined) => string +>m3.toString : (radix?: number) => string >m3 : 1 | 2 | undefined ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string m3?.toString(); >m3?.toString() : string | undefined ->m3?.toString : ((radix?: number | undefined) => string) | undefined +>m3?.toString : ((radix?: number) => string) | undefined >m3 : 1 | 2 | undefined ->toString : ((radix?: number | undefined) => string) | undefined +>toString : ((radix?: number) => string) | undefined } // Repro from #57487 @@ -79,16 +79,16 @@ const mapped: { [K in keyof Partial]: Obj[K] } = {}; >{} : {} const resolveMapped = (key: K) => mapped[key].toString(); // Error ->resolveMapped : (key: K) => string ->(key: K) => mapped[key].toString() : (key: K) => string +>resolveMapped : (key: K) => string +>(key: K) => mapped[key].toString() : (key: K) => string >mapped : { a?: 1 | undefined; b?: 2 | undefined; } >key : K >mapped[key].toString() : string ->mapped[key].toString : (radix?: number | undefined) => string +>mapped[key].toString : (radix?: number) => string >mapped[key] : 1 | 2 | undefined >mapped : { a?: 1 | undefined; b?: 2 | undefined; } >key : K ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string // Additional repro from #57487 @@ -164,8 +164,8 @@ const mapper: { [K in keyof PartMappings]: (o: MapperArgs) => PartMappings[K] } const resolveMapper1 = ( ->resolveMapper1 : (key: K, o: MapperArgs) => PartMappings[K] ->( key: K, o: MapperArgs) => mapper[key](o) : (key: K, o: MapperArgs) => PartMappings[K] +>resolveMapper1 : (key: K, o: MapperArgs) => PartMappings[K] +>( key: K, o: MapperArgs) => mapper[key](o) : (key: K, o: MapperArgs) => PartMappings[K] >mapper : { foo?: ((o: MapperArgs<"foo">) => boolean | undefined) | undefined; "12": (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } key: K, o: MapperArgs) => mapper[key](o); // Error @@ -178,8 +178,8 @@ const resolveMapper1 = ( >o : MapperArgs const resolveMapper2 = ( ->resolveMapper2 : (key: K, o: MapperArgs) => PartMappings[K] | undefined ->( key: K, o: MapperArgs) => mapper[key]?.(o) : (key: K, o: MapperArgs) => PartMappings[K] | undefined +>resolveMapper2 : (key: K, o: MapperArgs) => PartMappings[K] | undefined +>( key: K, o: MapperArgs) => mapper[key]?.(o) : (key: K, o: MapperArgs) => PartMappings[K] | undefined >mapper : { foo?: ((o: MapperArgs<"foo">) => boolean | undefined) | undefined; "12": (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } key: K, o: MapperArgs) => mapper[key]?.(o) @@ -226,11 +226,11 @@ const accessMapped = (key: K) => mapIntersection[key].toSt >(key: K) => mapIntersection[key].toString() : (key: K) => string >key : K >mapIntersection[key].toString() : string ->mapIntersection[key].toString : (radix?: number | undefined) => string +>mapIntersection[key].toString : (radix?: number) => string >mapIntersection[key] : { a?: number | undefined; b: number; c: number; }[K] >mapIntersection : { a?: number | undefined; b: number; c: number; } >key : K ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string declare const resolved: { a?: number | undefined; b: number; c: number }; >resolved : { a?: number | undefined; b: number; c: number; } @@ -243,11 +243,11 @@ const accessResolved = (key: K) => resolved[key].toString( >(key: K) => resolved[key].toString() : (key: K) => string >key : K >resolved[key].toString() : string ->resolved[key].toString : (radix?: number | undefined) => string +>resolved[key].toString : (radix?: number) => string >resolved[key] : { a?: number | undefined; b: number; c: number; }[K] >resolved : { a?: number | undefined; b: number; c: number; } >key : K ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string // Additional repro from #57860 @@ -259,7 +259,7 @@ type Foo = { } function test(obj: Pick & Partial, K>, key: K) { ->test : (obj: Pick & Partial, K>, key: K) => void +>test : (obj: Pick & Partial, K>, key: K) => void >obj : Pick & Partial, K> >key : K diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types.diff deleted file mode 100644 index 6cc7500cd82..00000000000 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types.diff +++ /dev/null @@ -1,133 +0,0 @@ ---- old.mappedTypeIndexedAccessConstraint.types -+++ new.mappedTypeIndexedAccessConstraint.types -@@= skipped -25, +25 lines =@@ - - m1.toString(); // Error - >m1.toString() : string -->m1.toString : (radix?: number) => string -+>m1.toString : (radix?: number | undefined) => string - >m1 : 1 | 2 | undefined -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - m1?.toString(); - >m1?.toString() : string | undefined -->m1?.toString : ((radix?: number) => string) | undefined -+>m1?.toString : ((radix?: number | undefined) => string) | undefined - >m1 : 1 | 2 | undefined -->toString : ((radix?: number) => string) | undefined -+>toString : ((radix?: number | undefined) => string) | undefined - - m2.toString(); // Error - >m2.toString() : string -->m2.toString : (radix?: number) => string -+>m2.toString : (radix?: number | undefined) => string - >m2 : 1 | 2 | undefined -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - m2?.toString(); - >m2?.toString() : string | undefined -->m2?.toString : ((radix?: number) => string) | undefined -+>m2?.toString : ((radix?: number | undefined) => string) | undefined - >m2 : 1 | 2 | undefined -->toString : ((radix?: number) => string) | undefined -+>toString : ((radix?: number | undefined) => string) | undefined - - m3.toString(); // Error - >m3.toString() : string -->m3.toString : (radix?: number) => string -+>m3.toString : (radix?: number | undefined) => string - >m3 : 1 | 2 | undefined -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - m3?.toString(); - >m3?.toString() : string | undefined -->m3?.toString : ((radix?: number) => string) | undefined -+>m3?.toString : ((radix?: number | undefined) => string) | undefined - >m3 : 1 | 2 | undefined -->toString : ((radix?: number) => string) | undefined -+>toString : ((radix?: number | undefined) => string) | undefined - } - - // Repro from #57487 -@@= skipped -53, +53 lines =@@ - >{} : {} - - const resolveMapped = (key: K) => mapped[key].toString(); // Error -->resolveMapped : (key: K) => string -->(key: K) => mapped[key].toString() : (key: K) => string -+>resolveMapped : (key: K) => string -+>(key: K) => mapped[key].toString() : (key: K) => string - >mapped : { a?: 1 | undefined; b?: 2 | undefined; } - >key : K - >mapped[key].toString() : string -->mapped[key].toString : (radix?: number) => string -+>mapped[key].toString : (radix?: number | undefined) => string - >mapped[key] : 1 | 2 | undefined - >mapped : { a?: 1 | undefined; b?: 2 | undefined; } - >key : K -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - // Additional repro from #57487 - -@@= skipped -85, +85 lines =@@ - } - - const resolveMapper1 = ( -->resolveMapper1 : (key: K, o: MapperArgs) => PartMappings[K] -->( key: K, o: MapperArgs) => mapper[key](o) : (key: K, o: MapperArgs) => PartMappings[K] -+>resolveMapper1 : (key: K, o: MapperArgs) => PartMappings[K] -+>( key: K, o: MapperArgs) => mapper[key](o) : (key: K, o: MapperArgs) => PartMappings[K] - >mapper : { foo?: ((o: MapperArgs<"foo">) => boolean | undefined) | undefined; "12": (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } - - key: K, o: MapperArgs) => mapper[key](o); // Error -@@= skipped -14, +14 lines =@@ - >o : MapperArgs - - const resolveMapper2 = ( -->resolveMapper2 : (key: K, o: MapperArgs) => PartMappings[K] | undefined -->( key: K, o: MapperArgs) => mapper[key]?.(o) : (key: K, o: MapperArgs) => PartMappings[K] | undefined -+>resolveMapper2 : (key: K, o: MapperArgs) => PartMappings[K] | undefined -+>( key: K, o: MapperArgs) => mapper[key]?.(o) : (key: K, o: MapperArgs) => PartMappings[K] | undefined - >mapper : { foo?: ((o: MapperArgs<"foo">) => boolean | undefined) | undefined; "12": (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } - - key: K, o: MapperArgs) => mapper[key]?.(o) -@@= skipped -48, +48 lines =@@ - >(key: K) => mapIntersection[key].toString() : (key: K) => string - >key : K - >mapIntersection[key].toString() : string -->mapIntersection[key].toString : (radix?: number) => string -+>mapIntersection[key].toString : (radix?: number | undefined) => string - >mapIntersection[key] : { a?: number | undefined; b: number; c: number; }[K] - >mapIntersection : { a?: number | undefined; b: number; c: number; } - >key : K -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - declare const resolved: { a?: number | undefined; b: number; c: number }; - >resolved : { a?: number | undefined; b: number; c: number; } -@@= skipped -17, +17 lines =@@ - >(key: K) => resolved[key].toString() : (key: K) => string - >key : K - >resolved[key].toString() : string -->resolved[key].toString : (radix?: number) => string -+>resolved[key].toString : (radix?: number | undefined) => string - >resolved[key] : { a?: number | undefined; b: number; c: number; }[K] - >resolved : { a?: number | undefined; b: number; c: number; } - >key : K -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - // Additional repro from #57860 - -@@= skipped -16, +16 lines =@@ - } - - function test(obj: Pick & Partial, K>, key: K) { -->test : (obj: Pick & Partial, K>, key: K) => void -+>test : (obj: Pick & Partial, K>, key: K) => void - >obj : Pick & Partial, K> - >key : K diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeMultiInference.types b/testdata/baselines/reference/submodule/compiler/mappedTypeMultiInference.types index 49c6afcb168..78ad797ceae 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeMultiInference.types +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeMultiInference.types @@ -7,7 +7,7 @@ interface Style { } declare function mergeStyleSets( ->mergeStyleSets : (...cssSets: { [P in K]?: Style | undefined; }[]) => { [P in K]: Style; } +>mergeStyleSets : (...cssSets: { [P in K]?: Style; }[]) => { [P in K]: Style; } ...cssSets: { [P in K]?: Style }[]): { [P in K]: Style }; >cssSets : { [P in K]?: Style | undefined; }[] @@ -20,7 +20,7 @@ declare function mergeStyleSets( let x = mergeStyleSets( >x : { a: Style; b: Style; } >mergeStyleSets( {}, { a: { flashy: true }, }, { b: { flashy: true }, },) : { a: Style; b: Style; } ->mergeStyleSets : (...cssSets: { [P in K]?: Style | undefined; }[]) => { [P in K]: Style; } +>mergeStyleSets : (...cssSets: { [P in K]?: Style; }[]) => { [P in K]: Style; } {}, >{} : {} diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeMultiInference.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeMultiInference.types.diff deleted file mode 100644 index 19853d22158..00000000000 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeMultiInference.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.mappedTypeMultiInference.types -+++ new.mappedTypeMultiInference.types -@@= skipped -6, +6 lines =@@ - } - - declare function mergeStyleSets( -->mergeStyleSets : (...cssSets: { [P in K]?: Style; }[]) => { [P in K]: Style; } -+>mergeStyleSets : (...cssSets: { [P in K]?: Style | undefined; }[]) => { [P in K]: Style; } - - ...cssSets: { [P in K]?: Style }[]): { [P in K]: Style }; - >cssSets : { [P in K]?: Style | undefined; }[] -@@= skipped -13, +13 lines =@@ - let x = mergeStyleSets( - >x : { a: Style; b: Style; } - >mergeStyleSets( {}, { a: { flashy: true }, }, { b: { flashy: true }, },) : { a: Style; b: Style; } -->mergeStyleSets : (...cssSets: { [P in K]?: Style; }[]) => { [P in K]: Style; } -+>mergeStyleSets : (...cssSets: { [P in K]?: Style | undefined; }[]) => { [P in K]: Style; } - - {}, - >{} : {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeTupleConstraintAssignability.types b/testdata/baselines/reference/submodule/compiler/mappedTypeTupleConstraintAssignability.types index 44b9d7ff799..f48daf7a6d5 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeTupleConstraintAssignability.types +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeTupleConstraintAssignability.types @@ -20,7 +20,7 @@ declare class ZodEnum { } declare function createZodEnum>(values: T): ZodEnum>; ->createZodEnum : (values: T) => ZodEnum> +>createZodEnum : >(values: T) => ZodEnum> >values : T // https://github.com/microsoft/TypeScript/issues/53359#issuecomment-1475390607 @@ -65,7 +65,7 @@ declare class TupleSchema< } export function create(schemas: { ->create : (schemas: { [K in keyof T]: ISchema; }) => TupleSchema +>create : (schemas: { [K in keyof T]: ISchema; }) => TupleSchema >schemas : { [K in keyof T]: ISchema; } [K in keyof T]: ISchema; diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeTupleConstraintAssignability.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeTupleConstraintAssignability.types.diff deleted file mode 100644 index cd00c691b45..00000000000 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeTupleConstraintAssignability.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.mappedTypeTupleConstraintAssignability.types -+++ new.mappedTypeTupleConstraintAssignability.types -@@= skipped -19, +19 lines =@@ - } - - declare function createZodEnum>(values: T): ZodEnum>; -->createZodEnum : >(values: T) => ZodEnum> -+>createZodEnum : (values: T) => ZodEnum> - >values : T - - // https://github.com/microsoft/TypeScript/issues/53359#issuecomment-1475390607 -@@= skipped -45, +45 lines =@@ - } - - export function create(schemas: { -->create : (schemas: { [K in keyof T]: ISchema; }) => TupleSchema -+>create : (schemas: { [K in keyof T]: ISchema; }) => TupleSchema - >schemas : { [K in keyof T]: ISchema; } - - [K in keyof T]: ISchema; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeUnionConstrainTupleTreatedAsArrayLike.types b/testdata/baselines/reference/submodule/compiler/mappedTypeUnionConstrainTupleTreatedAsArrayLike.types index 13763a46600..1053e441905 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeUnionConstrainTupleTreatedAsArrayLike.types +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeUnionConstrainTupleTreatedAsArrayLike.types @@ -5,7 +5,7 @@ type HomomorphicMappedType = { [P in keyof T]: T[P] extends string ? boolean >HomomorphicMappedType : HomomorphicMappedType function test1(args: T) { ->test1 : (args: T) => void +>test1 : (args: T) => void >args : T const arr: any[] = [] as HomomorphicMappedType diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeUnionConstrainTupleTreatedAsArrayLike.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeUnionConstrainTupleTreatedAsArrayLike.types.diff deleted file mode 100644 index 202a16944a1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeUnionConstrainTupleTreatedAsArrayLike.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.mappedTypeUnionConstrainTupleTreatedAsArrayLike.types -+++ new.mappedTypeUnionConstrainTupleTreatedAsArrayLike.types -@@= skipped -4, +4 lines =@@ - >HomomorphicMappedType : HomomorphicMappedType - - function test1(args: T) { -->test1 : (args: T) => void -+>test1 : (args: T) => void - >args : T - - const arr: any[] = [] as HomomorphicMappedType \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt index aab880ea4b7..1f1b63521d3 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt @@ -1,4 +1,4 @@ -mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (NumberFormatOptions & DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; }' but required in type 'number[]'. +mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; }' but required in type 'number[]'. ==== mappedTypeWithAsClauseAndLateBoundProperty.ts (1 errors) ==== @@ -6,6 +6,6 @@ mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'leng declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; tgt2 = src2; // Should error ~~~~ -!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (NumberFormatOptions & DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; }' but required in type 'number[]'. +!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; }' but required in type 'number[]'. !!! related TS2728 lib.es5.d.ts:--:--: 'length' is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt.diff new file mode 100644 index 00000000000..766d8e9a241 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt.diff @@ -0,0 +1,16 @@ +--- old.mappedTypeWithAsClauseAndLateBoundProperty.errors.txt ++++ new.mappedTypeWithAsClauseAndLateBoundProperty.errors.txt +@@= skipped -0, +0 lines =@@ +-mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (NumberFormatOptions & DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; }' but required in type 'number[]'. ++mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; }' but required in type 'number[]'. + + + ==== mappedTypeWithAsClauseAndLateBoundProperty.ts (1 errors) ==== +@@= skipped -5, +5 lines =@@ + declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; + tgt2 = src2; // Should error + ~~~~ +-!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (NumberFormatOptions & DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; }' but required in type 'number[]'. ++!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; }' but required in type 'number[]'. + !!! related TS2728 lib.es5.d.ts:--:--: 'length' is declared here. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.types b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.types index c8f4a6b6881..de8718c2368 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.types +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.types @@ -5,10 +5,10 @@ declare let tgt2: number[]; >tgt2 : number[] declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } tgt2 = src2; // Should error ->tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } +>tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } >tgt2 : number[] ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.types.diff deleted file mode 100644 index a787e2338be..00000000000 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.mappedTypeWithAsClauseAndLateBoundProperty.types -+++ new.mappedTypeWithAsClauseAndLateBoundProperty.types -@@= skipped -4, +4 lines =@@ - >tgt2 : number[] - - declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; -->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -+>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } - - tgt2 = src2; // Should error -->tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -+>tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } - >tgt2 : number[] -->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -+>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.js b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.js index 7e2684f571e..97be295d2e9 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.js +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.js @@ -14,7 +14,7 @@ export declare const thing: { toString: () => string; toLocaleString: { (): string; - (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; + (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; @@ -22,18 +22,18 @@ export declare const thing: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; - join: (separator?: string | undefined) => string; + join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; - slice: (start?: number | undefined, end?: number | undefined) => number[]; + slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { - (start: number, deleteCount?: number | undefined): number[]; + (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; - indexOf: (searchElement: number, fromIndex?: number | undefined) => number; - lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; + indexOf: (searchElement: number, fromIndex?: number) => number; + lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; @@ -60,8 +60,8 @@ export declare const thing: { (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; - fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; - copyWithin: (target: number, start: number, end?: number | undefined) => number[]; + fill: (value: number, start?: number, end?: number) => number[]; + copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; @@ -103,7 +103,7 @@ export declare const thing: { flatMap?: boolean | undefined; flat?: boolean | undefined; }; - includes: (searchElement: number, fromIndex?: number | undefined) => boolean; + includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; }; diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.js.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.js.diff deleted file mode 100644 index b57a1ad506d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.js.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.mappedTypeWithAsClauseAndLateBoundProperty2.js -+++ new.mappedTypeWithAsClauseAndLateBoundProperty2.js -@@= skipped -13, +13 lines =@@ - toString: () => string; - toLocaleString: { - (): string; -- (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; -+ (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; - }; - pop: () => number | undefined; - push: (...items: number[]) => number; -@@= skipped -8, +8 lines =@@ - (...items: ConcatArray[]): number[]; - (...items: (number | ConcatArray)[]): number[]; - }; -- join: (separator?: string) => string; -+ join: (separator?: string | undefined) => string; - reverse: () => number[]; - shift: () => number | undefined; -- slice: (start?: number, end?: number) => number[]; -+ slice: (start?: number | undefined, end?: number | undefined) => number[]; - sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; - splice: { -- (start: number, deleteCount?: number): number[]; -+ (start: number, deleteCount?: number | undefined): number[]; - (start: number, deleteCount: number, ...items: number[]): number[]; - }; - unshift: (...items: number[]) => number; -- indexOf: (searchElement: number, fromIndex?: number) => number; -- lastIndexOf: (searchElement: number, fromIndex?: number) => number; -+ indexOf: (searchElement: number, fromIndex?: number | undefined) => number; -+ lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; - every: { - (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; - (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; -@@= skipped -38, +38 lines =@@ - (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; - }; - findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; -- fill: (value: number, start?: number, end?: number) => number[]; -- copyWithin: (target: number, start: number, end?: number) => number[]; -+ fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; -+ copyWithin: (target: number, start: number, end?: number | undefined) => number[]; - [Symbol.iterator]: () => ArrayIterator; - entries: () => ArrayIterator<[number, number]>; - keys: () => ArrayIterator; -@@= skipped -43, +43 lines =@@ - flatMap?: boolean | undefined; - flat?: boolean | undefined; - }; -- includes: (searchElement: number, fromIndex?: number) => boolean; -+ includes: (searchElement: number, fromIndex?: number | undefined) => boolean; - flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; - flat: (this: A, depth?: D | undefined) => FlatArray[]; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.types b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.types index 39f9027ab2b..3915f97b872 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.types +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.types @@ -2,9 +2,9 @@ === mappedTypeWithAsClauseAndLateBoundProperty2.ts === export const thing = (null! as { [K in keyof number[] as Exclude]: (number[])[K] }) satisfies any; ->thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } ->(null! as { [K in keyof number[] as Exclude]: (number[])[K] }) satisfies any : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } ->(null! as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } ->null! as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } +>thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } +>(null! as { [K in keyof number[] as Exclude]: (number[])[K] }) satisfies any : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } +>(null! as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } +>null! as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } >null! : never diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.types.diff deleted file mode 100644 index 0af900d9722..00000000000 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeWithAsClauseAndLateBoundProperty2.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.mappedTypeWithAsClauseAndLateBoundProperty2.types -+++ new.mappedTypeWithAsClauseAndLateBoundProperty2.types -@@= skipped -1, +1 lines =@@ - - === mappedTypeWithAsClauseAndLateBoundProperty2.ts === - export const thing = (null! as { [K in keyof number[] as Exclude]: (number[])[K] }) satisfies any; -->thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -->(null! as { [K in keyof number[] as Exclude]: (number[])[K] }) satisfies any : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -->(null! as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -->null! as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -+>thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -+>(null! as { [K in keyof number[] as Exclude]: (number[])[K] }) satisfies any : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -+>(null! as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } -+>null! as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; }; pop: () => number | undefined; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string | undefined) => string; reverse: () => number[]; shift: () => number | undefined; slice: (start?: number | undefined, end?: number | undefined) => number[]; sort: (compareFn?: ((a: number, b: number) => number) | undefined) => number[]; splice: { (start: number, deleteCount?: number | undefined): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number | undefined) => number; lastIndexOf: (searchElement: number, fromIndex?: number | undefined) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): 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; }; reduceRight: { (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; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number | undefined, end?: number | undefined) => number[]; copyWithin: (target: number, start: number, end?: number | undefined) => number[]; [Symbol.iterator]: () => ArrayIterator; entries: () => ArrayIterator<[number, number]>; keys: () => ArrayIterator; values: () => ArrayIterator; readonly [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; }; includes: (searchElement: number, fromIndex?: number | undefined) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: (this: A, depth?: D | undefined) => FlatArray[]; } - >null! : never diff --git a/testdata/baselines/reference/submodule/compiler/mergedInstantiationAssignment.types b/testdata/baselines/reference/submodule/compiler/mergedInstantiationAssignment.types index e6d9956152c..d37ea086277 100644 --- a/testdata/baselines/reference/submodule/compiler/mergedInstantiationAssignment.types +++ b/testdata/baselines/reference/submodule/compiler/mergedInstantiationAssignment.types @@ -12,8 +12,8 @@ class GenericObject { } const v1 = new GenericObject() as GenericObject & ->v1 : GenericObject & ({ a?: string | undefined; } | { b?: number | undefined; }) ->new GenericObject() as GenericObject & ({ a?: string } | { b?: number }) : GenericObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +>v1 : GenericObject & ({ a?: string; } | { b?: number; }) +>new GenericObject() as GenericObject & ({ a?: string } | { b?: number }) : GenericObject & ({ a?: string; } | { b?: number; }) >new GenericObject() : GenericObject >GenericObject : typeof GenericObject @@ -24,7 +24,7 @@ const v1 = new GenericObject() as GenericObject & v1.x = 432; >v1.x = 432 : 432 >v1.x : number ->v1 : GenericObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +>v1 : GenericObject & ({ a?: string; } | { b?: number; }) >x : number >432 : 432 @@ -36,8 +36,8 @@ class GenericObjectWithoutSetter { } const v2 = new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & ->v2 : GenericObjectWithoutSetter & ({ a?: string | undefined; } | { b?: number | undefined; }) ->new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & ({ a?: string } | { b?: number }) : GenericObjectWithoutSetter & ({ a?: string | undefined; } | { b?: number | undefined; }) +>v2 : GenericObjectWithoutSetter & ({ a?: string; } | { b?: number; }) +>new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & ({ a?: string } | { b?: number }) : GenericObjectWithoutSetter & ({ a?: string; } | { b?: number; }) >new GenericObjectWithoutSetter() : GenericObjectWithoutSetter >GenericObjectWithoutSetter : typeof GenericObjectWithoutSetter @@ -48,7 +48,7 @@ const v2 = new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & v2.x = 42; >v2.x = 42 : 42 >v2.x : number ->v2 : GenericObjectWithoutSetter & ({ a?: string | undefined; } | { b?: number | undefined; }) +>v2 : GenericObjectWithoutSetter & ({ a?: string; } | { b?: number; }) >x : number >42 : 42 @@ -61,8 +61,8 @@ class NormalObject { } const v3 = new NormalObject() as NormalObject & ->v3 : NormalObject & ({ a?: string | undefined; } | { b?: number | undefined; }) ->new NormalObject() as NormalObject & ({ a?: string } | { b?: number }) : NormalObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +>v3 : NormalObject & ({ a?: string; } | { b?: number; }) +>new NormalObject() as NormalObject & ({ a?: string } | { b?: number }) : NormalObject & ({ a?: string; } | { b?: number; }) >new NormalObject() : NormalObject >NormalObject : typeof NormalObject @@ -73,7 +73,7 @@ const v3 = new NormalObject() as NormalObject & v3.x = 42; >v3.x = 42 : 42 >v3.x : number ->v3 : NormalObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +>v3 : NormalObject & ({ a?: string; } | { b?: number; }) >x : number >42 : 42 diff --git a/testdata/baselines/reference/submodule/compiler/mergedInstantiationAssignment.types.diff b/testdata/baselines/reference/submodule/compiler/mergedInstantiationAssignment.types.diff deleted file mode 100644 index bb11c0a15d4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/mergedInstantiationAssignment.types.diff +++ /dev/null @@ -1,61 +0,0 @@ ---- old.mergedInstantiationAssignment.types -+++ new.mergedInstantiationAssignment.types -@@= skipped -11, +11 lines =@@ - } - - const v1 = new GenericObject() as GenericObject & -->v1 : GenericObject & ({ a?: string; } | { b?: number; }) -->new GenericObject() as GenericObject & ({ a?: string } | { b?: number }) : GenericObject & ({ a?: string; } | { b?: number; }) -+>v1 : GenericObject & ({ a?: string | undefined; } | { b?: number | undefined; }) -+>new GenericObject() as GenericObject & ({ a?: string } | { b?: number }) : GenericObject & ({ a?: string | undefined; } | { b?: number | undefined; }) - >new GenericObject() : GenericObject - >GenericObject : typeof GenericObject - -@@= skipped -12, +12 lines =@@ - v1.x = 432; - >v1.x = 432 : 432 - >v1.x : number -->v1 : GenericObject & ({ a?: string; } | { b?: number; }) -+>v1 : GenericObject & ({ a?: string | undefined; } | { b?: number | undefined; }) - >x : number - >432 : 432 - -@@= skipped -12, +12 lines =@@ - } - - const v2 = new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & -->v2 : GenericObjectWithoutSetter & ({ a?: string; } | { b?: number; }) -->new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & ({ a?: string } | { b?: number }) : GenericObjectWithoutSetter & ({ a?: string; } | { b?: number; }) -+>v2 : GenericObjectWithoutSetter & ({ a?: string | undefined; } | { b?: number | undefined; }) -+>new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & ({ a?: string } | { b?: number }) : GenericObjectWithoutSetter & ({ a?: string | undefined; } | { b?: number | undefined; }) - >new GenericObjectWithoutSetter() : GenericObjectWithoutSetter - >GenericObjectWithoutSetter : typeof GenericObjectWithoutSetter - -@@= skipped -12, +12 lines =@@ - v2.x = 42; - >v2.x = 42 : 42 - >v2.x : number -->v2 : GenericObjectWithoutSetter & ({ a?: string; } | { b?: number; }) -+>v2 : GenericObjectWithoutSetter & ({ a?: string | undefined; } | { b?: number | undefined; }) - >x : number - >42 : 42 - -@@= skipped -13, +13 lines =@@ - } - - const v3 = new NormalObject() as NormalObject & -->v3 : NormalObject & ({ a?: string; } | { b?: number; }) -->new NormalObject() as NormalObject & ({ a?: string } | { b?: number }) : NormalObject & ({ a?: string; } | { b?: number; }) -+>v3 : NormalObject & ({ a?: string | undefined; } | { b?: number | undefined; }) -+>new NormalObject() as NormalObject & ({ a?: string } | { b?: number }) : NormalObject & ({ a?: string | undefined; } | { b?: number | undefined; }) - >new NormalObject() : NormalObject - >NormalObject : typeof NormalObject - -@@= skipped -12, +12 lines =@@ - v3.x = 42; - >v3.x = 42 : 42 - >v3.x : number -->v3 : NormalObject & ({ a?: string; } | { b?: number; }) -+>v3 : NormalObject & ({ a?: string | undefined; } | { b?: number | undefined; }) - >x : number - >42 : 42 diff --git a/testdata/baselines/reference/submodule/compiler/mismatchedExplicitTypeParameterAndArgumentType.types b/testdata/baselines/reference/submodule/compiler/mismatchedExplicitTypeParameterAndArgumentType.types index a006af63470..d14fbd933eb 100644 --- a/testdata/baselines/reference/submodule/compiler/mismatchedExplicitTypeParameterAndArgumentType.types +++ b/testdata/baselines/reference/submodule/compiler/mismatchedExplicitTypeParameterAndArgumentType.types @@ -40,9 +40,9 @@ var r0 = map([1, ""], (x) => x.toString()); >(x) => x.toString() : (x: string | number) => string >x : string | number >x.toString() : string ->x.toString : (() => string) | ((radix?: number | undefined) => string) +>x.toString : (() => string) | ((radix?: number) => string) >x : string | number ->toString : (() => string) | ((radix?: number | undefined) => string) +>toString : (() => string) | ((radix?: number) => string) var r5 = map([1, ""], (x) => x.toString()); >r5 : any[] @@ -82,9 +82,9 @@ var r7 = map([1, ""], (x) => x.toString()); // error >(x) => x.toString() : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string var r7b = map([1, ""], (x) => x.toString()); // error >r7b : unknown[] @@ -96,9 +96,9 @@ var r7b = map([1, ""], (x) => x.toString()); // error >(x) => x.toString() : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string var r8 = map([1, ""], (x) => x.toString()); >r8 : string[] diff --git a/testdata/baselines/reference/submodule/compiler/mismatchedExplicitTypeParameterAndArgumentType.types.diff b/testdata/baselines/reference/submodule/compiler/mismatchedExplicitTypeParameterAndArgumentType.types.diff deleted file mode 100644 index 7b080f829b6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/mismatchedExplicitTypeParameterAndArgumentType.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.mismatchedExplicitTypeParameterAndArgumentType.types -+++ new.mismatchedExplicitTypeParameterAndArgumentType.types -@@= skipped -39, +39 lines =@@ - >(x) => x.toString() : (x: string | number) => string - >x : string | number - >x.toString() : string -->x.toString : (() => string) | ((radix?: number) => string) -+>x.toString : (() => string) | ((radix?: number | undefined) => string) - >x : string | number -->toString : (() => string) | ((radix?: number) => string) -+>toString : (() => string) | ((radix?: number | undefined) => string) - - var r5 = map([1, ""], (x) => x.toString()); - >r5 : any[] -@@= skipped -42, +42 lines =@@ - >(x) => x.toString() : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - var r7b = map([1, ""], (x) => x.toString()); // error - >r7b : unknown[] -@@= skipped -14, +14 lines =@@ - >(x) => x.toString() : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - var r8 = map([1, ""], (x) => x.toString()); - >r8 : string[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/missingTypeArguments1.types b/testdata/baselines/reference/submodule/compiler/missingTypeArguments1.types index ba665948176..ae7e1652a94 100644 --- a/testdata/baselines/reference/submodule/compiler/missingTypeArguments1.types +++ b/testdata/baselines/reference/submodule/compiler/missingTypeArguments1.types @@ -9,7 +9,7 @@ class X { >X : X p1: () => X; ->p1 : () => any +>p1 : () => X } var a: X; >a : X @@ -55,7 +55,7 @@ class X6 { >X6 : X6 p6: () => Y; ->p6 : () => any +>p6 : () => Y } var a6: X6; >a6 : X6 diff --git a/testdata/baselines/reference/submodule/compiler/missingTypeArguments1.types.diff b/testdata/baselines/reference/submodule/compiler/missingTypeArguments1.types.diff deleted file mode 100644 index ab8a48f5e2d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/missingTypeArguments1.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.missingTypeArguments1.types -+++ new.missingTypeArguments1.types -@@= skipped -8, +8 lines =@@ - >X : X - - p1: () => X; -->p1 : () => X -+>p1 : () => any - } - var a: X; - >a : X -@@= skipped -46, +46 lines =@@ - >X6 : X6 - - p6: () => Y; -->p6 : () => Y -+>p6 : () => any - } - var a6: X6; - >a6 : X6 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/missingTypeArguments2.types b/testdata/baselines/reference/submodule/compiler/missingTypeArguments2.types index 66df2c6e9b1..004c1732677 100644 --- a/testdata/baselines/reference/submodule/compiler/missingTypeArguments2.types +++ b/testdata/baselines/reference/submodule/compiler/missingTypeArguments2.types @@ -5,15 +5,15 @@ class A { } >A : A var x: () => A; ->x : () => any +>x : () => A (a: A) => { }; ->(a: A) => { } : (a: any) => void +>(a: A) => { } : (a: A) => void >a : any var y: A; >y : A (): A => null; ->(): A => null : () => any +>(): A => null : () => A diff --git a/testdata/baselines/reference/submodule/compiler/missingTypeArguments2.types.diff b/testdata/baselines/reference/submodule/compiler/missingTypeArguments2.types.diff deleted file mode 100644 index 2f44af79856..00000000000 --- a/testdata/baselines/reference/submodule/compiler/missingTypeArguments2.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.missingTypeArguments2.types -+++ new.missingTypeArguments2.types -@@= skipped -4, +4 lines =@@ - >A : A - - var x: () => A; -->x : () => A -+>x : () => any - - (a: A) => { }; -->(a: A) => { } : (a: A) => void -+>(a: A) => { } : (a: any) => void - >a : any - - var y: A; - >y : A - - (): A => null; -->(): A => null : () => A -+>(): A => null : () => any diff --git a/testdata/baselines/reference/submodule/compiler/misspelledJsDocTypedefTags.types b/testdata/baselines/reference/submodule/compiler/misspelledJsDocTypedefTags.types index 32385442cf9..3d26fba20dc 100644 --- a/testdata/baselines/reference/submodule/compiler/misspelledJsDocTypedefTags.types +++ b/testdata/baselines/reference/submodule/compiler/misspelledJsDocTypedefTags.types @@ -6,7 +6,7 @@ Animation.AnimationModel.ScreenshotCapture.Request; >Animation.AnimationModel.ScreenshotCapture.Request : error >Animation.AnimationModel.ScreenshotCapture : any >Animation.AnimationModel : any ->Animation : { new (effect?: AnimationEffect | null | undefined, timeline?: AnimationTimeline | null | undefined): Animation; prototype: Animation; } +>Animation : { new (effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation; prototype: Animation; } >AnimationModel : any >ScreenshotCapture : any >Request : any @@ -16,7 +16,7 @@ Animation.AnimationModel.ScreenshotCapture.Request; >Animation.AnimationModel.ScreenshotCapture.Request : error >Animation.AnimationModel.ScreenshotCapture : any >Animation.AnimationModel : any ->Animation : { new (effect?: AnimationEffect | null | undefined, timeline?: AnimationTimeline | null | undefined): Animation; prototype: Animation; } +>Animation : { new (effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation; prototype: Animation; } >AnimationModel : any >ScreenshotCapture : any >Request : any diff --git a/testdata/baselines/reference/submodule/compiler/misspelledJsDocTypedefTags.types.diff b/testdata/baselines/reference/submodule/compiler/misspelledJsDocTypedefTags.types.diff deleted file mode 100644 index b9747a8ee59..00000000000 --- a/testdata/baselines/reference/submodule/compiler/misspelledJsDocTypedefTags.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.misspelledJsDocTypedefTags.types -+++ new.misspelledJsDocTypedefTags.types -@@= skipped -5, +5 lines =@@ - >Animation.AnimationModel.ScreenshotCapture.Request : error - >Animation.AnimationModel.ScreenshotCapture : any - >Animation.AnimationModel : any -->Animation : { new (effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation; prototype: Animation; } -+>Animation : { new (effect?: AnimationEffect | null | undefined, timeline?: AnimationTimeline | null | undefined): Animation; prototype: Animation; } - >AnimationModel : any - >ScreenshotCapture : any - >Request : any -@@= skipped -10, +10 lines =@@ - >Animation.AnimationModel.ScreenshotCapture.Request : error - >Animation.AnimationModel.ScreenshotCapture : any - >Animation.AnimationModel : any -->Animation : { new (effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation; prototype: Animation; } -+>Animation : { new (effect?: AnimationEffect | null | undefined, timeline?: AnimationTimeline | null | undefined): Animation; prototype: Animation; } - >AnimationModel : any - >ScreenshotCapture : any - >Request : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/mixinOverMappedTypeNoCrash.types b/testdata/baselines/reference/submodule/compiler/mixinOverMappedTypeNoCrash.types index 51b6620f1f0..57a59da66cc 100644 --- a/testdata/baselines/reference/submodule/compiler/mixinOverMappedTypeNoCrash.types +++ b/testdata/baselines/reference/submodule/compiler/mixinOverMappedTypeNoCrash.types @@ -21,7 +21,7 @@ type Constructor = ClassInterface & InstanceInterf >Constructor : Constructor function cloneClass>(OriginalClass: T): T { ->cloneClass : >(OriginalClass: T) => T +>cloneClass : >(OriginalClass: T) => T >OriginalClass : T class AnotherOriginalClass extends OriginalClass { diff --git a/testdata/baselines/reference/submodule/compiler/mixinOverMappedTypeNoCrash.types.diff b/testdata/baselines/reference/submodule/compiler/mixinOverMappedTypeNoCrash.types.diff index 3c1bf968121..3797cb80395 100644 --- a/testdata/baselines/reference/submodule/compiler/mixinOverMappedTypeNoCrash.types.diff +++ b/testdata/baselines/reference/submodule/compiler/mixinOverMappedTypeNoCrash.types.diff @@ -1,15 +1,6 @@ --- old.mixinOverMappedTypeNoCrash.types +++ new.mixinOverMappedTypeNoCrash.types -@@= skipped -20, +20 lines =@@ - >Constructor : Constructor - - function cloneClass>(OriginalClass: T): T { -->cloneClass : >(OriginalClass: T) => T -+>cloneClass : >(OriginalClass: T) => T - >OriginalClass : T - - class AnotherOriginalClass extends OriginalClass { -@@= skipped -18, +18 lines =@@ +@@= skipped -38, +38 lines =@@ } } return AnotherOriginalClass diff --git a/testdata/baselines/reference/submodule/compiler/mixinPrivateAndProtected.types b/testdata/baselines/reference/submodule/compiler/mixinPrivateAndProtected.types index 00f9ba6cb62..a9d2f8d7043 100644 --- a/testdata/baselines/reference/submodule/compiler/mixinPrivateAndProtected.types +++ b/testdata/baselines/reference/submodule/compiler/mixinPrivateAndProtected.types @@ -125,27 +125,27 @@ const a.pb.toFixed(); >a.pb.toFixed() : string ->a.pb.toFixed : (fractionDigits?: number | undefined) => string +>a.pb.toFixed : (fractionDigits?: number) => string >a.pb : number >a : A >pb : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string a.ptd.toFixed(); // Error >a.ptd.toFixed() : string ->a.ptd.toFixed : (fractionDigits?: number | undefined) => string +>a.ptd.toFixed : (fractionDigits?: number) => string >a.ptd : number >a : A >ptd : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string a.pvt.toFixed(); // Error >a.pvt.toFixed() : string ->a.pvt.toFixed : (fractionDigits?: number | undefined) => string +>a.pvt.toFixed : (fractionDigits?: number) => string >a.pvt : number >a : A >pvt : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string ab.pb.toFixed(); >ab.pb.toFixed() : any diff --git a/testdata/baselines/reference/submodule/compiler/mixinPrivateAndProtected.types.diff b/testdata/baselines/reference/submodule/compiler/mixinPrivateAndProtected.types.diff index 2a668f319ee..be85605aa1f 100644 --- a/testdata/baselines/reference/submodule/compiler/mixinPrivateAndProtected.types.diff +++ b/testdata/baselines/reference/submodule/compiler/mixinPrivateAndProtected.types.diff @@ -106,36 +106,6 @@ a.pb.toFixed(); >a.pb.toFixed() : string -->a.pb.toFixed : (fractionDigits?: number) => string -+>a.pb.toFixed : (fractionDigits?: number | undefined) => string - >a.pb : number - >a : A - >pb : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - a.ptd.toFixed(); // Error - >a.ptd.toFixed() : string -->a.ptd.toFixed : (fractionDigits?: number) => string -+>a.ptd.toFixed : (fractionDigits?: number | undefined) => string - >a.ptd : number - >a : A - >ptd : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - a.pvt.toFixed(); // Error - >a.pvt.toFixed() : string -->a.pvt.toFixed : (fractionDigits?: number) => string -+>a.pvt.toFixed : (fractionDigits?: number | undefined) => string - >a.pvt : number - >a : A - >pvt : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - ab.pb.toFixed(); - >ab.pb.toFixed() : any @@= skipped -124, +124 lines =@@ } diff --git a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.types b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.types index 8eacb1adee0..adf4410e5a8 100644 --- a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.types +++ b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.types @@ -10,9 +10,9 @@ function f(x: number, y: number, z: number) { return Array.from(arguments); >Array.from(arguments) : any[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >arguments : IArguments } @@ -204,9 +204,9 @@ var str = "Hello world"; str.includes("hello", 0); >str.includes("hello", 0) : boolean ->str.includes : (searchString: string, position?: number | undefined) => boolean +>str.includes : (searchString: string, position?: number) => boolean >str : string ->includes : (searchString: string, position?: number | undefined) => boolean +>includes : (searchString: string, position?: number) => boolean >"hello" : "hello" >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.types.diff b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.types.diff deleted file mode 100644 index 8482bb3a3b8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.modularizeLibrary_NoErrorDuplicateLibOptions1.types -+++ new.modularizeLibrary_NoErrorDuplicateLibOptions1.types -@@= skipped -9, +9 lines =@@ - - return Array.from(arguments); - >Array.from(arguments) : any[] -->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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >arguments : IArguments - } - -@@= skipped -194, +194 lines =@@ - - str.includes("hello", 0); - >str.includes("hello", 0) : boolean -->str.includes : (searchString: string, position?: number) => boolean -+>str.includes : (searchString: string, position?: number | undefined) => boolean - >str : string -->includes : (searchString: string, position?: number) => boolean -+>includes : (searchString: string, position?: number | undefined) => boolean - >"hello" : "hello" - >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.types b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.types index 10cc4aef0c1..5dcc221e877 100644 --- a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.types +++ b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.types @@ -10,9 +10,9 @@ function f(x: number, y: number, z: number) { return Array.from(arguments); >Array.from(arguments) : any[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >arguments : IArguments } @@ -204,9 +204,9 @@ var str = "Hello world"; str.includes("hello", 0); >str.includes("hello", 0) : boolean ->str.includes : (searchString: string, position?: number | undefined) => boolean +>str.includes : (searchString: string, position?: number) => boolean >str : string ->includes : (searchString: string, position?: number | undefined) => boolean +>includes : (searchString: string, position?: number) => boolean >"hello" : "hello" >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.types.diff b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.types.diff deleted file mode 100644 index ea1aadbc78a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.modularizeLibrary_NoErrorDuplicateLibOptions2.types -+++ new.modularizeLibrary_NoErrorDuplicateLibOptions2.types -@@= skipped -9, +9 lines =@@ - - return Array.from(arguments); - >Array.from(arguments) : any[] -->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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >arguments : IArguments - } - -@@= skipped -194, +194 lines =@@ - - str.includes("hello", 0); - >str.includes("hello", 0) : boolean -->str.includes : (searchString: string, position?: number) => boolean -+>str.includes : (searchString: string, position?: number | undefined) => boolean - >str : string -->includes : (searchString: string, position?: number) => boolean -+>includes : (searchString: string, position?: number | undefined) => boolean - >"hello" : "hello" - >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES5UsingES6Lib.types b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES5UsingES6Lib.types index 365ee84d60f..2d7325bc4cf 100644 --- a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES5UsingES6Lib.types +++ b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES5UsingES6Lib.types @@ -10,9 +10,9 @@ function f(x: number, y: number, z: number) { return Array.from(arguments); >Array.from(arguments) : any[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >arguments : IArguments } @@ -204,9 +204,9 @@ var str = "Hello world"; str.includes("hello", 0); >str.includes("hello", 0) : boolean ->str.includes : (searchString: string, position?: number | undefined) => boolean +>str.includes : (searchString: string, position?: number) => boolean >str : string ->includes : (searchString: string, position?: number | undefined) => boolean +>includes : (searchString: string, position?: number) => boolean >"hello" : "hello" >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES5UsingES6Lib.types.diff b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES5UsingES6Lib.types.diff deleted file mode 100644 index 2ebed0cb08c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES5UsingES6Lib.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.modularizeLibrary_TargetES5UsingES6Lib.types -+++ new.modularizeLibrary_TargetES5UsingES6Lib.types -@@= skipped -9, +9 lines =@@ - - return Array.from(arguments); - >Array.from(arguments) : any[] -->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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >arguments : IArguments - } - -@@= skipped -194, +194 lines =@@ - - str.includes("hello", 0); - >str.includes("hello", 0) : boolean -->str.includes : (searchString: string, position?: number) => boolean -+>str.includes : (searchString: string, position?: number | undefined) => boolean - >str : string -->includes : (searchString: string, position?: number) => boolean -+>includes : (searchString: string, position?: number | undefined) => boolean - >"hello" : "hello" - >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES6UsingES6Lib.types b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES6UsingES6Lib.types index 64e7f0d8a65..88ec0c41b85 100644 --- a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES6UsingES6Lib.types +++ b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES6UsingES6Lib.types @@ -10,9 +10,9 @@ function f(x: number, y: number, z: number) { return Array.from(arguments); >Array.from(arguments) : any[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[]; } >arguments : IArguments } @@ -127,9 +127,9 @@ var str = "Hello world"; str.includes("hello", 0); >str.includes("hello", 0) : boolean ->str.includes : (searchString: string, position?: number | undefined) => boolean +>str.includes : (searchString: string, position?: number) => boolean >str : string ->includes : (searchString: string, position?: number | undefined) => boolean +>includes : (searchString: string, position?: number) => boolean >"hello" : "hello" >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES6UsingES6Lib.types.diff b/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES6UsingES6Lib.types.diff deleted file mode 100644 index cd4c4e041ce..00000000000 --- a/testdata/baselines/reference/submodule/compiler/modularizeLibrary_TargetES6UsingES6Lib.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.modularizeLibrary_TargetES6UsingES6Lib.types -+++ new.modularizeLibrary_TargetES6UsingES6Lib.types -@@= skipped -9, +9 lines =@@ - - return Array.from(arguments); - >Array.from(arguments) : any[] -->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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >arguments : IArguments - } - -@@= skipped -117, +117 lines =@@ - - str.includes("hello", 0); - >str.includes("hello", 0) : boolean -->str.includes : (searchString: string, position?: number) => boolean -+>str.includes : (searchString: string, position?: number | undefined) => boolean - >str : string -->includes : (searchString: string, position?: number) => boolean -+>includes : (searchString: string, position?: number | undefined) => boolean - >"hello" : "hello" - >0 : 0 diff --git a/testdata/baselines/reference/submodule/compiler/moduleAugmentationDeclarationEmit2.types b/testdata/baselines/reference/submodule/compiler/moduleAugmentationDeclarationEmit2.types index 050b958670b..bc4e53f6f1a 100644 --- a/testdata/baselines/reference/submodule/compiler/moduleAugmentationDeclarationEmit2.types +++ b/testdata/baselines/reference/submodule/compiler/moduleAugmentationDeclarationEmit2.types @@ -74,11 +74,11 @@ let y = x.map(x => x + 1); let z1 = Observable.someValue.toFixed(); >z1 : string >Observable.someValue.toFixed() : string ->Observable.someValue.toFixed : (fractionDigits?: number | undefined) => string +>Observable.someValue.toFixed : (fractionDigits?: number) => string >Observable.someValue : number >Observable : typeof Observable >someValue : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string let z2 = Observable.someAnotherValue.toLowerCase(); >z2 : string diff --git a/testdata/baselines/reference/submodule/compiler/moduleAugmentationDeclarationEmit2.types.diff b/testdata/baselines/reference/submodule/compiler/moduleAugmentationDeclarationEmit2.types.diff deleted file mode 100644 index d23d005c7a8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/moduleAugmentationDeclarationEmit2.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.moduleAugmentationDeclarationEmit2.types -+++ new.moduleAugmentationDeclarationEmit2.types -@@= skipped -73, +73 lines =@@ - let z1 = Observable.someValue.toFixed(); - >z1 : string - >Observable.someValue.toFixed() : string -->Observable.someValue.toFixed : (fractionDigits?: number) => string -+>Observable.someValue.toFixed : (fractionDigits?: number | undefined) => string - >Observable.someValue : number - >Observable : typeof Observable - >someValue : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - let z2 = Observable.someAnotherValue.toLowerCase(); - >z2 : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/moduleAugmentationDuringSyntheticDefaultCheck.types b/testdata/baselines/reference/submodule/compiler/moduleAugmentationDuringSyntheticDefaultCheck.types index c9c20e7a12c..321c8932454 100644 --- a/testdata/baselines/reference/submodule/compiler/moduleAugmentationDuringSyntheticDefaultCheck.types +++ b/testdata/baselines/reference/submodule/compiler/moduleAugmentationDuringSyntheticDefaultCheck.types @@ -8,7 +8,7 @@ import moment = require("moment-timezone"); === node_modules/moment/index.d.ts === declare function moment(): moment.Moment; ->moment : () => import("moment").Moment +>moment : () => moment.Moment >moment : any declare namespace moment { @@ -18,7 +18,7 @@ declare namespace moment { } } export = moment; ->moment : () => import("moment").Moment +>moment : () => moment.Moment === node_modules/moment-timezone/index.d.ts === import * as moment from 'moment'; diff --git a/testdata/baselines/reference/submodule/compiler/moduleAugmentationDuringSyntheticDefaultCheck.types.diff b/testdata/baselines/reference/submodule/compiler/moduleAugmentationDuringSyntheticDefaultCheck.types.diff index b149a39d9f0..2c090ed6bed 100644 --- a/testdata/baselines/reference/submodule/compiler/moduleAugmentationDuringSyntheticDefaultCheck.types.diff +++ b/testdata/baselines/reference/submodule/compiler/moduleAugmentationDuringSyntheticDefaultCheck.types.diff @@ -1,29 +1,9 @@ --- old.moduleAugmentationDuringSyntheticDefaultCheck.types +++ new.moduleAugmentationDuringSyntheticDefaultCheck.types -@@= skipped -7, +7 lines =@@ - - === node_modules/moment/index.d.ts === - declare function moment(): moment.Moment; -->moment : () => moment.Moment -+>moment : () => import("moment").Moment - >moment : any - - declare namespace moment { -@@= skipped -10, +10 lines =@@ - } - } - export = moment; -->moment : () => moment.Moment -+>moment : () => import("moment").Moment - - === node_modules/moment-timezone/index.d.ts === - import * as moment from 'moment'; -@@= skipped -15, +15 lines =@@ - interface Moment { - tz(): string; +@@= skipped -34, +34 lines =@@ >tz : () => string -- } --} + } + } -=== idx.ts === -import * as _moment from "moment"; ->_moment : { default: () => _moment.Moment; } @@ -44,5 +24,5 @@ - strftime(pattern: string): string; ->strftime : { (pattern: string): string; (pattern: string): string; } ->pattern : string - } - } \ No newline at end of file +- } +-} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendAmbientModule2.types b/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendAmbientModule2.types index 958e5ee2172..0b78827530a 100644 --- a/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendAmbientModule2.types +++ b/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendAmbientModule2.types @@ -25,11 +25,11 @@ let y = x.map(x => x + 1); let z1 = Observable.someValue.toFixed(); >z1 : string >Observable.someValue.toFixed() : string ->Observable.someValue.toFixed : (fractionDigits?: number | undefined) => string +>Observable.someValue.toFixed : (fractionDigits?: number) => string >Observable.someValue : number >Observable : typeof Observable >someValue : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string let z2 = Observable.someAnotherValue.toLowerCase(); >z2 : string diff --git a/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendAmbientModule2.types.diff b/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendAmbientModule2.types.diff deleted file mode 100644 index 0921fd36c2c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendAmbientModule2.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.moduleAugmentationExtendAmbientModule2.types -+++ new.moduleAugmentationExtendAmbientModule2.types -@@= skipped -24, +24 lines =@@ - let z1 = Observable.someValue.toFixed(); - >z1 : string - >Observable.someValue.toFixed() : string -->Observable.someValue.toFixed : (fractionDigits?: number) => string -+>Observable.someValue.toFixed : (fractionDigits?: number | undefined) => string - >Observable.someValue : number - >Observable : typeof Observable - >someValue : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - let z2 = Observable.someAnotherValue.toLowerCase(); - >z2 : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendFileModule2.types b/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendFileModule2.types index f3dc2df7eda..666df318d5a 100644 --- a/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendFileModule2.types +++ b/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendFileModule2.types @@ -74,11 +74,11 @@ let y = x.map(x => x + 1); let z1 = Observable.someValue.toFixed(); >z1 : string >Observable.someValue.toFixed() : string ->Observable.someValue.toFixed : (fractionDigits?: number | undefined) => string +>Observable.someValue.toFixed : (fractionDigits?: number) => string >Observable.someValue : number >Observable : typeof Observable >someValue : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string let z2 = Observable.someAnotherValue.toLowerCase(); >z2 : string diff --git a/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendFileModule2.types.diff b/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendFileModule2.types.diff deleted file mode 100644 index b48e46b69ed..00000000000 --- a/testdata/baselines/reference/submodule/compiler/moduleAugmentationExtendFileModule2.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.moduleAugmentationExtendFileModule2.types -+++ new.moduleAugmentationExtendFileModule2.types -@@= skipped -73, +73 lines =@@ - let z1 = Observable.someValue.toFixed(); - >z1 : string - >Observable.someValue.toFixed() : string -->Observable.someValue.toFixed : (fractionDigits?: number) => string -+>Observable.someValue.toFixed : (fractionDigits?: number | undefined) => string - >Observable.someValue : number - >Observable : typeof Observable - >someValue : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - let z2 = Observable.someAnotherValue.toLowerCase(); - >z2 : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/multipleInferenceContexts.types b/testdata/baselines/reference/submodule/compiler/multipleInferenceContexts.types index e0171220055..a4e4977830b 100644 --- a/testdata/baselines/reference/submodule/compiler/multipleInferenceContexts.types +++ b/testdata/baselines/reference/submodule/compiler/multipleInferenceContexts.types @@ -22,7 +22,7 @@ interface Instance { } declare var Moon: { ->Moon : (options?: ConstructorOptions | undefined) => Instance +>Moon : (options?: ConstructorOptions) => Instance (options?: ConstructorOptions): Instance; >options : ConstructorOptions | undefined @@ -32,7 +32,7 @@ declare var Moon: { const r2 = Moon({ >r2 : Instance<{ msg: string; }> >Moon({ data: { msg: "" }, render() { const h = (x: unknown) => x; return h(this.get("msg")); },}) : Instance<{ msg: string; }> ->Moon : (options?: ConstructorOptions | undefined) => Instance +>Moon : (options?: ConstructorOptions) => Instance >{ data: { msg: "" }, render() { const h = (x: unknown) => x; return h(this.get("msg")); },} : { data: { msg: string; }; render(): unknown; } data: { msg: "" }, diff --git a/testdata/baselines/reference/submodule/compiler/multipleInferenceContexts.types.diff b/testdata/baselines/reference/submodule/compiler/multipleInferenceContexts.types.diff deleted file mode 100644 index 592fa0346f1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/multipleInferenceContexts.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.multipleInferenceContexts.types -+++ new.multipleInferenceContexts.types -@@= skipped -21, +21 lines =@@ - } - - declare var Moon: { -->Moon : (options?: ConstructorOptions) => Instance -+>Moon : (options?: ConstructorOptions | undefined) => Instance - - (options?: ConstructorOptions): Instance; - >options : ConstructorOptions | undefined -@@= skipped -10, +10 lines =@@ - const r2 = Moon({ - >r2 : Instance<{ msg: string; }> - >Moon({ data: { msg: "" }, render() { const h = (x: unknown) => x; return h(this.get("msg")); },}) : Instance<{ msg: string; }> -->Moon : (options?: ConstructorOptions) => Instance -+>Moon : (options?: ConstructorOptions | undefined) => Instance - >{ data: { msg: "" }, render() { const h = (x: unknown) => x; return h(this.get("msg")); },} : { data: { msg: string; }; render(): unknown; } - - data: { msg: "" }, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/namespaceMergedWithFunctionWithOverloadsUsage.types b/testdata/baselines/reference/submodule/compiler/namespaceMergedWithFunctionWithOverloadsUsage.types index adb04fd283f..3d153acde5c 100644 --- a/testdata/baselines/reference/submodule/compiler/namespaceMergedWithFunctionWithOverloadsUsage.types +++ b/testdata/baselines/reference/submodule/compiler/namespaceMergedWithFunctionWithOverloadsUsage.types @@ -2,11 +2,11 @@ === index.ts === import X = require("./file"); ->X : { (opts?: X.Whatever | undefined): void; (cb: Function, opts?: X.Whatever | undefined): void; } +>X : { (opts?: X.Whatever): void; (cb: Function, opts?: X.Whatever): void; } X(0); // shouldn't cause a crash >X(0) : void ->X : { (opts?: X.Whatever | undefined): void; (cb: Function, opts?: X.Whatever | undefined): void; } +>X : { (opts?: X.Whatever): void; (cb: Function, opts?: X.Whatever): void; } >0 : 0 === file.d.ts === @@ -18,16 +18,16 @@ declare namespace Foo { } declare function Foo(opts?: Foo.Whatever): void; ->Foo : { (opts?: import("./file").Whatever | undefined): void; (cb: Function, opts?: import("./file").Whatever | undefined): void; } +>Foo : { (opts?: Foo.Whatever): void; (cb: Function, opts?: Foo.Whatever): void; } >opts : import("./file").Whatever | undefined >Foo : any declare function Foo(cb: Function, opts?: Foo.Whatever): void; ->Foo : { (opts?: import("./file").Whatever | undefined): void; (cb: Function, opts?: import("./file").Whatever | undefined): void; } +>Foo : { (opts?: Foo.Whatever): void; (cb: Function, opts?: Foo.Whatever): void; } >cb : Function >opts : import("./file").Whatever | undefined >Foo : any export = Foo; ->Foo : { (opts?: import("./file").Whatever | undefined): void; (cb: Function, opts?: import("./file").Whatever | undefined): void; } +>Foo : { (opts?: Foo.Whatever): void; (cb: Function, opts?: Foo.Whatever): void; } diff --git a/testdata/baselines/reference/submodule/compiler/namespaceMergedWithFunctionWithOverloadsUsage.types.diff b/testdata/baselines/reference/submodule/compiler/namespaceMergedWithFunctionWithOverloadsUsage.types.diff index 858790468ff..5b30cf5b0c9 100644 --- a/testdata/baselines/reference/submodule/compiler/namespaceMergedWithFunctionWithOverloadsUsage.types.diff +++ b/testdata/baselines/reference/submodule/compiler/namespaceMergedWithFunctionWithOverloadsUsage.types.diff @@ -1,37 +1,18 @@ --- old.namespaceMergedWithFunctionWithOverloadsUsage.types +++ new.namespaceMergedWithFunctionWithOverloadsUsage.types -@@= skipped -1, +1 lines =@@ - - === index.ts === - import X = require("./file"); -->X : { (opts?: X.Whatever): void; (cb: Function, opts?: X.Whatever): void; } -+>X : { (opts?: X.Whatever | undefined): void; (cb: Function, opts?: X.Whatever | undefined): void; } - - X(0); // shouldn't cause a crash - >X(0) : void -->X : { (opts?: X.Whatever): void; (cb: Function, opts?: X.Whatever): void; } -+>X : { (opts?: X.Whatever | undefined): void; (cb: Function, opts?: X.Whatever | undefined): void; } - >0 : 0 - - === file.d.ts === -@@= skipped -16, +16 lines =@@ - } +@@= skipped -18, +18 lines =@@ declare function Foo(opts?: Foo.Whatever): void; -->Foo : { (opts?: Foo.Whatever): void; (cb: Function, opts?: Foo.Whatever): void; } + >Foo : { (opts?: Foo.Whatever): void; (cb: Function, opts?: Foo.Whatever): void; } ->opts : Foo.Whatever | undefined -+>Foo : { (opts?: import("./file").Whatever | undefined): void; (cb: Function, opts?: import("./file").Whatever | undefined): void; } +>opts : import("./file").Whatever | undefined >Foo : any declare function Foo(cb: Function, opts?: Foo.Whatever): void; -->Foo : { (opts?: Foo.Whatever): void; (cb: Function, opts?: Foo.Whatever): void; } -+>Foo : { (opts?: import("./file").Whatever | undefined): void; (cb: Function, opts?: import("./file").Whatever | undefined): void; } + >Foo : { (opts?: Foo.Whatever): void; (cb: Function, opts?: Foo.Whatever): void; } >cb : Function ->opts : Foo.Whatever | undefined +>opts : import("./file").Whatever | undefined >Foo : any - export = Foo; -->Foo : { (opts?: Foo.Whatever): void; (cb: Function, opts?: Foo.Whatever): void; } -+>Foo : { (opts?: import("./file").Whatever | undefined): void; (cb: Function, opts?: import("./file").Whatever | undefined): void; } + export = Foo; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowByEquality.types b/testdata/baselines/reference/submodule/compiler/narrowByEquality.types index 2415f86c0f6..9ddaa99f0f5 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowByEquality.types +++ b/testdata/baselines/reference/submodule/compiler/narrowByEquality.types @@ -115,7 +115,7 @@ if (x == xAndObj) { // Repro from #24991 function test(level: number | string):number { ->test : (level: string | number) => number +>test : (level: number | string) => number >level : string | number if (level == +level) { diff --git a/testdata/baselines/reference/submodule/compiler/narrowByEquality.types.diff b/testdata/baselines/reference/submodule/compiler/narrowByEquality.types.diff deleted file mode 100644 index 9e193158fa9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowByEquality.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.narrowByEquality.types -+++ new.narrowByEquality.types -@@= skipped -114, +114 lines =@@ - // Repro from #24991 - - function test(level: number | string):number { -->test : (level: number | string) => number -+>test : (level: string | number) => number - >level : string | number - - if (level == +level) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowByInstanceof.types b/testdata/baselines/reference/submodule/compiler/narrowByInstanceof.types index fdf3a5993fb..4595c2b98b5 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowByInstanceof.types +++ b/testdata/baselines/reference/submodule/compiler/narrowByInstanceof.types @@ -150,7 +150,7 @@ class Car { } function test(o: Person | Car) { ->test : (o: Car | Person) => void +>test : (o: Person | Car) => void >o : Car | Person if (o instanceof cls) { diff --git a/testdata/baselines/reference/submodule/compiler/narrowByInstanceof.types.diff b/testdata/baselines/reference/submodule/compiler/narrowByInstanceof.types.diff deleted file mode 100644 index b50388d6b2b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowByInstanceof.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.narrowByInstanceof.types -+++ new.narrowByInstanceof.types -@@= skipped -149, +149 lines =@@ - } - - function test(o: Person | Car) { -->test : (o: Person | Car) => void -+>test : (o: Car | Person) => void - >o : Car | Person - - if (o instanceof cls) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowByParenthesizedSwitchExpression.types b/testdata/baselines/reference/submodule/compiler/narrowByParenthesizedSwitchExpression.types index f637cf011ba..157fa158422 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowByParenthesizedSwitchExpression.types +++ b/testdata/baselines/reference/submodule/compiler/narrowByParenthesizedSwitchExpression.types @@ -23,7 +23,7 @@ interface Bar extends Base { } function getV(): Foo | Bar { ->getV : () => Bar | Foo +>getV : () => Foo | Bar return null!; >null! : never @@ -32,7 +32,7 @@ function getV(): Foo | Bar { const v = getV(); >v : Bar | Foo >getV() : Bar | Foo ->getV : () => Bar | Foo +>getV : () => Foo | Bar switch ((v.type)) { >(v.type) : "bar" | "foo" diff --git a/testdata/baselines/reference/submodule/compiler/narrowByParenthesizedSwitchExpression.types.diff b/testdata/baselines/reference/submodule/compiler/narrowByParenthesizedSwitchExpression.types.diff deleted file mode 100644 index 48275548ee8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowByParenthesizedSwitchExpression.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.narrowByParenthesizedSwitchExpression.types -+++ new.narrowByParenthesizedSwitchExpression.types -@@= skipped -22, +22 lines =@@ - } - - function getV(): Foo | Bar { -->getV : () => Foo | Bar -+>getV : () => Bar | Foo - - return null!; - >null! : never -@@= skipped -9, +9 lines =@@ - const v = getV(); - >v : Bar | Foo - >getV() : Bar | Foo -->getV : () => Foo | Bar -+>getV : () => Bar | Foo - - switch ((v.type)) { - >(v.type) : "bar" | "foo" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowCommaOperatorNestedWithinLHS.types b/testdata/baselines/reference/submodule/compiler/narrowCommaOperatorNestedWithinLHS.types index 3651a2a8b9e..dcb4aa5cce8 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowCommaOperatorNestedWithinLHS.types +++ b/testdata/baselines/reference/submodule/compiler/narrowCommaOperatorNestedWithinLHS.types @@ -7,7 +7,7 @@ const otherValue = () => true; >true : true const value: { inner: number | string } = null as any; ->value : { inner: string | number; } +>value : { inner: number | string; } >inner : string | number >null as any : any @@ -23,28 +23,28 @@ if (typeof (otherValue(), value).inner === 'number') { >typeof (otherValue(), value).inner === 'number' : boolean >typeof (otherValue(), value).inner : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" >(otherValue(), value).inner : string | number ->(otherValue(), value) : { inner: string | number; } ->otherValue(), value : { inner: string | number; } +>(otherValue(), value) : { inner: number | string; } +>otherValue(), value : { inner: number | string; } >otherValue() : boolean >otherValue : () => boolean ->value : { inner: string | number; } +>value : { inner: number | string; } >inner : string | number >'number' : "number" const a = value.inner; // number >a : number >value.inner : number ->value : { inner: string | number; } +>value : { inner: number | string; } >inner : number const b: number = (otherValue(), value).inner; // string | number , but should be number >b : number >(otherValue(), value).inner : number ->(otherValue(), value) : { inner: string | number; } ->otherValue(), value : { inner: string | number; } +>(otherValue(), value) : { inner: number | string; } +>otherValue(), value : { inner: number | string; } >otherValue() : boolean >otherValue : () => boolean ->value : { inner: string | number; } +>value : { inner: number | string; } >inner : number } @@ -52,26 +52,26 @@ if (isNumber((otherValue(), value).inner)) { >isNumber((otherValue(), value).inner) : boolean >isNumber : (obj: any) => obj is number >(otherValue(), value).inner : string | number ->(otherValue(), value) : { inner: string | number; } ->otherValue(), value : { inner: string | number; } +>(otherValue(), value) : { inner: number | string; } +>otherValue(), value : { inner: number | string; } >otherValue() : boolean >otherValue : () => boolean ->value : { inner: string | number; } +>value : { inner: number | string; } >inner : string | number const a = value.inner; // number >a : number >value.inner : number ->value : { inner: string | number; } +>value : { inner: number | string; } >inner : number const b: number = (otherValue(), value).inner; // string | number , but should be number >b : number >(otherValue(), value).inner : number ->(otherValue(), value) : { inner: string | number; } ->otherValue(), value : { inner: string | number; } +>(otherValue(), value) : { inner: number | string; } +>otherValue(), value : { inner: number | string; } >otherValue() : boolean >otherValue : () => boolean ->value : { inner: string | number; } +>value : { inner: number | string; } >inner : number } diff --git a/testdata/baselines/reference/submodule/compiler/narrowCommaOperatorNestedWithinLHS.types.diff b/testdata/baselines/reference/submodule/compiler/narrowCommaOperatorNestedWithinLHS.types.diff deleted file mode 100644 index 675676175f7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowCommaOperatorNestedWithinLHS.types.diff +++ /dev/null @@ -1,81 +0,0 @@ ---- old.narrowCommaOperatorNestedWithinLHS.types -+++ new.narrowCommaOperatorNestedWithinLHS.types -@@= skipped -6, +6 lines =@@ - >true : true - - const value: { inner: number | string } = null as any; -->value : { inner: number | string; } -+>value : { inner: string | number; } - >inner : string | number - >null as any : any - -@@= skipped -16, +16 lines =@@ - >typeof (otherValue(), value).inner === 'number' : boolean - >typeof (otherValue(), value).inner : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" - >(otherValue(), value).inner : string | number -->(otherValue(), value) : { inner: number | string; } -->otherValue(), value : { inner: number | string; } -+>(otherValue(), value) : { inner: string | number; } -+>otherValue(), value : { inner: string | number; } - >otherValue() : boolean - >otherValue : () => boolean -->value : { inner: number | string; } -+>value : { inner: string | number; } - >inner : string | number - >'number' : "number" - - const a = value.inner; // number - >a : number - >value.inner : number -->value : { inner: number | string; } -+>value : { inner: string | number; } - >inner : number - - const b: number = (otherValue(), value).inner; // string | number , but should be number - >b : number - >(otherValue(), value).inner : number -->(otherValue(), value) : { inner: number | string; } -->otherValue(), value : { inner: number | string; } -+>(otherValue(), value) : { inner: string | number; } -+>otherValue(), value : { inner: string | number; } - >otherValue() : boolean - >otherValue : () => boolean -->value : { inner: number | string; } -+>value : { inner: string | number; } - >inner : number - } - -@@= skipped -29, +29 lines =@@ - >isNumber((otherValue(), value).inner) : boolean - >isNumber : (obj: any) => obj is number - >(otherValue(), value).inner : string | number -->(otherValue(), value) : { inner: number | string; } -->otherValue(), value : { inner: number | string; } -+>(otherValue(), value) : { inner: string | number; } -+>otherValue(), value : { inner: string | number; } - >otherValue() : boolean - >otherValue : () => boolean -->value : { inner: number | string; } -+>value : { inner: string | number; } - >inner : string | number - - const a = value.inner; // number - >a : number - >value.inner : number -->value : { inner: number | string; } -+>value : { inner: string | number; } - >inner : number - - const b: number = (otherValue(), value).inner; // string | number , but should be number - >b : number - >(otherValue(), value).inner : number -->(otherValue(), value) : { inner: number | string; } -->otherValue(), value : { inner: number | string; } -+>(otherValue(), value) : { inner: string | number; } -+>otherValue(), value : { inner: string | number; } - >otherValue() : boolean - >otherValue : () => boolean -->value : { inner: number | string; } -+>value : { inner: string | number; } - >inner : number - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingAssignmentReadonlyRespectsAssertion.types b/testdata/baselines/reference/submodule/compiler/narrowingAssignmentReadonlyRespectsAssertion.types index 11509338838..7e9b569d55f 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingAssignmentReadonlyRespectsAssertion.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingAssignmentReadonlyRespectsAssertion.types @@ -113,9 +113,9 @@ function testFunc() { >val1.slice().reverse() : any[] >val1.slice().reverse : () => any[] >val1.slice() : any[] ->val1.slice : (start?: number | undefined, end?: number | undefined) => any[] +>val1.slice : (start?: number, end?: number) => any[] >val1 : any[] ->slice : (start?: number | undefined, end?: number | undefined) => any[] +>slice : (start?: number, end?: number) => any[] >reverse : () => any[] console.log(reversedVal1); diff --git a/testdata/baselines/reference/submodule/compiler/narrowingAssignmentReadonlyRespectsAssertion.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingAssignmentReadonlyRespectsAssertion.types.diff deleted file mode 100644 index 151bf934c91..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowingAssignmentReadonlyRespectsAssertion.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.narrowingAssignmentReadonlyRespectsAssertion.types -+++ new.narrowingAssignmentReadonlyRespectsAssertion.types -@@= skipped -112, +112 lines =@@ - >val1.slice().reverse() : any[] - >val1.slice().reverse : () => any[] - >val1.slice() : any[] -->val1.slice : (start?: number, end?: number) => any[] -+>val1.slice : (start?: number | undefined, end?: number | undefined) => any[] - >val1 : any[] -->slice : (start?: number, end?: number) => any[] -+>slice : (start?: number | undefined, end?: number | undefined) => any[] - >reverse : () => any[] - - console.log(reversedVal1); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingByTypeofInSwitch.types b/testdata/baselines/reference/submodule/compiler/narrowingByTypeofInSwitch.types index acb96de6767..4a5fcccf8c4 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingByTypeofInSwitch.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingByTypeofInSwitch.types @@ -441,7 +441,7 @@ type R = { x: string, y: number } >y : number function exhaustiveChecks(x: number | string | L | R): string { ->exhaustiveChecks : (x: string | number | L | R) => string +>exhaustiveChecks : (x: number | string | L | R) => string >x : string | number | L | R switch (typeof x) { @@ -451,9 +451,9 @@ function exhaustiveChecks(x: number | string | L | R): string { case 'number': return x.toString(2); >'number' : "number" >x.toString(2) : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >2 : 2 case 'string': return x; @@ -475,7 +475,7 @@ function exhaustiveChecks(x: number | string | L | R): string { } function exhaustiveChecksGenerics(x: T): string { ->exhaustiveChecksGenerics : (x: T) => string +>exhaustiveChecksGenerics : (x: T) => string >x : T switch (typeof x) { @@ -485,9 +485,9 @@ function exhaustiveChecksGenerics(x: T): stri case 'number': return x.toString(2); >'number' : "number" >x.toString(2) : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >2 : 2 case 'string': return x; @@ -544,7 +544,7 @@ function multipleGeneric(xy: X | Y): [X, string] | [Y, } function multipleGenericFuse(xy: X | Y): [X, number] | [Y, string] | [(X | Y)] { ->multipleGenericFuse : (xy: X | Y) => [X | Y] | [X, number] | [Y, string] +>multipleGenericFuse : (xy: X | Y) => [X, number] | [Y, string] | [(X | Y)] >xy : X | Y switch (typeof xy) { @@ -871,7 +871,7 @@ function narrowingNarrows(x: {} | undefined) { } function narrowingNarrows2(x: true | 3 | 'hello' | undefined) { ->narrowingNarrows2 : (x: "hello" | 3 | true | undefined) => void +>narrowingNarrows2 : (x: true | 3 | 'hello' | undefined) => void >x : "hello" | 3 | true | undefined >true : true @@ -1084,7 +1084,7 @@ function keyofNarrowingWithTemplate(k: key /* Both string literals and template literals */ function multipleGenericFuseWithBoth(xy: X | Y): [X, number] | [Y, string] | [(X | Y)] { ->multipleGenericFuseWithBoth : (xy: X | Y) => [X | Y] | [X, number] | [Y, string] +>multipleGenericFuseWithBoth : (xy: X | Y) => [X, number] | [Y, string] | [(X | Y)] >xy : X | Y switch (typeof xy) { diff --git a/testdata/baselines/reference/submodule/compiler/narrowingByTypeofInSwitch.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingByTypeofInSwitch.types.diff index ddde7ec8e21..f33a3bd4010 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingByTypeofInSwitch.types.diff +++ b/testdata/baselines/reference/submodule/compiler/narrowingByTypeofInSwitch.types.diff @@ -1,71 +1,10 @@ --- old.narrowingByTypeofInSwitch.types +++ new.narrowingByTypeofInSwitch.types -@@= skipped -440, +440 lines =@@ - >y : number - - function exhaustiveChecks(x: number | string | L | R): string { -->exhaustiveChecks : (x: number | string | L | R) => string -+>exhaustiveChecks : (x: string | number | L | R) => string - >x : string | number | L | R - - switch (typeof x) { -@@= skipped -10, +10 lines =@@ - case 'number': return x.toString(2); - >'number' : "number" - >x.toString(2) : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >2 : 2 - - case 'string': return x; -@@= skipped -24, +24 lines =@@ - } - - function exhaustiveChecksGenerics(x: T): string { -->exhaustiveChecksGenerics : (x: T) => string -+>exhaustiveChecksGenerics : (x: T) => string - >x : T - - switch (typeof x) { -@@= skipped -10, +10 lines =@@ - case 'number': return x.toString(2); - >'number' : "number" - >x.toString(2) : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >2 : 2 - - case 'string': return x; -@@= skipped -59, +59 lines =@@ - } - - function multipleGenericFuse(xy: X | Y): [X, number] | [Y, string] | [(X | Y)] { -->multipleGenericFuse : (xy: X | Y) => [X, number] | [Y, string] | [(X | Y)] -+>multipleGenericFuse : (xy: X | Y) => [X | Y] | [X, number] | [Y, string] - >xy : X | Y - - switch (typeof xy) { -@@= skipped -327, +327 lines =@@ +@@= skipped -870, +870 lines =@@ } function narrowingNarrows2(x: true | 3 | 'hello' | undefined) { ->narrowingNarrows2 : (x: true | 3 | "hello" | undefined) => void -+>narrowingNarrows2 : (x: "hello" | 3 | true | undefined) => void ++>narrowingNarrows2 : (x: true | 3 | 'hello' | undefined) => void >x : "hello" | 3 | true | undefined >true : true - -@@= skipped -213, +213 lines =@@ - /* Both string literals and template literals */ - - function multipleGenericFuseWithBoth(xy: X | Y): [X, number] | [Y, string] | [(X | Y)] { -->multipleGenericFuseWithBoth : (xy: X | Y) => [X, number] | [Y, string] | [(X | Y)] -+>multipleGenericFuseWithBoth : (xy: X | Y) => [X | Y] | [X, number] | [Y, string] - >xy : X | Y - - switch (typeof xy) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingDestructuring.types b/testdata/baselines/reference/submodule/compiler/narrowingDestructuring.types index 6842ae1cb19..56a021e3cbf 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingDestructuring.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingDestructuring.types @@ -129,7 +129,7 @@ function func3(t: } function farr(x: T) { ->farr : (x: T) => void +>farr : (x: T) => void >x : T const [head, ...tail] = x; diff --git a/testdata/baselines/reference/submodule/compiler/narrowingDestructuring.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingDestructuring.types.diff deleted file mode 100644 index 04708ac4a42..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowingDestructuring.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.narrowingDestructuring.types -+++ new.narrowingDestructuring.types -@@= skipped -128, +128 lines =@@ - } - - function farr(x: T) { -->farr : (x: T) => void -+>farr : (x: T) => void - >x : T - - const [head, ...tail] = x; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingInCaseClauseAfterCaseClauseWithReturn.types b/testdata/baselines/reference/submodule/compiler/narrowingInCaseClauseAfterCaseClauseWithReturn.types index 12203af5303..b370b3eefbd 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingInCaseClauseAfterCaseClauseWithReturn.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingInCaseClauseAfterCaseClauseWithReturn.types @@ -116,7 +116,7 @@ function test2(arg: string | undefined) { } function test3( ->test3 : (foo: { kind: "a"; prop: string; } | { kind: "b"; prop: number; } | { kind: "c"; prop: boolean; }, bar?: { type: "b"; } | undefined) => void +>test3 : (foo: { kind: "a"; prop: string; } | { kind: "b"; prop: number; } | { kind: "c"; prop: boolean; }, bar?: { type: "b"; }) => void foo: >foo : { kind: "a"; prop: string; } | { kind: "b"; prop: number; } | { kind: "c"; prop: boolean; } diff --git a/testdata/baselines/reference/submodule/compiler/narrowingInCaseClauseAfterCaseClauseWithReturn.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingInCaseClauseAfterCaseClauseWithReturn.types.diff deleted file mode 100644 index 89ac0eb563e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowingInCaseClauseAfterCaseClauseWithReturn.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.narrowingInCaseClauseAfterCaseClauseWithReturn.types -+++ new.narrowingInCaseClauseAfterCaseClauseWithReturn.types -@@= skipped -115, +115 lines =@@ - } - - function test3( -->test3 : (foo: { kind: "a"; prop: string; } | { kind: "b"; prop: number; } | { kind: "c"; prop: boolean; }, bar?: { type: "b"; }) => void -+>test3 : (foo: { kind: "a"; prop: string; } | { kind: "b"; prop: number; } | { kind: "c"; prop: boolean; }, bar?: { type: "b"; } | undefined) => void - - foo: - >foo : { kind: "a"; prop: string; } | { kind: "b"; prop: number; } | { kind: "c"; prop: boolean; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingIntersection.types b/testdata/baselines/reference/submodule/compiler/narrowingIntersection.types index eb23860af5d..61e53ebd58c 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingIntersection.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingIntersection.types @@ -29,13 +29,13 @@ function test1(result: Disjoint): string { throw result.err; >result.err : FooAndBaz ->result : { readonly value?: undefined; readonly err: FooAndBaz; } +>result : { readonly value?: never; readonly err: FooAndBaz; } >err : FooAndBaz } // Error, should OK return result.value; >result.value : string ->result : { readonly value: string; readonly err?: undefined; } +>result : { readonly value: string; readonly err?: never; } >value : string } diff --git a/testdata/baselines/reference/submodule/compiler/narrowingIntersection.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingIntersection.types.diff deleted file mode 100644 index 46c58d2f8f4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowingIntersection.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.narrowingIntersection.types -+++ new.narrowingIntersection.types -@@= skipped -28, +28 lines =@@ - - throw result.err; - >result.err : FooAndBaz -->result : { readonly value?: never; readonly err: FooAndBaz; } -+>result : { readonly value?: undefined; readonly err: FooAndBaz; } - >err : FooAndBaz - } - // Error, should OK - return result.value; - >result.value : string -->result : { readonly value: string; readonly err?: never; } -+>result : { readonly value: string; readonly err?: undefined; } - >value : string - } diff --git a/testdata/baselines/reference/submodule/compiler/narrowingMutualSubtypes.types b/testdata/baselines/reference/submodule/compiler/narrowingMutualSubtypes.types index c790879d52c..f47c641078a 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingMutualSubtypes.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingMutualSubtypes.types @@ -256,7 +256,7 @@ function example(x: Union) { } function checksArrayOrObject1(obj: Record | Record[]) { ->checksArrayOrObject1 : (obj: Record[] | Record) => void +>checksArrayOrObject1 : (obj: Record | Record[]) => void >obj : Record[] | Record // "accidentally" guards the first branch on the length @@ -320,7 +320,7 @@ function checksArrayOrObject1(obj: Record | Record[]) } function checksArrayOrObject2(obj: Record | Record[]) { ->checksArrayOrObject2 : (obj: Record[] | Record) => void +>checksArrayOrObject2 : (obj: Record | Record[]) => void >obj : Record[] | Record if (Array.isArray(obj)) { diff --git a/testdata/baselines/reference/submodule/compiler/narrowingMutualSubtypes.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingMutualSubtypes.types.diff deleted file mode 100644 index 1a70b5ea0b3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowingMutualSubtypes.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.narrowingMutualSubtypes.types -+++ new.narrowingMutualSubtypes.types -@@= skipped -255, +255 lines =@@ - } - - function checksArrayOrObject1(obj: Record | Record[]) { -->checksArrayOrObject1 : (obj: Record | Record[]) => void -+>checksArrayOrObject1 : (obj: Record[] | Record) => void - >obj : Record[] | Record - - // "accidentally" guards the first branch on the length -@@= skipped -64, +64 lines =@@ - } - - function checksArrayOrObject2(obj: Record | Record[]) { -->checksArrayOrObject2 : (obj: Record | Record[]) => void -+>checksArrayOrObject2 : (obj: Record[] | Record) => void - >obj : Record[] | Record - - if (Array.isArray(obj)) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingNoInfer1.types b/testdata/baselines/reference/submodule/compiler/narrowingNoInfer1.types index bea25d492ab..67dd66b705f 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingNoInfer1.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingNoInfer1.types @@ -69,30 +69,30 @@ 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 ->{ type: 'a' as const } : { type: "a"; } +>{ type: 'a' as const } : { type: 'a'; } >type : "a" >'a' as const : "a" >'a' : "a" ->{ type: 'b' as const } : { type: "b"; } +>{ type: 'b' as const } : { type: 'b'; } >type : "b" >'b' as const : "b" >'b' : "b" ->(thing) => { if (thing.type === "a") { thing; } else { thing; }} : (thing: NoInfer<{ type: "a"; }> | NoInfer<{ type: "b"; }>) => void ->thing : NoInfer<{ type: "a"; }> | NoInfer<{ type: "b"; }> +>(thing) => { if (thing.type === "a") { thing; } else { thing; }} : (thing: NoInfer<{ type: 'a'; }> | NoInfer<{ type: 'b'; }>) => void +>thing : NoInfer<{ type: 'a'; }> | NoInfer<{ type: 'b'; }> if (thing.type === "a") { >thing.type === "a" : boolean >thing.type : "a" | "b" ->thing : NoInfer<{ type: "a"; }> | NoInfer<{ type: "b"; }> +>thing : NoInfer<{ type: 'a'; }> | NoInfer<{ type: 'b'; }> >type : "a" | "b" >"a" : "a" thing; ->thing : NoInfer<{ type: "a"; }> +>thing : NoInfer<{ type: 'a'; }> } else { thing; ->thing : NoInfer<{ type: "b"; }> +>thing : NoInfer<{ type: 'b'; }> } }); diff --git a/testdata/baselines/reference/submodule/compiler/narrowingNoInfer1.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingNoInfer1.types.diff new file mode 100644 index 00000000000..7ff1f6f3e92 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/narrowingNoInfer1.types.diff @@ -0,0 +1,39 @@ +--- old.narrowingNoInfer1.types ++++ new.narrowingNoInfer1.types +@@= skipped -68, +68 lines =@@ + test2({ type: 'a' as const }, { type: 'b' as const }, (thing) => { + >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 +->{ type: 'a' as const } : { type: "a"; } ++>{ type: 'a' as const } : { type: 'a'; } + >type : "a" + >'a' as const : "a" + >'a' : "a" +->{ type: 'b' as const } : { type: "b"; } ++>{ type: 'b' as const } : { type: 'b'; } + >type : "b" + >'b' as const : "b" + >'b' : "b" +->(thing) => { if (thing.type === "a") { thing; } else { thing; }} : (thing: NoInfer<{ type: "a"; }> | NoInfer<{ type: "b"; }>) => void +->thing : NoInfer<{ type: "a"; }> | NoInfer<{ type: "b"; }> ++>(thing) => { if (thing.type === "a") { thing; } else { thing; }} : (thing: NoInfer<{ type: 'a'; }> | NoInfer<{ type: 'b'; }>) => void ++>thing : NoInfer<{ type: 'a'; }> | NoInfer<{ type: 'b'; }> + + if (thing.type === "a") { + >thing.type === "a" : boolean + >thing.type : "a" | "b" +->thing : NoInfer<{ type: "a"; }> | NoInfer<{ type: "b"; }> ++>thing : NoInfer<{ type: 'a'; }> | NoInfer<{ type: 'b'; }> + >type : "a" | "b" + >"a" : "a" + + thing; +->thing : NoInfer<{ type: "a"; }> ++>thing : NoInfer<{ type: 'a'; }> + + } else { + thing; +->thing : NoInfer<{ type: "b"; }> ++>thing : NoInfer<{ type: 'b'; }> + } + }); diff --git a/testdata/baselines/reference/submodule/compiler/narrowingOfQualifiedNames.types b/testdata/baselines/reference/submodule/compiler/narrowingOfQualifiedNames.types index e3f01c11c6c..240c366301b 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingOfQualifiedNames.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingOfQualifiedNames.types @@ -58,10 +58,10 @@ function init(properties: IProperties) { interface DeepOptional { a?: { ->a : { b?: { c?: string | undefined; } | undefined; } | undefined +>a : { b?: { c?: string; }; } | undefined b?: { ->b : { c?: string | undefined; } | undefined +>b : { c?: string; } | undefined c?: string >c : string | undefined @@ -74,32 +74,32 @@ function init2(foo: DeepOptional) { >foo : DeepOptional if (foo.a) { ->foo.a : { b?: { c?: string | undefined; } | undefined; } | undefined +>foo.a : { b?: { c?: string; }; } | undefined >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } | undefined +>a : { b?: { c?: string; }; } | undefined type A = typeof foo.a; ->A : { b?: { c?: string | undefined; } | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>A : { b?: { c?: string; }; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } +>a : { b?: { c?: string; }; } type B = typeof foo.a.b; ->B : { c?: string | undefined; } | undefined ->foo.a.b : { c?: string | undefined; } | undefined ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>B : { c?: string; } | undefined +>foo.a.b : { c?: string; } | undefined +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } | undefined +>a : { b?: { c?: string; }; } +>b : { c?: string; } | undefined type C = typeof foo.a.b.c; >C : string | undefined >foo.a.b.c : string | undefined ->foo.a.b : { c?: string | undefined; } | undefined ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>foo.a.b : { c?: string; } | undefined +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } | undefined +>a : { b?: { c?: string; }; } +>b : { c?: string; } | undefined >c : string | undefined for(const _ of [1]) { @@ -108,58 +108,58 @@ function init2(foo: DeepOptional) { >1 : 1 type A = typeof foo.a; ->A : { b?: { c?: string | undefined; } | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>A : { b?: { c?: string; }; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } +>a : { b?: { c?: string; }; } type B = typeof foo.a.b; ->B : { c?: string | undefined; } | undefined ->foo.a.b : { c?: string | undefined; } | undefined ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>B : { c?: string; } | undefined +>foo.a.b : { c?: string; } | undefined +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } | undefined +>a : { b?: { c?: string; }; } +>b : { c?: string; } | undefined type C = typeof foo.a.b.c; >C : string | undefined >foo.a.b.c : string | undefined ->foo.a.b : { c?: string | undefined; } | undefined ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>foo.a.b : { c?: string; } | undefined +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } | undefined +>a : { b?: { c?: string; }; } +>b : { c?: string; } | undefined >c : string | undefined if (foo.a.b) { ->foo.a.b : { c?: string | undefined; } | undefined ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>foo.a.b : { c?: string; } | undefined +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } | undefined +>a : { b?: { c?: string; }; } +>b : { c?: string; } | undefined type A = typeof foo.a; ->A : { b?: { c?: string | undefined; } | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>A : { b?: { c?: string; }; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } +>a : { b?: { c?: string; }; } type B = typeof foo.a.b; ->B : { c?: string | undefined; } ->foo.a.b : { c?: string | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>B : { c?: string; } +>foo.a.b : { c?: string; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } +>a : { b?: { c?: string; }; } +>b : { c?: string; } type C = typeof foo.a.b.c; >C : string | undefined >foo.a.b.c : string | undefined ->foo.a.b : { c?: string | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>foo.a.b : { c?: string; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } +>a : { b?: { c?: string; }; } +>b : { c?: string; } >c : string | undefined for(const _ of [1]) { @@ -168,60 +168,60 @@ function init2(foo: DeepOptional) { >1 : 1 type A = typeof foo.a; ->A : { b?: { c?: string | undefined; } | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>A : { b?: { c?: string; }; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } +>a : { b?: { c?: string; }; } type B = typeof foo.a.b; ->B : { c?: string | undefined; } ->foo.a.b : { c?: string | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>B : { c?: string; } +>foo.a.b : { c?: string; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } +>a : { b?: { c?: string; }; } +>b : { c?: string; } type C = typeof foo.a.b.c; >C : string | undefined >foo.a.b.c : string | undefined ->foo.a.b : { c?: string | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>foo.a.b : { c?: string; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } +>a : { b?: { c?: string; }; } +>b : { c?: string; } >c : string | undefined if (foo.a.b.c) { >foo.a.b.c : string | undefined ->foo.a.b : { c?: string | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>foo.a.b : { c?: string; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } +>a : { b?: { c?: string; }; } +>b : { c?: string; } >c : string | undefined type A = typeof foo.a; ->A : { b?: { c?: string | undefined; } | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>A : { b?: { c?: string; }; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } +>a : { b?: { c?: string; }; } type B = typeof foo.a.b; ->B : { c?: string | undefined; } ->foo.a.b : { c?: string | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>B : { c?: string; } +>foo.a.b : { c?: string; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } +>a : { b?: { c?: string; }; } +>b : { c?: string; } type C = typeof foo.a.b.c; >C : string >foo.a.b.c : string ->foo.a.b : { c?: string | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>foo.a.b : { c?: string; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } +>a : { b?: { c?: string; }; } +>b : { c?: string; } >c : string for(const _ of [1]) { @@ -230,27 +230,27 @@ function init2(foo: DeepOptional) { >1 : 1 type A = typeof foo.a; ->A : { b?: { c?: string | undefined; } | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>A : { b?: { c?: string; }; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } +>a : { b?: { c?: string; }; } type B = typeof foo.a.b; ->B : { c?: string | undefined; } ->foo.a.b : { c?: string | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>B : { c?: string; } +>foo.a.b : { c?: string; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } +>a : { b?: { c?: string; }; } +>b : { c?: string; } type C = typeof foo.a.b.c; >C : string >foo.a.b.c : string ->foo.a.b : { c?: string | undefined; } ->foo.a : { b?: { c?: string | undefined; } | undefined; } +>foo.a.b : { c?: string; } +>foo.a : { b?: { c?: string; }; } >foo : DeepOptional ->a : { b?: { c?: string | undefined; } | undefined; } ->b : { c?: string | undefined; } +>a : { b?: { c?: string; }; } +>b : { c?: string; } >c : string } } diff --git a/testdata/baselines/reference/submodule/compiler/narrowingOfQualifiedNames.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingOfQualifiedNames.types.diff deleted file mode 100644 index b125c70759f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowingOfQualifiedNames.types.diff +++ /dev/null @@ -1,278 +0,0 @@ ---- old.narrowingOfQualifiedNames.types -+++ new.narrowingOfQualifiedNames.types -@@= skipped -57, +57 lines =@@ - - interface DeepOptional { - a?: { -->a : { b?: { c?: string; }; } | undefined -+>a : { b?: { c?: string | undefined; } | undefined; } | undefined - - b?: { -->b : { c?: string; } | undefined -+>b : { c?: string | undefined; } | undefined - - c?: string - >c : string | undefined -@@= skipped -16, +16 lines =@@ - >foo : DeepOptional - - if (foo.a) { -->foo.a : { b?: { c?: string; }; } | undefined -+>foo.a : { b?: { c?: string | undefined; } | undefined; } | undefined - >foo : DeepOptional -->a : { b?: { c?: string; }; } | undefined -+>a : { b?: { c?: string | undefined; } | undefined; } | undefined - - type A = typeof foo.a; -->A : { b?: { c?: string; }; } -->foo.a : { b?: { c?: string; }; } -+>A : { b?: { c?: string | undefined; } | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -+>a : { b?: { c?: string | undefined; } | undefined; } - - type B = typeof foo.a.b; -->B : { c?: string; } | undefined -->foo.a.b : { c?: string; } | undefined -->foo.a : { b?: { c?: string; }; } -+>B : { c?: string | undefined; } | undefined -+>foo.a.b : { c?: string | undefined; } | undefined -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } | undefined -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } | undefined - - type C = typeof foo.a.b.c; - >C : string | undefined - >foo.a.b.c : string | undefined -->foo.a.b : { c?: string; } | undefined -->foo.a : { b?: { c?: string; }; } -+>foo.a.b : { c?: string | undefined; } | undefined -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } | undefined -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } | undefined - >c : string | undefined - - for(const _ of [1]) { -@@= skipped -34, +34 lines =@@ - >1 : 1 - - type A = typeof foo.a; -->A : { b?: { c?: string; }; } -->foo.a : { b?: { c?: string; }; } -+>A : { b?: { c?: string | undefined; } | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -+>a : { b?: { c?: string | undefined; } | undefined; } - - type B = typeof foo.a.b; -->B : { c?: string; } | undefined -->foo.a.b : { c?: string; } | undefined -->foo.a : { b?: { c?: string; }; } -+>B : { c?: string | undefined; } | undefined -+>foo.a.b : { c?: string | undefined; } | undefined -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } | undefined -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } | undefined - - type C = typeof foo.a.b.c; - >C : string | undefined - >foo.a.b.c : string | undefined -->foo.a.b : { c?: string; } | undefined -->foo.a : { b?: { c?: string; }; } -+>foo.a.b : { c?: string | undefined; } | undefined -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } | undefined -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } | undefined - >c : string | undefined - - if (foo.a.b) { -->foo.a.b : { c?: string; } | undefined -->foo.a : { b?: { c?: string; }; } -+>foo.a.b : { c?: string | undefined; } | undefined -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } | undefined -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } | undefined - - type A = typeof foo.a; -->A : { b?: { c?: string; }; } -->foo.a : { b?: { c?: string; }; } -+>A : { b?: { c?: string | undefined; } | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -+>a : { b?: { c?: string | undefined; } | undefined; } - - type B = typeof foo.a.b; -->B : { c?: string; } -->foo.a.b : { c?: string; } -->foo.a : { b?: { c?: string; }; } -+>B : { c?: string | undefined; } -+>foo.a.b : { c?: string | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } - - type C = typeof foo.a.b.c; - >C : string | undefined - >foo.a.b.c : string | undefined -->foo.a.b : { c?: string; } -->foo.a : { b?: { c?: string; }; } -+>foo.a.b : { c?: string | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } - >c : string | undefined - - for(const _ of [1]) { -@@= skipped -60, +60 lines =@@ - >1 : 1 - - type A = typeof foo.a; -->A : { b?: { c?: string; }; } -->foo.a : { b?: { c?: string; }; } -+>A : { b?: { c?: string | undefined; } | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -+>a : { b?: { c?: string | undefined; } | undefined; } - - type B = typeof foo.a.b; -->B : { c?: string; } -->foo.a.b : { c?: string; } -->foo.a : { b?: { c?: string; }; } -+>B : { c?: string | undefined; } -+>foo.a.b : { c?: string | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } - - type C = typeof foo.a.b.c; - >C : string | undefined - >foo.a.b.c : string | undefined -->foo.a.b : { c?: string; } -->foo.a : { b?: { c?: string; }; } -+>foo.a.b : { c?: string | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } - >c : string | undefined - - if (foo.a.b.c) { - >foo.a.b.c : string | undefined -->foo.a.b : { c?: string; } -->foo.a : { b?: { c?: string; }; } -+>foo.a.b : { c?: string | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } - >c : string | undefined - - type A = typeof foo.a; -->A : { b?: { c?: string; }; } -->foo.a : { b?: { c?: string; }; } -+>A : { b?: { c?: string | undefined; } | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -+>a : { b?: { c?: string | undefined; } | undefined; } - - type B = typeof foo.a.b; -->B : { c?: string; } -->foo.a.b : { c?: string; } -->foo.a : { b?: { c?: string; }; } -+>B : { c?: string | undefined; } -+>foo.a.b : { c?: string | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } - - type C = typeof foo.a.b.c; - >C : string - >foo.a.b.c : string -->foo.a.b : { c?: string; } -->foo.a : { b?: { c?: string; }; } -+>foo.a.b : { c?: string | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } - >c : string - - for(const _ of [1]) { -@@= skipped -62, +62 lines =@@ - >1 : 1 - - type A = typeof foo.a; -->A : { b?: { c?: string; }; } -->foo.a : { b?: { c?: string; }; } -+>A : { b?: { c?: string | undefined; } | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -+>a : { b?: { c?: string | undefined; } | undefined; } - - type B = typeof foo.a.b; -->B : { c?: string; } -->foo.a.b : { c?: string; } -->foo.a : { b?: { c?: string; }; } -+>B : { c?: string | undefined; } -+>foo.a.b : { c?: string | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } - - type C = typeof foo.a.b.c; - >C : string - >foo.a.b.c : string -->foo.a.b : { c?: string; } -->foo.a : { b?: { c?: string; }; } -+>foo.a.b : { c?: string | undefined; } -+>foo.a : { b?: { c?: string | undefined; } | undefined; } - >foo : DeepOptional -->a : { b?: { c?: string; }; } -->b : { c?: string; } -+>a : { b?: { c?: string | undefined; } | undefined; } -+>b : { c?: string | undefined; } - >c : string - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingPastLastAssignment.types b/testdata/baselines/reference/submodule/compiler/narrowingPastLastAssignment.types index df6935c8138..c690c529a0d 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingPastLastAssignment.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingPastLastAssignment.types @@ -392,7 +392,7 @@ function f10() { } function makeAdder(n?: number) { ->makeAdder : (n?: number | undefined) => (m: number) => number +>makeAdder : (n?: number) => (m: number) => number >n : number | undefined n ??= 0; @@ -491,8 +491,8 @@ function f13() { foo.toLocaleLowerCase(); >foo.toLocaleLowerCase() : string ->foo.toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>foo.toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } >foo : string | undefined ->toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } } } diff --git a/testdata/baselines/reference/submodule/compiler/narrowingPastLastAssignment.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingPastLastAssignment.types.diff deleted file mode 100644 index 9f5381f4e20..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowingPastLastAssignment.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.narrowingPastLastAssignment.types -+++ new.narrowingPastLastAssignment.types -@@= skipped -391, +391 lines =@@ - } - - function makeAdder(n?: number) { -->makeAdder : (n?: number) => (m: number) => number -+>makeAdder : (n?: number | undefined) => (m: number) => number - >n : number | undefined - - n ??= 0; -@@= skipped -99, +99 lines =@@ - - foo.toLocaleLowerCase(); - >foo.toLocaleLowerCase() : string -->foo.toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>foo.toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - >foo : string | undefined -->toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingTypeofDiscriminant.types b/testdata/baselines/reference/submodule/compiler/narrowingTypeofDiscriminant.types index 2fa7bd01c7c..2b220c6c331 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingTypeofDiscriminant.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingTypeofDiscriminant.types @@ -2,8 +2,8 @@ === narrowingTypeofDiscriminant.ts === function f1(obj: { kind: 'a', data: string } | { kind: 1, data: number }) { ->f1 : (obj: { kind: "a"; data: string; } | { kind: 1; data: number; }) => void ->obj : { kind: "a"; data: string; } | { kind: 1; data: number; } +>f1 : (obj: { kind: 'a'; data: string; } | { kind: 1; data: number; }) => void +>obj : { kind: 'a'; data: string; } | { kind: 1; data: number; } >kind : "a" >data : string >kind : 1 @@ -13,12 +13,12 @@ function f1(obj: { kind: 'a', data: string } | { kind: 1, data: number }) { >typeof obj.kind === "string" : boolean >typeof obj.kind : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" >obj.kind : "a" | 1 ->obj : { kind: "a"; data: string; } | { kind: 1; data: number; } +>obj : { kind: 'a'; data: string; } | { kind: 1; data: number; } >kind : "a" | 1 >"string" : "string" obj; // { kind: 'a', data: string } ->obj : { kind: "a"; data: string; } +>obj : { kind: 'a'; data: string; } } else { obj; // { kind: 1, data: number } @@ -27,8 +27,8 @@ function f1(obj: { kind: 'a', data: string } | { kind: 1, data: number }) { } function f2(obj: { kind: 'a', data: string } | { kind: 1, data: number } | undefined) { ->f2 : (obj: { kind: "a"; data: string; } | { kind: 1; data: number; } | undefined) => void ->obj : { kind: "a"; data: string; } | { kind: 1; data: number; } | undefined +>f2 : (obj: { kind: 'a'; data: string; } | { kind: 1; data: number; } | undefined) => void +>obj : { kind: 'a'; data: string; } | { kind: 1; data: number; } | undefined >kind : "a" >data : string >kind : 1 @@ -38,12 +38,12 @@ function f2(obj: { kind: 'a', data: string } | { kind: 1, data: number } | undef >typeof obj?.kind === "string" : boolean >typeof obj?.kind : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" >obj?.kind : "a" | 1 | undefined ->obj : { kind: "a"; data: string; } | { kind: 1; data: number; } | undefined +>obj : { kind: 'a'; data: string; } | { kind: 1; data: number; } | undefined >kind : "a" | 1 | undefined >"string" : "string" obj; // { kind: 'a', data: string } ->obj : { kind: "a"; data: string; } +>obj : { kind: 'a'; data: string; } } else { obj; // { kind: 1, data: number } | undefined @@ -94,7 +94,7 @@ function booleanBad(wrapped: WrappedStringOr | null) { } return wrapped.value; >wrapped.value : string ->wrapped : { value?: string | undefined; } +>wrapped : { value?: string; } >value : string } @@ -115,7 +115,7 @@ function booleanFixed(wrapped: WrappedStringOr | null) { } return wrapped.value; >wrapped.value : string ->wrapped : { value?: string | undefined; } +>wrapped : { value?: string; } >value : string } diff --git a/testdata/baselines/reference/submodule/compiler/narrowingTypeofDiscriminant.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingTypeofDiscriminant.types.diff index f556ea48b8a..0ac83a96f67 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingTypeofDiscriminant.types.diff +++ b/testdata/baselines/reference/submodule/compiler/narrowingTypeofDiscriminant.types.diff @@ -1,19 +1,54 @@ --- old.narrowingTypeofDiscriminant.types +++ new.narrowingTypeofDiscriminant.types -@@= skipped -93, +93 lines =@@ +@@= skipped -1, +1 lines =@@ + + === narrowingTypeofDiscriminant.ts === + function f1(obj: { kind: 'a', data: string } | { kind: 1, data: number }) { +->f1 : (obj: { kind: "a"; data: string; } | { kind: 1; data: number; }) => void +->obj : { kind: "a"; data: string; } | { kind: 1; data: number; } ++>f1 : (obj: { kind: 'a'; data: string; } | { kind: 1; data: number; }) => void ++>obj : { kind: 'a'; data: string; } | { kind: 1; data: number; } + >kind : "a" + >data : string + >kind : 1 +@@= skipped -11, +11 lines =@@ + >typeof obj.kind === "string" : boolean + >typeof obj.kind : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" + >obj.kind : "a" | 1 +->obj : { kind: "a"; data: string; } | { kind: 1; data: number; } ++>obj : { kind: 'a'; data: string; } | { kind: 1; data: number; } + >kind : "a" | 1 + >"string" : "string" + + obj; // { kind: 'a', data: string } +->obj : { kind: "a"; data: string; } ++>obj : { kind: 'a'; data: string; } } - return wrapped.value; - >wrapped.value : string -->wrapped : { value?: string; } -+>wrapped : { value?: string | undefined; } - >value : string + else { + obj; // { kind: 1, data: number } +@@= skipped -14, +14 lines =@@ } -@@= skipped -21, +21 lines =@@ + function f2(obj: { kind: 'a', data: string } | { kind: 1, data: number } | undefined) { +->f2 : (obj: { kind: "a"; data: string; } | { kind: 1; data: number; } | undefined) => void +->obj : { kind: "a"; data: string; } | { kind: 1; data: number; } | undefined ++>f2 : (obj: { kind: 'a'; data: string; } | { kind: 1; data: number; } | undefined) => void ++>obj : { kind: 'a'; data: string; } | { kind: 1; data: number; } | undefined + >kind : "a" + >data : string + >kind : 1 +@@= skipped -11, +11 lines =@@ + >typeof obj?.kind === "string" : boolean + >typeof obj?.kind : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" + >obj?.kind : "a" | 1 | undefined +->obj : { kind: "a"; data: string; } | { kind: 1; data: number; } | undefined ++>obj : { kind: 'a'; data: string; } | { kind: 1; data: number; } | undefined + >kind : "a" | 1 | undefined + >"string" : "string" + + obj; // { kind: 'a', data: string } +->obj : { kind: "a"; data: string; } ++>obj : { kind: 'a'; data: string; } } - return wrapped.value; - >wrapped.value : string -->wrapped : { value?: string; } -+>wrapped : { value?: string | undefined; } - >value : string - } + else { + obj; // { kind: 1, data: number } | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingTypeofFunction.types b/testdata/baselines/reference/submodule/compiler/narrowingTypeofFunction.types index 55a640d4e69..0bcd30726da 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingTypeofFunction.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingTypeofFunction.types @@ -8,7 +8,7 @@ type Meta = { foo: string } interface F { (): string } function f1(a: (F & Meta) | string) { ->f1 : (a: string | (F & Meta)) => void +>f1 : (a: (F & Meta) | string) => void >a : string | (F & Meta) if (typeof a === "function") { @@ -27,7 +27,7 @@ function f1(a: (F & Meta) | string) { } function f2(x: (T & F) | T & string) { ->f2 : (x: (T & string) | (T & F)) => void +>f2 : (x: (T & F) | (T & string)) => void >x : (T & string) | (T & F) if (typeof x === "function") { diff --git a/testdata/baselines/reference/submodule/compiler/narrowingTypeofFunction.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingTypeofFunction.types.diff deleted file mode 100644 index aae1239b70b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowingTypeofFunction.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.narrowingTypeofFunction.types -+++ new.narrowingTypeofFunction.types -@@= skipped -7, +7 lines =@@ - interface F { (): string } - - function f1(a: (F & Meta) | string) { -->f1 : (a: (F & Meta) | string) => void -+>f1 : (a: string | (F & Meta)) => void - >a : string | (F & Meta) - - if (typeof a === "function") { -@@= skipped -19, +19 lines =@@ - } - - function f2(x: (T & F) | T & string) { -->f2 : (x: (T & F) | (T & string)) => void -+>f2 : (x: (T & string) | (T & F)) => void - >x : (T & string) | (T & F) - - if (typeof x === "function") { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingTypeofUndefined2.types b/testdata/baselines/reference/submodule/compiler/narrowingTypeofUndefined2.types index 26ee4c19e1d..1ae851e397d 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingTypeofUndefined2.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingTypeofUndefined2.types @@ -2,11 +2,11 @@ === narrowingTypeofUndefined2.ts === declare function takeArray(arr: Array): void; ->takeArray : (arr: unknown[]) => void +>takeArray : (arr: Array) => void >arr : unknown[] function fn | undefined>(arg: T) { ->fn : (arg: T) => void +>fn : | undefined>(arg: T) => void >arg : T if (typeof arg !== "undefined") { @@ -17,7 +17,7 @@ function fn | undefined>(arg: T) { takeArray(arg); >takeArray(arg) : void ->takeArray : (arr: unknown[]) => void +>takeArray : (arr: Array) => void >arg : unknown[] const n: Array = arg; diff --git a/testdata/baselines/reference/submodule/compiler/narrowingTypeofUndefined2.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingTypeofUndefined2.types.diff deleted file mode 100644 index cd0df639278..00000000000 --- a/testdata/baselines/reference/submodule/compiler/narrowingTypeofUndefined2.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.narrowingTypeofUndefined2.types -+++ new.narrowingTypeofUndefined2.types -@@= skipped -1, +1 lines =@@ - - === narrowingTypeofUndefined2.ts === - declare function takeArray(arr: Array): void; -->takeArray : (arr: Array) => void -+>takeArray : (arr: unknown[]) => void - >arr : unknown[] - - function fn | undefined>(arg: T) { -->fn : | undefined>(arg: T) => void -+>fn : (arg: T) => void - >arg : T - - if (typeof arg !== "undefined") { -@@= skipped -15, +15 lines =@@ - - takeArray(arg); - >takeArray(arg) : void -->takeArray : (arr: Array) => void -+>takeArray : (arr: unknown[]) => void - >arg : unknown[] - - const n: Array = arg; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/narrowingUnionToUnion.types b/testdata/baselines/reference/submodule/compiler/narrowingUnionToUnion.types index da60ca80878..cda56ddfe31 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingUnionToUnion.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingUnionToUnion.types @@ -245,7 +245,7 @@ const TEST_CASES = [ } }, (value?: string) => { ->(value?: string) => { if (isMaybeEmptyString(value)) { value; // "" | undefined } else { value; // string } } : (value?: string | undefined) => void +>(value?: string) => { if (isMaybeEmptyString(value)) { value; // "" | undefined } else { value; // string } } : (value?: string) => void >value : string | undefined if (isMaybeEmptyString(value)) { @@ -291,7 +291,7 @@ const TEST_CASES = [ } }, (value?: number) => { ->(value?: number) => { if (isMaybeZero(value)) { value; // 0 | undefined } else { value; // number } } : (value?: number | undefined) => void +>(value?: number) => { if (isMaybeZero(value)) { value; // 0 | undefined } else { value; // number } } : (value?: number) => void >value : number | undefined if (isMaybeZero(value)) { @@ -337,7 +337,7 @@ const TEST_CASES = [ } }, (value?: string[]) => { ->(value?: string[]) => { if (isMaybeEmptyArray(value)) { value; // [] | undefined } else { value; // string[] } } : (value?: string[] | undefined) => void +>(value?: string[]) => { if (isMaybeEmptyArray(value)) { value; // [] | undefined } else { value; // string[] } } : (value?: string[]) => void >value : string[] | undefined if (isMaybeEmptyArray(value)) { @@ -361,7 +361,7 @@ type EmptyString = '' | null | undefined; >EmptyString : EmptyString function isEmpty(value: string | EmptyString): value is EmptyString { ->isEmpty : (value: string | null | undefined) => value is EmptyString +>isEmpty : (value: string | EmptyString) => value is EmptyString >value : string | null | undefined return value === '' || value === null || value === undefined; @@ -382,7 +382,7 @@ let test: string | null | undefined; if (isEmpty(test)) { >isEmpty(test) : boolean ->isEmpty : (value: string | null | undefined) => value is EmptyString +>isEmpty : (value: string | EmptyString) => value is EmptyString >test : string | null | undefined test; // EmptyString @@ -396,7 +396,7 @@ declare function assert(value: any): asserts value is T >value : any function test1(foo: number | string | boolean) { ->test1 : (foo: string | number | boolean) => void +>test1 : (foo: number | string | boolean) => void >foo : string | number | boolean assert<1 | string>(foo); @@ -541,7 +541,7 @@ isMyDiscriminatedUnion(working) && working.type === 'A' && working.aProp; >type : "A" | "B" >'A' : "A" >working.aProp : number ->working : { type: "A"; aProp: number; } +>working : { type: 'A'; aProp: number; } >aProp : number isMyDiscriminatedUnion(broken) && broken.type === 'A' && broken.aProp; @@ -556,7 +556,7 @@ isMyDiscriminatedUnion(broken) && broken.type === 'A' && broken.aProp; >type : "A" | "B" >'A' : "A" >broken.aProp : number ->broken : { type: "A"; aProp: number; } +>broken : { type: 'A'; aProp: number; } >aProp : number isMyDiscriminatedUnion(workingAgain) && workingAgain.type === 'A' && workingAgain.aProp; @@ -571,7 +571,7 @@ isMyDiscriminatedUnion(workingAgain) && workingAgain.type === 'A' && workingAgai >type : "A" | "B" >'A' : "A" >workingAgain.aProp : number ->workingAgain : { type: "A"; aProp: number; } +>workingAgain : { type: 'A'; aProp: number; } >aProp : number // Repro from #56144 @@ -591,7 +591,7 @@ type Union = >type : "b" function example1(value: Union): { type: 'a'; variant: 2 } | null { ->example1 : (value: Union) => { type: "a"; variant: 2; } | null +>example1 : (value: Union) => { type: 'a'; variant: 2; } | null >value : Union >type : "a" >variant : 2 @@ -608,18 +608,18 @@ function example1(value: Union): { type: 'a'; variant: 2 } | null { if (value.variant === 1) { >value.variant === 1 : boolean >value.variant : 1 | 2 ->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } +>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } >variant : 1 | 2 >1 : 1 return null; } return value; ->value : { type: "a"; variant: 2; } +>value : { type: 'a'; variant: 2; } } function example2(value: Union): { type: 'a'; variant: 2 } | null { ->example2 : (value: Union) => { type: "a"; variant: 2; } | null +>example2 : (value: Union) => { type: 'a'; variant: 2; } | null >value : Union >type : "a" >variant : 2 @@ -637,23 +637,23 @@ function example2(value: Union): { type: 'a'; variant: 2 } | null { >value.type === 'a' && value.variant === 1 : boolean >value.type === 'a' : boolean >value.type : "a" ->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } +>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } >type : "a" >'a' : "a" >value.variant === 1 : boolean >value.variant : 1 | 2 ->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } +>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } >variant : 1 | 2 >1 : 1 return null; } return value; ->value : { type: "a"; variant: 2; } +>value : { type: 'a'; variant: 2; } } function example3(value: Union): { type: 'a'; variant: 2 } | null { ->example3 : (value: Union) => { type: "a"; variant: 2; } | null +>example3 : (value: Union) => { type: 'a'; variant: 2; } | null >value : Union >type : "a" >variant : 2 @@ -670,17 +670,17 @@ function example3(value: Union): { type: 'a'; variant: 2 } | null { if (value.type && value.variant === 1) { >value.type && value.variant === 1 : boolean >value.type : "a" ->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } +>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } >type : "a" >value.variant === 1 : boolean >value.variant : 1 | 2 ->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } +>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } >variant : 1 | 2 >1 : 1 return null; } return value; ->value : { type: "a"; variant: 2; } +>value : { type: 'a'; variant: 2; } } diff --git a/testdata/baselines/reference/submodule/compiler/narrowingUnionToUnion.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingUnionToUnion.types.diff index beec8b5c620..0cad10af657 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingUnionToUnion.types.diff +++ b/testdata/baselines/reference/submodule/compiler/narrowingUnionToUnion.types.diff @@ -1,60 +1,6 @@ --- old.narrowingUnionToUnion.types +++ new.narrowingUnionToUnion.types -@@= skipped -244, +244 lines =@@ - } - }, - (value?: string) => { -->(value?: string) => { if (isMaybeEmptyString(value)) { value; // "" | undefined } else { value; // string } } : (value?: string) => void -+>(value?: string) => { if (isMaybeEmptyString(value)) { value; // "" | undefined } else { value; // string } } : (value?: string | undefined) => void - >value : string | undefined - - if (isMaybeEmptyString(value)) { -@@= skipped -46, +46 lines =@@ - } - }, - (value?: number) => { -->(value?: number) => { if (isMaybeZero(value)) { value; // 0 | undefined } else { value; // number } } : (value?: number) => void -+>(value?: number) => { if (isMaybeZero(value)) { value; // 0 | undefined } else { value; // number } } : (value?: number | undefined) => void - >value : number | undefined - - if (isMaybeZero(value)) { -@@= skipped -46, +46 lines =@@ - } - }, - (value?: string[]) => { -->(value?: string[]) => { if (isMaybeEmptyArray(value)) { value; // [] | undefined } else { value; // string[] } } : (value?: string[]) => void -+>(value?: string[]) => { if (isMaybeEmptyArray(value)) { value; // [] | undefined } else { value; // string[] } } : (value?: string[] | undefined) => void - >value : string[] | undefined - - if (isMaybeEmptyArray(value)) { -@@= skipped -24, +24 lines =@@ - >EmptyString : EmptyString - - function isEmpty(value: string | EmptyString): value is EmptyString { -->isEmpty : (value: string | EmptyString) => value is EmptyString -+>isEmpty : (value: string | null | undefined) => value is EmptyString - >value : string | null | undefined - - return value === '' || value === null || value === undefined; -@@= skipped -21, +21 lines =@@ - - if (isEmpty(test)) { - >isEmpty(test) : boolean -->isEmpty : (value: string | EmptyString) => value is EmptyString -+>isEmpty : (value: string | null | undefined) => value is EmptyString - >test : string | null | undefined - - test; // EmptyString -@@= skipped -14, +14 lines =@@ - >value : any - - function test1(foo: number | string | boolean) { -->test1 : (foo: number | string | boolean) => void -+>test1 : (foo: string | number | boolean) => void - >foo : string | number | boolean - - assert<1 | string>(foo); -@@= skipped -15, +15 lines =@@ +@@= skipped -410, +410 lines =@@ // Repro from #46909 function check1(x: unknown): x is (string | 0) { @@ -89,4 +35,110 @@ +>check2 : (x: unknown) => x is "hello" | 0 >x : string | 0 - x; // 0 | "hello" \ No newline at end of file + x; // 0 | "hello" +@@= skipped -62, +62 lines =@@ + >type : "A" | "B" + >'A' : "A" + >working.aProp : number +->working : { type: "A"; aProp: number; } ++>working : { type: 'A'; aProp: number; } + >aProp : number + + isMyDiscriminatedUnion(broken) && broken.type === 'A' && broken.aProp; +@@= skipped -15, +15 lines =@@ + >type : "A" | "B" + >'A' : "A" + >broken.aProp : number +->broken : { type: "A"; aProp: number; } ++>broken : { type: 'A'; aProp: number; } + >aProp : number + + isMyDiscriminatedUnion(workingAgain) && workingAgain.type === 'A' && workingAgain.aProp; +@@= skipped -15, +15 lines =@@ + >type : "A" | "B" + >'A' : "A" + >workingAgain.aProp : number +->workingAgain : { type: "A"; aProp: number; } ++>workingAgain : { type: 'A'; aProp: number; } + >aProp : number + + // Repro from #56144 +@@= skipped -20, +20 lines =@@ + >type : "b" + + function example1(value: Union): { type: 'a'; variant: 2 } | null { +->example1 : (value: Union) => { type: "a"; variant: 2; } | null ++>example1 : (value: Union) => { type: 'a'; variant: 2; } | null + >value : Union + >type : "a" + >variant : 2 +@@= skipped -17, +17 lines =@@ + if (value.variant === 1) { + >value.variant === 1 : boolean + >value.variant : 1 | 2 +->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } ++>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } + >variant : 1 | 2 + >1 : 1 + + return null; + } + return value; +->value : { type: "a"; variant: 2; } ++>value : { type: 'a'; variant: 2; } + } + + function example2(value: Union): { type: 'a'; variant: 2 } | null { +->example2 : (value: Union) => { type: "a"; variant: 2; } | null ++>example2 : (value: Union) => { type: 'a'; variant: 2; } | null + >value : Union + >type : "a" + >variant : 2 +@@= skipped -29, +29 lines =@@ + >value.type === 'a' && value.variant === 1 : boolean + >value.type === 'a' : boolean + >value.type : "a" +->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } ++>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } + >type : "a" + >'a' : "a" + >value.variant === 1 : boolean + >value.variant : 1 | 2 +->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } ++>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } + >variant : 1 | 2 + >1 : 1 + + return null; + } + return value; +->value : { type: "a"; variant: 2; } ++>value : { type: 'a'; variant: 2; } + } + + function example3(value: Union): { type: 'a'; variant: 2 } | null { +->example3 : (value: Union) => { type: "a"; variant: 2; } | null ++>example3 : (value: Union) => { type: 'a'; variant: 2; } | null + >value : Union + >type : "a" + >variant : 2 +@@= skipped -33, +33 lines =@@ + if (value.type && value.variant === 1) { + >value.type && value.variant === 1 : boolean + >value.type : "a" +->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } ++>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } + >type : "a" + >value.variant === 1 : boolean + >value.variant : 1 | 2 +->value : { type: "a"; variant: 1; } | { type: "a"; variant: 2; } ++>value : { type: 'a'; variant: 1; } | { type: 'a'; variant: 2; } + >variant : 1 | 2 + >1 : 1 + + return null; + } + return value; +->value : { type: "a"; variant: 2; } ++>value : { type: 'a'; variant: 2; } + } diff --git a/testdata/baselines/reference/submodule/compiler/narrowingUnionWithBang.types b/testdata/baselines/reference/submodule/compiler/narrowingUnionWithBang.types index 900b2b8c50f..0e44a18ee28 100644 --- a/testdata/baselines/reference/submodule/compiler/narrowingUnionWithBang.types +++ b/testdata/baselines/reference/submodule/compiler/narrowingUnionWithBang.types @@ -5,7 +5,7 @@ type WorkingType = { >WorkingType : WorkingType thing?: ->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | { name: "Correct"; id: string; } | undefined +>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | { name: 'Correct'; id: string; } | undefined { name: 'Error1', message: string } | >name : "Error1" @@ -56,10 +56,10 @@ const working: WorkingType = null as unknown as WorkingType; if (working.thing!.name !== "Correct") { >working.thing!.name !== "Correct" : boolean >working.thing!.name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" | "Error9" ->working.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | { name: "Correct"; id: string; } ->working.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | { name: "Correct"; id: string; } | undefined +>working.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | { name: 'Correct'; id: string; } +>working.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | { name: 'Correct'; id: string; } | undefined >working : WorkingType ->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | { name: "Correct"; id: string; } | undefined +>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | { name: 'Correct'; id: string; } | undefined >name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" | "Error9" >"Correct" : "Correct" @@ -69,10 +69,10 @@ if (working.thing!.name !== "Correct") { >console : Console >log : (...data: any[]) => void >working.thing!.message : string ->working.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } ->working.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | undefined +>working.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } +>working.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | undefined >working : WorkingType ->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | undefined +>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | undefined >message : string } else { @@ -82,10 +82,10 @@ if (working.thing!.name !== "Correct") { >console : Console >log : (...data: any[]) => void >working.thing!.id : string ->working.thing! : { name: "Correct"; id: string; } ->working.thing : { name: "Correct"; id: string; } +>working.thing! : { name: 'Correct'; id: string; } +>working.thing : { name: 'Correct'; id: string; } >working : WorkingType ->thing : { name: "Correct"; id: string; } +>thing : { name: 'Correct'; id: string; } >id : string } @@ -93,7 +93,7 @@ type BorkedType = { >BorkedType : BorkedType thing?: ->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined +>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined { name: 'Error1', message: string } | >name : "Error1" @@ -140,10 +140,10 @@ const borked: BorkedType = null as unknown as BorkedType; if (borked.thing!.name !== "Correct") { >borked.thing!.name !== "Correct" : boolean >borked.thing!.name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" ->borked.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } ->borked.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined +>borked.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } +>borked.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined >borked : BorkedType ->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined +>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined >name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" >"Correct" : "Correct" @@ -153,10 +153,10 @@ if (borked.thing!.name !== "Correct") { >console : Console >log : (...data: any[]) => void >borked.thing!.message : string ->borked.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } ->borked.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | undefined +>borked.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } +>borked.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | undefined >borked : BorkedType ->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | undefined +>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | undefined >message : string } else { @@ -166,10 +166,10 @@ if (borked.thing!.name !== "Correct") { >console : Console >log : (...data: any[]) => void >borked.thing!.id : string ->borked.thing! : { name: "Correct"; id: string; } ->borked.thing : { name: "Correct"; id: string; } | undefined +>borked.thing! : { name: 'Correct'; id: string; } +>borked.thing : { name: 'Correct'; id: string; } | undefined >borked : BorkedType ->thing : { name: "Correct"; id: string; } | undefined +>thing : { name: 'Correct'; id: string; } | undefined >id : string } @@ -177,7 +177,7 @@ export type FixedType = { >FixedType : FixedType thing?: ->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined +>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined { name: 'Error1', message: string } | >name : "Error1" @@ -224,9 +224,9 @@ const fixed: FixedType = null as unknown as FixedType; if (fixed.thing?.name !== "Correct") { >fixed.thing?.name !== "Correct" : boolean >fixed.thing?.name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" | undefined ->fixed.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined +>fixed.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined >fixed : FixedType ->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined +>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined >name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" | undefined >"Correct" : "Correct" @@ -236,10 +236,10 @@ if (fixed.thing?.name !== "Correct") { >console : Console >log : (...data: any[]) => void >fixed.thing!.message : string ->fixed.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } ->fixed.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | undefined +>fixed.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } +>fixed.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | undefined >fixed : FixedType ->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | undefined +>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | undefined >message : string } else { @@ -249,8 +249,8 @@ if (fixed.thing?.name !== "Correct") { >console : Console >log : (...data: any[]) => void >fixed.thing.id : string ->fixed.thing : { name: "Correct"; id: string; } +>fixed.thing : { name: 'Correct'; id: string; } >fixed : FixedType ->thing : { name: "Correct"; id: string; } +>thing : { name: 'Correct'; id: string; } >id : string } diff --git a/testdata/baselines/reference/submodule/compiler/narrowingUnionWithBang.types.diff b/testdata/baselines/reference/submodule/compiler/narrowingUnionWithBang.types.diff new file mode 100644 index 00000000000..b28f815332c --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/narrowingUnionWithBang.types.diff @@ -0,0 +1,150 @@ +--- old.narrowingUnionWithBang.types ++++ new.narrowingUnionWithBang.types +@@= skipped -4, +4 lines =@@ + >WorkingType : WorkingType + + thing?: +->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | { name: "Correct"; id: string; } | undefined ++>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | { name: 'Correct'; id: string; } | undefined + + { name: 'Error1', message: string } | + >name : "Error1" +@@= skipped -51, +51 lines =@@ + if (working.thing!.name !== "Correct") { + >working.thing!.name !== "Correct" : boolean + >working.thing!.name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" | "Error9" +->working.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | { name: "Correct"; id: string; } +->working.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | { name: "Correct"; id: string; } | undefined ++>working.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | { name: 'Correct'; id: string; } ++>working.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | { name: 'Correct'; id: string; } | undefined + >working : WorkingType +->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | { name: "Correct"; id: string; } | undefined ++>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | { name: 'Correct'; id: string; } | undefined + >name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" | "Error9" + >"Correct" : "Correct" + +@@= skipped -13, +13 lines =@@ + >console : Console + >log : (...data: any[]) => void + >working.thing!.message : string +->working.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } +->working.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | undefined ++>working.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } ++>working.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | undefined + >working : WorkingType +->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Error9"; message: string; } | undefined ++>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Error9'; message: string; } | undefined + >message : string + + } else { +@@= skipped -13, +13 lines =@@ + >console : Console + >log : (...data: any[]) => void + >working.thing!.id : string +->working.thing! : { name: "Correct"; id: string; } +->working.thing : { name: "Correct"; id: string; } ++>working.thing! : { name: 'Correct'; id: string; } ++>working.thing : { name: 'Correct'; id: string; } + >working : WorkingType +->thing : { name: "Correct"; id: string; } ++>thing : { name: 'Correct'; id: string; } + >id : string + } + +@@= skipped -11, +11 lines =@@ + >BorkedType : BorkedType + + thing?: +->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined ++>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined + + { name: 'Error1', message: string } | + >name : "Error1" +@@= skipped -47, +47 lines =@@ + if (borked.thing!.name !== "Correct") { + >borked.thing!.name !== "Correct" : boolean + >borked.thing!.name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" +->borked.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } +->borked.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined ++>borked.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } ++>borked.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined + >borked : BorkedType +->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined ++>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined + >name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" + >"Correct" : "Correct" + +@@= skipped -13, +13 lines =@@ + >console : Console + >log : (...data: any[]) => void + >borked.thing!.message : string +->borked.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } +->borked.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | undefined ++>borked.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } ++>borked.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | undefined + >borked : BorkedType +->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | undefined ++>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | undefined + >message : string + + } else { +@@= skipped -13, +13 lines =@@ + >console : Console + >log : (...data: any[]) => void + >borked.thing!.id : string +->borked.thing! : { name: "Correct"; id: string; } +->borked.thing : { name: "Correct"; id: string; } | undefined ++>borked.thing! : { name: 'Correct'; id: string; } ++>borked.thing : { name: 'Correct'; id: string; } | undefined + >borked : BorkedType +->thing : { name: "Correct"; id: string; } | undefined ++>thing : { name: 'Correct'; id: string; } | undefined + >id : string + } + +@@= skipped -11, +11 lines =@@ + >FixedType : FixedType + + thing?: +->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined ++>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined + + { name: 'Error1', message: string } | + >name : "Error1" +@@= skipped -47, +47 lines =@@ + if (fixed.thing?.name !== "Correct") { + >fixed.thing?.name !== "Correct" : boolean + >fixed.thing?.name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" | undefined +->fixed.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined ++>fixed.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined + >fixed : FixedType +->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | { name: "Correct"; id: string; } | undefined ++>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | { name: 'Correct'; id: string; } | undefined + >name : "Correct" | "Error1" | "Error2" | "Error3" | "Error4" | "Error5" | "Error6" | "Error7" | "Error8" | undefined + >"Correct" : "Correct" + +@@= skipped -12, +12 lines =@@ + >console : Console + >log : (...data: any[]) => void + >fixed.thing!.message : string +->fixed.thing! : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } +->fixed.thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | undefined ++>fixed.thing! : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } ++>fixed.thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | undefined + >fixed : FixedType +->thing : { name: "Error1"; message: string; } | { name: "Error2"; message: string; } | { name: "Error3"; message: string; } | { name: "Error4"; message: string; } | { name: "Error5"; message: string; } | { name: "Error6"; message: string; } | { name: "Error7"; message: string; } | { name: "Error8"; message: string; } | undefined ++>thing : { name: 'Error1'; message: string; } | { name: 'Error2'; message: string; } | { name: 'Error3'; message: string; } | { name: 'Error4'; message: string; } | { name: 'Error5'; message: string; } | { name: 'Error6'; message: string; } | { name: 'Error7'; message: string; } | { name: 'Error8'; message: string; } | undefined + >message : string + + } else { +@@= skipped -13, +13 lines =@@ + >console : Console + >log : (...data: any[]) => void + >fixed.thing.id : string +->fixed.thing : { name: "Correct"; id: string; } ++>fixed.thing : { name: 'Correct'; id: string; } + >fixed : FixedType +->thing : { name: "Correct"; id: string; } ++>thing : { name: 'Correct'; id: string; } + >id : string + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/nearbyIdenticalGenericLambdasAssignable.types b/testdata/baselines/reference/submodule/compiler/nearbyIdenticalGenericLambdasAssignable.types index 70a4d1106e9..00858d2ec2b 100644 --- a/testdata/baselines/reference/submodule/compiler/nearbyIdenticalGenericLambdasAssignable.types +++ b/testdata/baselines/reference/submodule/compiler/nearbyIdenticalGenericLambdasAssignable.types @@ -47,15 +47,15 @@ type TL = () => { v: T }; >v : T declare function accA(x: TA): void; ->accA : (x: () => { v: T; }) => void +>accA : (x: TA) => void >x : () => { v: T; } declare function accB(x: TB): void; ->accB : (x: () => { v: T; }) => void +>accB : (x: TB) => void >x : () => { v: T; } declare function accC(x: TC): void; ->accC : (x: () => { v: T; }) => void +>accC : (x: TC) => void >x : () => { v: T; } declare function accL(x: TL): void; @@ -65,37 +65,37 @@ declare function accL(x: TL): void; // These should all be OK, every type is identical accA(fA); accA(fB); accA(fC); >accA(fA) : void ->accA : (x: () => { v: T; }) => void +>accA : (x: TA) => void >fA : () => { v: T; } >accA(fB) : void ->accA : (x: () => { v: T; }) => void +>accA : (x: TA) => void >fB : () => { v: T; } >accA(fC) : void ->accA : (x: () => { v: T; }) => void +>accA : (x: TA) => void >fC : () => { v: T; } // ~~ previously an error accB(fA); accB(fB); accB(fC); >accB(fA) : void ->accB : (x: () => { v: T; }) => void +>accB : (x: TB) => void >fA : () => { v: T; } >accB(fB) : void ->accB : (x: () => { v: T; }) => void +>accB : (x: TB) => void >fB : () => { v: T; } >accB(fC) : void ->accB : (x: () => { v: T; }) => void +>accB : (x: TB) => void >fC : () => { v: T; } // OK accC(fA); accC(fB); accC(fC); >accC(fA) : void ->accC : (x: () => { v: T; }) => void +>accC : (x: TC) => void >fA : () => { v: T; } >accC(fB) : void ->accC : (x: () => { v: T; }) => void +>accC : (x: TC) => void >fB : () => { v: T; } >accC(fC) : void ->accC : (x: () => { v: T; }) => void +>accC : (x: TC) => void >fC : () => { v: T; } // ~~ previously an error diff --git a/testdata/baselines/reference/submodule/compiler/nearbyIdenticalGenericLambdasAssignable.types.diff b/testdata/baselines/reference/submodule/compiler/nearbyIdenticalGenericLambdasAssignable.types.diff deleted file mode 100644 index a9d35081a81..00000000000 --- a/testdata/baselines/reference/submodule/compiler/nearbyIdenticalGenericLambdasAssignable.types.diff +++ /dev/null @@ -1,68 +0,0 @@ ---- old.nearbyIdenticalGenericLambdasAssignable.types -+++ new.nearbyIdenticalGenericLambdasAssignable.types -@@= skipped -46, +46 lines =@@ - >v : T - - declare function accA(x: TA): void; -->accA : (x: TA) => void -+>accA : (x: () => { v: T; }) => void - >x : () => { v: T; } - - declare function accB(x: TB): void; -->accB : (x: TB) => void -+>accB : (x: () => { v: T; }) => void - >x : () => { v: T; } - - declare function accC(x: TC): void; -->accC : (x: TC) => void -+>accC : (x: () => { v: T; }) => void - >x : () => { v: T; } - - declare function accL(x: TL): void; -@@= skipped -18, +18 lines =@@ - // These should all be OK, every type is identical - accA(fA); accA(fB); accA(fC); - >accA(fA) : void -->accA : (x: TA) => void -+>accA : (x: () => { v: T; }) => void - >fA : () => { v: T; } - >accA(fB) : void -->accA : (x: TA) => void -+>accA : (x: () => { v: T; }) => void - >fB : () => { v: T; } - >accA(fC) : void -->accA : (x: TA) => void -+>accA : (x: () => { v: T; }) => void - >fC : () => { v: T; } - - // ~~ previously an error - accB(fA); accB(fB); accB(fC); - >accB(fA) : void -->accB : (x: TB) => void -+>accB : (x: () => { v: T; }) => void - >fA : () => { v: T; } - >accB(fB) : void -->accB : (x: TB) => void -+>accB : (x: () => { v: T; }) => void - >fB : () => { v: T; } - >accB(fC) : void -->accB : (x: TB) => void -+>accB : (x: () => { v: T; }) => void - >fC : () => { v: T; } - - // OK - accC(fA); accC(fB); accC(fC); - >accC(fA) : void -->accC : (x: TC) => void -+>accC : (x: () => { v: T; }) => void - >fA : () => { v: T; } - >accC(fB) : void -->accC : (x: TC) => void -+>accC : (x: () => { v: T; }) => void - >fB : () => { v: T; } - >accC(fC) : void -->accC : (x: TC) => void -+>accC : (x: () => { v: T; }) => void - >fC : () => { v: T; } - - // ~~ previously an error \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.errors.txt b/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.errors.txt index 7c131d020aa..5b4d6f52e72 100644 --- a/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.errors.txt @@ -1,6 +1,6 @@ nestedExcessPropertyChecking.ts(6,7): error TS2322: Type 'C1' is not assignable to type 'A1 & B1'. Types of property 'x' are incompatible. - Type '{ c: string; }' has no properties in common with type '{ a?: string | undefined; } & { b?: string | undefined; }'. + Type '{ c: string; }' has no properties in common with type '{ a?: string; } & { b?: string; }'. nestedExcessPropertyChecking.ts(13,7): error TS2559: Type 'C2' has no properties in common with type 'A2 & B2'. nestedExcessPropertyChecking.ts(17,5): error TS2559: Type 'E' has no properties in common with type '{ nope?: any; }'. nestedExcessPropertyChecking.ts(18,5): error TS2559: Type '"A"' has no properties in common with type '{ nope?: any; }'. @@ -18,7 +18,7 @@ nestedExcessPropertyChecking.ts(40,9): error TS2559: Type 'false' has no propert ~~~ !!! error TS2322: Type 'C1' is not assignable to type 'A1 & B1'. !!! error TS2322: Types of property 'x' are incompatible. -!!! error TS2322: Type '{ c: string; }' has no properties in common with type '{ a?: string | undefined; } & { b?: string | undefined; }'. +!!! error TS2322: Type '{ c: string; }' has no properties in common with type '{ a?: string; } & { b?: string; }'. type A2 = { a?: string }; type B2 = { b?: string }; @@ -51,7 +51,7 @@ nestedExcessPropertyChecking.ts(40,9): error TS2559: Type 'false' has no propert }>} = { variables: { overrides: false } }; // Error ~~~~~~~~~ !!! error TS2559: Type 'false' has no properties in common with type 'OverridesInput'. -!!! related TS6500 nestedExcessPropertyChecking.ts:27:5: The expected type comes from property 'overrides' which is declared here on type '{ overrides?: OverridesInput | undefined; } & Partial<{ overrides?: OverridesInput | undefined; }>' +!!! related TS6500 nestedExcessPropertyChecking.ts:27:5: The expected type comes from property 'overrides' which is declared here on type '{ overrides?: OverridesInput; } & Partial<{ overrides?: OverridesInput; }>' interface Unrelated { _?: any } diff --git a/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.errors.txt.diff new file mode 100644 index 00000000000..bb536090c9d --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.errors.txt.diff @@ -0,0 +1,28 @@ +--- old.nestedExcessPropertyChecking.errors.txt ++++ new.nestedExcessPropertyChecking.errors.txt +@@= skipped -0, +0 lines =@@ + nestedExcessPropertyChecking.ts(6,7): error TS2322: Type 'C1' is not assignable to type 'A1 & B1'. + Types of property 'x' are incompatible. +- Type '{ c: string; }' has no properties in common with type '{ a?: string | undefined; } & { b?: string | undefined; }'. ++ Type '{ c: string; }' has no properties in common with type '{ a?: string; } & { b?: string; }'. + nestedExcessPropertyChecking.ts(13,7): error TS2559: Type 'C2' has no properties in common with type 'A2 & B2'. + nestedExcessPropertyChecking.ts(17,5): error TS2559: Type 'E' has no properties in common with type '{ nope?: any; }'. + nestedExcessPropertyChecking.ts(18,5): error TS2559: Type '"A"' has no properties in common with type '{ nope?: any; }'. +@@= skipped -17, +17 lines =@@ + ~~~ + !!! error TS2322: Type 'C1' is not assignable to type 'A1 & B1'. + !!! error TS2322: Types of property 'x' are incompatible. +-!!! error TS2322: Type '{ c: string; }' has no properties in common with type '{ a?: string | undefined; } & { b?: string | undefined; }'. ++!!! error TS2322: Type '{ c: string; }' has no properties in common with type '{ a?: string; } & { b?: string; }'. + + type A2 = { a?: string }; + type B2 = { b?: string }; +@@= skipped -33, +33 lines =@@ + }>} = { variables: { overrides: false } }; // Error + ~~~~~~~~~ + !!! error TS2559: Type 'false' has no properties in common with type 'OverridesInput'. +-!!! related TS6500 nestedExcessPropertyChecking.ts:27:5: The expected type comes from property 'overrides' which is declared here on type '{ overrides?: OverridesInput | undefined; } & Partial<{ overrides?: OverridesInput | undefined; }>' ++!!! related TS6500 nestedExcessPropertyChecking.ts:27:5: The expected type comes from property 'overrides' which is declared here on type '{ overrides?: OverridesInput; } & Partial<{ overrides?: OverridesInput; }>' + + + interface Unrelated { _?: any } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.types b/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.types index b776fb86a01..027b1fd008d 100644 --- a/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.types +++ b/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.types @@ -3,12 +3,12 @@ === nestedExcessPropertyChecking.ts === type A1 = { x: { a?: string } }; >A1 : A1 ->x : { a?: string | undefined; } +>x : { a?: string; } >a : string | undefined type B1 = { x: { b?: string } }; >B1 : B1 ->x : { b?: string | undefined; } +>x : { b?: string; } >b : string | undefined type C1 = { x: { c: string } }; @@ -65,9 +65,9 @@ type OverridesInput = { } const foo1: Partial<{ something: any }> & { variables: { ->foo1 : Partial<{ something: any; }> & { variables: { overrides?: OverridesInput | undefined; } & Partial<{ overrides?: OverridesInput | undefined; }>; } +>foo1 : Partial<{ something: any; }> & { variables: { overrides?: OverridesInput; } & Partial<{ overrides?: OverridesInput; }>; } >something : any ->variables : { overrides?: OverridesInput | undefined; } & Partial<{ overrides?: OverridesInput | undefined; }> +>variables : { overrides?: OverridesInput; } & Partial<{ overrides?: OverridesInput; }> overrides?: OverridesInput; >overrides : OverridesInput | undefined @@ -114,7 +114,7 @@ type T1 = { >T1 : T1 primary: { __typename?: 'Feature' } & { colors: { light: number, dark: number } }, ->primary : { __typename?: "Feature" | undefined; } & { colors: { light: number; dark: number; }; } +>primary : { __typename?: 'Feature'; } & { colors: { light: number; dark: number; }; } >__typename : "Feature" | undefined >colors : { light: number; dark: number; } >light : number @@ -126,7 +126,7 @@ type T2 = { >T2 : T2 primary: { __typename?: 'Feature' } & { colors: { light: number } }, ->primary : { __typename?: "Feature" | undefined; } & { colors: { light: number; }; } +>primary : { __typename?: 'Feature'; } & { colors: { light: number; }; } >__typename : "Feature" | undefined >colors : { light: number; } >light : number diff --git a/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.types.diff b/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.types.diff index 404e27ef6ae..357a392e5b3 100644 --- a/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.types.diff +++ b/testdata/baselines/reference/submodule/compiler/nestedExcessPropertyChecking.types.diff @@ -1,38 +1,11 @@ --- old.nestedExcessPropertyChecking.types +++ new.nestedExcessPropertyChecking.types -@@= skipped -2, +2 lines =@@ - === nestedExcessPropertyChecking.ts === - type A1 = { x: { a?: string } }; - >A1 : A1 -->x : { a?: string; } -+>x : { a?: string | undefined; } - >a : string | undefined - - type B1 = { x: { b?: string } }; - >B1 : B1 -->x : { b?: string; } -+>x : { b?: string | undefined; } - >b : string | undefined - - type C1 = { x: { c: string } }; -@@= skipped -62, +62 lines =@@ - } - - const foo1: Partial<{ something: any }> & { variables: { -->foo1 : Partial<{ something: any; }> & { variables: { overrides?: OverridesInput; } & Partial<{ overrides?: OverridesInput; }>; } -+>foo1 : Partial<{ something: any; }> & { variables: { overrides?: OverridesInput | undefined; } & Partial<{ overrides?: OverridesInput | undefined; }>; } - >something : any -->variables : { overrides?: OverridesInput; } & Partial<{ overrides?: OverridesInput; }> -+>variables : { overrides?: OverridesInput | undefined; } & Partial<{ overrides?: OverridesInput | undefined; }> - - overrides?: OverridesInput; - >overrides : OverridesInput | undefined -@@= skipped -49, +49 lines =@@ +@@= skipped -113, +113 lines =@@ >T1 : T1 primary: { __typename?: 'Feature' } & { colors: { light: number, dark: number } }, ->primary : { __typename?: "Feature"; } & { colors: { light: number; dark: number; }; } -+>primary : { __typename?: "Feature" | undefined; } & { colors: { light: number; dark: number; }; } ++>primary : { __typename?: 'Feature'; } & { colors: { light: number; dark: number; }; } >__typename : "Feature" | undefined >colors : { light: number; dark: number; } >light : number @@ -41,7 +14,7 @@ primary: { __typename?: 'Feature' } & { colors: { light: number } }, ->primary : { __typename?: "Feature"; } & { colors: { light: number; }; } -+>primary : { __typename?: "Feature" | undefined; } & { colors: { light: number; }; } ++>primary : { __typename?: 'Feature'; } & { colors: { light: number; }; } >__typename : "Feature" | undefined >colors : { light: number; } >light : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=false).types b/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=false).types index 8b4103a6724..2d5f50b67f8 100644 --- a/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=false).types +++ b/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=false).types @@ -21,7 +21,7 @@ function f1(foo: Foo1) { foo.a; >foo.a : number ->foo : { kind: "a"; a: number; } +>foo : { kind: 'a'; a: number; } >a : number } } @@ -46,7 +46,7 @@ function f2(foo: Foo2) { foo.a; >foo.a : number ->foo : { kind?: "a"; a: number; } +>foo : { kind?: 'a'; a: number; } >a : number } } diff --git a/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=false).types.diff b/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=false).types.diff new file mode 100644 index 00000000000..16d59c1b7bb --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=false).types.diff @@ -0,0 +1,20 @@ +--- old.neverAsDiscriminantType(strict=false).types ++++ new.neverAsDiscriminantType(strict=false).types +@@= skipped -20, +20 lines =@@ + + foo.a; + >foo.a : number +->foo : { kind: "a"; a: number; } ++>foo : { kind: 'a'; a: number; } + >a : number + } + } +@@= skipped -25, +25 lines =@@ + + foo.a; + >foo.a : number +->foo : { kind?: "a"; a: number; } ++>foo : { kind?: 'a'; a: number; } + >a : number + } + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=true).types b/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=true).types index 12627029d35..942c857007e 100644 --- a/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=true).types +++ b/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=true).types @@ -21,7 +21,7 @@ function f1(foo: Foo1) { foo.a; >foo.a : number ->foo : { kind: "a"; a: number; } +>foo : { kind: 'a'; a: number; } >a : number } } @@ -46,7 +46,7 @@ function f2(foo: Foo2) { foo.a; >foo.a : number ->foo : { kind?: "a" | undefined; a: number; } +>foo : { kind?: 'a'; a: number; } >a : number } } diff --git a/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=true).types.diff b/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=true).types.diff index e919280888f..d0d11f0e347 100644 --- a/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=true).types.diff +++ b/testdata/baselines/reference/submodule/compiler/neverAsDiscriminantType(strict=true).types.diff @@ -1,11 +1,20 @@ --- old.neverAsDiscriminantType(strict=true).types +++ new.neverAsDiscriminantType(strict=true).types -@@= skipped -45, +45 lines =@@ +@@= skipped -20, +20 lines =@@ + + foo.a; + >foo.a : number +->foo : { kind: "a"; a: number; } ++>foo : { kind: 'a'; a: number; } + >a : number + } + } +@@= skipped -25, +25 lines =@@ foo.a; >foo.a : number ->foo : { kind?: "a"; a: number; } -+>foo : { kind?: "a" | undefined; a: number; } ++>foo : { kind?: 'a'; a: number; } >a : number } } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/noCrashOnMixin.types b/testdata/baselines/reference/submodule/compiler/noCrashOnMixin.types index 4ee44ae946c..8b072cfb4d5 100644 --- a/testdata/baselines/reference/submodule/compiler/noCrashOnMixin.types +++ b/testdata/baselines/reference/submodule/compiler/noCrashOnMixin.types @@ -18,7 +18,7 @@ type Constructor = new (...args: any[]) => T; >args : any[] function Mixin(Base: TBase) { ->Mixin : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Base : TBase return class extends Base { @@ -35,7 +35,7 @@ class Empty { class CrashTrigger extends Mixin(Empty) { >CrashTrigger : CrashTrigger >Mixin(Empty) : Mixin.(Anonymous class) & Empty ->Mixin : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Empty : typeof Empty public trigger() { diff --git a/testdata/baselines/reference/submodule/compiler/noCrashOnMixin.types.diff b/testdata/baselines/reference/submodule/compiler/noCrashOnMixin.types.diff index e6805f89ece..c5b2aef2b04 100644 --- a/testdata/baselines/reference/submodule/compiler/noCrashOnMixin.types.diff +++ b/testdata/baselines/reference/submodule/compiler/noCrashOnMixin.types.diff @@ -5,7 +5,7 @@ function Mixin(Base: TBase) { ->Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase -+>Mixin : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase ++>Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Base : TBase return class extends Base { @@ -21,7 +21,7 @@ ->Mixin(Empty) : Mixin.(Anonymous class) & Empty ->Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin(Empty) : Mixin.(Anonymous class) & Empty -+>Mixin : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase ++>Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Empty : typeof Empty public trigger() { diff --git a/testdata/baselines/reference/submodule/compiler/noCrashOnMixin2.types b/testdata/baselines/reference/submodule/compiler/noCrashOnMixin2.types index e7505ee15ee..511939d463b 100644 --- a/testdata/baselines/reference/submodule/compiler/noCrashOnMixin2.types +++ b/testdata/baselines/reference/submodule/compiler/noCrashOnMixin2.types @@ -20,11 +20,11 @@ type Constructor = new (...args?: any[]) => T; >args : any[] | undefined function Mixin(Base: TBase) { ->Mixin : >(Base: TBase) => { new (...args?: any[] | undefined): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin : (Base: TBase) => { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Base : TBase return class extends Base { ->class extends Base { } : { new (...args?: any[] | undefined): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>class extends Base { } : { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Base : {} }; @@ -37,7 +37,7 @@ class Empty { class CrashTrigger extends Mixin(Empty) { >CrashTrigger : CrashTrigger >Mixin(Empty) : Mixin.(Anonymous class) ->Mixin : >(Base: TBase) => { new (...args?: any[] | undefined): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin : (Base: TBase) => { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Empty : typeof Empty public trigger() { diff --git a/testdata/baselines/reference/submodule/compiler/noCrashOnMixin2.types.diff b/testdata/baselines/reference/submodule/compiler/noCrashOnMixin2.types.diff index a21f475a9d0..62a79d7ca00 100644 --- a/testdata/baselines/reference/submodule/compiler/noCrashOnMixin2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/noCrashOnMixin2.types.diff @@ -5,12 +5,12 @@ function Mixin(Base: TBase) { ->Mixin : (Base: TBase) => { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase -+>Mixin : >(Base: TBase) => { new (...args?: any[] | undefined): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase ++>Mixin : (Base: TBase) => { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Base : TBase return class extends Base { ->class extends Base { } : { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase -+>class extends Base { } : { new (...args?: any[] | undefined): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase ++>class extends Base { } : { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Base : {} }; @@ -21,7 +21,7 @@ ->Mixin(Empty) : Mixin.(Anonymous class) ->Mixin : (Base: TBase) => { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin(Empty) : Mixin.(Anonymous class) -+>Mixin : >(Base: TBase) => { new (...args?: any[] | undefined): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase ++>Mixin : (Base: TBase) => { new (...args?: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >Empty : typeof Empty public trigger() { diff --git a/testdata/baselines/reference/submodule/compiler/noCrashOnThisTypeUsage.types b/testdata/baselines/reference/submodule/compiler/noCrashOnThisTypeUsage.types index 33c3764be37..ee7812a6c6b 100644 --- a/testdata/baselines/reference/submodule/compiler/noCrashOnThisTypeUsage.types +++ b/testdata/baselines/reference/submodule/compiler/noCrashOnThisTypeUsage.types @@ -6,7 +6,7 @@ interface IListenable { >changeListeners : Function[] | null observe(handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean): void ->observe : (handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean | undefined) => void +>observe : (handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean) => void >handler : (change: any, oldValue?: any) => void >change : any >oldValue : any @@ -61,7 +61,7 @@ export class ObservableValue { >[] : never[] observe(handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean) {} ->observe : (handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean | undefined) => void +>observe : (handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean) => void >handler : (change: any, oldValue?: any) => void >change : any >oldValue : any diff --git a/testdata/baselines/reference/submodule/compiler/noCrashOnThisTypeUsage.types.diff b/testdata/baselines/reference/submodule/compiler/noCrashOnThisTypeUsage.types.diff deleted file mode 100644 index f48f2c176c4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/noCrashOnThisTypeUsage.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.noCrashOnThisTypeUsage.types -+++ new.noCrashOnThisTypeUsage.types -@@= skipped -5, +5 lines =@@ - >changeListeners : Function[] | null - - observe(handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean): void -->observe : (handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean) => void -+>observe : (handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean | undefined) => void - >handler : (change: any, oldValue?: any) => void - >change : any - >oldValue : any -@@= skipped -55, +55 lines =@@ - >[] : never[] - - observe(handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean) {} -->observe : (handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean) => void -+>observe : (handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean | undefined) => void - >handler : (change: any, oldValue?: any) => void - >change : any - >oldValue : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/noImplicitReturnsExclusions.types b/testdata/baselines/reference/submodule/compiler/noImplicitReturnsExclusions.types index 6af9b2b9751..ccc074f6321 100644 --- a/testdata/baselines/reference/submodule/compiler/noImplicitReturnsExclusions.types +++ b/testdata/baselines/reference/submodule/compiler/noImplicitReturnsExclusions.types @@ -41,7 +41,7 @@ function f4(b: boolean): string | undefined { // Error } function f5(b: boolean): string | void { ->f5 : (b: boolean) => void | string +>f5 : (b: boolean) => string | void >b : boolean if (b) return undefined; @@ -147,7 +147,7 @@ declare class HistoryItem { interface Thenable { then( ->then : { (onfulfilled?: ((value: T) => TResult | Thenable) | undefined, onrejected?: ((reason: any) => TResult | Thenable) | undefined): Thenable; (onfulfilled?: ((value: T) => TResult | Thenable) | undefined, onrejected?: ((reason: any) => void) | undefined): Thenable; } +>then : { (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => TResult | Thenable): Thenable; (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => void): Thenable; } onfulfilled?: (value: T) => TResult | Thenable, >onfulfilled : ((value: T) => TResult | Thenable) | undefined @@ -159,7 +159,7 @@ interface Thenable { ): Thenable; then( ->then : { (onfulfilled?: ((value: T) => TResult | Thenable) | undefined, onrejected?: ((reason: any) => TResult | Thenable) | undefined): Thenable; (onfulfilled?: ((value: T) => TResult | Thenable) | undefined, onrejected?: ((reason: any) => void) | undefined): Thenable; } +>then : { (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => TResult | Thenable): Thenable; (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => void): Thenable; } onfulfilled?: (value: T) => TResult | Thenable, >onfulfilled : ((value: T) => TResult | Thenable) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/noImplicitReturnsExclusions.types.diff b/testdata/baselines/reference/submodule/compiler/noImplicitReturnsExclusions.types.diff index 5f68a56e6b0..4d846d19a80 100644 --- a/testdata/baselines/reference/submodule/compiler/noImplicitReturnsExclusions.types.diff +++ b/testdata/baselines/reference/submodule/compiler/noImplicitReturnsExclusions.types.diff @@ -1,20 +1,11 @@ --- old.noImplicitReturnsExclusions.types +++ new.noImplicitReturnsExclusions.types -@@= skipped -40, +40 lines =@@ - } - - function f5(b: boolean): string | void { -->f5 : (b: boolean) => string | void -+>f5 : (b: boolean) => void | string - >b : boolean - - if (b) return undefined; -@@= skipped -106, +106 lines =@@ +@@= skipped -146, +146 lines =@@ 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) | undefined, onrejected?: ((reason: any) => TResult | Thenable) | undefined): Thenable; (onfulfilled?: ((value: T) => TResult | Thenable) | undefined, onrejected?: ((reason: any) => void) | undefined): Thenable; } ++>then : { (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => TResult | Thenable): Thenable; (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => void): Thenable; } onfulfilled?: (value: T) => TResult | Thenable, >onfulfilled : ((value: T) => TResult | Thenable) | undefined @@ -23,7 +14,7 @@ ): 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 | Thenable) | undefined, onrejected?: ((reason: any) => TResult | Thenable) | undefined): Thenable; (onfulfilled?: ((value: T) => TResult | Thenable) | undefined, onrejected?: ((reason: any) => void) | undefined): Thenable; } ++>then : { (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => TResult | Thenable): Thenable; (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => void): Thenable; } onfulfilled?: (value: T) => TResult | Thenable, >onfulfilled : ((value: T) => TResult | Thenable) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/noImplicitReturnsWithoutReturnExpression.types b/testdata/baselines/reference/submodule/compiler/noImplicitReturnsWithoutReturnExpression.types index 2e725199067..16f98f09571 100644 --- a/testdata/baselines/reference/submodule/compiler/noImplicitReturnsWithoutReturnExpression.types +++ b/testdata/baselines/reference/submodule/compiler/noImplicitReturnsWithoutReturnExpression.types @@ -14,7 +14,7 @@ function isMissingReturnExpression2(): any { } function isMissingReturnExpression3(): number|void { ->isMissingReturnExpression3 : () => void | number +>isMissingReturnExpression3 : () => number | void return; } diff --git a/testdata/baselines/reference/submodule/compiler/noImplicitReturnsWithoutReturnExpression.types.diff b/testdata/baselines/reference/submodule/compiler/noImplicitReturnsWithoutReturnExpression.types.diff deleted file mode 100644 index f61bd2adad6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/noImplicitReturnsWithoutReturnExpression.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.noImplicitReturnsWithoutReturnExpression.types -+++ new.noImplicitReturnsWithoutReturnExpression.types -@@= skipped -13, +13 lines =@@ - } - - function isMissingReturnExpression3(): number|void { -->isMissingReturnExpression3 : () => number | void -+>isMissingReturnExpression3 : () => void | number - - return; - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.js b/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.js index 1c0016fa9a7..5d48542f0ae 100644 --- a/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.js +++ b/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.js @@ -101,18 +101,120 @@ function createObjNoCrash() { //// [noImplicitThisBigThis.d.ts] declare function createObj(): { - func1(): /*elided*/ any; - func2(): /*elided*/ any; - func3(): /*elided*/ any; + func1(): { + func1(): /*elided*/ any; + func2(): /*elided*/ any; + func3(): /*elided*/ any; + }; + func2(): { + func1(): any; + func2(): any; + func3(): any; + }; + func3(): { + func1(): any; + func2(): any; + func3(): any; + }; }; declare function createObjNoCrash(): { - func1(): /*elided*/ any; - func2(): /*elided*/ any; - func3(): /*elided*/ any; - func4(): /*elided*/ any; - func5(): /*elided*/ any; - func6(): /*elided*/ any; - func7(): /*elided*/ any; - func8(): /*elided*/ any; - func9(): /*elided*/ any; + func1(): { + func1(): /*elided*/ any; + func2(): /*elided*/ any; + func3(): /*elided*/ any; + func4(): /*elided*/ any; + func5(): /*elided*/ any; + func6(): /*elided*/ any; + func7(): /*elided*/ any; + func8(): /*elided*/ any; + func9(): /*elided*/ any; + }; + func2(): { + func1(): any; + func2(): any; + func3(): any; + func4(): any; + func5(): any; + func6(): any; + func7(): any; + func8(): any; + func9(): any; + }; + func3(): { + func1(): any; + func2(): any; + func3(): any; + func4(): any; + func5(): any; + func6(): any; + func7(): any; + func8(): any; + func9(): any; + }; + func4(): { + func1(): any; + func2(): any; + func3(): any; + func4(): any; + func5(): any; + func6(): any; + func7(): any; + func8(): any; + func9(): any; + }; + func5(): { + func1(): any; + func2(): any; + func3(): any; + func4(): any; + func5(): any; + func6(): any; + func7(): any; + func8(): any; + func9(): any; + }; + func6(): { + func1(): any; + func2(): any; + func3(): any; + func4(): any; + func5(): any; + func6(): any; + func7(): any; + func8(): any; + func9(): any; + }; + func7(): { + func1(): any; + func2(): any; + func3(): any; + func4(): any; + func5(): any; + func6(): any; + func7(): any; + func8(): any; + func9(): any; + }; + func8(): { + func1(): any; + func2(): any; + func3(): any; + func4(): any; + func5(): any; + func6(): any; + func7(): any; + func8(): any; + func9(): any; + }; + func9(): { + func1(): any; + func2(): any; + func3(): any; + func4(): any; + func5(): any; + func6(): any; + func7(): any; + func8(): any; + func9(): any; + }; }; diff --git a/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.js.diff b/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.js.diff new file mode 100644 index 00000000000..1355b7aa4cf --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.js.diff @@ -0,0 +1,135 @@ +--- old.noImplicitThisBigThis.js ++++ new.noImplicitThisBigThis.js +@@= skipped -100, +100 lines =@@ + + //// [noImplicitThisBigThis.d.ts] + declare function createObj(): { +- func1(): /*elided*/ any; +- func2(): /*elided*/ any; +- func3(): /*elided*/ any; ++ func1(): { ++ func1(): /*elided*/ any; ++ func2(): /*elided*/ any; ++ func3(): /*elided*/ any; ++ }; ++ func2(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ }; ++ func3(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ }; + }; + declare function createObjNoCrash(): { +- func1(): /*elided*/ any; +- func2(): /*elided*/ any; +- func3(): /*elided*/ any; +- func4(): /*elided*/ any; +- func5(): /*elided*/ any; +- func6(): /*elided*/ any; +- func7(): /*elided*/ any; +- func8(): /*elided*/ any; +- func9(): /*elided*/ any; ++ func1(): { ++ func1(): /*elided*/ any; ++ func2(): /*elided*/ any; ++ func3(): /*elided*/ any; ++ func4(): /*elided*/ any; ++ func5(): /*elided*/ any; ++ func6(): /*elided*/ any; ++ func7(): /*elided*/ any; ++ func8(): /*elided*/ any; ++ func9(): /*elided*/ any; ++ }; ++ func2(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ func4(): any; ++ func5(): any; ++ func6(): any; ++ func7(): any; ++ func8(): any; ++ func9(): any; ++ }; ++ func3(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ func4(): any; ++ func5(): any; ++ func6(): any; ++ func7(): any; ++ func8(): any; ++ func9(): any; ++ }; ++ func4(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ func4(): any; ++ func5(): any; ++ func6(): any; ++ func7(): any; ++ func8(): any; ++ func9(): any; ++ }; ++ func5(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ func4(): any; ++ func5(): any; ++ func6(): any; ++ func7(): any; ++ func8(): any; ++ func9(): any; ++ }; ++ func6(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ func4(): any; ++ func5(): any; ++ func6(): any; ++ func7(): any; ++ func8(): any; ++ func9(): any; ++ }; ++ func7(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ func4(): any; ++ func5(): any; ++ func6(): any; ++ func7(): any; ++ func8(): any; ++ func9(): any; ++ }; ++ func8(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ func4(): any; ++ func5(): any; ++ func6(): any; ++ func7(): any; ++ func8(): any; ++ func9(): any; ++ }; ++ func9(): { ++ func1(): any; ++ func2(): any; ++ func3(): any; ++ func4(): any; ++ func5(): any; ++ func6(): any; ++ func7(): any; ++ func8(): any; ++ func9(): any; ++ }; + }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.types b/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.types index 492db73b763..45208b519ab 100644 --- a/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.types +++ b/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.types @@ -4,7 +4,7 @@ // https://github.com/microsoft/TypeScript/issues/29902 function createObj() { ->createObj : () => { func1(): any; func2(): any; func3(): any; } +>createObj : () => { func1(): { func1(): any; func2(): any; func3(): any; }; func2(): { func1(): any; func2(): any; func3(): any; }; func3(): { func1(): any; func2(): any; func3(): any; }; } return { >{ func1() { return this; }, func2() { return this; }, func3() { return this; } } : { func1(): { func1(): any; func2(): any; func3(): any; }; func2(): { func1(): any; func2(): any; func3(): any; }; func3(): { func1(): any; func2(): any; func3(): any; }; } @@ -33,7 +33,7 @@ function createObj() { } function createObjNoCrash() { ->createObjNoCrash : () => { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; } +>createObjNoCrash : () => { func1(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func2(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func3(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func4(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func5(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func6(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func7(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func8(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func9(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; } return { >{ func1() { return this; }, func2() { return this; }, func3() { return this; }, func4() { return this; }, func5() { return this; }, func6() { return this; }, func7() { return this; }, func8() { return this; }, func9() { return this; } } : { func1(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func2(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func3(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func4(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func5(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func6(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func7(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func8(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func9(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; } diff --git a/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.types.diff b/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.types.diff new file mode 100644 index 00000000000..f9af03dfaa6 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/noImplicitThisBigThis.types.diff @@ -0,0 +1,20 @@ +--- old.noImplicitThisBigThis.types ++++ new.noImplicitThisBigThis.types +@@= skipped -3, +3 lines =@@ + // https://github.com/microsoft/TypeScript/issues/29902 + + function createObj() { +->createObj : () => { func1(): any; func2(): any; func3(): any; } ++>createObj : () => { func1(): { func1(): any; func2(): any; func3(): any; }; func2(): { func1(): any; func2(): any; func3(): any; }; func3(): { func1(): any; func2(): any; func3(): any; }; } + + return { + >{ func1() { return this; }, func2() { return this; }, func3() { return this; } } : { func1(): { func1(): any; func2(): any; func3(): any; }; func2(): { func1(): any; func2(): any; func3(): any; }; func3(): { func1(): any; func2(): any; func3(): any; }; } +@@= skipped -29, +29 lines =@@ + } + + function createObjNoCrash() { +->createObjNoCrash : () => { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; } ++>createObjNoCrash : () => { func1(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func2(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func3(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func4(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func5(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func6(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func7(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func8(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func9(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; } + + return { + >{ func1() { return this; }, func2() { return this; }, func3() { return this; }, func4() { return this; }, func5() { return this; }, func6() { return this; }, func7() { return this; }, func8() { return this; }, func9() { return this; } } : { func1(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func2(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func3(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func4(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func5(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func6(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func7(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func8(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; func9(): { func1(): any; func2(): any; func3(): any; func4(): any; func5(): any; func6(): any; func7(): any; func8(): any; func9(): any; }; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/noInferUnionExcessPropertyCheck1.types b/testdata/baselines/reference/submodule/compiler/noInferUnionExcessPropertyCheck1.types index b5a9cde22d7..fd1e8bb837e 100644 --- a/testdata/baselines/reference/submodule/compiler/noInferUnionExcessPropertyCheck1.types +++ b/testdata/baselines/reference/submodule/compiler/noInferUnionExcessPropertyCheck1.types @@ -2,7 +2,7 @@ === noInferUnionExcessPropertyCheck1.ts === declare function test1( ->test1 : (a: T, b: (() => NoInfer) | NoInfer) => void +>test1 : (a: T, b: NoInfer | (() => NoInfer)) => void >x : string a: T, @@ -15,7 +15,7 @@ declare function test1( test1({ x: "foo" }, { x: "bar" }); // no error >test1({ x: "foo" }, { x: "bar" }) : void ->test1 : (a: T, b: (() => NoInfer) | NoInfer) => void +>test1 : (a: T, b: NoInfer | (() => NoInfer)) => void >{ x: "foo" } : { x: string; } >x : string >"foo" : "foo" @@ -25,7 +25,7 @@ test1({ x: "foo" }, { x: "bar" }); // no error test1({ x: "foo" }, { x: "bar", y: 42 }); // epc error >test1({ x: "foo" }, { x: "bar", y: 42 }) : void ->test1 : (a: T, b: (() => NoInfer) | NoInfer) => void +>test1 : (a: T, b: NoInfer | (() => NoInfer)) => void >{ x: "foo" } : { x: string; } >x : string >"foo" : "foo" diff --git a/testdata/baselines/reference/submodule/compiler/noInferUnionExcessPropertyCheck1.types.diff b/testdata/baselines/reference/submodule/compiler/noInferUnionExcessPropertyCheck1.types.diff deleted file mode 100644 index 1e4e752f935..00000000000 --- a/testdata/baselines/reference/submodule/compiler/noInferUnionExcessPropertyCheck1.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.noInferUnionExcessPropertyCheck1.types -+++ new.noInferUnionExcessPropertyCheck1.types -@@= skipped -1, +1 lines =@@ - - === noInferUnionExcessPropertyCheck1.ts === - declare function test1( -->test1 : (a: T, b: NoInfer | (() => NoInfer)) => void -+>test1 : (a: T, b: (() => NoInfer) | NoInfer) => void - >x : string - - a: T, -@@= skipped -13, +13 lines =@@ - - test1({ x: "foo" }, { x: "bar" }); // no error - >test1({ x: "foo" }, { x: "bar" }) : void -->test1 : (a: T, b: NoInfer | (() => NoInfer)) => void -+>test1 : (a: T, b: (() => NoInfer) | NoInfer) => void - >{ x: "foo" } : { x: string; } - >x : string - >"foo" : "foo" -@@= skipped -10, +10 lines =@@ - - test1({ x: "foo" }, { x: "bar", y: 42 }); // epc error - >test1({ x: "foo" }, { x: "bar", y: 42 }) : void -->test1 : (a: T, b: NoInfer | (() => NoInfer)) => void -+>test1 : (a: T, b: (() => NoInfer) | NoInfer) => void - >{ x: "foo" } : { x: string; } - >x : string - >"foo" : "foo" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/noIterationTypeErrorsInCFA.types b/testdata/baselines/reference/submodule/compiler/noIterationTypeErrorsInCFA.types index da0506c628f..cd55499d9c6 100644 --- a/testdata/baselines/reference/submodule/compiler/noIterationTypeErrorsInCFA.types +++ b/testdata/baselines/reference/submodule/compiler/noIterationTypeErrorsInCFA.types @@ -6,7 +6,7 @@ interface F { >d : () => void } export function doRemove(dds: F | F[]) { ->doRemove : (dds: F[] | F) => F[] +>doRemove : (dds: F | F[]) => F[] >dds : F[] | F if (!Array.isArray(dds)) { diff --git a/testdata/baselines/reference/submodule/compiler/noIterationTypeErrorsInCFA.types.diff b/testdata/baselines/reference/submodule/compiler/noIterationTypeErrorsInCFA.types.diff deleted file mode 100644 index fb82d0cba52..00000000000 --- a/testdata/baselines/reference/submodule/compiler/noIterationTypeErrorsInCFA.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.noIterationTypeErrorsInCFA.types -+++ new.noIterationTypeErrorsInCFA.types -@@= skipped -5, +5 lines =@@ - >d : () => void - } - export function doRemove(dds: F | F[]) { -->doRemove : (dds: F | F[]) => F[] -+>doRemove : (dds: F[] | F) => F[] - >dds : F[] | F - - if (!Array.isArray(dds)) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/noTypeArgumentOnReturnType1.types b/testdata/baselines/reference/submodule/compiler/noTypeArgumentOnReturnType1.types index 6420188d798..9d2617645b7 100644 --- a/testdata/baselines/reference/submodule/compiler/noTypeArgumentOnReturnType1.types +++ b/testdata/baselines/reference/submodule/compiler/noTypeArgumentOnReturnType1.types @@ -5,7 +5,7 @@ class A{ >A : A foo(): A{ ->foo : () => any +>foo : () => A return null; } diff --git a/testdata/baselines/reference/submodule/compiler/noTypeArgumentOnReturnType1.types.diff b/testdata/baselines/reference/submodule/compiler/noTypeArgumentOnReturnType1.types.diff deleted file mode 100644 index 1f49256ffeb..00000000000 --- a/testdata/baselines/reference/submodule/compiler/noTypeArgumentOnReturnType1.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.noTypeArgumentOnReturnType1.types -+++ new.noTypeArgumentOnReturnType1.types -@@= skipped -4, +4 lines =@@ - >A : A - - foo(): A{ -->foo : () => A -+>foo : () => any - - return null; - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/noUnusedLocals_writeOnly.types b/testdata/baselines/reference/submodule/compiler/noUnusedLocals_writeOnly.types index 7f8da93cce3..6caeebda8cd 100644 --- a/testdata/baselines/reference/submodule/compiler/noUnusedLocals_writeOnly.types +++ b/testdata/baselines/reference/submodule/compiler/noUnusedLocals_writeOnly.types @@ -110,6 +110,6 @@ function f(x = 0, b = false) { >1 : 1 } function f2(_: ReadonlyArray): void {} ->f2 : (_: readonly number[]) => void +>f2 : (_: ReadonlyArray) => void >_ : readonly number[] diff --git a/testdata/baselines/reference/submodule/compiler/noUnusedLocals_writeOnly.types.diff b/testdata/baselines/reference/submodule/compiler/noUnusedLocals_writeOnly.types.diff deleted file mode 100644 index ef6db590a97..00000000000 --- a/testdata/baselines/reference/submodule/compiler/noUnusedLocals_writeOnly.types.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.noUnusedLocals_writeOnly.types -+++ new.noUnusedLocals_writeOnly.types -@@= skipped -109, +109 lines =@@ - >1 : 1 - } - function f2(_: ReadonlyArray): void {} -->f2 : (_: ReadonlyArray) => void -+>f2 : (_: readonly number[]) => void - >_ : readonly number[] diff --git a/testdata/baselines/reference/submodule/compiler/noUsedBeforeDefinedErrorInTypeContext.types b/testdata/baselines/reference/submodule/compiler/noUsedBeforeDefinedErrorInTypeContext.types index 247f743b916..9e1af3aba2e 100644 --- a/testdata/baselines/reference/submodule/compiler/noUsedBeforeDefinedErrorInTypeContext.types +++ b/testdata/baselines/reference/submodule/compiler/noUsedBeforeDefinedErrorInTypeContext.types @@ -10,7 +10,7 @@ interface IThing { var foo = { >foo : any ->{ one: {} as IThing,} : { one: IThing; } +>{ one: {} as IThing,} : { one: IThing; } one: {} as IThing, >one : IThing @@ -20,8 +20,8 @@ var foo = { } let baz = { ->baz : { two: IThing; } ->{ two: {} as IThing,} : { two: IThing; } +>baz : { two: IThing; } +>{ two: {} as IThing,} : { two: IThing; } two: {} as IThing, >two : IThing @@ -32,7 +32,7 @@ let baz = { let bar = { >bar : any ->{ three: {} as IThing,} : { three: IThing; } +>{ three: {} as IThing,} : { three: IThing; } three: {} as IThing, >three : IThing @@ -43,7 +43,7 @@ let bar = { const qwe = { >qwe : any ->{ four: {} as IThing,} : { four: IThing; } +>{ four: {} as IThing,} : { four: IThing; } four: {} as IThing, >four : IThing diff --git a/testdata/baselines/reference/submodule/compiler/noUsedBeforeDefinedErrorInTypeContext.types.diff b/testdata/baselines/reference/submodule/compiler/noUsedBeforeDefinedErrorInTypeContext.types.diff deleted file mode 100644 index 736f94b42c7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/noUsedBeforeDefinedErrorInTypeContext.types.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.noUsedBeforeDefinedErrorInTypeContext.types -+++ new.noUsedBeforeDefinedErrorInTypeContext.types -@@= skipped -9, +9 lines =@@ - - var foo = { - >foo : any -->{ one: {} as IThing,} : { one: IThing; } -+>{ one: {} as IThing,} : { one: IThing; } - - one: {} as IThing, - >one : IThing -@@= skipped -10, +10 lines =@@ - } - - let baz = { -->baz : { two: IThing; } -->{ two: {} as IThing,} : { two: IThing; } -+>baz : { two: IThing; } -+>{ two: {} as IThing,} : { two: IThing; } - - two: {} as IThing, - >two : IThing -@@= skipped -12, +12 lines =@@ - - let bar = { - >bar : any -->{ three: {} as IThing,} : { three: IThing; } -+>{ three: {} as IThing,} : { three: IThing; } - - three: {} as IThing, - >three : IThing -@@= skipped -11, +11 lines =@@ - - const qwe = { - >qwe : any -->{ four: {} as IThing,} : { four: IThing; } -+>{ four: {} as IThing,} : { four: IThing; } - - four: {} as IThing, - >four : IThing \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/nonInferrableTypePropagation2.types b/testdata/baselines/reference/submodule/compiler/nonInferrableTypePropagation2.types index 6e7f14976a4..008cb3dcf30 100644 --- a/testdata/baselines/reference/submodule/compiler/nonInferrableTypePropagation2.types +++ b/testdata/baselines/reference/submodule/compiler/nonInferrableTypePropagation2.types @@ -31,7 +31,7 @@ interface Refinement { } declare const filter: { ->filter : { (refinement: Refinement): (as: readonly A[]) => readonly B[]; (predicate: Predicate): (bs: readonly B[]) => readonly B[]; (predicate: Predicate): (as: readonly A[]) => readonly A[]; } +>filter : { (refinement: Refinement): (as: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (bs: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (as: ReadonlyArray) => ReadonlyArray; } (refinement: Refinement): (as: ReadonlyArray) => ReadonlyArray >refinement : Refinement @@ -67,7 +67,7 @@ const x = pipe(es, filter(exists((n) => n > 0))) >pipe : (a: A, ab: (a: A) => B) => B >es : Either[] >filter(exists((n) => n > 0)) : (as: readonly Either[]) => readonly Either[] ->filter : { (refinement: Refinement): (as: readonly A[]) => readonly B[]; (predicate: Predicate): (bs: readonly B[]) => readonly B[]; (predicate: Predicate): (as: readonly A[]) => readonly A[]; } +>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 diff --git a/testdata/baselines/reference/submodule/compiler/nonInferrableTypePropagation2.types.diff b/testdata/baselines/reference/submodule/compiler/nonInferrableTypePropagation2.types.diff deleted file mode 100644 index 6cc5ad46671..00000000000 --- a/testdata/baselines/reference/submodule/compiler/nonInferrableTypePropagation2.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.nonInferrableTypePropagation2.types -+++ new.nonInferrableTypePropagation2.types -@@= skipped -30, +30 lines =@@ - } - - declare const filter: { -->filter : { (refinement: Refinement): (as: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (bs: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (as: ReadonlyArray) => ReadonlyArray; } -+>filter : { (refinement: Refinement): (as: readonly A[]) => readonly B[]; (predicate: Predicate): (bs: readonly B[]) => readonly B[]; (predicate: Predicate): (as: readonly A[]) => readonly A[]; } - - (refinement: Refinement): (as: ReadonlyArray) => ReadonlyArray - >refinement : Refinement -@@= skipped -36, +36 lines =@@ - >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; } -+>filter : { (refinement: Refinement): (as: readonly A[]) => readonly B[]; (predicate: Predicate): (bs: readonly B[]) => readonly B[]; (predicate: Predicate): (as: readonly A[]) => readonly A[]; } - >exists((n) => n > 0) : (ma: Either) => boolean - >exists : (predicate: Predicate) => (ma: Either) => boolean - >(n) => n > 0 : (n: number) => boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.errors.txt b/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.errors.txt index da23cae2429..f4228c011cd 100644 --- a/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.errors.txt @@ -1,5 +1,5 @@ nonObjectUnionNestedExcessPropertyCheck.ts(13,35): error TS2353: Object literal may only specify known properties, and 'INVALID_PROP_NAME' does not exist in type 'IProps'. -nonObjectUnionNestedExcessPropertyCheck.ts(16,49): error TS2353: Object literal may only specify known properties, and 'asdfasdf' does not exist in type '{ testBool?: boolean | undefined; }'. +nonObjectUnionNestedExcessPropertyCheck.ts(16,49): error TS2353: Object literal may only specify known properties, and 'asdfasdf' does not exist in type '{ testBool?: boolean; }'. nonObjectUnionNestedExcessPropertyCheck.ts(19,56): error TS2353: Object literal may only specify known properties, and 'INVALID_PROP_NAME' does not exist in type 'IProps'. @@ -23,7 +23,7 @@ nonObjectUnionNestedExcessPropertyCheck.ts(19,56): error TS2353: Object literal // Nested typing works here and we also get an expected error: const propB2: IProps | number = { nestedProp: { asdfasdf: 'test' }, iconProp: 'test' }; ~~~~~~~~ -!!! error TS2353: Object literal may only specify known properties, and 'asdfasdf' does not exist in type '{ testBool?: boolean | undefined; }'. +!!! error TS2353: Object literal may only specify known properties, and 'asdfasdf' does not exist in type '{ testBool?: boolean; }'. // Want an error generated here but there isn't one. const propA1: INestedProps | number = { nestedProps: { INVALID_PROP_NAME: 'share', iconProp: 'test' } }; diff --git a/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.errors.txt.diff new file mode 100644 index 00000000000..0c79205289a --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.errors.txt.diff @@ -0,0 +1,18 @@ +--- old.nonObjectUnionNestedExcessPropertyCheck.errors.txt ++++ new.nonObjectUnionNestedExcessPropertyCheck.errors.txt +@@= skipped -0, +0 lines =@@ + nonObjectUnionNestedExcessPropertyCheck.ts(13,35): error TS2353: Object literal may only specify known properties, and 'INVALID_PROP_NAME' does not exist in type 'IProps'. +-nonObjectUnionNestedExcessPropertyCheck.ts(16,49): error TS2353: Object literal may only specify known properties, and 'asdfasdf' does not exist in type '{ testBool?: boolean | undefined; }'. ++nonObjectUnionNestedExcessPropertyCheck.ts(16,49): error TS2353: Object literal may only specify known properties, and 'asdfasdf' does not exist in type '{ testBool?: boolean; }'. + nonObjectUnionNestedExcessPropertyCheck.ts(19,56): error TS2353: Object literal may only specify known properties, and 'INVALID_PROP_NAME' does not exist in type 'IProps'. + + +@@= skipped -22, +22 lines =@@ + // Nested typing works here and we also get an expected error: + const propB2: IProps | number = { nestedProp: { asdfasdf: 'test' }, iconProp: 'test' }; + ~~~~~~~~ +-!!! error TS2353: Object literal may only specify known properties, and 'asdfasdf' does not exist in type '{ testBool?: boolean | undefined; }'. ++!!! error TS2353: Object literal may only specify known properties, and 'asdfasdf' does not exist in type '{ testBool?: boolean; }'. + + // Want an error generated here but there isn't one. + const propA1: INestedProps | number = { nestedProps: { INVALID_PROP_NAME: 'share', iconProp: 'test' } }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.types b/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.types index 49b954b6a68..1d51415804f 100644 --- a/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.types +++ b/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.types @@ -6,7 +6,7 @@ interface IProps { >iconProp : string | undefined nestedProp?: { ->nestedProp : { testBool?: boolean | undefined; } | undefined +>nestedProp : { testBool?: boolean; } | undefined testBool?: boolean; >testBool : boolean | undefined diff --git a/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.types.diff b/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.types.diff deleted file mode 100644 index 5972fb7a823..00000000000 --- a/testdata/baselines/reference/submodule/compiler/nonObjectUnionNestedExcessPropertyCheck.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.nonObjectUnionNestedExcessPropertyCheck.types -+++ new.nonObjectUnionNestedExcessPropertyCheck.types -@@= skipped -5, +5 lines =@@ - >iconProp : string | undefined - - nestedProp?: { -->nestedProp : { testBool?: boolean; } | undefined -+>nestedProp : { testBool?: boolean | undefined; } | undefined - - testBool?: boolean; - >testBool : boolean | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/nondistributiveConditionalTypeInfer.types b/testdata/baselines/reference/submodule/compiler/nondistributiveConditionalTypeInfer.types index 8c1037b3d77..bc0d9331288 100644 --- a/testdata/baselines/reference/submodule/compiler/nondistributiveConditionalTypeInfer.types +++ b/testdata/baselines/reference/submodule/compiler/nondistributiveConditionalTypeInfer.types @@ -3,16 +3,16 @@ === nondistributiveConditionalTypeInfer.ts === type _R = [T] extends [{ _R: (_: infer R) => void }] ? R : never; >_R : _R ->_R : (_: R) => void +>_R : (_: infer R) => void >_ : R type _E = [T] extends [{ _E: () => infer E }] ? E : never; >_E : _E ->_E : () => E +>_E : () => infer E type _A = [T] extends [{ _A: () => infer A }] ? A : never; >_A : _A ->_A : () => A +>_A : () => infer A interface Sync { _R: (_: R) => void; diff --git a/testdata/baselines/reference/submodule/compiler/nondistributiveConditionalTypeInfer.types.diff b/testdata/baselines/reference/submodule/compiler/nondistributiveConditionalTypeInfer.types.diff deleted file mode 100644 index 983af5d9543..00000000000 --- a/testdata/baselines/reference/submodule/compiler/nondistributiveConditionalTypeInfer.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.nondistributiveConditionalTypeInfer.types -+++ new.nondistributiveConditionalTypeInfer.types -@@= skipped -2, +2 lines =@@ - === nondistributiveConditionalTypeInfer.ts === - type _R = [T] extends [{ _R: (_: infer R) => void }] ? R : never; - >_R : _R -->_R : (_: infer R) => void -+>_R : (_: R) => void - >_ : R - - type _E = [T] extends [{ _E: () => infer E }] ? E : never; - >_E : _E -->_E : () => infer E -+>_E : () => E - - type _A = [T] extends [{ _A: () => infer A }] ? A : never; - >_A : _A -->_A : () => infer A -+>_A : () => A - - interface Sync { - _R: (_: R) => void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types b/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types index bf9b27c6499..7b82f49140f 100644 --- a/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types +++ b/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types @@ -22,112 +22,112 @@ type CtorOf = (arg: UnionToIntersection) => T; interface Big { "0": { common?: string; "0"?: number, ref?: Obj | Func; } ->"0" : { common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } +>"0" : { common?: string; "0"?: number; ref?: Obj | Func; } >common : string | undefined >"0" : number | undefined ->ref : Func<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "0"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "0"?: number; ref?: Obj | Func; }> | undefined "1": { common?: string; "1"?: number, ref?: Obj | Func; } ->"1" : { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } +>"1" : { common?: string; "1"?: number; ref?: Obj | Func; } >common : string | undefined >"1" : number | undefined ->ref : Func<{ common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "1"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "1"?: number; ref?: Obj | Func; }> | undefined "2": { common?: string; "2"?: number, ref?: Obj | Func; } ->"2" : { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } +>"2" : { common?: string; "2"?: number; ref?: Obj | Func; } >common : string | undefined >"2" : number | undefined ->ref : Func<{ common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "2"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "2"?: number; ref?: Obj | Func; }> | undefined "3": { common?: string; "3"?: number, ref?: Obj | Func; } ->"3" : { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } +>"3" : { common?: string; "3"?: number; ref?: Obj | Func; } >common : string | undefined >"3" : number | undefined ->ref : Func<{ common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "3"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "3"?: number; ref?: Obj | Func; }> | undefined "4": { common?: string; "4"?: number, ref?: Obj | Func; } ->"4" : { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } +>"4" : { common?: string; "4"?: number; ref?: Obj | Func; } >common : string | undefined >"4" : number | undefined ->ref : Func<{ common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "4"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "4"?: number; ref?: Obj | Func; }> | undefined "5": { common?: string; "5"?: number, ref?: Obj | Func; } ->"5" : { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } +>"5" : { common?: string; "5"?: number; ref?: Obj | Func; } >common : string | undefined >"5" : number | undefined ->ref : Func<{ common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "5"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "5"?: number; ref?: Obj | Func; }> | undefined "6": { common?: string; "6"?: number, ref?: Obj | Func; } ->"6" : { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } +>"6" : { common?: string; "6"?: number; ref?: Obj | Func; } >common : string | undefined >"6" : number | undefined ->ref : Func<{ common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "6"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "6"?: number; ref?: Obj | Func; }> | undefined "7": { common?: string; "7"?: number, ref?: Obj | Func; } ->"7" : { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } +>"7" : { common?: string; "7"?: number; ref?: Obj | Func; } >common : string | undefined >"7" : number | undefined ->ref : Func<{ common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "7"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "7"?: number; ref?: Obj | Func; }> | undefined "8": { common?: string; "8"?: number, ref?: Obj | Func; } ->"8" : { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } +>"8" : { common?: string; "8"?: number; ref?: Obj | Func; } >common : string | undefined >"8" : number | undefined ->ref : Func<{ common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "8"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "8"?: number; ref?: Obj | Func; }> | undefined "9": { common?: string; "9"?: number, ref?: Obj | Func; } ->"9" : { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } +>"9" : { common?: string; "9"?: number; ref?: Obj | Func; } >common : string | undefined >"9" : number | undefined ->ref : Func<{ common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "9"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "9"?: number; ref?: Obj | Func; }> | undefined "10": { common?: string; "10"?: number, ref?: Obj | Func; } ->"10" : { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } +>"10" : { common?: string; "10"?: number; ref?: Obj | Func; } >common : string | undefined >"10" : number | undefined ->ref : Func<{ common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "10"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "10"?: number; ref?: Obj | Func; }> | undefined "11": { common?: string; "11"?: number, ref?: Obj | Func; } ->"11" : { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } +>"11" : { common?: string; "11"?: number; ref?: Obj | Func; } >common : string | undefined >"11" : number | undefined ->ref : Func<{ common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "11"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "11"?: number; ref?: Obj | Func; }> | undefined "12": { common?: string; "12"?: number, ref?: Obj | Func; } ->"12" : { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } +>"12" : { common?: string; "12"?: number; ref?: Obj | Func; } >common : string | undefined >"12" : number | undefined ->ref : Func<{ common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "12"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "12"?: number; ref?: Obj | Func; }> | undefined "13": { common?: string; "13"?: number, ref?: Obj | Func; } ->"13" : { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } +>"13" : { common?: string; "13"?: number; ref?: Obj | Func; } >common : string | undefined >"13" : number | undefined ->ref : Func<{ common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "13"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "13"?: number; ref?: Obj | Func; }> | undefined "14": { common?: string; "14"?: number, ref?: Obj | Func; } ->"14" : { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } +>"14" : { common?: string; "14"?: number; ref?: Obj | Func; } >common : string | undefined >"14" : number | undefined ->ref : Func<{ common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "14"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "14"?: number; ref?: Obj | Func; }> | undefined "15": { common?: string; "15"?: number, ref?: Obj | Func; } ->"15" : { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } +>"15" : { common?: string; "15"?: number; ref?: Obj | Func; } >common : string | undefined >"15" : number | undefined ->ref : Func<{ common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "15"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "15"?: number; ref?: Obj | Func; }> | undefined "16": { common?: string; "16"?: number, ref?: Obj | Func; } ->"16" : { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } +>"16" : { common?: string; "16"?: number; ref?: Obj | Func; } >common : string | undefined >"16" : number | undefined ->ref : Func<{ common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "16"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "16"?: number; ref?: Obj | Func; }> | undefined "17": { common?: string; "17"?: number, ref?: Obj | Func; } ->"17" : { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; } +>"17" : { common?: string; "17"?: number; ref?: Obj | Func; } >common : string | undefined >"17" : number | undefined ->ref : Func<{ common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined +>ref : Func<{ common?: string; "17"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "17"?: number; ref?: Obj | Func; }> | undefined } declare function getCtor(comp: T): CtorOf >getCtor : (comp: T) => CtorOf @@ -137,15 +137,15 @@ declare var all: keyof Big; >all : keyof Big const ctor = getCtor(all); ->ctor : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> ->getCtor(all) : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> +>ctor : CtorOf<{ common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; }> +>getCtor(all) : CtorOf<{ common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; }> >getCtor : (comp: T) => CtorOf >all : keyof Big const comp = ctor({ common: "ok", ref: x => console.log(x) }); ->comp : { common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; } ->ctor({ common: "ok", ref: x => console.log(x) }) : { common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; } ->ctor : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> +>comp : { common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; } +>ctor({ common: "ok", ref: x => console.log(x) }) : { common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; } +>ctor : CtorOf<{ common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; }> >{ common: "ok", ref: x => console.log(x) } : { common: string; ref: (x: any) => void; } >common : string >"ok" : "ok" diff --git a/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types.diff b/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types.diff deleted file mode 100644 index 40290637ba9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types.diff +++ /dev/null @@ -1,172 +0,0 @@ ---- old.normalizedIntersectionTooComplex.types -+++ new.normalizedIntersectionTooComplex.types -@@= skipped -21, +21 lines =@@ - - interface Big { - "0": { common?: string; "0"?: number, ref?: Obj | Func; } -->"0" : { common?: string; "0"?: number; ref?: Obj | Func; } -+>"0" : { common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"0" : number | undefined -->ref : Func<{ common?: string; "0"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "0"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "1": { common?: string; "1"?: number, ref?: Obj | Func; } -->"1" : { common?: string; "1"?: number; ref?: Obj | Func; } -+>"1" : { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"1" : number | undefined -->ref : Func<{ common?: string; "1"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "1"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "2": { common?: string; "2"?: number, ref?: Obj | Func; } -->"2" : { common?: string; "2"?: number; ref?: Obj | Func; } -+>"2" : { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"2" : number | undefined -->ref : Func<{ common?: string; "2"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "2"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "3": { common?: string; "3"?: number, ref?: Obj | Func; } -->"3" : { common?: string; "3"?: number; ref?: Obj | Func; } -+>"3" : { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"3" : number | undefined -->ref : Func<{ common?: string; "3"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "3"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "4": { common?: string; "4"?: number, ref?: Obj | Func; } -->"4" : { common?: string; "4"?: number; ref?: Obj | Func; } -+>"4" : { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"4" : number | undefined -->ref : Func<{ common?: string; "4"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "4"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "5": { common?: string; "5"?: number, ref?: Obj | Func; } -->"5" : { common?: string; "5"?: number; ref?: Obj | Func; } -+>"5" : { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"5" : number | undefined -->ref : Func<{ common?: string; "5"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "5"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "6": { common?: string; "6"?: number, ref?: Obj | Func; } -->"6" : { common?: string; "6"?: number; ref?: Obj | Func; } -+>"6" : { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"6" : number | undefined -->ref : Func<{ common?: string; "6"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "6"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "7": { common?: string; "7"?: number, ref?: Obj | Func; } -->"7" : { common?: string; "7"?: number; ref?: Obj | Func; } -+>"7" : { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"7" : number | undefined -->ref : Func<{ common?: string; "7"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "7"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "8": { common?: string; "8"?: number, ref?: Obj | Func; } -->"8" : { common?: string; "8"?: number; ref?: Obj | Func; } -+>"8" : { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"8" : number | undefined -->ref : Func<{ common?: string; "8"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "8"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "9": { common?: string; "9"?: number, ref?: Obj | Func; } -->"9" : { common?: string; "9"?: number; ref?: Obj | Func; } -+>"9" : { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"9" : number | undefined -->ref : Func<{ common?: string; "9"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "9"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "10": { common?: string; "10"?: number, ref?: Obj | Func; } -->"10" : { common?: string; "10"?: number; ref?: Obj | Func; } -+>"10" : { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"10" : number | undefined -->ref : Func<{ common?: string; "10"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "10"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "11": { common?: string; "11"?: number, ref?: Obj | Func; } -->"11" : { common?: string; "11"?: number; ref?: Obj | Func; } -+>"11" : { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"11" : number | undefined -->ref : Func<{ common?: string; "11"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "11"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "12": { common?: string; "12"?: number, ref?: Obj | Func; } -->"12" : { common?: string; "12"?: number; ref?: Obj | Func; } -+>"12" : { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"12" : number | undefined -->ref : Func<{ common?: string; "12"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "12"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "13": { common?: string; "13"?: number, ref?: Obj | Func; } -->"13" : { common?: string; "13"?: number; ref?: Obj | Func; } -+>"13" : { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"13" : number | undefined -->ref : Func<{ common?: string; "13"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "13"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "14": { common?: string; "14"?: number, ref?: Obj | Func; } -->"14" : { common?: string; "14"?: number; ref?: Obj | Func; } -+>"14" : { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"14" : number | undefined -->ref : Func<{ common?: string; "14"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "14"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "15": { common?: string; "15"?: number, ref?: Obj | Func; } -->"15" : { common?: string; "15"?: number; ref?: Obj | Func; } -+>"15" : { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"15" : number | undefined -->ref : Func<{ common?: string; "15"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "15"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "16": { common?: string; "16"?: number, ref?: Obj | Func; } -->"16" : { common?: string; "16"?: number; ref?: Obj | Func; } -+>"16" : { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"16" : number | undefined -->ref : Func<{ common?: string; "16"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "16"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - - "17": { common?: string; "17"?: number, ref?: Obj | Func; } -->"17" : { common?: string; "17"?: number; ref?: Obj | Func; } -+>"17" : { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; } - >common : string | undefined - >"17" : number | undefined -->ref : Func<{ common?: string; "17"?: number; ref?: Obj | Func; }> | Obj<{ common?: string; "17"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> | Obj<{ common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> | undefined - } - declare function getCtor(comp: T): CtorOf - >getCtor : (comp: T) => CtorOf -@@= skipped -115, +115 lines =@@ - >all : keyof Big - - const ctor = getCtor(all); -->ctor : CtorOf<{ common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; }> -->getCtor(all) : CtorOf<{ common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; }> -+>ctor : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> -+>getCtor(all) : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> - >getCtor : (comp: T) => CtorOf - >all : keyof Big - - const comp = ctor({ common: "ok", ref: x => console.log(x) }); -->comp : { common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; } -->ctor({ common: "ok", ref: x => console.log(x) }) : { common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; } -->ctor : CtorOf<{ common?: string; "0"?: number; ref?: Obj | Func; } | { common?: string; "1"?: number; ref?: Obj | Func; } | { common?: string; "2"?: number; ref?: Obj | Func; } | { common?: string; "3"?: number; ref?: Obj | Func; } | { common?: string; "4"?: number; ref?: Obj | Func; } | { common?: string; "5"?: number; ref?: Obj | Func; } | { common?: string; "6"?: number; ref?: Obj | Func; } | { common?: string; "7"?: number; ref?: Obj | Func; } | { common?: string; "8"?: number; ref?: Obj | Func; } | { common?: string; "9"?: number; ref?: Obj | Func; } | { common?: string; "10"?: number; ref?: Obj | Func; } | { common?: string; "11"?: number; ref?: Obj | Func; } | { common?: string; "12"?: number; ref?: Obj | Func; } | { common?: string; "13"?: number; ref?: Obj | Func; } | { common?: string; "14"?: number; ref?: Obj | Func; } | { common?: string; "15"?: number; ref?: Obj | Func; } | { common?: string; "16"?: number; ref?: Obj | Func; } | { common?: string; "17"?: number; ref?: Obj | Func; }> -+>comp : { common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; } -+>ctor({ common: "ok", ref: x => console.log(x) }) : { common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; } -+>ctor : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; }> - >{ common: "ok", ref: x => console.log(x) } : { common: string; ref: (x: any) => void; } - >common : string - >"ok" : "ok" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/objectCreate2.types b/testdata/baselines/reference/submodule/compiler/objectCreate2.types index f15754b7982..2265843738b 100644 --- a/testdata/baselines/reference/submodule/compiler/objectCreate2.types +++ b/testdata/baselines/reference/submodule/compiler/objectCreate2.types @@ -9,16 +9,16 @@ declare var union: null | { a: number, b: string }; var n = Object.create(null); // any >n : any >Object.create(null) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } var t = Object.create({ a: 1, b: "" }); // {a: number, b: string } >t : any >Object.create({ a: 1, b: "" }) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >{ a: 1, b: "" } : { a: number; b: string; } >a : number >1 : 1 @@ -28,42 +28,42 @@ var t = Object.create({ a: 1, b: "" }); // {a: number, b: string } var u = Object.create(union); // {a: number, b: string } >u : any >Object.create(union) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >union : { a: number; b: string; } var e = Object.create({}); // {} >e : any >Object.create({}) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >{} : {} var o = Object.create({}); // object >o : any >Object.create({}) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >{} : object >{} : {} var a = Object.create(null, {}); // any >a : any >Object.create(null, {}) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >{} : {} var a = Object.create({ a: 1, b: "" }, {}); >a : any >Object.create({ a: 1, b: "" }, {}) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >{ a: 1, b: "" } : { a: number; b: string; } >a : number >1 : 1 @@ -74,27 +74,27 @@ var a = Object.create({ a: 1, b: "" }, {}); var a = Object.create(union, {}); >a : any >Object.create(union, {}) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >union : { a: number; b: string; } >{} : {} var a = Object.create({}, {}); >a : any >Object.create({}, {}) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >{} : {} >{} : {} var a = Object.create({}, {}); >a : any >Object.create({}, {}) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >{} : object >{} : {} >{} : {} diff --git a/testdata/baselines/reference/submodule/compiler/objectCreate2.types.diff b/testdata/baselines/reference/submodule/compiler/objectCreate2.types.diff deleted file mode 100644 index 0812c445536..00000000000 --- a/testdata/baselines/reference/submodule/compiler/objectCreate2.types.diff +++ /dev/null @@ -1,110 +0,0 @@ ---- old.objectCreate2.types -+++ new.objectCreate2.types -@@= skipped -8, +8 lines =@@ - var n = Object.create(null); // any - >n : any - >Object.create(null) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - - var t = Object.create({ a: 1, b: "" }); // {a: number, b: string } - >t : any - >Object.create({ a: 1, b: "" }) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >{ a: 1, b: "" } : { a: number; b: string; } - >a : number - >1 : 1 -@@= skipped -19, +19 lines =@@ - var u = Object.create(union); // {a: number, b: string } - >u : any - >Object.create(union) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >union : { a: number; b: string; } - - var e = Object.create({}); // {} - >e : any - >Object.create({}) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >{} : {} - - var o = Object.create({}); // object - >o : any - >Object.create({}) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >{} : object - >{} : {} - - var a = Object.create(null, {}); // any - >a : any - >Object.create(null, {}) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >{} : {} - - var a = Object.create({ a: 1, b: "" }, {}); - >a : any - >Object.create({ a: 1, b: "" }, {}) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >{ a: 1, b: "" } : { a: number; b: string; } - >a : number - >1 : 1 -@@= skipped -46, +46 lines =@@ - var a = Object.create(union, {}); - >a : any - >Object.create(union, {}) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >union : { a: number; b: string; } - >{} : {} - - var a = Object.create({}, {}); - >a : any - >Object.create({}, {}) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >{} : {} - >{} : {} - - var a = Object.create({}, {}); - >a : any - >Object.create({}, {}) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >{} : object - >{} : {} - >{} : {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/objectFreeze.types b/testdata/baselines/reference/submodule/compiler/objectFreeze.types index f8a42709ec4..83c3f88fc4f 100644 --- a/testdata/baselines/reference/submodule/compiler/objectFreeze.types +++ b/testdata/baselines/reference/submodule/compiler/objectFreeze.types @@ -4,9 +4,9 @@ const f = Object.freeze(function foo(a: number, b: string) { return false; }); >f : (a: number, b: string) => false >Object.freeze(function foo(a: number, b: string) { return false; }) : (a: number, b: string) => false ->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; } >function foo(a: number, b: string) { return false; } : (a: number, b: string) => false >foo : (a: number, b: string) => false >a : number @@ -28,9 +28,9 @@ class C { constructor(a: number) { } } const c = Object.freeze(C); >c : typeof C >Object.freeze(C) : typeof C ->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; } >C : typeof C new c(1); @@ -41,9 +41,9 @@ new c(1); const a = Object.freeze([1, 2, 3]); >a : readonly number[] >Object.freeze([1, 2, 3]) : readonly number[] ->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; } >[1, 2, 3] : number[] >1 : 1 >2 : 2 @@ -55,18 +55,18 @@ a[0] = a[2].toString(); >a : readonly number[] >0 : 0 >a[2].toString() : string ->a[2].toString : (radix?: number | undefined) => string +>a[2].toString : (radix?: number) => string >a[2] : number >a : readonly number[] >2 : 2 ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string const o = Object.freeze({ a: 1, b: "string", c: true }); >o : Readonly<{ a: 1; b: "string"; c: true; }> >Object.freeze({ a: 1, b: "string", c: true }) : Readonly<{ a: 1; b: "string"; c: true; }> ->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: 1, b: "string", c: true } : { a: 1; b: "string"; c: true; } >a : 1 >1 : 1 @@ -81,9 +81,9 @@ o.b = o.a.toString(); >o : Readonly<{ a: 1; b: "string"; c: true; }> >b : any >o.a.toString() : string ->o.a.toString : (radix?: number | undefined) => string +>o.a.toString : (radix?: number) => string >o.a : 1 >o : Readonly<{ a: 1; b: "string"; c: true; }> >a : 1 ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/objectFreeze.types.diff b/testdata/baselines/reference/submodule/compiler/objectFreeze.types.diff deleted file mode 100644 index bad6b80eeac..00000000000 --- a/testdata/baselines/reference/submodule/compiler/objectFreeze.types.diff +++ /dev/null @@ -1,72 +0,0 @@ ---- old.objectFreeze.types -+++ new.objectFreeze.types -@@= skipped -3, +3 lines =@@ - const f = Object.freeze(function foo(a: number, b: string) { return false; }); - >f : (a: number, b: string) => false - >Object.freeze(function foo(a: number, b: string) { return false; }) : (a: number, b: string) => false -->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; } - >function foo(a: number, b: string) { return false; } : (a: number, b: string) => false - >foo : (a: number, b: string) => false - >a : number -@@= skipped -24, +24 lines =@@ - const c = Object.freeze(C); - >c : typeof C - >Object.freeze(C) : typeof C -->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; } - >C : typeof C - - new c(1); -@@= skipped -13, +13 lines =@@ - const a = Object.freeze([1, 2, 3]); - >a : readonly number[] - >Object.freeze([1, 2, 3]) : readonly number[] -->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; } - >[1, 2, 3] : number[] - >1 : 1 - >2 : 2 -@@= skipped -14, +14 lines =@@ - >a : readonly number[] - >0 : 0 - >a[2].toString() : string -->a[2].toString : (radix?: number) => string -+>a[2].toString : (radix?: number | undefined) => string - >a[2] : number - >a : readonly number[] - >2 : 2 -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - const o = Object.freeze({ a: 1, b: "string", c: true }); - >o : Readonly<{ a: 1; b: "string"; c: true; }> - >Object.freeze({ a: 1, b: "string", c: true }) : Readonly<{ a: 1; b: "string"; c: true; }> -->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: 1, b: "string", c: true } : { a: 1; b: "string"; c: true; } - >a : 1 - >1 : 1 -@@= skipped -26, +26 lines =@@ - >o : Readonly<{ a: 1; b: "string"; c: true; }> - >b : any - >o.a.toString() : string -->o.a.toString : (radix?: number) => string -+>o.a.toString : (radix?: number | undefined) => string - >o.a : 1 - >o : Readonly<{ a: 1; b: "string"; c: true; }> - >a : 1 -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/objectFreezeLiteralsDontWiden.types b/testdata/baselines/reference/submodule/compiler/objectFreezeLiteralsDontWiden.types index 2d9231e904d..69b76c79080 100644 --- a/testdata/baselines/reference/submodule/compiler/objectFreezeLiteralsDontWiden.types +++ b/testdata/baselines/reference/submodule/compiler/objectFreezeLiteralsDontWiden.types @@ -4,9 +4,9 @@ const PUPPETEER_REVISIONS = Object.freeze({ >PUPPETEER_REVISIONS : Readonly<{ chromium: "1011831"; firefox: "latest"; }> >Object.freeze({ chromium: '1011831', firefox: 'latest',}) : Readonly<{ chromium: "1011831"; firefox: "latest"; }> ->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; } >{ chromium: '1011831', firefox: 'latest',} : { chromium: "1011831"; firefox: "latest"; } chromium: '1011831', diff --git a/testdata/baselines/reference/submodule/compiler/objectFreezeLiteralsDontWiden.types.diff b/testdata/baselines/reference/submodule/compiler/objectFreezeLiteralsDontWiden.types.diff deleted file mode 100644 index 6c1cca350ac..00000000000 --- a/testdata/baselines/reference/submodule/compiler/objectFreezeLiteralsDontWiden.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.objectFreezeLiteralsDontWiden.types -+++ new.objectFreezeLiteralsDontWiden.types -@@= skipped -3, +3 lines =@@ - const PUPPETEER_REVISIONS = Object.freeze({ - >PUPPETEER_REVISIONS : Readonly<{ chromium: "1011831"; firefox: "latest"; }> - >Object.freeze({ chromium: '1011831', firefox: 'latest',}) : Readonly<{ chromium: "1011831"; firefox: "latest"; }> -->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; } - >{ chromium: '1011831', firefox: 'latest',} : { chromium: "1011831"; firefox: "latest"; } - - chromium: '1011831', \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/objectFromEntries.types b/testdata/baselines/reference/submodule/compiler/objectFromEntries.types index 119c50d4fdb..09584f842c4 100644 --- a/testdata/baselines/reference/submodule/compiler/objectFromEntries.types +++ b/testdata/baselines/reference/submodule/compiler/objectFromEntries.types @@ -25,7 +25,7 @@ const o2 = Object.fromEntries(new URLSearchParams()); >Object : ObjectConstructor >fromEntries : { (entries: Iterable): { [k: string]: T; }; (entries: Iterable): any; } >new URLSearchParams() : URLSearchParams ->URLSearchParams : { new (init?: string | string[][] | Record | URLSearchParams | undefined): URLSearchParams; prototype: URLSearchParams; } +>URLSearchParams : { new (init?: string[][] | Record | string | URLSearchParams): URLSearchParams; prototype: URLSearchParams; } const o3 = Object.fromEntries(new Map([[Symbol("key"), "value"]])); >o3 : { [k: string]: string; } @@ -45,9 +45,9 @@ const o3 = Object.fromEntries(new Map([[Symbol("key"), "value"]])); const frozenArray = Object.freeze([['a', 1], ['b', 2], ['c', 3]]); >frozenArray : readonly (string | number)[][] >Object.freeze([['a', 1], ['b', 2], ['c', 3]]) : readonly (string | number)[][] ->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', 1], ['b', 2], ['c', 3]] : (string | number)[][] >['a', 1] : (string | number)[] >'a' : "a" @@ -70,9 +70,9 @@ const o4 = Object.fromEntries(frozenArray); const frozenArray2: readonly [string, number][] = Object.freeze([['a', 1], ['b', 2], ['c', 3]]); >frozenArray2 : readonly [string, number][] >Object.freeze([['a', 1], ['b', 2], ['c', 3]]) : readonly [string, number][] ->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', 1], ['b', 2], ['c', 3]] : [string, number][] >['a', 1] : [string, number] >'a' : "a" diff --git a/testdata/baselines/reference/submodule/compiler/objectFromEntries.types.diff b/testdata/baselines/reference/submodule/compiler/objectFromEntries.types.diff deleted file mode 100644 index 47d5d9893f6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/objectFromEntries.types.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- old.objectFromEntries.types -+++ new.objectFromEntries.types -@@= skipped -24, +24 lines =@@ - >Object : ObjectConstructor - >fromEntries : { (entries: Iterable): { [k: string]: T; }; (entries: Iterable): any; } - >new URLSearchParams() : URLSearchParams -->URLSearchParams : { new (init?: string[][] | Record | string | URLSearchParams): URLSearchParams; prototype: URLSearchParams; } -+>URLSearchParams : { new (init?: string | string[][] | Record | URLSearchParams | undefined): URLSearchParams; prototype: URLSearchParams; } - - const o3 = Object.fromEntries(new Map([[Symbol("key"), "value"]])); - >o3 : { [k: string]: string; } -@@= skipped -20, +20 lines =@@ - const frozenArray = Object.freeze([['a', 1], ['b', 2], ['c', 3]]); - >frozenArray : readonly (string | number)[][] - >Object.freeze([['a', 1], ['b', 2], ['c', 3]]) : readonly (string | number)[][] -->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', 1], ['b', 2], ['c', 3]] : (string | number)[][] - >['a', 1] : (string | number)[] - >'a' : "a" -@@= skipped -25, +25 lines =@@ - const frozenArray2: readonly [string, number][] = Object.freeze([['a', 1], ['b', 2], ['c', 3]]); - >frozenArray2 : readonly [string, number][] - >Object.freeze([['a', 1], ['b', 2], ['c', 3]]) : readonly [string, number][] -->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', 1], ['b', 2], ['c', 3]] : [string, number][] - >['a', 1] : [string, number] - >'a' : "a" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/objectLiteralComputedNameNoDeclarationError.types b/testdata/baselines/reference/submodule/compiler/objectLiteralComputedNameNoDeclarationError.types index d54309e2b08..427dc27985a 100644 --- a/testdata/baselines/reference/submodule/compiler/objectLiteralComputedNameNoDeclarationError.types +++ b/testdata/baselines/reference/submodule/compiler/objectLiteralComputedNameNoDeclarationError.types @@ -2,8 +2,8 @@ === objectLiteralComputedNameNoDeclarationError.ts === const Foo = { ->Foo : { BANANA: "banana"; } ->{ BANANA: 'banana' as 'banana',} : { BANANA: "banana"; } +>Foo : { BANANA: 'banana'; } +>{ BANANA: 'banana' as 'banana',} : { BANANA: 'banana'; } BANANA: 'banana' as 'banana', >BANANA : "banana" @@ -18,7 +18,7 @@ export const Baa = { [Foo.BANANA]: 1 >[Foo.BANANA] : number >Foo.BANANA : "banana" ->Foo : { BANANA: "banana"; } +>Foo : { BANANA: 'banana'; } >BANANA : "banana" >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/objectLiteralComputedNameNoDeclarationError.types.diff b/testdata/baselines/reference/submodule/compiler/objectLiteralComputedNameNoDeclarationError.types.diff new file mode 100644 index 00000000000..ffd10d5d0e2 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/objectLiteralComputedNameNoDeclarationError.types.diff @@ -0,0 +1,21 @@ +--- old.objectLiteralComputedNameNoDeclarationError.types ++++ new.objectLiteralComputedNameNoDeclarationError.types +@@= skipped -1, +1 lines =@@ + + === objectLiteralComputedNameNoDeclarationError.ts === + const Foo = { +->Foo : { BANANA: "banana"; } +->{ BANANA: 'banana' as 'banana',} : { BANANA: "banana"; } ++>Foo : { BANANA: 'banana'; } ++>{ BANANA: 'banana' as 'banana',} : { BANANA: 'banana'; } + + BANANA: 'banana' as 'banana', + >BANANA : "banana" +@@= skipped -16, +16 lines =@@ + [Foo.BANANA]: 1 + >[Foo.BANANA] : number + >Foo.BANANA : "banana" +->Foo : { BANANA: "banana"; } ++>Foo : { BANANA: 'banana'; } + >BANANA : "banana" + >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/objectMembersOnTypes.types b/testdata/baselines/reference/submodule/compiler/objectMembersOnTypes.types index 96b2e7639b6..28181a508c1 100644 --- a/testdata/baselines/reference/submodule/compiler/objectMembersOnTypes.types +++ b/testdata/baselines/reference/submodule/compiler/objectMembersOnTypes.types @@ -10,9 +10,9 @@ var x: number; x.toString(); >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string var i: I; >i : I diff --git a/testdata/baselines/reference/submodule/compiler/objectMembersOnTypes.types.diff b/testdata/baselines/reference/submodule/compiler/objectMembersOnTypes.types.diff deleted file mode 100644 index 9ebd6f17dc2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/objectMembersOnTypes.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.objectMembersOnTypes.types -+++ new.objectMembersOnTypes.types -@@= skipped -9, +9 lines =@@ - - x.toString(); - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - var i: I; - >i : I \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/observableInferenceCanBeMade.types b/testdata/baselines/reference/submodule/compiler/observableInferenceCanBeMade.types index 8387bfc42a0..9a393f5098c 100644 --- a/testdata/baselines/reference/submodule/compiler/observableInferenceCanBeMade.types +++ b/testdata/baselines/reference/submodule/compiler/observableInferenceCanBeMade.types @@ -16,7 +16,7 @@ type ObservedValueOf = O extends ObservableInput ? T : never; interface Subscribable { subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void; ->subscribe : (next?: ((value: T) => void) | undefined, error?: ((error: any) => void) | undefined, complete?: (() => void) | undefined) => void +>subscribe : (next?: (value: T) => void, error?: (error: any) => void, complete?: () => void) => void >next : ((value: T) => void) | undefined >value : T >error : ((error: any) => void) | undefined @@ -31,7 +31,7 @@ declare class Observable implements Subscribable { >Observable : Observable subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void; ->subscribe : (next?: ((value: T) => void) | undefined, error?: ((error: any) => void) | undefined, complete?: (() => void) | undefined) => void +>subscribe : (next?: (value: T) => void, error?: (error: any) => void, complete?: () => void) => void >next : ((value: T) => void) | undefined >value : T >error : ((error: any) => void) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/observableInferenceCanBeMade.types.diff b/testdata/baselines/reference/submodule/compiler/observableInferenceCanBeMade.types.diff deleted file mode 100644 index c63d4c4ff6b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/observableInferenceCanBeMade.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.observableInferenceCanBeMade.types -+++ new.observableInferenceCanBeMade.types -@@= skipped -15, +15 lines =@@ - - interface Subscribable { - subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void; -->subscribe : (next?: (value: T) => void, error?: (error: any) => void, complete?: () => void) => void -+>subscribe : (next?: ((value: T) => void) | undefined, error?: ((error: any) => void) | undefined, complete?: (() => void) | undefined) => void - >next : ((value: T) => void) | undefined - >value : T - >error : ((error: any) => void) | undefined -@@= skipped -15, +15 lines =@@ - >Observable : Observable - - subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void; -->subscribe : (next?: (value: T) => void, error?: (error: any) => void, complete?: () => void) => void -+>subscribe : (next?: ((value: T) => void) | undefined, error?: ((error: any) => void) | undefined, complete?: (() => void) | undefined) => void - >next : ((value: T) => void) | undefined - >value : T - >error : ((error: any) => void) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/operationsAvailableOnPromisedType(target=es2015).types b/testdata/baselines/reference/submodule/compiler/operationsAvailableOnPromisedType(target=es2015).types index 8eb723a45ff..77765d173be 100644 --- a/testdata/baselines/reference/submodule/compiler/operationsAvailableOnPromisedType(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/operationsAvailableOnPromisedType(target=es2015).types @@ -2,7 +2,7 @@ === operationsAvailableOnPromisedType.ts === async function fn( ->fn : (a: number, b: Promise, c: Promise, d: Promise<{ prop: string; }>, e: Promise<() => void>, f: Promise<() => void> | (() => void), g: Promise any>) => Promise +>fn : (a: number, b: Promise, c: Promise, d: Promise<{ prop: string; }>, e: Promise<() => void>, f: Promise<() => void> | (() => void), g: Promise<{ new (): any; }>) => Promise a: number, >a : number @@ -72,7 +72,7 @@ async function fn( fn(b, b, c, d, e, f, g); >fn(b, b, c, d, e, f, g) : Promise ->fn : (a: number, b: Promise, c: Promise, d: Promise<{ prop: string; }>, e: Promise<() => void>, f: Promise<() => void> | (() => void), g: Promise any>) => Promise +>fn : (a: number, b: Promise, c: Promise, d: Promise<{ prop: string; }>, e: Promise<() => void>, f: Promise<() => void> | (() => void), g: Promise<{ new (): any; }>) => Promise >b : Promise >b : Promise >c : Promise diff --git a/testdata/baselines/reference/submodule/compiler/operationsAvailableOnPromisedType(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/operationsAvailableOnPromisedType(target=es2015).types.diff deleted file mode 100644 index 7c374b8401c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/operationsAvailableOnPromisedType(target=es2015).types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.operationsAvailableOnPromisedType(target=es2015).types -+++ new.operationsAvailableOnPromisedType(target=es2015).types -@@= skipped -1, +1 lines =@@ - - === operationsAvailableOnPromisedType.ts === - async function fn( -->fn : (a: number, b: Promise, c: Promise, d: Promise<{ prop: string; }>, e: Promise<() => void>, f: Promise<() => void> | (() => void), g: Promise<{ new (): any; }>) => Promise -+>fn : (a: number, b: Promise, c: Promise, d: Promise<{ prop: string; }>, e: Promise<() => void>, f: Promise<() => void> | (() => void), g: Promise any>) => Promise - - a: number, - >a : number -@@= skipped -70, +70 lines =@@ - - fn(b, b, c, d, e, f, g); - >fn(b, b, c, d, e, f, g) : Promise -->fn : (a: number, b: Promise, c: Promise, d: Promise<{ prop: string; }>, e: Promise<() => void>, f: Promise<() => void> | (() => void), g: Promise<{ new (): any; }>) => Promise -+>fn : (a: number, b: Promise, c: Promise, d: Promise<{ prop: string; }>, e: Promise<() => void>, f: Promise<() => void> | (() => void), g: Promise any>) => Promise - >b : Promise - >b : Promise - >c : Promise \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.errors.txt b/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.errors.txt index 27cc1548c11..ca5ed7df705 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.errors.txt @@ -1,6 +1,6 @@ optionalFunctionArgAssignability.ts(5,105): error TS2322: Type 'null' is not assignable to type 'Promise'. optionalFunctionArgAssignability.ts(6,105): error TS2322: Type 'null' is not assignable to type 'Promise'. -optionalFunctionArgAssignability.ts(7,1): error TS2322: Type '(onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise' is not assignable to type '(onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise'. +optionalFunctionArgAssignability.ts(7,1): error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. Types of parameters 'onFulFill' and 'onFulfill' are incompatible. Types of parameters 'value' and 'value' are incompatible. Type 'number' is not assignable to type 'string'. @@ -19,7 +19,7 @@ optionalFunctionArgAssignability.ts(7,1): error TS2322: Type '(onFulFill?: (( !!! error TS2322: Type 'null' is not assignable to type 'Promise'. a = b; // error because number is not assignable to string ~ -!!! error TS2322: Type '(onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise' is not assignable to type '(onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise'. +!!! error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. !!! error TS2322: Types of parameters 'onFulFill' and 'onFulfill' are incompatible. !!! error TS2322: Types of parameters 'value' and 'value' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. diff --git a/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.errors.txt.diff deleted file mode 100644 index 9dd5e1eefd6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.errors.txt.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.optionalFunctionArgAssignability.errors.txt -+++ new.optionalFunctionArgAssignability.errors.txt -@@= skipped -0, +0 lines =@@ - optionalFunctionArgAssignability.ts(5,105): error TS2322: Type 'null' is not assignable to type 'Promise'. - optionalFunctionArgAssignability.ts(6,105): error TS2322: Type 'null' is not assignable to type 'Promise'. --optionalFunctionArgAssignability.ts(7,1): error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. -+optionalFunctionArgAssignability.ts(7,1): error TS2322: Type '(onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise' is not assignable to type '(onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise'. - Types of parameters 'onFulFill' and 'onFulfill' are incompatible. - Types of parameters 'value' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. -@@= skipped -18, +18 lines =@@ - !!! error TS2322: Type 'null' is not assignable to type 'Promise'. - a = b; // error because number is not assignable to string - ~ --!!! error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. -+!!! error TS2322: Type '(onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise' is not assignable to type '(onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise'. - !!! error TS2322: Types of parameters 'onFulFill' and 'onFulfill' are incompatible. - !!! error TS2322: Types of parameters 'value' and 'value' are incompatible. - !!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.types b/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.types index 325cb5ce84c..b1edb876d02 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.types +++ b/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.types @@ -3,7 +3,7 @@ === optionalFunctionArgAssignability.ts === interface Promise { then(onFulfill?: (value: T) => U, onReject?: (reason: any) => U): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (onFulfill?: ((value: T) => U) | undefined, onReject?: ((reason: any) => U) | undefined): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (onFulfill?: (value: T) => U, onReject?: (reason: any) => U): Promise; } >onFulfill : ((value: T) => U) | undefined >value : T >onReject : ((reason: any) => U) | undefined @@ -11,25 +11,25 @@ interface Promise { } var a = function then(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise { return null }; ->a : (onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise ->function then(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise { return null } : (onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise ->then : (onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise +>a : (onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise +>function then(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise { return null } : (onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise +>then : (onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise >onFulfill : ((value: string) => U) | undefined >value : string >onReject : ((reason: any) => U) | undefined >reason : any var b = function then(onFulFill?: (value: number) => U, onReject?: (reason: any) => U): Promise { return null }; ->b : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise ->function then(onFulFill?: (value: number) => U, onReject?: (reason: any) => U): Promise { return null } : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise ->then : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise +>b : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise +>function then(onFulFill?: (value: number) => U, onReject?: (reason: any) => U): Promise { return null } : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise +>then : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise >onFulFill : ((value: number) => U) | undefined >value : number >onReject : ((reason: any) => U) | undefined >reason : any a = b; // error because number is not assignable to string ->a = b : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise ->a : (onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise ->b : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise +>a = b : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise +>a : (onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise +>b : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise diff --git a/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.types.diff b/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.types.diff deleted file mode 100644 index 288386cf0de..00000000000 --- a/testdata/baselines/reference/submodule/compiler/optionalFunctionArgAssignability.types.diff +++ /dev/null @@ -1,45 +0,0 @@ ---- old.optionalFunctionArgAssignability.types -+++ new.optionalFunctionArgAssignability.types -@@= skipped -2, +2 lines =@@ - === optionalFunctionArgAssignability.ts === - interface Promise { - then(onFulfill?: (value: T) => U, onReject?: (reason: any) => U): Promise; -->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (onFulfill?: (value: T) => U, onReject?: (reason: any) => U): Promise; } -+>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (onFulfill?: ((value: T) => U) | undefined, onReject?: ((reason: any) => U) | undefined): Promise; } - >onFulfill : ((value: T) => U) | undefined - >value : T - >onReject : ((reason: any) => U) | undefined -@@= skipped -8, +8 lines =@@ - } - - var a = function then(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise { return null }; -->a : (onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise -->function then(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise { return null } : (onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise -->then : (onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise -+>a : (onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise -+>function then(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise { return null } : (onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise -+>then : (onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise - >onFulfill : ((value: string) => U) | undefined - >value : string - >onReject : ((reason: any) => U) | undefined - >reason : any - - var b = function then(onFulFill?: (value: number) => U, onReject?: (reason: any) => U): Promise { return null }; -->b : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise -->function then(onFulFill?: (value: number) => U, onReject?: (reason: any) => U): Promise { return null } : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise -->then : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise -+>b : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise -+>function then(onFulFill?: (value: number) => U, onReject?: (reason: any) => U): Promise { return null } : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise -+>then : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise - >onFulFill : ((value: number) => U) | undefined - >value : number - >onReject : ((reason: any) => U) | undefined - >reason : any - - a = b; // error because number is not assignable to string -->a = b : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise -->a : (onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise -->b : (onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise -+>a = b : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise -+>a : (onFulfill?: ((value: string) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise -+>b : (onFulFill?: ((value: number) => U) | undefined, onReject?: ((reason: any) => U) | undefined) => Promise diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamArgsTest.types b/testdata/baselines/reference/submodule/compiler/optionalParamArgsTest.types index 66c607c6e41..faae58e6e15 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalParamArgsTest.types +++ b/testdata/baselines/reference/submodule/compiler/optionalParamArgsTest.types @@ -18,12 +18,12 @@ interface I1 { >C1M2A1 : number C1M3(C1M3A1?:number,C1M3A2?:number):number; ->C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number +>C1M3 : (C1M3A1?: number, C1M3A2?: number) => number >C1M3A1 : number | undefined >C1M3A2 : number | undefined C1M4(C1M4A1:number,C1M4A2?:number):number; ->C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>C1M4 : (C1M4A1: number, C1M4A2?: number) => number >C1M4A1 : number >C1M4A2 : number | undefined } @@ -64,7 +64,7 @@ class C1 { // C1M4 contains a mix of optional and non-optional parameters public C1M4(C1M4A1:number,C1M4A2?:number) { return C1M4A1 + C1M4A2; } ->C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>C1M4 : (C1M4A1: number, C1M4A2?: number) => number >C1M4A1 : number >C1M4A2 : number | undefined >C1M4A1 + C1M4A2 : number @@ -72,7 +72,7 @@ class C1 { >C1M4A2 : number | undefined public C1M5(C1M5A1:number,C1M5A2:number=0,C1M5A3?:number) { return C1M5A1 + C1M5A2; } ->C1M5 : (C1M5A1: number, C1M5A2?: number, C1M5A3?: number | undefined) => number +>C1M5 : (C1M5A1: number, C1M5A2?: number, C1M5A3?: number) => number >C1M5A1 : number >C1M5A2 : number >0 : 0 @@ -83,7 +83,7 @@ class C1 { // Uninitialized parameter makes the initialized one required public C1M5(C1M5A1:number,C1M5A2:number=0,C1M5A3:number) { return C1M5A1 + C1M5A2; } ->C1M5 : (C1M5A1: number, C1M5A2?: number, C1M5A3?: number | undefined) => number +>C1M5 : (C1M5A1: number, C1M5A2?: number, C1M5A3?: number) => number >C1M5A1 : number >C1M5A2 : number >0 : 0 @@ -129,7 +129,7 @@ function F3(F3A1=0,F3A2=F3A1) {return F3A1 + F3A2; } >F3A2 : number function F4(F4A1:number,F4A2?:number) { return F4A1 + F4A2; } ->F4 : (F4A1: number, F4A2?: number | undefined) => number +>F4 : (F4A1: number, F4A2?: number) => number >F4A1 : number >F4A2 : number | undefined >F4A1 + F4A2 : number @@ -159,8 +159,8 @@ var L3 = function (L3A1=0,L3A2=L3A1) {return L3A1 + L3A2; } >L3A2 : number var L4 = function (L4A1:number,L4A2?:number) { return L4A1 + L4A2; } ->L4 : (L4A1: number, L4A2?: number | undefined) => number ->function (L4A1:number,L4A2?:number) { return L4A1 + L4A2; } : (L4A1: number, L4A2?: number | undefined) => number +>L4 : (L4A1: number, L4A2?: number) => number +>function (L4A1:number,L4A2?:number) { return L4A1 + L4A2; } : (L4A1: number, L4A2?: number) => number >L4A1 : number >L4A2 : number | undefined >L4A1 + L4A2 : number @@ -234,9 +234,9 @@ c1o1.C1M3(1,2); i1o1.C1M3(1,2); >i1o1.C1M3(1,2) : number ->i1o1.C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number +>i1o1.C1M3 : (C1M3A1?: number, C1M3A2?: number) => number >i1o1 : I1 ->C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number +>C1M3 : (C1M3A1?: number, C1M3A2?: number) => number >1 : 1 >2 : 2 @@ -257,31 +257,31 @@ var l3v1=L3(1,2); // Valid c1o1.C1M4(1,2); >c1o1.C1M4(1,2) : number ->c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number >c1o1 : C1 ->C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>C1M4 : (C1M4A1: number, C1M4A2?: number) => number >1 : 1 >2 : 2 i1o1.C1M4(1,2); >i1o1.C1M4(1,2) : number ->i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number >i1o1 : I1 ->C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>C1M4 : (C1M4A1: number, C1M4A2?: number) => number >1 : 1 >2 : 2 var f4v1=F4(1,2); >f4v1 : number >F4(1,2) : number ->F4 : (F4A1: number, F4A2?: number | undefined) => number +>F4 : (F4A1: number, F4A2?: number) => number >1 : 1 >2 : 2 var l4v1=L4(1,2); >l4v1 : number >L4(1,2) : number ->L4 : (L4A1: number, L4A2?: number | undefined) => number +>L4 : (L4A1: number, L4A2?: number) => number >1 : 1 >2 : 2 @@ -295,9 +295,9 @@ c1o1.C1M3(1); i1o1.C1M3(1); >i1o1.C1M3(1) : number ->i1o1.C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number +>i1o1.C1M3 : (C1M3A1?: number, C1M3A2?: number) => number >i1o1 : I1 ->C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number +>C1M3 : (C1M3A1?: number, C1M3A2?: number) => number >1 : 1 var f3v2=F3(1); @@ -321,9 +321,9 @@ c1o1.C1M3(); i1o1.C1M3(); >i1o1.C1M3() : number ->i1o1.C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number +>i1o1.C1M3 : (C1M3A1?: number, C1M3A2?: number) => number >i1o1 : I1 ->C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number +>C1M3 : (C1M3A1?: number, C1M3A2?: number) => number var f3v3=F3(); >f3v3 : number @@ -338,28 +338,28 @@ var l3v3=L3(); // Valid c1o1.C1M4(1); >c1o1.C1M4(1) : number ->c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number >c1o1 : C1 ->C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>C1M4 : (C1M4A1: number, C1M4A2?: number) => number >1 : 1 i1o1.C1M4(1); >i1o1.C1M4(1) : number ->i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number >i1o1 : I1 ->C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>C1M4 : (C1M4A1: number, C1M4A2?: number) => number >1 : 1 var f4v2=F4(1); >f4v2 : number >F4(1) : number ->F4 : (F4A1: number, F4A2?: number | undefined) => number +>F4 : (F4A1: number, F4A2?: number) => number >1 : 1 var l4v2=L4(1); >l4v2 : number >L4(1) : number ->L4 : (L4A1: number, L4A2?: number | undefined) => number +>L4 : (L4A1: number, L4A2?: number) => number >1 : 1 // Negative tests - we expect these cases to fail @@ -446,9 +446,9 @@ c1o1.C1M3(1,2,3); i1o1.C1M3(1,2,3); >i1o1.C1M3(1,2,3) : number ->i1o1.C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number +>i1o1.C1M3 : (C1M3A1?: number, C1M3A2?: number) => number >i1o1 : I1 ->C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number +>C1M3 : (C1M3A1?: number, C1M3A2?: number) => number >1 : 1 >2 : 2 >3 : 3 @@ -469,26 +469,26 @@ L3(1,2,3); c1o1.C1M4(); >c1o1.C1M4() : number ->c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number >c1o1 : C1 ->C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>C1M4 : (C1M4A1: number, C1M4A2?: number) => number i1o1.C1M4(); >i1o1.C1M4() : number ->i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number >i1o1 : I1 ->C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number +>C1M4 : (C1M4A1: number, C1M4A2?: number) => number F4(); >F4() : number ->F4 : (F4A1: number, F4A2?: number | undefined) => number +>F4 : (F4A1: number, F4A2?: number) => number L4(); >L4() : number ->L4 : (L4A1: number, L4A2?: number | undefined) => number +>L4 : (L4A1: number, L4A2?: number) => number function fnOpt1(id: number, children: number[] = [], expectedPath: number[] = [], isRoot?: boolean): void {} ->fnOpt1 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean | undefined) => void +>fnOpt1 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean) => void >id : number >children : number[] >[] : never[] @@ -497,7 +497,7 @@ function fnOpt1(id: number, children: number[] = [], expectedPath: number[] = [] >isRoot : boolean | undefined function fnOpt2(id: number, children?: number[], expectedPath?: number[], isRoot?: boolean): void {} ->fnOpt2 : (id: number, children?: number[] | undefined, expectedPath?: number[] | undefined, isRoot?: boolean | undefined) => void +>fnOpt2 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean) => void >id : number >children : number[] | undefined >expectedPath : number[] | undefined @@ -505,7 +505,7 @@ function fnOpt2(id: number, children?: number[], expectedPath?: number[], isRoot fnOpt1(1, [2, 3], [1], true); >fnOpt1(1, [2, 3], [1], true) : void ->fnOpt1 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean | undefined) => void +>fnOpt1 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean) => void >1 : 1 >[2, 3] : number[] >2 : 2 @@ -516,7 +516,7 @@ fnOpt1(1, [2, 3], [1], true); fnOpt2(1, [2, 3], [1], true); >fnOpt2(1, [2, 3], [1], true) : void ->fnOpt2 : (id: number, children?: number[] | undefined, expectedPath?: number[] | undefined, isRoot?: boolean | undefined) => void +>fnOpt2 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean) => void >1 : 1 >[2, 3] : number[] >2 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamArgsTest.types.diff b/testdata/baselines/reference/submodule/compiler/optionalParamArgsTest.types.diff deleted file mode 100644 index 0974d29e10e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/optionalParamArgsTest.types.diff +++ /dev/null @@ -1,246 +0,0 @@ ---- old.optionalParamArgsTest.types -+++ new.optionalParamArgsTest.types -@@= skipped -17, +17 lines =@@ - >C1M2A1 : number - - C1M3(C1M3A1?:number,C1M3A2?:number):number; -->C1M3 : (C1M3A1?: number, C1M3A2?: number) => number -+>C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number - >C1M3A1 : number | undefined - >C1M3A2 : number | undefined - - C1M4(C1M4A1:number,C1M4A2?:number):number; -->C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >C1M4A1 : number - >C1M4A2 : number | undefined - } -@@= skipped -46, +46 lines =@@ - - // C1M4 contains a mix of optional and non-optional parameters - public C1M4(C1M4A1:number,C1M4A2?:number) { return C1M4A1 + C1M4A2; } -->C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >C1M4A1 : number - >C1M4A2 : number | undefined - >C1M4A1 + C1M4A2 : number -@@= skipped -8, +8 lines =@@ - >C1M4A2 : number | undefined - - public C1M5(C1M5A1:number,C1M5A2:number=0,C1M5A3?:number) { return C1M5A1 + C1M5A2; } -->C1M5 : (C1M5A1: number, C1M5A2?: number, C1M5A3?: number) => number -+>C1M5 : (C1M5A1: number, C1M5A2?: number, C1M5A3?: number | undefined) => number - >C1M5A1 : number - >C1M5A2 : number - >0 : 0 -@@= skipped -11, +11 lines =@@ - - // Uninitialized parameter makes the initialized one required - public C1M5(C1M5A1:number,C1M5A2:number=0,C1M5A3:number) { return C1M5A1 + C1M5A2; } -->C1M5 : (C1M5A1: number, C1M5A2?: number, C1M5A3?: number) => number -+>C1M5 : (C1M5A1: number, C1M5A2?: number, C1M5A3?: number | undefined) => number - >C1M5A1 : number - >C1M5A2 : number - >0 : 0 -@@= skipped -46, +46 lines =@@ - >F3A2 : number - - function F4(F4A1:number,F4A2?:number) { return F4A1 + F4A2; } -->F4 : (F4A1: number, F4A2?: number) => number -+>F4 : (F4A1: number, F4A2?: number | undefined) => number - >F4A1 : number - >F4A2 : number | undefined - >F4A1 + F4A2 : number -@@= skipped -30, +30 lines =@@ - >L3A2 : number - - var L4 = function (L4A1:number,L4A2?:number) { return L4A1 + L4A2; } -->L4 : (L4A1: number, L4A2?: number) => number -->function (L4A1:number,L4A2?:number) { return L4A1 + L4A2; } : (L4A1: number, L4A2?: number) => number -+>L4 : (L4A1: number, L4A2?: number | undefined) => number -+>function (L4A1:number,L4A2?:number) { return L4A1 + L4A2; } : (L4A1: number, L4A2?: number | undefined) => number - >L4A1 : number - >L4A2 : number | undefined - >L4A1 + L4A2 : number -@@= skipped -75, +75 lines =@@ - - i1o1.C1M3(1,2); - >i1o1.C1M3(1,2) : number -->i1o1.C1M3 : (C1M3A1?: number, C1M3A2?: number) => number -+>i1o1.C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number - >i1o1 : I1 -->C1M3 : (C1M3A1?: number, C1M3A2?: number) => number -+>C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number - >1 : 1 - >2 : 2 - -@@= skipped -23, +23 lines =@@ - // Valid - c1o1.C1M4(1,2); - >c1o1.C1M4(1,2) : number -->c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >c1o1 : C1 -->C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >1 : 1 - >2 : 2 - - i1o1.C1M4(1,2); - >i1o1.C1M4(1,2) : number -->i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >i1o1 : I1 -->C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >1 : 1 - >2 : 2 - - var f4v1=F4(1,2); - >f4v1 : number - >F4(1,2) : number -->F4 : (F4A1: number, F4A2?: number) => number -+>F4 : (F4A1: number, F4A2?: number | undefined) => number - >1 : 1 - >2 : 2 - - var l4v1=L4(1,2); - >l4v1 : number - >L4(1,2) : number -->L4 : (L4A1: number, L4A2?: number) => number -+>L4 : (L4A1: number, L4A2?: number | undefined) => number - >1 : 1 - >2 : 2 - -@@= skipped -38, +38 lines =@@ - - i1o1.C1M3(1); - >i1o1.C1M3(1) : number -->i1o1.C1M3 : (C1M3A1?: number, C1M3A2?: number) => number -+>i1o1.C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number - >i1o1 : I1 -->C1M3 : (C1M3A1?: number, C1M3A2?: number) => number -+>C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number - >1 : 1 - - var f3v2=F3(1); -@@= skipped -26, +26 lines =@@ - - i1o1.C1M3(); - >i1o1.C1M3() : number -->i1o1.C1M3 : (C1M3A1?: number, C1M3A2?: number) => number -+>i1o1.C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number - >i1o1 : I1 -->C1M3 : (C1M3A1?: number, C1M3A2?: number) => number -+>C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number - - var f3v3=F3(); - >f3v3 : number -@@= skipped -17, +17 lines =@@ - // Valid - c1o1.C1M4(1); - >c1o1.C1M4(1) : number -->c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >c1o1 : C1 -->C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >1 : 1 - - i1o1.C1M4(1); - >i1o1.C1M4(1) : number -->i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >i1o1 : I1 -->C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >1 : 1 - - var f4v2=F4(1); - >f4v2 : number - >F4(1) : number -->F4 : (F4A1: number, F4A2?: number) => number -+>F4 : (F4A1: number, F4A2?: number | undefined) => number - >1 : 1 - - var l4v2=L4(1); - >l4v2 : number - >L4(1) : number -->L4 : (L4A1: number, L4A2?: number) => number -+>L4 : (L4A1: number, L4A2?: number | undefined) => number - >1 : 1 - - // Negative tests - we expect these cases to fail -@@= skipped -108, +108 lines =@@ - - i1o1.C1M3(1,2,3); - >i1o1.C1M3(1,2,3) : number -->i1o1.C1M3 : (C1M3A1?: number, C1M3A2?: number) => number -+>i1o1.C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number - >i1o1 : I1 -->C1M3 : (C1M3A1?: number, C1M3A2?: number) => number -+>C1M3 : (C1M3A1?: number | undefined, C1M3A2?: number | undefined) => number - >1 : 1 - >2 : 2 - >3 : 3 -@@= skipped -23, +23 lines =@@ - - c1o1.C1M4(); - >c1o1.C1M4() : number -->c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>c1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >c1o1 : C1 -->C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - - i1o1.C1M4(); - >i1o1.C1M4() : number -->i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>i1o1.C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - >i1o1 : I1 -->C1M4 : (C1M4A1: number, C1M4A2?: number) => number -+>C1M4 : (C1M4A1: number, C1M4A2?: number | undefined) => number - - F4(); - >F4() : number -->F4 : (F4A1: number, F4A2?: number) => number -+>F4 : (F4A1: number, F4A2?: number | undefined) => number - - L4(); - >L4() : number -->L4 : (L4A1: number, L4A2?: number) => number -+>L4 : (L4A1: number, L4A2?: number | undefined) => number - - function fnOpt1(id: number, children: number[] = [], expectedPath: number[] = [], isRoot?: boolean): void {} -->fnOpt1 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean) => void -+>fnOpt1 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean | undefined) => void - >id : number - >children : number[] - >[] : never[] -@@= skipped -28, +28 lines =@@ - >isRoot : boolean | undefined - - function fnOpt2(id: number, children?: number[], expectedPath?: number[], isRoot?: boolean): void {} -->fnOpt2 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean) => void -+>fnOpt2 : (id: number, children?: number[] | undefined, expectedPath?: number[] | undefined, isRoot?: boolean | undefined) => void - >id : number - >children : number[] | undefined - >expectedPath : number[] | undefined -@@= skipped -8, +8 lines =@@ - - fnOpt1(1, [2, 3], [1], true); - >fnOpt1(1, [2, 3], [1], true) : void -->fnOpt1 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean) => void -+>fnOpt1 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean | undefined) => void - >1 : 1 - >[2, 3] : number[] - >2 : 2 -@@= skipped -11, +11 lines =@@ - - fnOpt2(1, [2, 3], [1], true); - >fnOpt2(1, [2, 3], [1], true) : void -->fnOpt2 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean) => void -+>fnOpt2 : (id: number, children?: number[] | undefined, expectedPath?: number[] | undefined, isRoot?: boolean | undefined) => void - >1 : 1 - >[2, 3] : number[] - >2 : 2 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.errors.txt b/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.errors.txt index 8b8de529829..502ab34260f 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.errors.txt @@ -1,4 +1,4 @@ -optionalParamAssignmentCompat.ts(10,13): error TS2322: Type '(p1?: string | undefined) => I1' is not assignable to type 'I1'. +optionalParamAssignmentCompat.ts(10,13): error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. Types of parameters 'p1' and 'p1' are incompatible. Type 'number' is not assignable to type 'string'. @@ -15,7 +15,7 @@ optionalParamAssignmentCompat.ts(10,13): error TS2322: Type '(p1?: string | unde var c: I1 = i2.p1; // should be ok var d: I1 = i2.m1; // should error ~~~~~ -!!! error TS2322: Type '(p1?: string | undefined) => I1' is not assignable to type 'I1'. +!!! error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. !!! error TS2322: Types of parameters 'p1' and 'p1' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. !!! related TS6212 optionalParamAssignmentCompat.ts:10:13: Did you mean to call this expression? diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.errors.txt.diff new file mode 100644 index 00000000000..ac196a4052b --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.optionalParamAssignmentCompat.errors.txt ++++ new.optionalParamAssignmentCompat.errors.txt +@@= skipped -0, +0 lines =@@ +-optionalParamAssignmentCompat.ts(10,13): error TS2322: Type '(p1?: string | undefined) => I1' is not assignable to type 'I1'. ++optionalParamAssignmentCompat.ts(10,13): error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. + Types of parameters 'p1' and 'p1' are incompatible. + Type 'number' is not assignable to type 'string'. + +@@= skipped -14, +14 lines =@@ + var c: I1 = i2.p1; // should be ok + var d: I1 = i2.m1; // should error + ~~~~~ +-!!! error TS2322: Type '(p1?: string | undefined) => I1' is not assignable to type 'I1'. ++!!! error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. + !!! error TS2322: Types of parameters 'p1' and 'p1' are incompatible. + !!! error TS2322: Type 'number' is not assignable to type 'string'. + !!! related TS6212 optionalParamAssignmentCompat.ts:10:13: Did you mean to call this expression? \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.types b/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.types index 1981f190795..f2fb667d6db 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.types +++ b/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.types @@ -11,7 +11,7 @@ interface I2 { >p1 : I1 m1(p1?: string): I1; ->m1 : (p1?: string | undefined) => I1 +>m1 : (p1?: string) => I1 >p1 : string | undefined } declare var i2: I2; @@ -25,7 +25,7 @@ var c: I1 = i2.p1; // should be ok var d: I1 = i2.m1; // should error >d : I1 ->i2.m1 : (p1?: string | undefined) => I1 +>i2.m1 : (p1?: string) => I1 >i2 : I2 ->m1 : (p1?: string | undefined) => I1 +>m1 : (p1?: string) => I1 diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.types.diff b/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.types.diff deleted file mode 100644 index 6b40ac702f0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/optionalParamAssignmentCompat.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.optionalParamAssignmentCompat.types -+++ new.optionalParamAssignmentCompat.types -@@= skipped -10, +10 lines =@@ - >p1 : I1 - - m1(p1?: string): I1; -->m1 : (p1?: string) => I1 -+>m1 : (p1?: string | undefined) => I1 - >p1 : string | undefined - } - declare var i2: I2; -@@= skipped -14, +14 lines =@@ - - var d: I1 = i2.m1; // should error - >d : I1 -->i2.m1 : (p1?: string) => I1 -+>i2.m1 : (p1?: string | undefined) => I1 - >i2 : I2 -->m1 : (p1?: string) => I1 -+>m1 : (p1?: string | undefined) => I1 diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.errors.txt b/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.errors.txt index 3301df4fe0e..ba5c225f0ef 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.errors.txt @@ -1,8 +1,8 @@ -optionalParamTypeComparison.ts(4,1): error TS2322: Type '(s: string, b?: boolean | undefined) => void' is not assignable to type '(s: string, n?: number | undefined) => void'. +optionalParamTypeComparison.ts(4,1): error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. Types of parameters 'b' and 'n' are incompatible. Type 'number | undefined' is not assignable to type 'boolean | undefined'. Type 'number' is not assignable to type 'boolean | undefined'. -optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s: string, n?: number | undefined) => void' is not assignable to type '(s: string, b?: boolean | undefined) => void'. +optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. Types of parameters 'n' and 'b' are incompatible. Type 'boolean | undefined' is not assignable to type 'number | undefined'. Type 'boolean' is not assignable to type 'number'. @@ -14,13 +14,13 @@ optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s: string, n?: number f = g; ~ -!!! error TS2322: Type '(s: string, b?: boolean | undefined) => void' is not assignable to type '(s: string, n?: number | undefined) => void'. +!!! error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. !!! error TS2322: Types of parameters 'b' and 'n' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'boolean | undefined'. !!! error TS2322: Type 'number' is not assignable to type 'boolean | undefined'. g = f; ~ -!!! error TS2322: Type '(s: string, n?: number | undefined) => void' is not assignable to type '(s: string, b?: boolean | undefined) => void'. +!!! error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. !!! error TS2322: Types of parameters 'n' and 'b' are incompatible. !!! error TS2322: Type 'boolean | undefined' is not assignable to type 'number | undefined'. !!! error TS2322: Type 'boolean' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.errors.txt.diff new file mode 100644 index 00000000000..a55a1f69a39 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.errors.txt.diff @@ -0,0 +1,29 @@ +--- old.optionalParamTypeComparison.errors.txt ++++ new.optionalParamTypeComparison.errors.txt +@@= skipped -0, +0 lines =@@ +-optionalParamTypeComparison.ts(4,1): error TS2322: Type '(s: string, b?: boolean | undefined) => void' is not assignable to type '(s: string, n?: number | undefined) => void'. ++optionalParamTypeComparison.ts(4,1): error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. + Types of parameters 'b' and 'n' are incompatible. + Type 'number | undefined' is not assignable to type 'boolean | undefined'. + Type 'number' is not assignable to type 'boolean | undefined'. +-optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s: string, n?: number | undefined) => void' is not assignable to type '(s: string, b?: boolean | undefined) => void'. ++optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. + Types of parameters 'n' and 'b' are incompatible. + Type 'boolean | undefined' is not assignable to type 'number | undefined'. + Type 'boolean' is not assignable to type 'number'. +@@= skipped -13, +13 lines =@@ + + f = g; + ~ +-!!! error TS2322: Type '(s: string, b?: boolean | undefined) => void' is not assignable to type '(s: string, n?: number | undefined) => void'. ++!!! error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. + !!! error TS2322: Types of parameters 'b' and 'n' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'boolean | undefined'. + !!! error TS2322: Type 'number' is not assignable to type 'boolean | undefined'. + g = f; + ~ +-!!! error TS2322: Type '(s: string, n?: number | undefined) => void' is not assignable to type '(s: string, b?: boolean | undefined) => void'. ++!!! error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. + !!! error TS2322: Types of parameters 'n' and 'b' are incompatible. + !!! error TS2322: Type 'boolean | undefined' is not assignable to type 'number | undefined'. + !!! error TS2322: Type 'boolean' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.types b/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.types index f05a0e548cb..cf6c59287b1 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.types +++ b/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.types @@ -2,22 +2,22 @@ === optionalParamTypeComparison.ts === declare var f: (s: string, n?: number) => void; ->f : (s: string, n?: number | undefined) => void +>f : (s: string, n?: number) => void >s : string >n : number | undefined declare var g: (s: string, b?: boolean) => void; ->g : (s: string, b?: boolean | undefined) => void +>g : (s: string, b?: boolean) => void >s : string >b : boolean | undefined f = g; ->f = g : (s: string, b?: boolean | undefined) => void ->f : (s: string, n?: number | undefined) => void ->g : (s: string, b?: boolean | undefined) => void +>f = g : (s: string, b?: boolean) => void +>f : (s: string, n?: number) => void +>g : (s: string, b?: boolean) => void g = f; ->g = f : (s: string, n?: number | undefined) => void ->g : (s: string, b?: boolean | undefined) => void ->f : (s: string, n?: number | undefined) => void +>g = f : (s: string, n?: number) => void +>g : (s: string, b?: boolean) => void +>f : (s: string, n?: number) => void diff --git a/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.types.diff b/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.types.diff deleted file mode 100644 index 90e14ee65e7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/optionalParamTypeComparison.types.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- old.optionalParamTypeComparison.types -+++ new.optionalParamTypeComparison.types -@@= skipped -1, +1 lines =@@ - - === optionalParamTypeComparison.ts === - declare var f: (s: string, n?: number) => void; -->f : (s: string, n?: number) => void -+>f : (s: string, n?: number | undefined) => void - >s : string - >n : number | undefined - - declare var g: (s: string, b?: boolean) => void; -->g : (s: string, b?: boolean) => void -+>g : (s: string, b?: boolean | undefined) => void - >s : string - >b : boolean | undefined - - f = g; -->f = g : (s: string, b?: boolean) => void -->f : (s: string, n?: number) => void -->g : (s: string, b?: boolean) => void -+>f = g : (s: string, b?: boolean | undefined) => void -+>f : (s: string, n?: number | undefined) => void -+>g : (s: string, b?: boolean | undefined) => void - - g = f; -->g = f : (s: string, n?: number) => void -->g : (s: string, b?: boolean) => void -->f : (s: string, n?: number) => void -+>g = f : (s: string, n?: number | undefined) => void -+>g : (s: string, b?: boolean | undefined) => void -+>f : (s: string, n?: number | undefined) => void diff --git a/testdata/baselines/reference/submodule/compiler/optionalParameterInDestructuringWithInitializer.types b/testdata/baselines/reference/submodule/compiler/optionalParameterInDestructuringWithInitializer.types index 4eeb42627b8..990fad36602 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalParameterInDestructuringWithInitializer.types +++ b/testdata/baselines/reference/submodule/compiler/optionalParameterInDestructuringWithInitializer.types @@ -9,7 +9,7 @@ declare function f(a:number,b:number): void; >b : number function func1( {a, b}: {a: number, b?: number} = {a: 1, b: 2} ) { ->func1 : ({ a, b }?: { a: number; b?: number | undefined; }) => void +>func1 : ({ a, b }?: { a: number; b?: number; }) => void >a : number >b : number | undefined >a : number @@ -30,7 +30,7 @@ function func1( {a, b}: {a: number, b?: number} = {a: 1, b: 2} ) { } function func2( {a, b = 3}: {a: number, b?:number} = {a: 1,b: 2} ) { ->func2 : ({ a, b }?: { a: number; b?: number | undefined; }) => void +>func2 : ({ a, b }?: { a: number; b?: number; }) => void >a : number >b : number >3 : 3 @@ -52,7 +52,7 @@ function func2( {a, b = 3}: {a: number, b?:number} = {a: 1,b: 2} ) { } function func3( {a, b}: {a: number, b?: number} = {a: 1} ) { ->func3 : ({ a, b }?: { a: number; b?: number | undefined; }) => void +>func3 : ({ a, b }?: { a: number; b?: number; }) => void >a : number >b : number | undefined >a : number @@ -71,12 +71,12 @@ function func3( {a, b}: {a: number, b?: number} = {a: 1} ) { } function func4( {a: {b, c}, d}: {a: {b: number,c?: number},d: number} = {a: {b: 1,c: 2},d: 3} ) { ->func4 : ({ a: { b, c }, d }?: { a: { b: number; c?: number | undefined; }; d: number; }) => void +>func4 : ({ a: { b, c }, d }?: { a: { b: number; c?: number; }; d: number; }) => void >a : any >b : number >c : number | undefined >d : number ->a : { b: number; c?: number | undefined; } +>a : { b: number; c?: number; } >b : number >c : number | undefined >d : number @@ -100,13 +100,13 @@ function func4( {a: {b, c}, d}: {a: {b: number,c?: number},d: number} = {a: {b: } function func5({a: {b, c = 4}, d}: {a: {b: number,c?: number},d: number} = {a: {b: 1,c: 2},d: 3} ) { ->func5 : ({ a: { b, c }, d }?: { a: { b: number; c?: number | undefined; }; d: number; }) => void +>func5 : ({ a: { b, c }, d }?: { a: { b: number; c?: number; }; d: number; }) => void >a : any >b : number >c : number >4 : 4 >d : number ->a : { b: number; c?: number | undefined; } +>a : { b: number; c?: number; } >b : number >c : number | undefined >d : number @@ -130,7 +130,7 @@ function func5({a: {b, c = 4}, d}: {a: {b: number,c?: number},d: number} = {a: { } function func6( {a: {b, c} = {b: 4, c: 5}, d}: {a: {b: number, c?: number}, d: number} = {a: {b: 1,c: 2}, d: 3} ) { ->func6 : ({ a: { b, c }, d }?: { a: { b: number; c?: number | undefined; }; d: number; }) => void +>func6 : ({ a: { b, c }, d }?: { a: { b: number; c?: number; }; d: number; }) => void >a : any >b : number >c : number | undefined @@ -140,7 +140,7 @@ function func6( {a: {b, c} = {b: 4, c: 5}, d}: {a: {b: number, c?: number}, d: n >c : number >5 : 5 >d : number ->a : { b: number; c?: number | undefined; } +>a : { b: number; c?: number; } >b : number >c : number | undefined >d : number @@ -164,7 +164,7 @@ function func6( {a: {b, c} = {b: 4, c: 5}, d}: {a: {b: number, c?: number}, d: n } function func7( {a: {b, c = 6} = {b: 4, c: 5}, d}: {a: {b: number, c?: number}, d: number} = {a: {b: 1, c: 2}, d: 3} ) { ->func7 : ({ a: { b, c }, d }?: { a: { b: number; c?: number | undefined; }; d: number; }) => void +>func7 : ({ a: { b, c }, d }?: { a: { b: number; c?: number; }; d: number; }) => void >a : any >b : number >c : number @@ -175,7 +175,7 @@ function func7( {a: {b, c = 6} = {b: 4, c: 5}, d}: {a: {b: number, c?: number}, >c : number >5 : 5 >d : number ->a : { b: number; c?: number | undefined; } +>a : { b: number; c?: number; } >b : number >c : number | undefined >d : number diff --git a/testdata/baselines/reference/submodule/compiler/optionalParameterInDestructuringWithInitializer.types.diff b/testdata/baselines/reference/submodule/compiler/optionalParameterInDestructuringWithInitializer.types.diff deleted file mode 100644 index 50b9014ff89..00000000000 --- a/testdata/baselines/reference/submodule/compiler/optionalParameterInDestructuringWithInitializer.types.diff +++ /dev/null @@ -1,96 +0,0 @@ ---- old.optionalParameterInDestructuringWithInitializer.types -+++ new.optionalParameterInDestructuringWithInitializer.types -@@= skipped -8, +8 lines =@@ - >b : number - - function func1( {a, b}: {a: number, b?: number} = {a: 1, b: 2} ) { -->func1 : ({ a, b }?: { a: number; b?: number; }) => void -+>func1 : ({ a, b }?: { a: number; b?: number | undefined; }) => void - >a : number - >b : number | undefined - >a : number -@@= skipped -21, +21 lines =@@ - } - - function func2( {a, b = 3}: {a: number, b?:number} = {a: 1,b: 2} ) { -->func2 : ({ a, b }?: { a: number; b?: number; }) => void -+>func2 : ({ a, b }?: { a: number; b?: number | undefined; }) => void - >a : number - >b : number - >3 : 3 -@@= skipped -22, +22 lines =@@ - } - - function func3( {a, b}: {a: number, b?: number} = {a: 1} ) { -->func3 : ({ a, b }?: { a: number; b?: number; }) => void -+>func3 : ({ a, b }?: { a: number; b?: number | undefined; }) => void - >a : number - >b : number | undefined - >a : number -@@= skipped -19, +19 lines =@@ - } - - function func4( {a: {b, c}, d}: {a: {b: number,c?: number},d: number} = {a: {b: 1,c: 2},d: 3} ) { -->func4 : ({ a: { b, c }, d }?: { a: { b: number; c?: number; }; d: number; }) => void -+>func4 : ({ a: { b, c }, d }?: { a: { b: number; c?: number | undefined; }; d: number; }) => void - >a : any - >b : number - >c : number | undefined - >d : number -->a : { b: number; c?: number; } -+>a : { b: number; c?: number | undefined; } - >b : number - >c : number | undefined - >d : number -@@= skipped -29, +29 lines =@@ - } - - function func5({a: {b, c = 4}, d}: {a: {b: number,c?: number},d: number} = {a: {b: 1,c: 2},d: 3} ) { -->func5 : ({ a: { b, c }, d }?: { a: { b: number; c?: number; }; d: number; }) => void -+>func5 : ({ a: { b, c }, d }?: { a: { b: number; c?: number | undefined; }; d: number; }) => void - >a : any - >b : number - >c : number - >4 : 4 - >d : number -->a : { b: number; c?: number; } -+>a : { b: number; c?: number | undefined; } - >b : number - >c : number | undefined - >d : number -@@= skipped -30, +30 lines =@@ - } - - function func6( {a: {b, c} = {b: 4, c: 5}, d}: {a: {b: number, c?: number}, d: number} = {a: {b: 1,c: 2}, d: 3} ) { -->func6 : ({ a: { b, c }, d }?: { a: { b: number; c?: number; }; d: number; }) => void -+>func6 : ({ a: { b, c }, d }?: { a: { b: number; c?: number | undefined; }; d: number; }) => void - >a : any - >b : number - >c : number | undefined -@@= skipped -10, +10 lines =@@ - >c : number - >5 : 5 - >d : number -->a : { b: number; c?: number; } -+>a : { b: number; c?: number | undefined; } - >b : number - >c : number | undefined - >d : number -@@= skipped -24, +24 lines =@@ - } - - function func7( {a: {b, c = 6} = {b: 4, c: 5}, d}: {a: {b: number, c?: number}, d: number} = {a: {b: 1, c: 2}, d: 3} ) { -->func7 : ({ a: { b, c }, d }?: { a: { b: number; c?: number; }; d: number; }) => void -+>func7 : ({ a: { b, c }, d }?: { a: { b: number; c?: number | undefined; }; d: number; }) => void - >a : any - >b : number - >c : number -@@= skipped -11, +11 lines =@@ - >c : number - >5 : 5 - >d : number -->a : { b: number; c?: number; } -+>a : { b: number; c?: number | undefined; } - >b : number - >c : number | undefined - >d : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/optionalParameterRetainsNull.types b/testdata/baselines/reference/submodule/compiler/optionalParameterRetainsNull.types index e63b9e40617..60a51b22e87 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalParameterRetainsNull.types +++ b/testdata/baselines/reference/submodule/compiler/optionalParameterRetainsNull.types @@ -6,19 +6,19 @@ interface Bar { bar: number; foo: object | null; } >foo : object | null let a = { ->a : { test(a: K, b?: Bar[K] | null | undefined): void; } ->{ test (a: K, b?: Bar[K] | null) { }} : { test(a: K, b?: Bar[K] | null | undefined): void; } +>a : { test(a: K, b?: Bar[K] | null): void; } +>{ test (a: K, b?: Bar[K] | null) { }} : { test(a: K, b?: Bar[K] | null): void; } test (a: K, b?: Bar[K] | null) { } ->test : (a: K, b?: Bar[K] | null | undefined) => void +>test : (a: K, b?: Bar[K] | null) => void >a : K >b : Bar[K] | null | undefined }; a.test("bar", null); // ok, null is assignable to number | null | undefined >a.test("bar", null) : void ->a.test : (a: K, b?: Bar[K] | null | undefined) => void ->a : { test(a: K, b?: Bar[K] | null | undefined): void; } ->test : (a: K, b?: Bar[K] | null | undefined) => void +>a.test : (a: K, b?: Bar[K] | null) => void +>a : { test(a: K, b?: Bar[K] | null): void; } +>test : (a: K, b?: Bar[K] | null) => void >"bar" : "bar" diff --git a/testdata/baselines/reference/submodule/compiler/optionalParameterRetainsNull.types.diff b/testdata/baselines/reference/submodule/compiler/optionalParameterRetainsNull.types.diff deleted file mode 100644 index 4131196ac5e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/optionalParameterRetainsNull.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.optionalParameterRetainsNull.types -+++ new.optionalParameterRetainsNull.types -@@= skipped -5, +5 lines =@@ - >foo : object | null - - let a = { -->a : { test(a: K, b?: Bar[K] | null): void; } -->{ test (a: K, b?: Bar[K] | null) { }} : { test(a: K, b?: Bar[K] | null): void; } -+>a : { test(a: K, b?: Bar[K] | null | undefined): void; } -+>{ test (a: K, b?: Bar[K] | null) { }} : { test(a: K, b?: Bar[K] | null | undefined): void; } - - test (a: K, b?: Bar[K] | null) { } -->test : (a: K, b?: Bar[K] | null) => void -+>test : (a: K, b?: Bar[K] | null | undefined) => void - >a : K - >b : Bar[K] | null | undefined - - }; - a.test("bar", null); // ok, null is assignable to number | null | undefined - >a.test("bar", null) : void -->a.test : (a: K, b?: Bar[K] | null) => void -->a : { test(a: K, b?: Bar[K] | null): void; } -->test : (a: K, b?: Bar[K] | null) => void -+>a.test : (a: K, b?: Bar[K] | null | undefined) => void -+>a : { test(a: K, b?: Bar[K] | null | undefined): void; } -+>test : (a: K, b?: Bar[K] | null | undefined) => void - >"bar" : "bar" diff --git a/testdata/baselines/reference/submodule/compiler/optionalPropertiesTest.types b/testdata/baselines/reference/submodule/compiler/optionalPropertiesTest.types index 36c4d54f3cd..0dfc757602f 100644 --- a/testdata/baselines/reference/submodule/compiler/optionalPropertiesTest.types +++ b/testdata/baselines/reference/submodule/compiler/optionalPropertiesTest.types @@ -2,7 +2,7 @@ === optionalPropertiesTest.ts === var x: {p1:number; p2?:string; p3?:{():number;};}; ->x : { p1: number; p2?: string | undefined; p3?: (() => number) | undefined; } +>x : { p1: number; p2?: string; p3?: { (): number; }; } >p1 : number >p2 : string | undefined >p3 : (() => number) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/optionalPropertiesTest.types.diff b/testdata/baselines/reference/submodule/compiler/optionalPropertiesTest.types.diff deleted file mode 100644 index 8f67a324047..00000000000 --- a/testdata/baselines/reference/submodule/compiler/optionalPropertiesTest.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.optionalPropertiesTest.types -+++ new.optionalPropertiesTest.types -@@= skipped -1, +1 lines =@@ - - === optionalPropertiesTest.ts === - var x: {p1:number; p2?:string; p3?:{():number;};}; -->x : { p1: number; p2?: string; p3?: { (): number; }; } -+>x : { p1: number; p2?: string | undefined; p3?: (() => number) | undefined; } - >p1 : number - >p2 : string | undefined - >p3 : (() => number) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overEagerReturnTypeSpecialization.types b/testdata/baselines/reference/submodule/compiler/overEagerReturnTypeSpecialization.types index 63bdf0c3c1f..2627963b664 100644 --- a/testdata/baselines/reference/submodule/compiler/overEagerReturnTypeSpecialization.types +++ b/testdata/baselines/reference/submodule/compiler/overEagerReturnTypeSpecialization.types @@ -24,9 +24,9 @@ var r1: I1 = v1.func(num => num.toString()) // Correctly returns an I1num => num.toString() : (num: number) => string >num : number >num.toString() : string ->num.toString : (radix?: number | undefined) => string +>num.toString : (radix?: number) => string >num : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string .func(str => str.length); // should error >func : (callback: (value: string) => U) => I1 @@ -47,9 +47,9 @@ var r2: I1 = v1.func(num => num.toString()) // Correctly returns an I1num => num.toString() : (num: number) => string >num : number >num.toString() : string ->num.toString : (radix?: number | undefined) => string +>num.toString : (radix?: number) => string >num : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string .func(str => str.length); // should be ok >func : (callback: (value: string) => U) => I1 diff --git a/testdata/baselines/reference/submodule/compiler/overEagerReturnTypeSpecialization.types.diff b/testdata/baselines/reference/submodule/compiler/overEagerReturnTypeSpecialization.types.diff deleted file mode 100644 index 35f5480ece5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/overEagerReturnTypeSpecialization.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.overEagerReturnTypeSpecialization.types -+++ new.overEagerReturnTypeSpecialization.types -@@= skipped -23, +23 lines =@@ - >num => num.toString() : (num: number) => string - >num : number - >num.toString() : string -->num.toString : (radix?: number) => string -+>num.toString : (radix?: number | undefined) => string - >num : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - .func(str => str.length); // should error - >func : (callback: (value: string) => U) => I1 -@@= skipped -23, +23 lines =@@ - >num => num.toString() : (num: number) => string - >num : number - >num.toString() : string -->num.toString : (radix?: number) => string -+>num.toString : (radix?: number | undefined) => string - >num : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - .func(str => str.length); // should be ok - >func : (callback: (value: string) => U) => I1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstAsTypeAnnotation.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstAsTypeAnnotation.types index e93959419ef..66782961b9f 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstAsTypeAnnotation.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstAsTypeAnnotation.types @@ -2,9 +2,9 @@ === overloadOnConstAsTypeAnnotation.ts === var f: (x: 'hi') => number = (x: 'hi') => { return 1; }; ->f : (x: "hi") => number +>f : (x: 'hi') => number >x : "hi" ->(x: 'hi') => { return 1; } : (x: "hi") => number +>(x: 'hi') => { return 1; } : (x: 'hi') => number >x : "hi" >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstAsTypeAnnotation.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstAsTypeAnnotation.types.diff new file mode 100644 index 00000000000..990303f7928 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstAsTypeAnnotation.types.diff @@ -0,0 +1,13 @@ +--- old.overloadOnConstAsTypeAnnotation.types ++++ new.overloadOnConstAsTypeAnnotation.types +@@= skipped -1, +1 lines =@@ + + === overloadOnConstAsTypeAnnotation.ts === + var f: (x: 'hi') => number = (x: 'hi') => { return 1; }; +->f : (x: "hi") => number ++>f : (x: 'hi') => number + >x : "hi" +->(x: 'hi') => { return 1; } : (x: "hi") => number ++>(x: 'hi') => { return 1; } : (x: 'hi') => number + >x : "hi" + >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks1.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks1.types index 14486b35383..763b537db0c 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks1.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks1.types @@ -22,19 +22,19 @@ class Derived3 extends Base { biz() { } } interface MyDoc { // Document createElement(tagName: string): Base; ->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } +>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } >tagName : string createElement(tagName: 'canvas'): Derived1; ->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } +>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } >tagName : "canvas" createElement(tagName: 'div'): Derived2; ->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } +>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } >tagName : "div" createElement(tagName: 'span'): Derived3; ->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } +>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } >tagName : "span" // + 100 more @@ -44,23 +44,23 @@ class D implements MyDoc { >D : D createElement(tagName:string): Base; ->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } +>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } >tagName : string createElement(tagName: 'canvas'): Derived1; ->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } +>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } >tagName : "canvas" createElement(tagName: 'div'): Derived2; ->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } +>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } >tagName : "div" createElement(tagName: 'span'): Derived3; ->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } +>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } >tagName : "span" createElement(tagName:any): Base { ->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } +>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } >tagName : any return null; diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks1.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks1.types.diff new file mode 100644 index 00000000000..acb204c1a1c --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks1.types.diff @@ -0,0 +1,55 @@ +--- old.overloadOnConstConstraintChecks1.types ++++ new.overloadOnConstConstraintChecks1.types +@@= skipped -21, +21 lines =@@ + + interface MyDoc { // Document + createElement(tagName: string): Base; +->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } ++>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } + >tagName : string + + createElement(tagName: 'canvas'): Derived1; +->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } ++>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } + >tagName : "canvas" + + createElement(tagName: 'div'): Derived2; +->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } ++>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } + >tagName : "div" + + createElement(tagName: 'span'): Derived3; +->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } ++>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } + >tagName : "span" + + // + 100 more +@@= skipped -22, +22 lines =@@ + >D : D + + createElement(tagName:string): Base; +->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } ++>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } + >tagName : string + + createElement(tagName: 'canvas'): Derived1; +->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } ++>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } + >tagName : "canvas" + + createElement(tagName: 'div'): Derived2; +->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } ++>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } + >tagName : "div" + + createElement(tagName: 'span'): Derived3; +->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } ++>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } + >tagName : "span" + + createElement(tagName:any): Base { +->createElement : { (tagName: string): Base; (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; } ++>createElement : { (tagName: string): Base; (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; } + >tagName : any + + return null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks2.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks2.types index 1df61f53809..3a958266acc 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks2.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks2.types @@ -16,19 +16,19 @@ class C extends A { >foo : () => void } function foo(name: 'hi'): B; ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : "hi" function foo(name: 'bye'): C; ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : "bye" function foo(name: string): A; ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : string function foo(name: any): A { ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : any return null; diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks2.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks2.types.diff new file mode 100644 index 00000000000..66129992e09 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks2.types.diff @@ -0,0 +1,26 @@ +--- old.overloadOnConstConstraintChecks2.types ++++ new.overloadOnConstConstraintChecks2.types +@@= skipped -15, +15 lines =@@ + >foo : () => void + } + function foo(name: 'hi'): B; +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : "hi" + + function foo(name: 'bye'): C; +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : "bye" + + function foo(name: string): A; +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : string + + function foo(name: any): A { +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : any + + return null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks3.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks3.types index b1d529f4063..ec162e30671 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks3.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks3.types @@ -18,19 +18,19 @@ class C extends A { >foo : () => void } function foo(name: 'hi'): B; ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : "hi" function foo(name: 'bye'): C; ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : "bye" function foo(name: string): A; ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : string function foo(name: any): A { ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : any return null; diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks3.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks3.types.diff new file mode 100644 index 00000000000..bc84c5d04fd --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks3.types.diff @@ -0,0 +1,26 @@ +--- old.overloadOnConstConstraintChecks3.types ++++ new.overloadOnConstConstraintChecks3.types +@@= skipped -17, +17 lines =@@ + >foo : () => void + } + function foo(name: 'hi'): B; +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : "hi" + + function foo(name: 'bye'): C; +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : "bye" + + function foo(name: string): A; +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : string + + function foo(name: any): A { +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : any + + return null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks4.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks4.types index 1116e218667..1299a11b383 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks4.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks4.types @@ -22,19 +22,19 @@ class C extends A { >foo : () => void } function foo(name: 'hi'): B; ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : "hi" function foo(name: 'bye'): C; ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : "bye" function foo(name: string): A; ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : string function foo(name: any): Z { ->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } +>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } >name : any return null; diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks4.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks4.types.diff new file mode 100644 index 00000000000..8b4d1bbc9af --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstConstraintChecks4.types.diff @@ -0,0 +1,26 @@ +--- old.overloadOnConstConstraintChecks4.types ++++ new.overloadOnConstConstraintChecks4.types +@@= skipped -21, +21 lines =@@ + >foo : () => void + } + function foo(name: 'hi'): B; +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : "hi" + + function foo(name: 'bye'): C; +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : "bye" + + function foo(name: string): A; +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : string + + function foo(name: any): Z { +->foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; } ++>foo : { (name: 'hi'): B; (name: 'bye'): C; (name: string): A; } + >name : any + + return null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstDuplicateOverloads1.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstDuplicateOverloads1.types index 63ad393c0ae..24afeb6814c 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstDuplicateOverloads1.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstDuplicateOverloads1.types @@ -2,38 +2,38 @@ === overloadOnConstDuplicateOverloads1.ts === function foo(a: 'hi', x: string); ->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } +>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } >a : "hi" >x : string function foo(a: 'hi', x: string); ->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } +>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } >a : "hi" >x : string function foo(a: any, x: any) { ->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } +>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } >a : any >x : any } function foo2(a: 'hi', x: string); ->foo2 : { (a: "hi", x: string): any; (a: "hi", x: string): any; (a: string, x: string): any; } +>foo2 : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; (a: string, x: string): any; } >a : "hi" >x : string function foo2(a: 'hi', x: string); ->foo2 : { (a: "hi", x: string): any; (a: "hi", x: string): any; (a: string, x: string): any; } +>foo2 : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; (a: string, x: string): any; } >a : "hi" >x : string function foo2(a: string, x: string); ->foo2 : { (a: "hi", x: string): any; (a: "hi", x: string): any; (a: string, x: string): any; } +>foo2 : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; (a: string, x: string): any; } >a : string >x : string function foo2(a: any, x: any) { ->foo2 : { (a: "hi", x: string): any; (a: "hi", x: string): any; (a: string, x: string): any; } +>foo2 : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; (a: string, x: string): any; } >a : any >x : any } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstDuplicateOverloads1.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstDuplicateOverloads1.types.diff new file mode 100644 index 00000000000..fc5b184c308 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstDuplicateOverloads1.types.diff @@ -0,0 +1,48 @@ +--- old.overloadOnConstDuplicateOverloads1.types ++++ new.overloadOnConstDuplicateOverloads1.types +@@= skipped -1, +1 lines =@@ + + === overloadOnConstDuplicateOverloads1.ts === + function foo(a: 'hi', x: string); +->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } ++>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } + >a : "hi" + >x : string + + function foo(a: 'hi', x: string); +->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } ++>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } + >a : "hi" + >x : string + + function foo(a: any, x: any) { +->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } ++>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } + >a : any + >x : any + } + + function foo2(a: 'hi', x: string); +->foo2 : { (a: "hi", x: string): any; (a: "hi", x: string): any; (a: string, x: string): any; } ++>foo2 : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; (a: string, x: string): any; } + >a : "hi" + >x : string + + function foo2(a: 'hi', x: string); +->foo2 : { (a: "hi", x: string): any; (a: "hi", x: string): any; (a: string, x: string): any; } ++>foo2 : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; (a: string, x: string): any; } + >a : "hi" + >x : string + + function foo2(a: string, x: string); +->foo2 : { (a: "hi", x: string): any; (a: "hi", x: string): any; (a: string, x: string): any; } ++>foo2 : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; (a: string, x: string): any; } + >a : string + >x : string + + function foo2(a: any, x: any) { +->foo2 : { (a: "hi", x: string): any; (a: "hi", x: string): any; (a: string, x: string): any; } ++>foo2 : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; (a: string, x: string): any; } + >a : any + >x : any + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInBaseWithBadImplementationInDerived.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstInBaseWithBadImplementationInDerived.types index 61b720ee7a8..f2d95d4d577 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstInBaseWithBadImplementationInDerived.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInBaseWithBadImplementationInDerived.types @@ -3,9 +3,9 @@ === overloadOnConstInBaseWithBadImplementationInDerived.ts === interface I { x1(a: number, callback: (x: 'hi') => number); ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" } @@ -13,9 +13,9 @@ class C implements I { >C : C x1(a: number, callback: (x: 'hi') => number) { // error ->x1 : (a: number, callback: (x: "hi") => number) => void +>x1 : (a: number, callback: (x: 'hi') => number) => void >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" } } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInBaseWithBadImplementationInDerived.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstInBaseWithBadImplementationInDerived.types.diff new file mode 100644 index 00000000000..6e72fc8b061 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInBaseWithBadImplementationInDerived.types.diff @@ -0,0 +1,26 @@ +--- old.overloadOnConstInBaseWithBadImplementationInDerived.types ++++ new.overloadOnConstInBaseWithBadImplementationInDerived.types +@@= skipped -2, +2 lines =@@ + === overloadOnConstInBaseWithBadImplementationInDerived.ts === + interface I { + x1(a: number, callback: (x: 'hi') => number); +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + } + +@@= skipped -10, +10 lines =@@ + >C : C + + x1(a: number, callback: (x: 'hi') => number) { // error +->x1 : (a: number, callback: (x: "hi") => number) => void ++>x1 : (a: number, callback: (x: 'hi') => number) => void + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + } + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInCallback1.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstInCallback1.types index 0c262fc97d0..3e24f101d22 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstInCallback1.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInCallback1.types @@ -5,13 +5,13 @@ class C { >C : C x1(a: number, callback: (x: 'hi') => number); // error ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" x1(a: number, callback: (x: any) => number) { ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number >callback : (x: any) => number >x : any diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInCallback1.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstInCallback1.types.diff new file mode 100644 index 00000000000..c917e33c3e0 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInCallback1.types.diff @@ -0,0 +1,19 @@ +--- old.overloadOnConstInCallback1.types ++++ new.overloadOnConstInCallback1.types +@@= skipped -4, +4 lines =@@ + >C : C + + x1(a: number, callback: (x: 'hi') => number); // error +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + + x1(a: number, callback: (x: any) => number) { +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number + >callback : (x: any) => number + >x : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInObjectLiteralImplementingAnInterface.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstInObjectLiteralImplementingAnInterface.types index 8f8f0b046c1..d4413893ffd 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstInObjectLiteralImplementingAnInterface.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInObjectLiteralImplementingAnInterface.types @@ -3,18 +3,18 @@ === overloadOnConstInObjectLiteralImplementingAnInterface.ts === interface I { x1(a: number, callback: (x: 'hi') => number); ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" } var i2: I = { x1: (a: number, cb: (x: 'hi') => number) => { } }; // error >i2 : I ->{ x1: (a: number, cb: (x: 'hi') => number) => { } } : { x1: (a: number, cb: (x: "hi") => number) => void; } ->x1 : (a: number, cb: (x: "hi") => number) => void ->(a: number, cb: (x: 'hi') => number) => { } : (a: number, cb: (x: "hi") => number) => void +>{ x1: (a: number, cb: (x: 'hi') => number) => { } } : { x1: (a: number, cb: (x: 'hi') => number) => void; } +>x1 : (a: number, cb: (x: 'hi') => number) => void +>(a: number, cb: (x: 'hi') => number) => { } : (a: number, cb: (x: 'hi') => number) => void >a : number ->cb : (x: "hi") => number +>cb : (x: 'hi') => number >x : "hi" diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInObjectLiteralImplementingAnInterface.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstInObjectLiteralImplementingAnInterface.types.diff new file mode 100644 index 00000000000..3468f57e7e3 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInObjectLiteralImplementingAnInterface.types.diff @@ -0,0 +1,26 @@ +--- old.overloadOnConstInObjectLiteralImplementingAnInterface.types ++++ new.overloadOnConstInObjectLiteralImplementingAnInterface.types +@@= skipped -2, +2 lines =@@ + === overloadOnConstInObjectLiteralImplementingAnInterface.ts === + interface I { + x1(a: number, callback: (x: 'hi') => number); +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + } + + var i2: I = { x1: (a: number, cb: (x: 'hi') => number) => { } }; // error + >i2 : I +->{ x1: (a: number, cb: (x: 'hi') => number) => { } } : { x1: (a: number, cb: (x: "hi") => number) => void; } +->x1 : (a: number, cb: (x: "hi") => number) => void +->(a: number, cb: (x: 'hi') => number) => { } : (a: number, cb: (x: "hi") => number) => void ++>{ x1: (a: number, cb: (x: 'hi') => number) => { } } : { x1: (a: number, cb: (x: 'hi') => number) => void; } ++>x1 : (a: number, cb: (x: 'hi') => number) => void ++>(a: number, cb: (x: 'hi') => number) => { } : (a: number, cb: (x: 'hi') => number) => void + >a : number +->cb : (x: "hi") => number ++>cb : (x: 'hi') => number + >x : "hi" diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance1.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance1.types index 946d3373849..8197633ad96 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance1.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance1.types @@ -3,20 +3,20 @@ === overloadOnConstInheritance1.ts === interface Base { addEventListener(x: string): any; ->addEventListener : { (x: string): any; (x: "foo"): string; } +>addEventListener : { (x: string): any; (x: 'foo'): string; } >x : string addEventListener(x: 'foo'): string; ->addEventListener : { (x: string): any; (x: "foo"): string; } +>addEventListener : { (x: string): any; (x: 'foo'): string; } >x : "foo" } interface Deriver extends Base { addEventListener(x: string): any; ->addEventListener : { (x: string): any; (x: "bar"): string; } +>addEventListener : { (x: string): any; (x: 'bar'): string; } >x : string addEventListener(x: 'bar'): string; ->addEventListener : { (x: string): any; (x: "bar"): string; } +>addEventListener : { (x: string): any; (x: 'bar'): string; } >x : "bar" } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance1.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance1.types.diff new file mode 100644 index 00000000000..9ef49f03d99 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance1.types.diff @@ -0,0 +1,26 @@ +--- old.overloadOnConstInheritance1.types ++++ new.overloadOnConstInheritance1.types +@@= skipped -2, +2 lines =@@ + === overloadOnConstInheritance1.ts === + interface Base { + addEventListener(x: string): any; +->addEventListener : { (x: string): any; (x: "foo"): string; } ++>addEventListener : { (x: string): any; (x: 'foo'): string; } + >x : string + + addEventListener(x: 'foo'): string; +->addEventListener : { (x: string): any; (x: "foo"): string; } ++>addEventListener : { (x: string): any; (x: 'foo'): string; } + >x : "foo" + } + interface Deriver extends Base { + addEventListener(x: string): any; +->addEventListener : { (x: string): any; (x: "bar"): string; } ++>addEventListener : { (x: string): any; (x: 'bar'): string; } + >x : string + + addEventListener(x: 'bar'): string; +->addEventListener : { (x: string): any; (x: "bar"): string; } ++>addEventListener : { (x: string): any; (x: 'bar'): string; } + >x : "bar" + } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.errors.txt b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.errors.txt index eb9f8bdf801..e924c0deb0d 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.errors.txt @@ -1,6 +1,6 @@ overloadOnConstInheritance2.ts(5,11): error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. Types of property 'addEventListener' are incompatible. - Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. + Type '(x: 'bar') => string' is not assignable to type '{ (x: string): any; (x: 'foo'): string; }'. Types of parameters 'x' and 'x' are incompatible. Type '"foo"' is not assignable to type '"bar"'. @@ -14,7 +14,7 @@ overloadOnConstInheritance2.ts(5,11): error TS2430: Interface 'Deriver' incorrec ~~~~~~~ !!! error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'addEventListener' are incompatible. -!!! error TS2430: Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. +!!! error TS2430: Type '(x: 'bar') => string' is not assignable to type '{ (x: string): any; (x: 'foo'): string; }'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type '"foo"' is not assignable to type '"bar"'. addEventListener(x: 'bar'): string; // shouldn't need to redeclare the string overload diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.errors.txt.diff new file mode 100644 index 00000000000..a188069da5f --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.errors.txt.diff @@ -0,0 +1,19 @@ +--- old.overloadOnConstInheritance2.errors.txt ++++ new.overloadOnConstInheritance2.errors.txt +@@= skipped -0, +0 lines =@@ + overloadOnConstInheritance2.ts(5,11): error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. + Types of property 'addEventListener' are incompatible. +- Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. ++ Type '(x: 'bar') => string' is not assignable to type '{ (x: string): any; (x: 'foo'): string; }'. + Types of parameters 'x' and 'x' are incompatible. + Type '"foo"' is not assignable to type '"bar"'. + +@@= skipped -13, +13 lines =@@ + ~~~~~~~ + !!! error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'addEventListener' are incompatible. +-!!! error TS2430: Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. ++!!! error TS2430: Type '(x: 'bar') => string' is not assignable to type '{ (x: string): any; (x: 'foo'): string; }'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type '"foo"' is not assignable to type '"bar"'. + addEventListener(x: 'bar'): string; // shouldn't need to redeclare the string overload \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.types index 7fba76cebb9..3f4c6853bba 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.types @@ -3,16 +3,16 @@ === overloadOnConstInheritance2.ts === interface Base { addEventListener(x: string): any; ->addEventListener : { (x: string): any; (x: "foo"): string; } +>addEventListener : { (x: string): any; (x: 'foo'): string; } >x : string addEventListener(x: 'foo'): string; ->addEventListener : { (x: string): any; (x: "foo"): string; } +>addEventListener : { (x: string): any; (x: 'foo'): string; } >x : "foo" } interface Deriver extends Base { addEventListener(x: 'bar'): string; // shouldn't need to redeclare the string overload ->addEventListener : (x: "bar") => string +>addEventListener : (x: 'bar') => string >x : "bar" } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.types.diff new file mode 100644 index 00000000000..02cf1ad87df --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance2.types.diff @@ -0,0 +1,21 @@ +--- old.overloadOnConstInheritance2.types ++++ new.overloadOnConstInheritance2.types +@@= skipped -2, +2 lines =@@ + === overloadOnConstInheritance2.ts === + interface Base { + addEventListener(x: string): any; +->addEventListener : { (x: string): any; (x: "foo"): string; } ++>addEventListener : { (x: string): any; (x: 'foo'): string; } + >x : string + + addEventListener(x: 'foo'): string; +->addEventListener : { (x: string): any; (x: "foo"): string; } ++>addEventListener : { (x: string): any; (x: 'foo'): string; } + >x : "foo" + } + interface Deriver extends Base { + addEventListener(x: 'bar'): string; // shouldn't need to redeclare the string overload +->addEventListener : (x: "bar") => string ++>addEventListener : (x: 'bar') => string + >x : "bar" + } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance3.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance3.types index e9137848236..0cee2c81afe 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance3.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance3.types @@ -9,11 +9,11 @@ interface Base { interface Deriver extends Base { // shouldn't need to redeclare the string overload addEventListener(x: 'bar'): string; ->addEventListener : { (x: "bar"): string; (x: "foo"): string; } +>addEventListener : { (x: 'bar'): string; (x: 'foo'): string; } >x : "bar" addEventListener(x: 'foo'): string; ->addEventListener : { (x: "bar"): string; (x: "foo"): string; } +>addEventListener : { (x: 'bar'): string; (x: 'foo'): string; } >x : "foo" } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance3.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance3.types.diff new file mode 100644 index 00000000000..ef398360e3c --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance3.types.diff @@ -0,0 +1,15 @@ +--- old.overloadOnConstInheritance3.types ++++ new.overloadOnConstInheritance3.types +@@= skipped -8, +8 lines =@@ + interface Deriver extends Base { + // shouldn't need to redeclare the string overload + addEventListener(x: 'bar'): string; +->addEventListener : { (x: "bar"): string; (x: "foo"): string; } ++>addEventListener : { (x: 'bar'): string; (x: 'foo'): string; } + >x : "bar" + + addEventListener(x: 'foo'): string; +->addEventListener : { (x: "bar"): string; (x: "foo"): string; } ++>addEventListener : { (x: 'bar'): string; (x: 'foo'): string; } + >x : "foo" + } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance4.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance4.types index fd077ef5857..7bb83ef8d65 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance4.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance4.types @@ -3,24 +3,24 @@ === overloadOnConstInheritance4.ts === interface I { x1(a: number, callback: (x: 'hi') => number); ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" } class C implements I { >C : C x1(a: number, callback: (x: 'hi') => number); ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" x1(a: number, callback: (x: 'hi') => number) { ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" } } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance4.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance4.types.diff new file mode 100644 index 00000000000..15fbafd97ca --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstInheritance4.types.diff @@ -0,0 +1,33 @@ +--- old.overloadOnConstInheritance4.types ++++ new.overloadOnConstInheritance4.types +@@= skipped -2, +2 lines =@@ + === overloadOnConstInheritance4.ts === + interface I { + x1(a: number, callback: (x: 'hi') => number); +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + } + class C implements I { + >C : C + + x1(a: number, callback: (x: 'hi') => number); +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + + x1(a: number, callback: (x: 'hi') => number) { +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + } + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation.types index 5b140e12b57..f6dde5a4f76 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation.types @@ -2,19 +2,19 @@ === overloadOnConstNoAnyImplementation.ts === function x1(a: number, cb: (x: 'hi') => number); ->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >a : number ->cb : (x: "hi") => number +>cb : (x: 'hi') => number >x : "hi" function x1(a: number, cb: (x: 'bye') => number); ->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >a : number ->cb : (x: "bye") => number +>cb : (x: 'bye') => number >x : "bye" function x1(a: number, cb: (x: string) => number) { ->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >a : number >cb : (x: string) => number >x : string @@ -58,21 +58,21 @@ var cb: (number) => number = (x: number) => 1; x1(1, cb); >x1(1, cb) : any ->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >1 : 1 >cb : (number: any) => number x1(1, (x: 'hi') => 1); // error >x1(1, (x: 'hi') => 1) : any ->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >1 : 1 ->(x: 'hi') => 1 : (x: "hi") => number +>(x: 'hi') => 1 : (x: 'hi') => number >x : "hi" >1 : 1 x1(1, (x: string) => 1); >x1(1, (x: string) => 1) : any ->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >1 : 1 >(x: string) => 1 : (x: string) => number >x : string diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation.types.diff new file mode 100644 index 00000000000..ab6ab99db2e --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation.types.diff @@ -0,0 +1,53 @@ +--- old.overloadOnConstNoAnyImplementation.types ++++ new.overloadOnConstNoAnyImplementation.types +@@= skipped -1, +1 lines =@@ + + === overloadOnConstNoAnyImplementation.ts === + function x1(a: number, cb: (x: 'hi') => number); +->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >a : number +->cb : (x: "hi") => number ++>cb : (x: 'hi') => number + >x : "hi" + + function x1(a: number, cb: (x: 'bye') => number); +->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >a : number +->cb : (x: "bye") => number ++>cb : (x: 'bye') => number + >x : "bye" + + function x1(a: number, cb: (x: string) => number) { +->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >a : number + >cb : (x: string) => number + >x : string +@@= skipped -56, +56 lines =@@ + + x1(1, cb); + >x1(1, cb) : any +->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >1 : 1 + >cb : (number: any) => number + + x1(1, (x: 'hi') => 1); // error + >x1(1, (x: 'hi') => 1) : any +->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >1 : 1 +->(x: 'hi') => 1 : (x: "hi") => number ++>(x: 'hi') => 1 : (x: 'hi') => number + >x : "hi" + >1 : 1 + + x1(1, (x: string) => 1); + >x1(1, (x: string) => 1) : any +->x1 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x1 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >1 : 1 + >(x: string) => 1 : (x: string) => number + >x : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.errors.txt b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.errors.txt index db79bb48562..a96beb0d35a 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.errors.txt @@ -1,9 +1,9 @@ overloadOnConstNoAnyImplementation2.ts(6,5): error TS2394: This overload signature is not compatible with its implementation signature. overloadOnConstNoAnyImplementation2.ts(12,18): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. -overloadOnConstNoAnyImplementation2.ts(18,9): error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. +overloadOnConstNoAnyImplementation2.ts(18,9): error TS2345: Argument of type '(x: 'bye') => number' is not assignable to parameter of type '(x: 'hi') => number'. Types of parameters 'x' and 'x' are incompatible. Type '"hi"' is not assignable to type '"bye"'. -overloadOnConstNoAnyImplementation2.ts(21,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. +overloadOnConstNoAnyImplementation2.ts(21,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: 'hi') => number'. Types of parameters 'x' and 'x' are incompatible. Type 'string' is not assignable to type 'number'. @@ -33,7 +33,7 @@ overloadOnConstNoAnyImplementation2.ts(21,9): error TS2345: Argument of type '(x c.x1(1, (x: 'hi') => { return 1; } ); c.x1(1, (x: 'bye') => { return 1; } ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. +!!! error TS2345: Argument of type '(x: 'bye') => number' is not assignable to parameter of type '(x: 'hi') => number'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. !!! error TS2345: Type '"hi"' is not assignable to type '"bye"'. !!! related TS2793 overloadOnConstNoAnyImplementation2.ts:7:5: The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible. @@ -41,6 +41,6 @@ overloadOnConstNoAnyImplementation2.ts(21,9): error TS2345: Argument of type '(x c.x1(1, (x: number) => { return 1; } ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. +!!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: 'hi') => number'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. !!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.errors.txt.diff new file mode 100644 index 00000000000..fff62e79897 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.errors.txt.diff @@ -0,0 +1,31 @@ +--- old.overloadOnConstNoAnyImplementation2.errors.txt ++++ new.overloadOnConstNoAnyImplementation2.errors.txt +@@= skipped -0, +0 lines =@@ + overloadOnConstNoAnyImplementation2.ts(6,5): error TS2394: This overload signature is not compatible with its implementation signature. + overloadOnConstNoAnyImplementation2.ts(12,18): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. +-overloadOnConstNoAnyImplementation2.ts(18,9): error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. ++overloadOnConstNoAnyImplementation2.ts(18,9): error TS2345: Argument of type '(x: 'bye') => number' is not assignable to parameter of type '(x: 'hi') => number'. + Types of parameters 'x' and 'x' are incompatible. + Type '"hi"' is not assignable to type '"bye"'. +-overloadOnConstNoAnyImplementation2.ts(21,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. ++overloadOnConstNoAnyImplementation2.ts(21,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: 'hi') => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. + +@@= skipped -32, +32 lines =@@ + c.x1(1, (x: 'hi') => { return 1; } ); + c.x1(1, (x: 'bye') => { return 1; } ); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-!!! error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. ++!!! error TS2345: Argument of type '(x: 'bye') => number' is not assignable to parameter of type '(x: 'hi') => number'. + !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2345: Type '"hi"' is not assignable to type '"bye"'. + !!! related TS2793 overloadOnConstNoAnyImplementation2.ts:7:5: The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible. +@@= skipped -8, +8 lines =@@ + + c.x1(1, (x: number) => { return 1; } ); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-!!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. ++!!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: 'hi') => number'. + !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.types index 402481e7fd6..829115b775f 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.types @@ -3,9 +3,9 @@ === overloadOnConstNoAnyImplementation2.ts === interface I { x1(a: number, callback: (x: 'hi') => number); ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" } @@ -13,13 +13,13 @@ class C { >C : C x1(a: number, callback: (x: 'hi') => number); ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" x1(a: number, callback: (x: string) => number) { ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number >callback : (x: string) => number >x : string @@ -55,29 +55,29 @@ declare var c: C; c.x1(1, (x: 'hi') => { return 1; } ); >c.x1(1, (x: 'hi') => { return 1; } ) : any ->c.x1 : (a: number, callback: (x: "hi") => number) => any +>c.x1 : (a: number, callback: (x: 'hi') => number) => any >c : C ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >1 : 1 ->(x: 'hi') => { return 1; } : (x: "hi") => number +>(x: 'hi') => { return 1; } : (x: 'hi') => number >x : "hi" >1 : 1 c.x1(1, (x: 'bye') => { return 1; } ); >c.x1(1, (x: 'bye') => { return 1; } ) : any ->c.x1 : (a: number, callback: (x: "hi") => number) => any +>c.x1 : (a: number, callback: (x: 'hi') => number) => any >c : C ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >1 : 1 ->(x: 'bye') => { return 1; } : (x: "bye") => number +>(x: 'bye') => { return 1; } : (x: 'bye') => number >x : "bye" >1 : 1 c.x1(1, (x) => { return 1; } ); >c.x1(1, (x) => { return 1; } ) : any ->c.x1 : (a: number, callback: (x: "hi") => number) => any +>c.x1 : (a: number, callback: (x: 'hi') => number) => any >c : C ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >1 : 1 >(x) => { return 1; } : (x: "hi") => number >x : "hi" @@ -85,9 +85,9 @@ c.x1(1, (x) => { return 1; } ); c.x1(1, (x: number) => { return 1; } ); >c.x1(1, (x: number) => { return 1; } ) : any ->c.x1 : (a: number, callback: (x: "hi") => number) => any +>c.x1 : (a: number, callback: (x: 'hi') => number) => any >c : C ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >1 : 1 >(x: number) => { return 1; } : (x: number) => number >x : number diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.types.diff new file mode 100644 index 00000000000..eccc9c33255 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoAnyImplementation2.types.diff @@ -0,0 +1,81 @@ +--- old.overloadOnConstNoAnyImplementation2.types ++++ new.overloadOnConstNoAnyImplementation2.types +@@= skipped -2, +2 lines =@@ + === overloadOnConstNoAnyImplementation2.ts === + interface I { + x1(a: number, callback: (x: 'hi') => number); +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + } + +@@= skipped -10, +10 lines =@@ + >C : C + + x1(a: number, callback: (x: 'hi') => number); +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + + x1(a: number, callback: (x: string) => number) { +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number + >callback : (x: string) => number + >x : string +@@= skipped -42, +42 lines =@@ + + c.x1(1, (x: 'hi') => { return 1; } ); + >c.x1(1, (x: 'hi') => { return 1; } ) : any +->c.x1 : (a: number, callback: (x: "hi") => number) => any ++>c.x1 : (a: number, callback: (x: 'hi') => number) => any + >c : C +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >1 : 1 +->(x: 'hi') => { return 1; } : (x: "hi") => number ++>(x: 'hi') => { return 1; } : (x: 'hi') => number + >x : "hi" + >1 : 1 + + c.x1(1, (x: 'bye') => { return 1; } ); + >c.x1(1, (x: 'bye') => { return 1; } ) : any +->c.x1 : (a: number, callback: (x: "hi") => number) => any ++>c.x1 : (a: number, callback: (x: 'hi') => number) => any + >c : C +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >1 : 1 +->(x: 'bye') => { return 1; } : (x: "bye") => number ++>(x: 'bye') => { return 1; } : (x: 'bye') => number + >x : "bye" + >1 : 1 + + c.x1(1, (x) => { return 1; } ); + >c.x1(1, (x) => { return 1; } ) : any +->c.x1 : (a: number, callback: (x: "hi") => number) => any ++>c.x1 : (a: number, callback: (x: 'hi') => number) => any + >c : C +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >1 : 1 + >(x) => { return 1; } : (x: "hi") => number + >x : "hi" +@@= skipped -30, +30 lines =@@ + + c.x1(1, (x: number) => { return 1; } ); + >c.x1(1, (x: number) => { return 1; } ) : any +->c.x1 : (a: number, callback: (x: "hi") => number) => any ++>c.x1 : (a: number, callback: (x: 'hi') => number) => any + >c : C +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >1 : 1 + >(x: number) => { return 1; } : (x: number) => number + >x : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoNonSpecializedSignature.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoNonSpecializedSignature.types index 16cd40a12de..260759a3a5f 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoNonSpecializedSignature.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoNonSpecializedSignature.types @@ -5,11 +5,11 @@ class C { >C : C x1(a: 'hi'); // error, no non-specialized signature in overload list ->x1 : (a: "hi") => any +>x1 : (a: 'hi') => any >a : "hi" x1(a: string) { } ->x1 : (a: "hi") => any +>x1 : (a: 'hi') => any >a : string } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoNonSpecializedSignature.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoNonSpecializedSignature.types.diff new file mode 100644 index 00000000000..b7eefe1cdf5 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoNonSpecializedSignature.types.diff @@ -0,0 +1,15 @@ +--- old.overloadOnConstNoNonSpecializedSignature.types ++++ new.overloadOnConstNoNonSpecializedSignature.types +@@= skipped -4, +4 lines =@@ + >C : C + + x1(a: 'hi'); // error, no non-specialized signature in overload list +->x1 : (a: "hi") => any ++>x1 : (a: 'hi') => any + >a : "hi" + + x1(a: string) { } +->x1 : (a: "hi") => any ++>x1 : (a: 'hi') => any + >a : string + } diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation.types index 9ef14e59bb0..99417281697 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation.types @@ -2,19 +2,19 @@ === overloadOnConstNoStringImplementation.ts === function x2(a: number, cb: (x: 'hi') => number); ->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >a : number ->cb : (x: "hi") => number +>cb : (x: 'hi') => number >x : "hi" function x2(a: number, cb: (x: 'bye') => number); ->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >a : number ->cb : (x: "bye") => number +>cb : (x: 'bye') => number >x : "bye" function x2(a: number, cb: (x: any) => number) { ->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >a : number >cb : (x: any) => number >x : any @@ -58,21 +58,21 @@ var cb: (number) => number = (x: number) => 1; x2(1, cb); // error >x2(1, cb) : any ->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >1 : 1 >cb : (number: any) => number x2(1, (x: 'hi') => 1); // error >x2(1, (x: 'hi') => 1) : any ->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >1 : 1 ->(x: 'hi') => 1 : (x: "hi") => number +>(x: 'hi') => 1 : (x: 'hi') => number >x : "hi" >1 : 1 x2(1, (x: string) => 1); >x2(1, (x: string) => 1) : any ->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } +>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } >1 : 1 >(x: string) => 1 : (x: string) => number >x : string diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation.types.diff new file mode 100644 index 00000000000..117c7866ee6 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation.types.diff @@ -0,0 +1,53 @@ +--- old.overloadOnConstNoStringImplementation.types ++++ new.overloadOnConstNoStringImplementation.types +@@= skipped -1, +1 lines =@@ + + === overloadOnConstNoStringImplementation.ts === + function x2(a: number, cb: (x: 'hi') => number); +->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >a : number +->cb : (x: "hi") => number ++>cb : (x: 'hi') => number + >x : "hi" + + function x2(a: number, cb: (x: 'bye') => number); +->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >a : number +->cb : (x: "bye") => number ++>cb : (x: 'bye') => number + >x : "bye" + + function x2(a: number, cb: (x: any) => number) { +->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >a : number + >cb : (x: any) => number + >x : any +@@= skipped -56, +56 lines =@@ + + x2(1, cb); // error + >x2(1, cb) : any +->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >1 : 1 + >cb : (number: any) => number + + x2(1, (x: 'hi') => 1); // error + >x2(1, (x: 'hi') => 1) : any +->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >1 : 1 +->(x: 'hi') => 1 : (x: "hi") => number ++>(x: 'hi') => 1 : (x: 'hi') => number + >x : "hi" + >1 : 1 + + x2(1, (x: string) => 1); + >x2(1, (x: string) => 1) : any +->x2 : { (a: number, cb: (x: "hi") => number): any; (a: number, cb: (x: "bye") => number): any; } ++>x2 : { (a: number, cb: (x: 'hi') => number): any; (a: number, cb: (x: 'bye') => number): any; } + >1 : 1 + >(x: string) => 1 : (x: string) => number + >x : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.errors.txt b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.errors.txt index 9b7b8968d1d..aac2be6fca9 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.errors.txt @@ -1,7 +1,7 @@ -overloadOnConstNoStringImplementation2.ts(18,9): error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. +overloadOnConstNoStringImplementation2.ts(18,9): error TS2345: Argument of type '(x: 'bye') => number' is not assignable to parameter of type '(x: 'hi') => number'. Types of parameters 'x' and 'x' are incompatible. Type '"hi"' is not assignable to type '"bye"'. -overloadOnConstNoStringImplementation2.ts(20,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. +overloadOnConstNoStringImplementation2.ts(20,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: 'hi') => number'. Types of parameters 'x' and 'x' are incompatible. Type 'string' is not assignable to type 'number'. @@ -26,14 +26,14 @@ overloadOnConstNoStringImplementation2.ts(20,9): error TS2345: Argument of type c.x1(1, (x: 'hi') => { return 1; } ); c.x1(1, (x: 'bye') => { return 1; } ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. +!!! error TS2345: Argument of type '(x: 'bye') => number' is not assignable to parameter of type '(x: 'hi') => number'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. !!! error TS2345: Type '"hi"' is not assignable to type '"bye"'. !!! related TS2793 overloadOnConstNoStringImplementation2.ts:7:5: The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible. c.x1(1, (x: string) => { return 1; } ); c.x1(1, (x: number) => { return 1; } ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. +!!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: 'hi') => number'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. !!! error TS2345: Type 'string' is not assignable to type 'number'. !!! related TS2793 overloadOnConstNoStringImplementation2.ts:7:5: The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.errors.txt.diff new file mode 100644 index 00000000000..4986d46b324 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.errors.txt.diff @@ -0,0 +1,29 @@ +--- old.overloadOnConstNoStringImplementation2.errors.txt ++++ new.overloadOnConstNoStringImplementation2.errors.txt +@@= skipped -0, +0 lines =@@ +-overloadOnConstNoStringImplementation2.ts(18,9): error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. ++overloadOnConstNoStringImplementation2.ts(18,9): error TS2345: Argument of type '(x: 'bye') => number' is not assignable to parameter of type '(x: 'hi') => number'. + Types of parameters 'x' and 'x' are incompatible. + Type '"hi"' is not assignable to type '"bye"'. +-overloadOnConstNoStringImplementation2.ts(20,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. ++overloadOnConstNoStringImplementation2.ts(20,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: 'hi') => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. + +@@= skipped -25, +25 lines =@@ + c.x1(1, (x: 'hi') => { return 1; } ); + c.x1(1, (x: 'bye') => { return 1; } ); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-!!! error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. ++!!! error TS2345: Argument of type '(x: 'bye') => number' is not assignable to parameter of type '(x: 'hi') => number'. + !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2345: Type '"hi"' is not assignable to type '"bye"'. + !!! related TS2793 overloadOnConstNoStringImplementation2.ts:7:5: The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible. + c.x1(1, (x: string) => { return 1; } ); + c.x1(1, (x: number) => { return 1; } ); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-!!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. ++!!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: 'hi') => number'. + !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2345: Type 'string' is not assignable to type 'number'. + !!! related TS2793 overloadOnConstNoStringImplementation2.ts:7:5: The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.types b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.types index fcfcb97a95c..78a780e8d47 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.types +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.types @@ -3,9 +3,9 @@ === overloadOnConstNoStringImplementation2.ts === interface I { x1(a: number, callback: (x: 'hi') => number); ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" } @@ -13,13 +13,13 @@ class C implements I { >C : C x1(a: number, callback: (x: 'hi') => number); ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number ->callback : (x: "hi") => number +>callback : (x: 'hi') => number >x : "hi" x1(a: number, callback: (x: any) => number) { ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >a : number >callback : (x: any) => number >x : any @@ -55,29 +55,29 @@ declare var c: C; c.x1(1, (x: 'hi') => { return 1; } ); >c.x1(1, (x: 'hi') => { return 1; } ) : any ->c.x1 : (a: number, callback: (x: "hi") => number) => any +>c.x1 : (a: number, callback: (x: 'hi') => number) => any >c : C ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >1 : 1 ->(x: 'hi') => { return 1; } : (x: "hi") => number +>(x: 'hi') => { return 1; } : (x: 'hi') => number >x : "hi" >1 : 1 c.x1(1, (x: 'bye') => { return 1; } ); >c.x1(1, (x: 'bye') => { return 1; } ) : any ->c.x1 : (a: number, callback: (x: "hi") => number) => any +>c.x1 : (a: number, callback: (x: 'hi') => number) => any >c : C ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >1 : 1 ->(x: 'bye') => { return 1; } : (x: "bye") => number +>(x: 'bye') => { return 1; } : (x: 'bye') => number >x : "bye" >1 : 1 c.x1(1, (x: string) => { return 1; } ); >c.x1(1, (x: string) => { return 1; } ) : any ->c.x1 : (a: number, callback: (x: "hi") => number) => any +>c.x1 : (a: number, callback: (x: 'hi') => number) => any >c : C ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >1 : 1 >(x: string) => { return 1; } : (x: string) => number >x : string @@ -85,9 +85,9 @@ c.x1(1, (x: string) => { return 1; } ); c.x1(1, (x: number) => { return 1; } ); >c.x1(1, (x: number) => { return 1; } ) : any ->c.x1 : (a: number, callback: (x: "hi") => number) => any +>c.x1 : (a: number, callback: (x: 'hi') => number) => any >c : C ->x1 : (a: number, callback: (x: "hi") => number) => any +>x1 : (a: number, callback: (x: 'hi') => number) => any >1 : 1 >(x: number) => { return 1; } : (x: number) => number >x : number diff --git a/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.types.diff b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.types.diff new file mode 100644 index 00000000000..5805b5863bc --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadOnConstNoStringImplementation2.types.diff @@ -0,0 +1,81 @@ +--- old.overloadOnConstNoStringImplementation2.types ++++ new.overloadOnConstNoStringImplementation2.types +@@= skipped -2, +2 lines =@@ + === overloadOnConstNoStringImplementation2.ts === + interface I { + x1(a: number, callback: (x: 'hi') => number); +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + } + +@@= skipped -10, +10 lines =@@ + >C : C + + x1(a: number, callback: (x: 'hi') => number); +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number +->callback : (x: "hi") => number ++>callback : (x: 'hi') => number + >x : "hi" + + x1(a: number, callback: (x: any) => number) { +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >a : number + >callback : (x: any) => number + >x : any +@@= skipped -42, +42 lines =@@ + + c.x1(1, (x: 'hi') => { return 1; } ); + >c.x1(1, (x: 'hi') => { return 1; } ) : any +->c.x1 : (a: number, callback: (x: "hi") => number) => any ++>c.x1 : (a: number, callback: (x: 'hi') => number) => any + >c : C +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >1 : 1 +->(x: 'hi') => { return 1; } : (x: "hi") => number ++>(x: 'hi') => { return 1; } : (x: 'hi') => number + >x : "hi" + >1 : 1 + + c.x1(1, (x: 'bye') => { return 1; } ); + >c.x1(1, (x: 'bye') => { return 1; } ) : any +->c.x1 : (a: number, callback: (x: "hi") => number) => any ++>c.x1 : (a: number, callback: (x: 'hi') => number) => any + >c : C +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >1 : 1 +->(x: 'bye') => { return 1; } : (x: "bye") => number ++>(x: 'bye') => { return 1; } : (x: 'bye') => number + >x : "bye" + >1 : 1 + + c.x1(1, (x: string) => { return 1; } ); + >c.x1(1, (x: string) => { return 1; } ) : any +->c.x1 : (a: number, callback: (x: "hi") => number) => any ++>c.x1 : (a: number, callback: (x: 'hi') => number) => any + >c : C +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >1 : 1 + >(x: string) => { return 1; } : (x: string) => number + >x : string +@@= skipped -30, +30 lines =@@ + + c.x1(1, (x: number) => { return 1; } ); + >c.x1(1, (x: number) => { return 1; } ) : any +->c.x1 : (a: number, callback: (x: "hi") => number) => any ++>c.x1 : (a: number, callback: (x: 'hi') => number) => any + >c : C +->x1 : (a: number, callback: (x: "hi") => number) => any ++>x1 : (a: number, callback: (x: 'hi') => number) => any + >1 : 1 + >(x: number) => { return 1; } : (x: number) => number + >x : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadedConstructorFixesInferencesAppropriately.types b/testdata/baselines/reference/submodule/compiler/overloadedConstructorFixesInferencesAppropriately.types index 89bb6a58650..265abeabf75 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadedConstructorFixesInferencesAppropriately.types +++ b/testdata/baselines/reference/submodule/compiler/overloadedConstructorFixesInferencesAppropriately.types @@ -36,7 +36,7 @@ class AsyncLoader { } function load(): Box<{ success: true } | ErrorResult> { ->load : () => Box +>load : () => Box<{ success: true; } | ErrorResult> >success : true >true : true @@ -47,11 +47,11 @@ function load(): Box<{ success: true } | ErrorResult> { new AsyncLoader({ >new AsyncLoader({ asyncLoad: load, children: result => result.success as any,}) : AsyncLoader >AsyncLoader : typeof AsyncLoader ->{ asyncLoad: load, children: result => result.success as any,} : { asyncLoad: () => Box; children: (result: { success: true; }) => any; } +>{ asyncLoad: load, children: result => result.success as any,} : { asyncLoad: () => Box<{ success: true; } | ErrorResult>; children: (result: { success: true; }) => any; } asyncLoad: load, ->asyncLoad : () => Box ->load : () => Box +>asyncLoad : () => Box<{ success: true; } | ErrorResult> +>load : () => Box<{ success: true; } | ErrorResult> children: result => result.success as any, >children : (result: { success: true; }) => any diff --git a/testdata/baselines/reference/submodule/compiler/overloadedConstructorFixesInferencesAppropriately.types.diff b/testdata/baselines/reference/submodule/compiler/overloadedConstructorFixesInferencesAppropriately.types.diff deleted file mode 100644 index d799c46a913..00000000000 --- a/testdata/baselines/reference/submodule/compiler/overloadedConstructorFixesInferencesAppropriately.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.overloadedConstructorFixesInferencesAppropriately.types -+++ new.overloadedConstructorFixesInferencesAppropriately.types -@@= skipped -35, +35 lines =@@ - } - - function load(): Box<{ success: true } | ErrorResult> { -->load : () => Box<{ success: true; } | ErrorResult> -+>load : () => Box - >success : true - >true : true - -@@= skipped -11, +11 lines =@@ - new AsyncLoader({ - >new AsyncLoader({ asyncLoad: load, children: result => result.success as any,}) : AsyncLoader - >AsyncLoader : typeof AsyncLoader -->{ asyncLoad: load, children: result => result.success as any,} : { asyncLoad: () => Box<{ success: true; } | ErrorResult>; children: (result: { success: true; }) => any; } -+>{ asyncLoad: load, children: result => result.success as any,} : { asyncLoad: () => Box; children: (result: { success: true; }) => any; } - - asyncLoad: load, -->asyncLoad : () => Box<{ success: true; } | ErrorResult> -->load : () => Box<{ success: true; } | ErrorResult> -+>asyncLoad : () => Box -+>load : () => Box - - children: result => result.success as any, - >children : (result: { success: true; }) => any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadingOnConstants1.types b/testdata/baselines/reference/submodule/compiler/overloadingOnConstants1.types index 09cdcd51e2f..8b95e0253da 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadingOnConstants1.types +++ b/testdata/baselines/reference/submodule/compiler/overloadingOnConstants1.types @@ -22,19 +22,19 @@ class Derived3 extends Base { biz() { } } interface Document2 { createElement(tagName: 'canvas'): Derived1; ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >tagName : "canvas" createElement(tagName: 'div'): Derived2; ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >tagName : "div" createElement(tagName: 'span'): Derived3; ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >tagName : "span" createElement(tagName: string): Base; ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >tagName : string } @@ -45,65 +45,65 @@ declare var d2: Document2; var htmlElement: Base = d2.createElement("yo") >htmlElement : Base >d2.createElement("yo") : Base ->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >d2 : Document2 ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >"yo" : "yo" var htmlCanvasElement: Derived1 = d2.createElement("canvas"); >htmlCanvasElement : Derived1 >d2.createElement("canvas") : Derived1 ->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >d2 : Document2 ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >"canvas" : "canvas" var htmlDivElement: Derived2 = d2.createElement("div"); >htmlDivElement : Derived2 >d2.createElement("div") : Derived2 ->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >d2 : Document2 ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >"div" : "div" var htmlSpanElement: Derived3 = d2.createElement("span"); >htmlSpanElement : Derived3 >d2.createElement("span") : Derived3 ->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >d2 : Document2 ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >"span" : "span" // these are errors var htmlElement2: Derived1 = d2.createElement("yo") >htmlElement2 : Derived1 >d2.createElement("yo") : Base ->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >d2 : Document2 ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >"yo" : "yo" var htmlCanvasElement2: Derived3 = d2.createElement("canvas"); >htmlCanvasElement2 : Derived3 >d2.createElement("canvas") : Derived1 ->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >d2 : Document2 ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >"canvas" : "canvas" var htmlDivElement2: Derived1 = d2.createElement("div"); >htmlDivElement2 : Derived1 >d2.createElement("div") : Derived2 ->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >d2 : Document2 ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >"div" : "div" var htmlSpanElement2: Derived1 = d2.createElement("span"); >htmlSpanElement2 : Derived1 >d2.createElement("span") : Derived3 ->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >d2 : Document2 ->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } +>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } >"span" : "span" diff --git a/testdata/baselines/reference/submodule/compiler/overloadingOnConstants1.types.diff b/testdata/baselines/reference/submodule/compiler/overloadingOnConstants1.types.diff new file mode 100644 index 00000000000..7a8c6f65163 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadingOnConstants1.types.diff @@ -0,0 +1,107 @@ +--- old.overloadingOnConstants1.types ++++ new.overloadingOnConstants1.types +@@= skipped -21, +21 lines =@@ + + interface Document2 { + createElement(tagName: 'canvas'): Derived1; +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >tagName : "canvas" + + createElement(tagName: 'div'): Derived2; +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >tagName : "div" + + createElement(tagName: 'span'): Derived3; +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >tagName : "span" + + createElement(tagName: string): Base; +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >tagName : string + } + +@@= skipped -23, +23 lines =@@ + var htmlElement: Base = d2.createElement("yo") + >htmlElement : Base + >d2.createElement("yo") : Base +->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >d2 : Document2 +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >"yo" : "yo" + + var htmlCanvasElement: Derived1 = d2.createElement("canvas"); + >htmlCanvasElement : Derived1 + >d2.createElement("canvas") : Derived1 +->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >d2 : Document2 +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >"canvas" : "canvas" + + var htmlDivElement: Derived2 = d2.createElement("div"); + >htmlDivElement : Derived2 + >d2.createElement("div") : Derived2 +->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >d2 : Document2 +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >"div" : "div" + + var htmlSpanElement: Derived3 = d2.createElement("span"); + >htmlSpanElement : Derived3 + >d2.createElement("span") : Derived3 +->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >d2 : Document2 +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >"span" : "span" + + // these are errors + var htmlElement2: Derived1 = d2.createElement("yo") + >htmlElement2 : Derived1 + >d2.createElement("yo") : Base +->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >d2 : Document2 +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >"yo" : "yo" + + var htmlCanvasElement2: Derived3 = d2.createElement("canvas"); + >htmlCanvasElement2 : Derived3 + >d2.createElement("canvas") : Derived1 +->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >d2 : Document2 +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >"canvas" : "canvas" + + var htmlDivElement2: Derived1 = d2.createElement("div"); + >htmlDivElement2 : Derived1 + >d2.createElement("div") : Derived2 +->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >d2 : Document2 +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >"div" : "div" + + var htmlSpanElement2: Derived1 = d2.createElement("span"); + >htmlSpanElement2 : Derived1 + >d2.createElement("span") : Derived3 +->d2.createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>d2.createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >d2 : Document2 +->createElement : { (tagName: "canvas"): Derived1; (tagName: "div"): Derived2; (tagName: "span"): Derived3; (tagName: string): Base; } ++>createElement : { (tagName: 'canvas'): Derived1; (tagName: 'div'): Derived2; (tagName: 'span'): Derived3; (tagName: string): Base; } + >"span" : "span" diff --git a/testdata/baselines/reference/submodule/compiler/overloadingOnConstantsInImplementation.types b/testdata/baselines/reference/submodule/compiler/overloadingOnConstantsInImplementation.types index cb6475d55d4..b1bb9de4c90 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadingOnConstantsInImplementation.types +++ b/testdata/baselines/reference/submodule/compiler/overloadingOnConstantsInImplementation.types @@ -2,17 +2,17 @@ === overloadingOnConstantsInImplementation.ts === function foo(a: 'hi', x: string); ->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } +>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } >a : "hi" >x : string function foo(a: 'hi', x: string); ->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } +>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } >a : "hi" >x : string function foo(a: 'hi', x: any) { ->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } +>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } >a : "hi" >x : any } diff --git a/testdata/baselines/reference/submodule/compiler/overloadingOnConstantsInImplementation.types.diff b/testdata/baselines/reference/submodule/compiler/overloadingOnConstantsInImplementation.types.diff new file mode 100644 index 00000000000..36e877d1caf --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/overloadingOnConstantsInImplementation.types.diff @@ -0,0 +1,23 @@ +--- old.overloadingOnConstantsInImplementation.types ++++ new.overloadingOnConstantsInImplementation.types +@@= skipped -1, +1 lines =@@ + + === overloadingOnConstantsInImplementation.ts === + function foo(a: 'hi', x: string); +->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } ++>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } + >a : "hi" + >x : string + + function foo(a: 'hi', x: string); +->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } ++>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } + >a : "hi" + >x : string + + function foo(a: 'hi', x: any) { +->foo : { (a: "hi", x: string): any; (a: "hi", x: string): any; } ++>foo : { (a: 'hi', x: string): any; (a: 'hi', x: string): any; } + >a : "hi" + >x : any + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/overloadsWithComputedNames.types b/testdata/baselines/reference/submodule/compiler/overloadsWithComputedNames.types index 2882cf3dc3a..0b651c6eb0a 100644 --- a/testdata/baselines/reference/submodule/compiler/overloadsWithComputedNames.types +++ b/testdata/baselines/reference/submodule/compiler/overloadsWithComputedNames.types @@ -11,7 +11,7 @@ class Person { >a : number ["A"](a: string|number): number | string { ->["A"] : (a: string | number) => string | number +>["A"] : (a: string | number) => number | string >"A" : "A" >a : string | number @@ -26,9 +26,9 @@ let p = new Person(); p.A(0) >p.A(0) : string | number ->p.A : (a: string | number) => string | number +>p.A : (a: string | number) => number | string >p : Person ->A : (a: string | number) => string | number +>A : (a: string | number) => number | string >0 : 0 p.B(0) diff --git a/testdata/baselines/reference/submodule/compiler/overloadsWithComputedNames.types.diff b/testdata/baselines/reference/submodule/compiler/overloadsWithComputedNames.types.diff deleted file mode 100644 index f7de23d4364..00000000000 --- a/testdata/baselines/reference/submodule/compiler/overloadsWithComputedNames.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.overloadsWithComputedNames.types -+++ new.overloadsWithComputedNames.types -@@= skipped -10, +10 lines =@@ - >a : number - - ["A"](a: string|number): number | string { -->["A"] : (a: string | number) => number | string -+>["A"] : (a: string | number) => string | number - >"A" : "A" - >a : string | number - -@@= skipped -15, +15 lines =@@ - - p.A(0) - >p.A(0) : string | number -->p.A : (a: string | number) => number | string -+>p.A : (a: string | number) => string | number - >p : Person -->A : (a: string | number) => number | string -+>A : (a: string | number) => string | number - >0 : 0 - - p.B(0) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.js b/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.js index c4260f78391..90d5ce9248f 100644 --- a/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.js +++ b/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.js @@ -21,7 +21,7 @@ fn2({ headers: { foo: 1 } }); //// [parameterDestructuringObjectLiteral.d.ts] declare const fn1: (options: { - headers?: {} | undefined; + headers?: {}; }) => void; declare const fn2: ({ headers }: { headers?: {} | undefined; diff --git a/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.js.diff b/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.js.diff deleted file mode 100644 index 35495c8c189..00000000000 --- a/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.parameterDestructuringObjectLiteral.js -+++ new.parameterDestructuringObjectLiteral.js -@@= skipped -20, +20 lines =@@ - - //// [parameterDestructuringObjectLiteral.d.ts] - declare const fn1: (options: { -- headers?: {}; -+ headers?: {} | undefined; - }) => void; - declare const fn2: ({ headers }: { - headers?: {} | undefined; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.types b/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.types index ced94af78d0..25295f2f0eb 100644 --- a/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.types +++ b/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.types @@ -4,14 +4,14 @@ // Repro from #22644 const fn1 = (options: { headers?: {} }) => { }; ->fn1 : (options: { headers?: {} | undefined; }) => void ->(options: { headers?: {} }) => { } : (options: { headers?: {} | undefined; }) => void ->options : { headers?: {} | undefined; } +>fn1 : (options: { headers?: {}; }) => void +>(options: { headers?: {} }) => { } : (options: { headers?: {}; }) => void +>options : { headers?: {}; } >headers : {} | undefined fn1({ headers: { foo: 1 } }); >fn1({ headers: { foo: 1 } }) : void ->fn1 : (options: { headers?: {} | undefined; }) => void +>fn1 : (options: { headers?: {}; }) => void >{ headers: { foo: 1 } } : { headers: { foo: number; }; } >headers : { foo: number; } >{ foo: 1 } : { foo: number; } diff --git a/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.types.diff b/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.types.diff deleted file mode 100644 index 622b9cb3cff..00000000000 --- a/testdata/baselines/reference/submodule/compiler/parameterDestructuringObjectLiteral.types.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.parameterDestructuringObjectLiteral.types -+++ new.parameterDestructuringObjectLiteral.types -@@= skipped -3, +3 lines =@@ - // Repro from #22644 - - const fn1 = (options: { headers?: {} }) => { }; -->fn1 : (options: { headers?: {}; }) => void -->(options: { headers?: {} }) => { } : (options: { headers?: {}; }) => void -->options : { headers?: {}; } -+>fn1 : (options: { headers?: {} | undefined; }) => void -+>(options: { headers?: {} }) => { } : (options: { headers?: {} | undefined; }) => void -+>options : { headers?: {} | undefined; } - >headers : {} | undefined - - fn1({ headers: { foo: 1 } }); - >fn1({ headers: { foo: 1 } }) : void -->fn1 : (options: { headers?: {}; }) => void -+>fn1 : (options: { headers?: {} | undefined; }) => void - >{ headers: { foo: 1 } } : { headers: { foo: number; }; } - >headers : { foo: number; } - >{ foo: 1 } : { foo: number; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/parameterNamesInTypeParameterList.types b/testdata/baselines/reference/submodule/compiler/parameterNamesInTypeParameterList.types index a6d7ff34b43..b296a9b37d8 100644 --- a/testdata/baselines/reference/submodule/compiler/parameterNamesInTypeParameterList.types +++ b/testdata/baselines/reference/submodule/compiler/parameterNamesInTypeParameterList.types @@ -2,7 +2,7 @@ === parameterNamesInTypeParameterList.ts === function f0(a: T) { ->f0 : (a: T) => void +>f0 : (a: T) => void >a : any >a : T @@ -13,7 +13,7 @@ function f0(a: T) { } function f1({a}: {a:T}) { ->f1 : ({ a }: { a: T; }) => void +>f1 : ({ a }: { a: T; }) => void >a : any >a : T >a : T @@ -25,7 +25,7 @@ function f1({a}: {a:T}) { } function f2([a]: T[]) { ->f2 : ([a]: T[]) => void +>f2 : ([a]: T[]) => void >a : any >a : T @@ -39,7 +39,7 @@ class A { >A : A m0(a: T) { ->m0 : (a: T) => void +>m0 : (a: T) => void >a : any >a : T @@ -49,7 +49,7 @@ class A { >b : any } m1({a}: {a:T}) { ->m1 : ({ a }: { a: T; }) => void +>m1 : ({ a }: { a: T; }) => void >a : any >a : T >a : T @@ -60,7 +60,7 @@ class A { >b : any } m2([a]: T[]) { ->m2 : ([a]: T[]) => void +>m2 : ([a]: T[]) => void >a : any >a : T diff --git a/testdata/baselines/reference/submodule/compiler/parameterNamesInTypeParameterList.types.diff b/testdata/baselines/reference/submodule/compiler/parameterNamesInTypeParameterList.types.diff deleted file mode 100644 index 21ea1801132..00000000000 --- a/testdata/baselines/reference/submodule/compiler/parameterNamesInTypeParameterList.types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.parameterNamesInTypeParameterList.types -+++ new.parameterNamesInTypeParameterList.types -@@= skipped -1, +1 lines =@@ - - === parameterNamesInTypeParameterList.ts === - function f0(a: T) { -->f0 : (a: T) => void -+>f0 : (a: T) => void - >a : any - >a : T - -@@= skipped -11, +11 lines =@@ - } - - function f1({a}: {a:T}) { -->f1 : ({ a }: { a: T; }) => void -+>f1 : ({ a }: { a: T; }) => void - >a : any - >a : T - >a : T -@@= skipped -12, +12 lines =@@ - } - - function f2([a]: T[]) { -->f2 : ([a]: T[]) => void -+>f2 : ([a]: T[]) => void - >a : any - >a : T - -@@= skipped -14, +14 lines =@@ - >A : A - - m0(a: T) { -->m0 : (a: T) => void -+>m0 : (a: T) => void - >a : any - >a : T - -@@= skipped -10, +10 lines =@@ - >b : any - } - m1({a}: {a:T}) { -->m1 : ({ a }: { a: T; }) => void -+>m1 : ({ a }: { a: T; }) => void - >a : any - >a : T - >a : T -@@= skipped -11, +11 lines =@@ - >b : any - } - m2([a]: T[]) { -->m2 : ([a]: T[]) => void -+>m2 : ([a]: T[]) => void - >a : any - >a : T diff --git a/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt b/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt index ec6427e1b9f..c665a39edcd 100644 --- a/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt @@ -1,9 +1,9 @@ -paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.ts(27,23): error TS2345: Argument of type '{ x?: number[] | undefined; y?: string[] | undefined; }' is not assignable to parameter of type '{ y?: number[] | undefined; }'. +paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.ts(27,23): error TS2345: Argument of type '{ x?: number[]; y?: string[]; }' is not assignable to parameter of type '{ y?: number[] | undefined; }'. Types of property 'y' are incompatible. Type 'string[] | undefined' is not assignable to type 'number[] | undefined'. Type 'string[]' is not assignable to type 'number[]'. Type 'string' is not assignable to type 'number'. -paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.ts(28,23): error TS2345: Argument of type '{ x?: number[] | undefined; y?: string[] | undefined; }' is not assignable to parameter of type '{ x?: string[] | undefined; }'. +paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.ts(28,23): error TS2345: Argument of type '{ x?: number[]; y?: string[]; }' is not assignable to parameter of type '{ x?: string[] | undefined; }'. Types of property 'x' are incompatible. Type 'number[] | undefined' is not assignable to type 'string[] | undefined'. Type 'number[]' is not assignable to type 'string[]'. @@ -39,14 +39,14 @@ paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.ts(28,23): error TS234 appendToOptionalArray(foo, 'y', 'bar'); // ok appendToOptionalArray(foo, 'y', 12); // should fail ~~~ -!!! error TS2345: Argument of type '{ x?: number[] | undefined; y?: string[] | undefined; }' is not assignable to parameter of type '{ y?: number[] | undefined; }'. +!!! error TS2345: Argument of type '{ x?: number[]; y?: string[]; }' is not assignable to parameter of type '{ y?: number[] | undefined; }'. !!! error TS2345: Types of property 'y' are incompatible. !!! error TS2345: Type 'string[] | undefined' is not assignable to type 'number[] | undefined'. !!! error TS2345: Type 'string[]' is not assignable to type 'number[]'. !!! error TS2345: Type 'string' is not assignable to type 'number'. appendToOptionalArray(foo, 'x', "no"); // should fail ~~~ -!!! error TS2345: Argument of type '{ x?: number[] | undefined; y?: string[] | undefined; }' is not assignable to parameter of type '{ x?: string[] | undefined; }'. +!!! error TS2345: Argument of type '{ x?: number[]; y?: string[]; }' is not assignable to parameter of type '{ x?: string[] | undefined; }'. !!! error TS2345: Types of property 'x' are incompatible. !!! error TS2345: Type 'number[] | undefined' is not assignable to type 'string[] | undefined'. !!! error TS2345: Type 'number[]' is not assignable to type 'string[]'. diff --git a/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt.diff new file mode 100644 index 00000000000..8e9a7791db9 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt.diff @@ -0,0 +1,31 @@ +--- old.paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt ++++ new.paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.errors.txt +@@= skipped -0, +0 lines =@@ +-paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.ts(27,23): error TS2345: Argument of type '{ x?: number[] | undefined; y?: string[] | undefined; }' is not assignable to parameter of type '{ y?: number[] | undefined; }'. ++paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.ts(27,23): error TS2345: Argument of type '{ x?: number[]; y?: string[]; }' is not assignable to parameter of type '{ y?: number[] | undefined; }'. + Types of property 'y' are incompatible. + Type 'string[] | undefined' is not assignable to type 'number[] | undefined'. + Type 'string[]' is not assignable to type 'number[]'. + Type 'string' is not assignable to type 'number'. +-paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.ts(28,23): error TS2345: Argument of type '{ x?: number[] | undefined; y?: string[] | undefined; }' is not assignable to parameter of type '{ x?: string[] | undefined; }'. ++paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.ts(28,23): error TS2345: Argument of type '{ x?: number[]; y?: string[]; }' is not assignable to parameter of type '{ x?: string[] | undefined; }'. + Types of property 'x' are incompatible. + Type 'number[] | undefined' is not assignable to type 'string[] | undefined'. + Type 'number[]' is not assignable to type 'string[]'. +@@= skipped -38, +38 lines =@@ + appendToOptionalArray(foo, 'y', 'bar'); // ok + appendToOptionalArray(foo, 'y', 12); // should fail + ~~~ +-!!! error TS2345: Argument of type '{ x?: number[] | undefined; y?: string[] | undefined; }' is not assignable to parameter of type '{ y?: number[] | undefined; }'. ++!!! error TS2345: Argument of type '{ x?: number[]; y?: string[]; }' is not assignable to parameter of type '{ y?: number[] | undefined; }'. + !!! error TS2345: Types of property 'y' are incompatible. + !!! error TS2345: Type 'string[] | undefined' is not assignable to type 'number[] | undefined'. + !!! error TS2345: Type 'string[]' is not assignable to type 'number[]'. + !!! error TS2345: Type 'string' is not assignable to type 'number'. + appendToOptionalArray(foo, 'x', "no"); // should fail + ~~~ +-!!! error TS2345: Argument of type '{ x?: number[] | undefined; y?: string[] | undefined; }' is not assignable to parameter of type '{ x?: string[] | undefined; }'. ++!!! error TS2345: Argument of type '{ x?: number[]; y?: string[]; }' is not assignable to parameter of type '{ x?: string[] | undefined; }'. + !!! error TS2345: Types of property 'x' are incompatible. + !!! error TS2345: Type 'number[] | undefined' is not assignable to type 'string[] | undefined'. + !!! error TS2345: Type 'number[]' is not assignable to type 'string[]'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types b/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types index f45353a2b02..8e5be99ed91 100644 --- a/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types +++ b/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types @@ -9,7 +9,7 @@ type Lower = { [K in keyof T]: T[K] }; >Lower : Lower export function appendToOptionalArray< ->appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void K extends string | number | symbol, T @@ -53,36 +53,36 @@ export function appendToOptionalArray< // e.g. const foo: {x?: number[]; y?: string[]; } = {}; ->foo : { x?: number[] | undefined; y?: string[] | undefined; } +>foo : { x?: number[]; y?: string[]; } >x : number[] | undefined >y : string[] | undefined >{} : {} appendToOptionalArray(foo, 'x', 123); // ok >appendToOptionalArray(foo, 'x', 123) : void ->appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void ->foo : { x?: number[] | undefined; y?: string[] | undefined; } +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void +>foo : { x?: number[]; y?: string[]; } >'x' : "x" >123 : 123 appendToOptionalArray(foo, 'y', 'bar'); // ok >appendToOptionalArray(foo, 'y', 'bar') : void ->appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void ->foo : { x?: number[] | undefined; y?: string[] | undefined; } +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void +>foo : { x?: number[]; y?: string[]; } >'y' : "y" >'bar' : "bar" appendToOptionalArray(foo, 'y', 12); // should fail >appendToOptionalArray(foo, 'y', 12) : void ->appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void ->foo : { x?: number[] | undefined; y?: string[] | undefined; } +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void +>foo : { x?: number[]; y?: string[]; } >'y' : "y" >12 : 12 appendToOptionalArray(foo, 'x', "no"); // should fail >appendToOptionalArray(foo, 'x', "no") : void ->appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void ->foo : { x?: number[] | undefined; y?: string[] | undefined; } +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void +>foo : { x?: number[]; y?: string[]; } >'x' : "x" >"no" : "no" diff --git a/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types.diff b/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types.diff deleted file mode 100644 index 2795f9ca564..00000000000 --- a/testdata/baselines/reference/submodule/compiler/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types -+++ new.paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types -@@= skipped -8, +8 lines =@@ - >Lower : Lower - - export function appendToOptionalArray< -->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -+>appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void - - K extends string | number | symbol, - T -@@= skipped -44, +44 lines =@@ - - // e.g. - const foo: {x?: number[]; y?: string[]; } = {}; -->foo : { x?: number[]; y?: string[]; } -+>foo : { x?: number[] | undefined; y?: string[] | undefined; } - >x : number[] | undefined - >y : string[] | undefined - >{} : {} - - appendToOptionalArray(foo, 'x', 123); // ok - >appendToOptionalArray(foo, 'x', 123) : void -->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -->foo : { x?: number[]; y?: string[]; } -+>appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void -+>foo : { x?: number[] | undefined; y?: string[] | undefined; } - >'x' : "x" - >123 : 123 - - appendToOptionalArray(foo, 'y', 'bar'); // ok - >appendToOptionalArray(foo, 'y', 'bar') : void -->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -->foo : { x?: number[]; y?: string[]; } -+>appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void -+>foo : { x?: number[] | undefined; y?: string[] | undefined; } - >'y' : "y" - >'bar' : "bar" - - appendToOptionalArray(foo, 'y', 12); // should fail - >appendToOptionalArray(foo, 'y', 12) : void -->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -->foo : { x?: number[]; y?: string[]; } -+>appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void -+>foo : { x?: number[] | undefined; y?: string[] | undefined; } - >'y' : "y" - >12 : 12 - - appendToOptionalArray(foo, 'x', "no"); // should fail - >appendToOptionalArray(foo, 'x', "no") : void -->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -->foo : { x?: number[]; y?: string[]; } -+>appendToOptionalArray : (object: { [x in K]?: Lower[] | undefined; }, key: K, value: T) => void -+>foo : { x?: number[] | undefined; y?: string[] | undefined; } - >'x' : "x" - >"no" : "no" diff --git a/testdata/baselines/reference/submodule/compiler/parseArrowFunctionWithFunctionReturnType.types b/testdata/baselines/reference/submodule/compiler/parseArrowFunctionWithFunctionReturnType.types index 9454f587f2f..69aa9e1b8b3 100644 --- a/testdata/baselines/reference/submodule/compiler/parseArrowFunctionWithFunctionReturnType.types +++ b/testdata/baselines/reference/submodule/compiler/parseArrowFunctionWithFunctionReturnType.types @@ -2,7 +2,7 @@ === parseArrowFunctionWithFunctionReturnType.ts === const fn = (): (() => T) => null as any; ->fn : () => () => T ->(): (() => T) => null as any : () => () => T +>fn : () => (() => T) +>(): (() => T) => null as any : () => (() => T) >null as any : any diff --git a/testdata/baselines/reference/submodule/compiler/parseArrowFunctionWithFunctionReturnType.types.diff b/testdata/baselines/reference/submodule/compiler/parseArrowFunctionWithFunctionReturnType.types.diff deleted file mode 100644 index 7b797103176..00000000000 --- a/testdata/baselines/reference/submodule/compiler/parseArrowFunctionWithFunctionReturnType.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.parseArrowFunctionWithFunctionReturnType.types -+++ new.parseArrowFunctionWithFunctionReturnType.types -@@= skipped -1, +1 lines =@@ - - === parseArrowFunctionWithFunctionReturnType.ts === - const fn = (): (() => T) => null as any; -->fn : () => (() => T) -->(): (() => T) => null as any : () => (() => T) -+>fn : () => () => T -+>(): (() => T) => null as any : () => () => T - >null as any : any diff --git a/testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.js b/testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.js index 95b0b4e7641..f15c3e2b748 100644 --- a/testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.js +++ b/testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.js @@ -44,5 +44,5 @@ ImportInterface; //// [index.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); diff --git a/testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.js.diff b/testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.js.diff deleted file mode 100644 index 4d584aa61c1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.js.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.parseAssertEntriesError.js -+++ new.parseAssertEntriesError.js -@@= skipped -43, +43 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/parseBigInt.types b/testdata/baselines/reference/submodule/compiler/parseBigInt.types index 2f2d93b457f..2cb9fd35df6 100644 --- a/testdata/baselines/reference/submodule/compiler/parseBigInt.types +++ b/testdata/baselines/reference/submodule/compiler/parseBigInt.types @@ -218,8 +218,8 @@ const doubleSeparator = 123_456__789n; // Using literals as types const oneTwoOrThree = (x: 1n | 2n | 3n): bigint => x ** 2n; ->oneTwoOrThree : (x: 1n | 3n | 2n) => bigint ->(x: 1n | 2n | 3n): bigint => x ** 2n : (x: 1n | 3n | 2n) => bigint +>oneTwoOrThree : (x: 1n | 2n | 3n) => bigint +>(x: 1n | 2n | 3n): bigint => x ** 2n : (x: 1n | 2n | 3n) => bigint >x : 1n | 3n | 2n >x ** 2n : bigint >x : 1n | 3n | 2n @@ -227,29 +227,29 @@ const oneTwoOrThree = (x: 1n | 2n | 3n): bigint => x ** 2n; oneTwoOrThree(0n); oneTwoOrThree(1n); oneTwoOrThree(2n); oneTwoOrThree(3n); >oneTwoOrThree(0n) : bigint ->oneTwoOrThree : (x: 1n | 3n | 2n) => bigint +>oneTwoOrThree : (x: 1n | 2n | 3n) => bigint >0n : 0n >oneTwoOrThree(1n) : bigint ->oneTwoOrThree : (x: 1n | 3n | 2n) => bigint +>oneTwoOrThree : (x: 1n | 2n | 3n) => bigint >1n : 1n >oneTwoOrThree(2n) : bigint ->oneTwoOrThree : (x: 1n | 3n | 2n) => bigint +>oneTwoOrThree : (x: 1n | 2n | 3n) => bigint >2n : 2n >oneTwoOrThree(3n) : bigint ->oneTwoOrThree : (x: 1n | 3n | 2n) => bigint +>oneTwoOrThree : (x: 1n | 2n | 3n) => bigint >3n : 3n oneTwoOrThree(0); oneTwoOrThree(1); oneTwoOrThree(2); oneTwoOrThree(3); >oneTwoOrThree(0) : bigint ->oneTwoOrThree : (x: 1n | 3n | 2n) => bigint +>oneTwoOrThree : (x: 1n | 2n | 3n) => bigint >0 : 0 >oneTwoOrThree(1) : bigint ->oneTwoOrThree : (x: 1n | 3n | 2n) => bigint +>oneTwoOrThree : (x: 1n | 2n | 3n) => bigint >1 : 1 >oneTwoOrThree(2) : bigint ->oneTwoOrThree : (x: 1n | 3n | 2n) => bigint +>oneTwoOrThree : (x: 1n | 2n | 3n) => bigint >2 : 2 >oneTwoOrThree(3) : bigint ->oneTwoOrThree : (x: 1n | 3n | 2n) => bigint +>oneTwoOrThree : (x: 1n | 2n | 3n) => bigint >3 : 3 diff --git a/testdata/baselines/reference/submodule/compiler/parseBigInt.types.diff b/testdata/baselines/reference/submodule/compiler/parseBigInt.types.diff deleted file mode 100644 index c62f741a54c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/parseBigInt.types.diff +++ /dev/null @@ -1,50 +0,0 @@ ---- old.parseBigInt.types -+++ new.parseBigInt.types -@@= skipped -217, +217 lines =@@ - - // Using literals as types - const oneTwoOrThree = (x: 1n | 2n | 3n): bigint => x ** 2n; -->oneTwoOrThree : (x: 1n | 2n | 3n) => bigint -->(x: 1n | 2n | 3n): bigint => x ** 2n : (x: 1n | 2n | 3n) => bigint -+>oneTwoOrThree : (x: 1n | 3n | 2n) => bigint -+>(x: 1n | 2n | 3n): bigint => x ** 2n : (x: 1n | 3n | 2n) => bigint - >x : 1n | 3n | 2n - >x ** 2n : bigint - >x : 1n | 3n | 2n -@@= skipped -9, +9 lines =@@ - - oneTwoOrThree(0n); oneTwoOrThree(1n); oneTwoOrThree(2n); oneTwoOrThree(3n); - >oneTwoOrThree(0n) : bigint -->oneTwoOrThree : (x: 1n | 2n | 3n) => bigint -+>oneTwoOrThree : (x: 1n | 3n | 2n) => bigint - >0n : 0n - >oneTwoOrThree(1n) : bigint -->oneTwoOrThree : (x: 1n | 2n | 3n) => bigint -+>oneTwoOrThree : (x: 1n | 3n | 2n) => bigint - >1n : 1n - >oneTwoOrThree(2n) : bigint -->oneTwoOrThree : (x: 1n | 2n | 3n) => bigint -+>oneTwoOrThree : (x: 1n | 3n | 2n) => bigint - >2n : 2n - >oneTwoOrThree(3n) : bigint -->oneTwoOrThree : (x: 1n | 2n | 3n) => bigint -+>oneTwoOrThree : (x: 1n | 3n | 2n) => bigint - >3n : 3n - - oneTwoOrThree(0); oneTwoOrThree(1); oneTwoOrThree(2); oneTwoOrThree(3); - >oneTwoOrThree(0) : bigint -->oneTwoOrThree : (x: 1n | 2n | 3n) => bigint -+>oneTwoOrThree : (x: 1n | 3n | 2n) => bigint - >0 : 0 - >oneTwoOrThree(1) : bigint -->oneTwoOrThree : (x: 1n | 2n | 3n) => bigint -+>oneTwoOrThree : (x: 1n | 3n | 2n) => bigint - >1 : 1 - >oneTwoOrThree(2) : bigint -->oneTwoOrThree : (x: 1n | 2n | 3n) => bigint -+>oneTwoOrThree : (x: 1n | 3n | 2n) => bigint - >2 : 2 - >oneTwoOrThree(3) : bigint -->oneTwoOrThree : (x: 1n | 2n | 3n) => bigint -+>oneTwoOrThree : (x: 1n | 3n | 2n) => bigint - >3 : 3 diff --git a/testdata/baselines/reference/submodule/compiler/parseImportAttributesError.js b/testdata/baselines/reference/submodule/compiler/parseImportAttributesError.js index d2de9a505d0..9d4ae21485c 100644 --- a/testdata/baselines/reference/submodule/compiler/parseImportAttributesError.js +++ b/testdata/baselines/reference/submodule/compiler/parseImportAttributesError.js @@ -47,5 +47,5 @@ ImportInterface; //// [index.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); diff --git a/testdata/baselines/reference/submodule/compiler/parseImportAttributesError.js.diff b/testdata/baselines/reference/submodule/compiler/parseImportAttributesError.js.diff deleted file mode 100644 index ca5c2e575fd..00000000000 --- a/testdata/baselines/reference/submodule/compiler/parseImportAttributesError.js.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.parseImportAttributesError.js -+++ new.parseImportAttributesError.js -@@= skipped -46, +46 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/predicateSemantics.types b/testdata/baselines/reference/submodule/compiler/predicateSemantics.types index 3580a9f8302..acfef2c6b15 100644 --- a/testdata/baselines/reference/submodule/compiler/predicateSemantics.types +++ b/testdata/baselines/reference/submodule/compiler/predicateSemantics.types @@ -254,7 +254,7 @@ console.log((cond || undefined) && 1 / cond); >cond : any function foo(this: Object | undefined) { ->foo : (this: Object) => 0 | Object +>foo : (this: Object | undefined) => 0 | Object >this : Object // Should be OK @@ -323,7 +323,7 @@ class X { // https://github.com/microsoft/TypeScript/issues/60614 declare function tag( ->tag : (strings: TemplateStringsArray, ...values: number[]) => T +>tag : (strings: TemplateStringsArray, ...values: number[]) => T | null strings: TemplateStringsArray, >strings : TemplateStringsArray @@ -336,7 +336,7 @@ declare function tag( tag`foo${1}` ?? 32; // ok >tag`foo${1}` ?? 32 : unknown >tag`foo${1}` : unknown ->tag : (strings: TemplateStringsArray, ...values: number[]) => T +>tag : (strings: TemplateStringsArray, ...values: number[]) => T | null >`foo${1}` : string >1 : 1 >32 : 32 diff --git a/testdata/baselines/reference/submodule/compiler/predicateSemantics.types.diff b/testdata/baselines/reference/submodule/compiler/predicateSemantics.types.diff deleted file mode 100644 index 3b47ff8467c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/predicateSemantics.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.predicateSemantics.types -+++ new.predicateSemantics.types -@@= skipped -253, +253 lines =@@ - >cond : any - - function foo(this: Object | undefined) { -->foo : (this: Object | undefined) => 0 | Object -+>foo : (this: Object) => 0 | Object - >this : Object - - // Should be OK -@@= skipped -69, +69 lines =@@ - - // https://github.com/microsoft/TypeScript/issues/60614 - declare function tag( -->tag : (strings: TemplateStringsArray, ...values: number[]) => T | null -+>tag : (strings: TemplateStringsArray, ...values: number[]) => T - - strings: TemplateStringsArray, - >strings : TemplateStringsArray -@@= skipped -13, +13 lines =@@ - tag`foo${1}` ?? 32; // ok - >tag`foo${1}` ?? 32 : unknown - >tag`foo${1}` : unknown -->tag : (strings: TemplateStringsArray, ...values: number[]) => T | null -+>tag : (strings: TemplateStringsArray, ...values: number[]) => T - >`foo${1}` : string - >1 : 1 - >32 : 32 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/primitiveUnionDetection.types b/testdata/baselines/reference/submodule/compiler/primitiveUnionDetection.types index c0658f9c03f..dfb0a8feb10 100644 --- a/testdata/baselines/reference/submodule/compiler/primitiveUnionDetection.types +++ b/testdata/baselines/reference/submodule/compiler/primitiveUnionDetection.types @@ -7,15 +7,15 @@ type Kind = "one" | "two" | "three"; >Kind : Kind declare function getInterfaceFromString(options?: { type?: T } & { type?: Kind }): T; ->getInterfaceFromString : (options?: ({ type?: T | undefined; } & { type?: Kind | undefined; }) | undefined) => T ->options : ({ type?: T | undefined; } & { type?: Kind | undefined; }) | undefined +>getInterfaceFromString : (options?: { type?: T; } & { type?: Kind; }) => T +>options : ({ type?: T; } & { type?: Kind; }) | undefined >type : T | undefined >type : Kind | undefined const result = getInterfaceFromString({ type: 'two' }); >result : "two" >getInterfaceFromString({ type: 'two' }) : "two" ->getInterfaceFromString : (options?: ({ type?: T | undefined; } & { type?: Kind | undefined; }) | undefined) => T +>getInterfaceFromString : (options?: { type?: T; } & { type?: Kind; }) => T >{ type: 'two' } : { type: "two"; } >type : "two" >'two' : "two" diff --git a/testdata/baselines/reference/submodule/compiler/primitiveUnionDetection.types.diff b/testdata/baselines/reference/submodule/compiler/primitiveUnionDetection.types.diff deleted file mode 100644 index 339a560164c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/primitiveUnionDetection.types.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.primitiveUnionDetection.types -+++ new.primitiveUnionDetection.types -@@= skipped -6, +6 lines =@@ - >Kind : Kind - - declare function getInterfaceFromString(options?: { type?: T } & { type?: Kind }): T; -->getInterfaceFromString : (options?: { type?: T; } & { type?: Kind; }) => T -->options : ({ type?: T; } & { type?: Kind; }) | undefined -+>getInterfaceFromString : (options?: ({ type?: T | undefined; } & { type?: Kind | undefined; }) | undefined) => T -+>options : ({ type?: T | undefined; } & { type?: Kind | undefined; }) | undefined - >type : T | undefined - >type : Kind | undefined - - const result = getInterfaceFromString({ type: 'two' }); - >result : "two" - >getInterfaceFromString({ type: 'two' }) : "two" -->getInterfaceFromString : (options?: { type?: T; } & { type?: Kind; }) => T -+>getInterfaceFromString : (options?: ({ type?: T | undefined; } & { type?: Kind | undefined; }) | undefined) => T - >{ type: 'two' } : { type: "two"; } - >type : "two" - >'two' : "two" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/privacyCheckExportAssignmentOnExportedGenericInterface1.types b/testdata/baselines/reference/submodule/compiler/privacyCheckExportAssignmentOnExportedGenericInterface1.types index 0cdfc27af9f..512531c666c 100644 --- a/testdata/baselines/reference/submodule/compiler/privacyCheckExportAssignmentOnExportedGenericInterface1.types +++ b/testdata/baselines/reference/submodule/compiler/privacyCheckExportAssignmentOnExportedGenericInterface1.types @@ -8,7 +8,7 @@ namespace Foo { interface Foo { } var Foo: new () => Foo.A>; ->Foo : new () => import("./privacyCheckExportAssignmentOnExportedGenericInterface1").A> +>Foo : new () => Foo.A> >Foo : any export = Foo; diff --git a/testdata/baselines/reference/submodule/compiler/privacyCheckExportAssignmentOnExportedGenericInterface1.types.diff b/testdata/baselines/reference/submodule/compiler/privacyCheckExportAssignmentOnExportedGenericInterface1.types.diff deleted file mode 100644 index 7bdb638f899..00000000000 --- a/testdata/baselines/reference/submodule/compiler/privacyCheckExportAssignmentOnExportedGenericInterface1.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.privacyCheckExportAssignmentOnExportedGenericInterface1.types -+++ new.privacyCheckExportAssignmentOnExportedGenericInterface1.types -@@= skipped -7, +7 lines =@@ - interface Foo { - } - var Foo: new () => Foo.A>; -->Foo : new () => Foo.A> -+>Foo : new () => import("./privacyCheckExportAssignmentOnExportedGenericInterface1").A> - >Foo : any - - export = Foo; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/privacyFunctionParameterDeclFile.types b/testdata/baselines/reference/submodule/compiler/privacyFunctionParameterDeclFile.types index f02d3719ea2..6384f3e25ef 100644 --- a/testdata/baselines/reference/submodule/compiler/privacyFunctionParameterDeclFile.types +++ b/testdata/baselines/reference/submodule/compiler/privacyFunctionParameterDeclFile.types @@ -783,7 +783,7 @@ namespace privateModule { >privateModule : any myMethod(param: privateModule.publicClass): void; ->myMethod : (param: publicClass) => void +>myMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } @@ -791,12 +791,12 @@ namespace privateModule { >publicClassWithPrivateModuleParameterTypes : publicClassWithPrivateModuleParameterTypes static myPublicStaticMethod(param: privateModule.publicClass) { ->myPublicStaticMethod : (param: publicClass) => void +>myPublicStaticMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } myPublicMethod(param: privateModule.publicClass) { ->myPublicMethod : (param: publicClass) => void +>myPublicMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } @@ -810,12 +810,12 @@ namespace privateModule { } } export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { ->publicFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void +>publicFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; ->publicAmbientFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void +>publicAmbientFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any @@ -829,7 +829,7 @@ namespace privateModule { >privateModule : any myMethod(param: privateModule.publicClass): void; ->myMethod : (param: publicClass) => void +>myMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } @@ -837,12 +837,12 @@ namespace privateModule { >privateClassWithPrivateModuleParameterTypes : privateClassWithPrivateModuleParameterTypes static myPublicStaticMethod(param: privateModule.publicClass) { ->myPublicStaticMethod : (param: publicClass) => void +>myPublicStaticMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } myPublicMethod(param: privateModule.publicClass) { ->myPublicMethod : (param: publicClass) => void +>myPublicMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } @@ -856,12 +856,12 @@ namespace privateModule { } } function privateFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { ->privateFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void +>privateFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } declare function privateAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; ->privateAmbientFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void +>privateAmbientFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } @@ -1131,7 +1131,7 @@ namespace publicModuleInGlobal { >privateModule : any myMethod(param: privateModule.publicClass): void; ->myMethod : (param: publicClass) => void +>myMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } @@ -1139,12 +1139,12 @@ namespace publicModuleInGlobal { >publicClassWithPrivateModuleParameterTypes : publicClassWithPrivateModuleParameterTypes static myPublicStaticMethod(param: privateModule.publicClass) { ->myPublicStaticMethod : (param: publicClass) => void +>myPublicStaticMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } myPublicMethod(param: privateModule.publicClass) { ->myPublicMethod : (param: publicClass) => void +>myPublicMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } @@ -1158,12 +1158,12 @@ namespace publicModuleInGlobal { } } export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { ->publicFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void +>publicFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; ->publicAmbientFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void +>publicAmbientFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any @@ -1177,7 +1177,7 @@ namespace publicModuleInGlobal { >privateModule : any myMethod(param: privateModule.publicClass): void; ->myMethod : (param: publicClass) => void +>myMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } @@ -1185,12 +1185,12 @@ namespace publicModuleInGlobal { >privateClassWithPrivateModuleParameterTypes : privateClassWithPrivateModuleParameterTypes static myPublicStaticMethod(param: privateModule.publicClass) { ->myPublicStaticMethod : (param: publicClass) => void +>myPublicStaticMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } myPublicMethod(param: privateModule.publicClass) { ->myPublicMethod : (param: publicClass) => void +>myPublicMethod : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } @@ -1204,12 +1204,12 @@ namespace publicModuleInGlobal { } } function privateFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { ->privateFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void +>privateFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } declare function privateAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; ->privateAmbientFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void +>privateAmbientFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void >param : publicClass >privateModule : any } diff --git a/testdata/baselines/reference/submodule/compiler/privacyFunctionParameterDeclFile.types.diff b/testdata/baselines/reference/submodule/compiler/privacyFunctionParameterDeclFile.types.diff deleted file mode 100644 index af63277ef41..00000000000 --- a/testdata/baselines/reference/submodule/compiler/privacyFunctionParameterDeclFile.types.diff +++ /dev/null @@ -1,158 +0,0 @@ ---- old.privacyFunctionParameterDeclFile.types -+++ new.privacyFunctionParameterDeclFile.types -@@= skipped -782, +782 lines =@@ - >privateModule : any - - myMethod(param: privateModule.publicClass): void; -->myMethod : (param: privateModule.publicClass) => void -+>myMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } -@@= skipped -8, +8 lines =@@ - >publicClassWithPrivateModuleParameterTypes : publicClassWithPrivateModuleParameterTypes - - static myPublicStaticMethod(param: privateModule.publicClass) { -->myPublicStaticMethod : (param: privateModule.publicClass) => void -+>myPublicStaticMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } - myPublicMethod(param: privateModule.publicClass) { -->myPublicMethod : (param: privateModule.publicClass) => void -+>myPublicMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } -@@= skipped -19, +19 lines =@@ - } - } - export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { -->publicFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void -+>publicFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void - >param : publicClass - >privateModule : any - } - export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; -->publicAmbientFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void -+>publicAmbientFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void - >param : publicClass - >privateModule : any - -@@= skipped -19, +19 lines =@@ - >privateModule : any - - myMethod(param: privateModule.publicClass): void; -->myMethod : (param: privateModule.publicClass) => void -+>myMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } -@@= skipped -8, +8 lines =@@ - >privateClassWithPrivateModuleParameterTypes : privateClassWithPrivateModuleParameterTypes - - static myPublicStaticMethod(param: privateModule.publicClass) { -->myPublicStaticMethod : (param: privateModule.publicClass) => void -+>myPublicStaticMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } - myPublicMethod(param: privateModule.publicClass) { -->myPublicMethod : (param: privateModule.publicClass) => void -+>myPublicMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } -@@= skipped -19, +19 lines =@@ - } - } - function privateFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { -->privateFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void -+>privateFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void - >param : publicClass - >privateModule : any - } - declare function privateAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; -->privateAmbientFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void -+>privateAmbientFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void - >param : publicClass - >privateModule : any - } -@@= skipped -275, +275 lines =@@ - >privateModule : any - - myMethod(param: privateModule.publicClass): void; -->myMethod : (param: privateModule.publicClass) => void -+>myMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } -@@= skipped -8, +8 lines =@@ - >publicClassWithPrivateModuleParameterTypes : publicClassWithPrivateModuleParameterTypes - - static myPublicStaticMethod(param: privateModule.publicClass) { -->myPublicStaticMethod : (param: privateModule.publicClass) => void -+>myPublicStaticMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } - myPublicMethod(param: privateModule.publicClass) { -->myPublicMethod : (param: privateModule.publicClass) => void -+>myPublicMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } -@@= skipped -19, +19 lines =@@ - } - } - export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { -->publicFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void -+>publicFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void - >param : publicClass - >privateModule : any - } - export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; -->publicAmbientFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void -+>publicAmbientFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void - >param : publicClass - >privateModule : any - -@@= skipped -19, +19 lines =@@ - >privateModule : any - - myMethod(param: privateModule.publicClass): void; -->myMethod : (param: privateModule.publicClass) => void -+>myMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } -@@= skipped -8, +8 lines =@@ - >privateClassWithPrivateModuleParameterTypes : privateClassWithPrivateModuleParameterTypes - - static myPublicStaticMethod(param: privateModule.publicClass) { -->myPublicStaticMethod : (param: privateModule.publicClass) => void -+>myPublicStaticMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } - myPublicMethod(param: privateModule.publicClass) { -->myPublicMethod : (param: privateModule.publicClass) => void -+>myPublicMethod : (param: publicClass) => void - >param : publicClass - >privateModule : any - } -@@= skipped -19, +19 lines =@@ - } - } - function privateFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { -->privateFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void -+>privateFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void - >param : publicClass - >privateModule : any - } - declare function privateAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; -->privateAmbientFunctionWithPrivateModuleParameterTypes : (param: privateModule.publicClass) => void -+>privateAmbientFunctionWithPrivateModuleParameterTypes : (param: publicClass) => void - >param : publicClass - >privateModule : any - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/privacyFunctionReturnTypeDeclFile.types b/testdata/baselines/reference/submodule/compiler/privacyFunctionReturnTypeDeclFile.types index efc35661da5..e8743d26e68 100644 --- a/testdata/baselines/reference/submodule/compiler/privacyFunctionReturnTypeDeclFile.types +++ b/testdata/baselines/reference/submodule/compiler/privacyFunctionReturnTypeDeclFile.types @@ -1255,20 +1255,20 @@ namespace privateModule { >privateModule : any myMethod(): privateModule.publicClass; ->myMethod : () => publicClass +>myMethod : () => privateModule.publicClass >privateModule : any } export class publicClassWithPrivateModuleParameterTypes { >publicClassWithPrivateModuleParameterTypes : publicClassWithPrivateModuleParameterTypes static myPublicStaticMethod(): privateModule.publicClass { ->myPublicStaticMethod : () => publicClass +>myPublicStaticMethod : () => privateModule.publicClass >privateModule : any return null; } myPublicMethod(): privateModule.publicClass { ->myPublicMethod : () => publicClass +>myPublicMethod : () => privateModule.publicClass >privateModule : any return null; @@ -1293,7 +1293,7 @@ namespace privateModule { } } export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { ->publicFunctionWithPrivateModuleParameterTypes : () => publicClass +>publicFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass >privateModule : any return null; @@ -1308,7 +1308,7 @@ namespace privateModule { >publicClass : typeof publicClass } export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; ->publicAmbientFunctionWithPrivateModuleParameterTypes : () => publicClass +>publicAmbientFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass >privateModule : any interface privateInterfaceWithPrivateModuleParameterTypes { @@ -1323,20 +1323,20 @@ namespace privateModule { >privateModule : any myMethod(): privateModule.publicClass; ->myMethod : () => publicClass +>myMethod : () => privateModule.publicClass >privateModule : any } class privateClassWithPrivateModuleParameterTypes { >privateClassWithPrivateModuleParameterTypes : privateClassWithPrivateModuleParameterTypes static myPublicStaticMethod(): privateModule.publicClass { ->myPublicStaticMethod : () => publicClass +>myPublicStaticMethod : () => privateModule.publicClass >privateModule : any return null; } myPublicMethod(): privateModule.publicClass { ->myPublicMethod : () => publicClass +>myPublicMethod : () => privateModule.publicClass >privateModule : any return null; @@ -1361,7 +1361,7 @@ namespace privateModule { } } function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { ->privateFunctionWithPrivateModuleParameterTypes : () => publicClass +>privateFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass >privateModule : any return null; @@ -1376,7 +1376,7 @@ namespace privateModule { >publicClass : typeof publicClass } declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; ->privateAmbientFunctionWithPrivateModuleParameterTypes : () => publicClass +>privateAmbientFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass >privateModule : any } @@ -1807,20 +1807,20 @@ namespace publicModuleInGlobal { >privateModule : any myMethod(): privateModule.publicClass; ->myMethod : () => publicClass +>myMethod : () => privateModule.publicClass >privateModule : any } export class publicClassWithPrivateModuleParameterTypes { >publicClassWithPrivateModuleParameterTypes : publicClassWithPrivateModuleParameterTypes static myPublicStaticMethod(): privateModule.publicClass { ->myPublicStaticMethod : () => publicClass +>myPublicStaticMethod : () => privateModule.publicClass >privateModule : any return null; } myPublicMethod(): privateModule.publicClass { ->myPublicMethod : () => publicClass +>myPublicMethod : () => privateModule.publicClass >privateModule : any return null; @@ -1845,7 +1845,7 @@ namespace publicModuleInGlobal { } } export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { ->publicFunctionWithPrivateModuleParameterTypes : () => publicClass +>publicFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass >privateModule : any return null; @@ -1860,7 +1860,7 @@ namespace publicModuleInGlobal { >publicClass : typeof publicClass } export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; ->publicAmbientFunctionWithPrivateModuleParameterTypes : () => publicClass +>publicAmbientFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass >privateModule : any interface privateInterfaceWithPrivateModuleParameterTypes { @@ -1875,20 +1875,20 @@ namespace publicModuleInGlobal { >privateModule : any myMethod(): privateModule.publicClass; ->myMethod : () => publicClass +>myMethod : () => privateModule.publicClass >privateModule : any } class privateClassWithPrivateModuleParameterTypes { >privateClassWithPrivateModuleParameterTypes : privateClassWithPrivateModuleParameterTypes static myPublicStaticMethod(): privateModule.publicClass { ->myPublicStaticMethod : () => publicClass +>myPublicStaticMethod : () => privateModule.publicClass >privateModule : any return null; } myPublicMethod(): privateModule.publicClass { ->myPublicMethod : () => publicClass +>myPublicMethod : () => privateModule.publicClass >privateModule : any return null; @@ -1913,7 +1913,7 @@ namespace publicModuleInGlobal { } } function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { ->privateFunctionWithPrivateModuleParameterTypes : () => publicClass +>privateFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass >privateModule : any return null; @@ -1928,7 +1928,7 @@ namespace publicModuleInGlobal { >publicClass : typeof publicClass } declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; ->privateAmbientFunctionWithPrivateModuleParameterTypes : () => publicClass +>privateAmbientFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass >privateModule : any } diff --git a/testdata/baselines/reference/submodule/compiler/privacyFunctionReturnTypeDeclFile.types.diff b/testdata/baselines/reference/submodule/compiler/privacyFunctionReturnTypeDeclFile.types.diff deleted file mode 100644 index 59465caf9e4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/privacyFunctionReturnTypeDeclFile.types.diff +++ /dev/null @@ -1,169 +0,0 @@ ---- old.privacyFunctionReturnTypeDeclFile.types -+++ new.privacyFunctionReturnTypeDeclFile.types -@@= skipped -1254, +1254 lines =@@ - >privateModule : any - - myMethod(): privateModule.publicClass; -->myMethod : () => privateModule.publicClass -+>myMethod : () => publicClass - >privateModule : any - } - export class publicClassWithPrivateModuleParameterTypes { - >publicClassWithPrivateModuleParameterTypes : publicClassWithPrivateModuleParameterTypes - - static myPublicStaticMethod(): privateModule.publicClass { -->myPublicStaticMethod : () => privateModule.publicClass -+>myPublicStaticMethod : () => publicClass - >privateModule : any - - return null; - } - myPublicMethod(): privateModule.publicClass { -->myPublicMethod : () => privateModule.publicClass -+>myPublicMethod : () => publicClass - >privateModule : any - - return null; -@@= skipped -38, +38 lines =@@ - } - } - export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { -->publicFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass -+>publicFunctionWithPrivateModuleParameterTypes : () => publicClass - >privateModule : any - - return null; -@@= skipped -15, +15 lines =@@ - >publicClass : typeof publicClass - } - export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; -->publicAmbientFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass -+>publicAmbientFunctionWithPrivateModuleParameterTypes : () => publicClass - >privateModule : any - - interface privateInterfaceWithPrivateModuleParameterTypes { -@@= skipped -15, +15 lines =@@ - >privateModule : any - - myMethod(): privateModule.publicClass; -->myMethod : () => privateModule.publicClass -+>myMethod : () => publicClass - >privateModule : any - } - class privateClassWithPrivateModuleParameterTypes { - >privateClassWithPrivateModuleParameterTypes : privateClassWithPrivateModuleParameterTypes - - static myPublicStaticMethod(): privateModule.publicClass { -->myPublicStaticMethod : () => privateModule.publicClass -+>myPublicStaticMethod : () => publicClass - >privateModule : any - - return null; - } - myPublicMethod(): privateModule.publicClass { -->myPublicMethod : () => privateModule.publicClass -+>myPublicMethod : () => publicClass - >privateModule : any - - return null; -@@= skipped -38, +38 lines =@@ - } - } - function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { -->privateFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass -+>privateFunctionWithPrivateModuleParameterTypes : () => publicClass - >privateModule : any - - return null; -@@= skipped -15, +15 lines =@@ - >publicClass : typeof publicClass - } - declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; -->privateAmbientFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass -+>privateAmbientFunctionWithPrivateModuleParameterTypes : () => publicClass - >privateModule : any - } - -@@= skipped -431, +431 lines =@@ - >privateModule : any - - myMethod(): privateModule.publicClass; -->myMethod : () => privateModule.publicClass -+>myMethod : () => publicClass - >privateModule : any - } - export class publicClassWithPrivateModuleParameterTypes { - >publicClassWithPrivateModuleParameterTypes : publicClassWithPrivateModuleParameterTypes - - static myPublicStaticMethod(): privateModule.publicClass { -->myPublicStaticMethod : () => privateModule.publicClass -+>myPublicStaticMethod : () => publicClass - >privateModule : any - - return null; - } - myPublicMethod(): privateModule.publicClass { -->myPublicMethod : () => privateModule.publicClass -+>myPublicMethod : () => publicClass - >privateModule : any - - return null; -@@= skipped -38, +38 lines =@@ - } - } - export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { -->publicFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass -+>publicFunctionWithPrivateModuleParameterTypes : () => publicClass - >privateModule : any - - return null; -@@= skipped -15, +15 lines =@@ - >publicClass : typeof publicClass - } - export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; -->publicAmbientFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass -+>publicAmbientFunctionWithPrivateModuleParameterTypes : () => publicClass - >privateModule : any - - interface privateInterfaceWithPrivateModuleParameterTypes { -@@= skipped -15, +15 lines =@@ - >privateModule : any - - myMethod(): privateModule.publicClass; -->myMethod : () => privateModule.publicClass -+>myMethod : () => publicClass - >privateModule : any - } - class privateClassWithPrivateModuleParameterTypes { - >privateClassWithPrivateModuleParameterTypes : privateClassWithPrivateModuleParameterTypes - - static myPublicStaticMethod(): privateModule.publicClass { -->myPublicStaticMethod : () => privateModule.publicClass -+>myPublicStaticMethod : () => publicClass - >privateModule : any - - return null; - } - myPublicMethod(): privateModule.publicClass { -->myPublicMethod : () => privateModule.publicClass -+>myPublicMethod : () => publicClass - >privateModule : any - - return null; -@@= skipped -38, +38 lines =@@ - } - } - function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { -->privateFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass -+>privateFunctionWithPrivateModuleParameterTypes : () => publicClass - >privateModule : any - - return null; -@@= skipped -15, +15 lines =@@ - >publicClass : typeof publicClass - } - declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; -->privateAmbientFunctionWithPrivateModuleParameterTypes : () => privateModule.publicClass -+>privateAmbientFunctionWithPrivateModuleParameterTypes : () => publicClass - >privateModule : any - } diff --git a/testdata/baselines/reference/submodule/compiler/promisePermutations.types b/testdata/baselines/reference/submodule/compiler/promisePermutations.types index bf202dccba1..e1cbba122b4 100644 --- a/testdata/baselines/reference/submodule/compiler/promisePermutations.types +++ b/testdata/baselines/reference/submodule/compiler/promisePermutations.types @@ -3,7 +3,7 @@ === promisePermutations.ts === interface Promise { then(success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => Promise >value : T >error : (error: any) => Promise @@ -12,7 +12,7 @@ interface Promise { >progress : any then(success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => Promise >value : T >error : (error: any) => U @@ -21,7 +21,7 @@ interface Promise { >progress : any then(success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => U >value : T >error : (error: any) => Promise @@ -30,7 +30,7 @@ interface Promise { >progress : any then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => U >value : T >error : (error: any) => U diff --git a/testdata/baselines/reference/submodule/compiler/promisePermutations.types.diff b/testdata/baselines/reference/submodule/compiler/promisePermutations.types.diff index 9f4bb3bcf64..bfa1b7a8879 100644 --- a/testdata/baselines/reference/submodule/compiler/promisePermutations.types.diff +++ b/testdata/baselines/reference/submodule/compiler/promisePermutations.types.diff @@ -5,7 +5,7 @@ interface Promise { then(success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; } -+>then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => Promise >value : T >error : (error: any) => Promise @@ -14,7 +14,7 @@ then(success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; } -+>then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => Promise >value : T >error : (error: any) => U @@ -23,7 +23,7 @@ then(success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; } -+>then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => U >value : T >error : (error: any) => Promise @@ -32,7 +32,7 @@ then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } -+>then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => U >value : T >error : (error: any) => U diff --git a/testdata/baselines/reference/submodule/compiler/promisePermutations2.types b/testdata/baselines/reference/submodule/compiler/promisePermutations2.types index b8e92c16fba..a4c34bc8b80 100644 --- a/testdata/baselines/reference/submodule/compiler/promisePermutations2.types +++ b/testdata/baselines/reference/submodule/compiler/promisePermutations2.types @@ -5,7 +5,7 @@ interface Promise { then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => U >value : T >error : (error: any) => U diff --git a/testdata/baselines/reference/submodule/compiler/promisePermutations2.types.diff b/testdata/baselines/reference/submodule/compiler/promisePermutations2.types.diff index fbe4f78d010..816b9c84e25 100644 --- a/testdata/baselines/reference/submodule/compiler/promisePermutations2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/promisePermutations2.types.diff @@ -1,15 +1,6 @@ --- old.promisePermutations2.types +++ new.promisePermutations2.types -@@= skipped -4, +4 lines =@@ - - interface Promise { - then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; -->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } -+>then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } - >success : (value: T) => U - >value : T - >error : (error: any) => U -@@= skipped -20, +20 lines =@@ +@@= skipped -24, +24 lines =@@ interface IPromise { then(success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; diff --git a/testdata/baselines/reference/submodule/compiler/promisePermutations3.types b/testdata/baselines/reference/submodule/compiler/promisePermutations3.types index ebf00fd354e..5c6d384e4db 100644 --- a/testdata/baselines/reference/submodule/compiler/promisePermutations3.types +++ b/testdata/baselines/reference/submodule/compiler/promisePermutations3.types @@ -5,7 +5,7 @@ interface Promise { then(success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => Promise >value : T >error : (error: any) => Promise @@ -14,7 +14,7 @@ interface Promise { >progress : any then(success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => Promise >value : T >error : (error: any) => U @@ -23,7 +23,7 @@ interface Promise { >progress : any then(success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => U >value : T >error : (error: any) => Promise @@ -32,7 +32,7 @@ interface Promise { >progress : any then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => U >value : T >error : (error: any) => U diff --git a/testdata/baselines/reference/submodule/compiler/promisePermutations3.types.diff b/testdata/baselines/reference/submodule/compiler/promisePermutations3.types.diff index d6536468c14..a3c602d776a 100644 --- a/testdata/baselines/reference/submodule/compiler/promisePermutations3.types.diff +++ b/testdata/baselines/reference/submodule/compiler/promisePermutations3.types.diff @@ -5,7 +5,7 @@ interface Promise { then(success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; } -+>then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => Promise >value : T >error : (error: any) => Promise @@ -14,7 +14,7 @@ then(success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; } -+>then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => Promise >value : T >error : (error: any) => U @@ -23,7 +23,7 @@ then(success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; } -+>then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => U >value : T >error : (error: any) => Promise @@ -32,7 +32,7 @@ then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U_1, progress?: (progress: any) => void): Promise; (success?: (value: T) => U_1, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } -+>then : { (onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; } >success : (value: T) => U >value : T >error : (error: any) => U diff --git a/testdata/baselines/reference/submodule/compiler/promiseTest.types b/testdata/baselines/reference/submodule/compiler/promiseTest.types index cca0632107a..ab615e65be0 100644 --- a/testdata/baselines/reference/submodule/compiler/promiseTest.types +++ b/testdata/baselines/reference/submodule/compiler/promiseTest.types @@ -3,12 +3,12 @@ === promiseTest.ts === interface Promise { then(success?: (value: T) => Promise): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (success?: ((value: T) => Promise) | undefined): Promise; (success?: ((value: T) => B) | undefined): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise): Promise; (success?: (value: T) => B): Promise; } >success : ((value: T) => Promise) | undefined >value : T then(success?: (value: T) => B): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (success?: ((value: T) => Promise) | undefined): Promise; (success?: ((value: T) => B) | undefined): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise): Promise; (success?: (value: T) => B): Promise; } >success : ((value: T) => B) | undefined >value : T diff --git a/testdata/baselines/reference/submodule/compiler/promiseTest.types.diff b/testdata/baselines/reference/submodule/compiler/promiseTest.types.diff deleted file mode 100644 index b57622e0348..00000000000 --- a/testdata/baselines/reference/submodule/compiler/promiseTest.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.promiseTest.types -+++ new.promiseTest.types -@@= skipped -2, +2 lines =@@ - === promiseTest.ts === - interface Promise { - then(success?: (value: T) => Promise): Promise; -->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise): Promise; (success?: (value: T) => B): Promise; } -+>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (success?: ((value: T) => Promise) | undefined): Promise; (success?: ((value: T) => B) | undefined): Promise; } - >success : ((value: T) => Promise) | undefined - >value : T - - then(success?: (value: T) => B): Promise; -->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => Promise): Promise; (success?: (value: T) => B): Promise; } -+>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (success?: ((value: T) => Promise) | undefined): Promise; (success?: ((value: T) => B) | undefined): Promise; } - >success : ((value: T) => B) | undefined - >value : T diff --git a/testdata/baselines/reference/submodule/compiler/promiseTry.types b/testdata/baselines/reference/submodule/compiler/promiseTry.types index 2b389b461cb..3a8e6a8081e 100644 --- a/testdata/baselines/reference/submodule/compiler/promiseTry.types +++ b/testdata/baselines/reference/submodule/compiler/promiseTry.types @@ -158,7 +158,7 @@ Promise.try((foo: string, bar?: number) => "Async result", "foo"); >Promise.try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> >Promise : PromiseConstructor >try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> ->(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number | undefined) => string +>(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number) => string >foo : string >bar : number | undefined >"Async result" : "Async result" @@ -169,7 +169,7 @@ Promise.try((foo: string, bar?: number) => "Async result", "foo", undefined); >Promise.try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> >Promise : PromiseConstructor >try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> ->(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number | undefined) => string +>(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number) => string >foo : string >bar : number | undefined >"Async result" : "Async result" @@ -181,7 +181,7 @@ Promise.try((foo: string, bar?: number) => "Async result", "foo", 42); >Promise.try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> >Promise : PromiseConstructor >try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> ->(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number | undefined) => string +>(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number) => string >foo : string >bar : number | undefined >"Async result" : "Async result" diff --git a/testdata/baselines/reference/submodule/compiler/promiseTry.types.diff b/testdata/baselines/reference/submodule/compiler/promiseTry.types.diff deleted file mode 100644 index e69df287706..00000000000 --- a/testdata/baselines/reference/submodule/compiler/promiseTry.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.promiseTry.types -+++ new.promiseTry.types -@@= skipped -157, +157 lines =@@ - >Promise.try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> - >Promise : PromiseConstructor - >try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> -->(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number) => string -+>(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number | undefined) => string - >foo : string - >bar : number | undefined - >"Async result" : "Async result" -@@= skipped -11, +11 lines =@@ - >Promise.try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> - >Promise : PromiseConstructor - >try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> -->(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number) => string -+>(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number | undefined) => string - >foo : string - >bar : number | undefined - >"Async result" : "Async result" -@@= skipped -12, +12 lines =@@ - >Promise.try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> - >Promise : PromiseConstructor - >try : (callbackFn: (...args: U) => T | PromiseLike, ...args: U) => Promise> -->(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number) => string -+>(foo: string, bar?: number) => "Async result" : (foo: string, bar?: number | undefined) => string - >foo : string - >bar : number | undefined - >"Async result" : "Async result" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/promises.types b/testdata/baselines/reference/submodule/compiler/promises.types index ea769445d0e..b338590a195 100644 --- a/testdata/baselines/reference/submodule/compiler/promises.types +++ b/testdata/baselines/reference/submodule/compiler/promises.types @@ -3,12 +3,12 @@ === promises.ts === interface Promise { then(success?: (value: T) => U): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (success?: ((value: T) => U) | undefined): Promise; (success?: ((value: T) => Promise) | undefined): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => U): Promise; (success?: (value: T) => Promise): Promise; } >success : ((value: T) => U) | undefined >value : T then(success?: (value: T) => Promise): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (success?: ((value: T) => U) | undefined): Promise; (success?: ((value: T) => Promise) | undefined): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => U): Promise; (success?: (value: T) => Promise): Promise; } >success : ((value: T) => Promise) | undefined >value : T diff --git a/testdata/baselines/reference/submodule/compiler/promises.types.diff b/testdata/baselines/reference/submodule/compiler/promises.types.diff index a6063ab74f6..b055a4e0e06 100644 --- a/testdata/baselines/reference/submodule/compiler/promises.types.diff +++ b/testdata/baselines/reference/submodule/compiler/promises.types.diff @@ -5,12 +5,12 @@ interface Promise { then(success?: (value: T) => U): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => U): Promise; (success?: (value: T) => Promise): Promise; } -+>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (success?: ((value: T) => U) | undefined): Promise; (success?: ((value: T) => Promise) | undefined): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => U): Promise; (success?: (value: T) => Promise): Promise; } >success : ((value: T) => U) | undefined >value : T then(success?: (value: T) => Promise): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => U_1): Promise; (success?: (value: T) => Promise): Promise; } -+>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (success?: ((value: T) => U) | undefined): Promise; (success?: ((value: T) => Promise) | undefined): Promise; } ++>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (success?: (value: T) => U): Promise; (success?: (value: T) => Promise): Promise; } >success : ((value: T) => Promise) | undefined >value : T diff --git a/testdata/baselines/reference/submodule/compiler/promisesWithConstraints.types b/testdata/baselines/reference/submodule/compiler/promisesWithConstraints.types index 89a7a127b32..51c6da6ab70 100644 --- a/testdata/baselines/reference/submodule/compiler/promisesWithConstraints.types +++ b/testdata/baselines/reference/submodule/compiler/promisesWithConstraints.types @@ -3,7 +3,7 @@ === promisesWithConstraints.ts === interface Promise { then(cb: (x: T) => Promise): Promise; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (cb: (x: T) => Promise): Promise; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (cb: (x: T) => Promise): Promise; } >cb : (x: T) => Promise >x : T } diff --git a/testdata/baselines/reference/submodule/compiler/promisesWithConstraints.types.diff b/testdata/baselines/reference/submodule/compiler/promisesWithConstraints.types.diff deleted file mode 100644 index be5796dcc01..00000000000 --- a/testdata/baselines/reference/submodule/compiler/promisesWithConstraints.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.promisesWithConstraints.types -+++ new.promisesWithConstraints.types -@@= skipped -2, +2 lines =@@ - === promisesWithConstraints.ts === - interface Promise { - then(cb: (x: T) => Promise): Promise; -->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (cb: (x: T) => Promise): Promise; } -+>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (cb: (x: T) => Promise): Promise; } - >cb : (x: T) => Promise - >x : T - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/propTypeValidatorInference.types b/testdata/baselines/reference/submodule/compiler/propTypeValidatorInference.types index 844f54af3a6..9732718deeb 100644 --- a/testdata/baselines/reference/submodule/compiler/propTypeValidatorInference.types +++ b/testdata/baselines/reference/submodule/compiler/propTypeValidatorInference.types @@ -90,7 +90,7 @@ interface Props { >bool : boolean shape: { ->shape : { foo: string; bar?: boolean | undefined; baz?: any; } +>shape : { foo: string; bar?: boolean; baz?: any; } foo: string; >foo : string @@ -103,7 +103,7 @@ interface Props { }; oneOfType: string | boolean | { ->oneOfType : string | boolean | { foo?: string | undefined; bar: number; } +>oneOfType : string | boolean | { foo?: string; bar: number; } foo?: string; >foo : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/propTypeValidatorInference.types.diff b/testdata/baselines/reference/submodule/compiler/propTypeValidatorInference.types.diff deleted file mode 100644 index d0522217e9c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/propTypeValidatorInference.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.propTypeValidatorInference.types -+++ new.propTypeValidatorInference.types -@@= skipped -89, +89 lines =@@ - >bool : boolean - - shape: { -->shape : { foo: string; bar?: boolean; baz?: any; } -+>shape : { foo: string; bar?: boolean | undefined; baz?: any; } - - foo: string; - >foo : string -@@= skipped -13, +13 lines =@@ - - }; - oneOfType: string | boolean | { -->oneOfType : string | boolean | { foo?: string; bar: number; } -+>oneOfType : string | boolean | { foo?: string | undefined; bar: number; } - - foo?: string; - >foo : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/propagationOfPromiseInitialization.types b/testdata/baselines/reference/submodule/compiler/propagationOfPromiseInitialization.types index 391f672458e..3b6c6558046 100644 --- a/testdata/baselines/reference/submodule/compiler/propagationOfPromiseInitialization.types +++ b/testdata/baselines/reference/submodule/compiler/propagationOfPromiseInitialization.types @@ -3,7 +3,7 @@ === propagationOfPromiseInitialization.ts === interface IPromise { then(successCallback: (promiseValue: T) => TResult, errorCallback?: (reason: any) => TResult): IPromise; ->then : (successCallback: (promiseValue: T) => TResult, errorCallback?: ((reason: any) => TResult) | undefined) => IPromise +>then : (successCallback: (promiseValue: T) => TResult, errorCallback?: (reason: any) => TResult) => IPromise >successCallback : (promiseValue: T) => TResult >promiseValue : T >errorCallback : ((reason: any) => TResult) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/propagationOfPromiseInitialization.types.diff b/testdata/baselines/reference/submodule/compiler/propagationOfPromiseInitialization.types.diff deleted file mode 100644 index a66acded676..00000000000 --- a/testdata/baselines/reference/submodule/compiler/propagationOfPromiseInitialization.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.propagationOfPromiseInitialization.types -+++ new.propagationOfPromiseInitialization.types -@@= skipped -2, +2 lines =@@ - === propagationOfPromiseInitialization.ts === - interface IPromise { - then(successCallback: (promiseValue: T) => TResult, errorCallback?: (reason: any) => TResult): IPromise; -->then : (successCallback: (promiseValue: T) => TResult, errorCallback?: (reason: any) => TResult) => IPromise -+>then : (successCallback: (promiseValue: T) => TResult, errorCallback?: ((reason: any) => TResult) | undefined) => IPromise - >successCallback : (promiseValue: T) => TResult - >promiseValue : T - >errorCallback : ((reason: any) => TResult) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/qualify.errors.txt b/testdata/baselines/reference/submodule/compiler/qualify.errors.txt index 07eb3813f21..e53485af9a1 100644 --- a/testdata/baselines/reference/submodule/compiler/qualify.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/qualify.errors.txt @@ -2,11 +2,11 @@ qualify.ts(21,13): error TS2322: Type 'number' is not assignable to type 'I'. qualify.ts(30,13): error TS2322: Type 'number' is not assignable to type 'I2'. qualify.ts(45,13): error TS2741: Property 'zeep' is missing in type 'I4' but required in type 'I3'. qualify.ts(46,13): error TS2740: Type 'I4' is missing the following properties from type 'I3[]': length, pop, push, concat, and 25 more. -qualify.ts(47,13): error TS2322: Type 'I4' is not assignable to type '() => I3'. - Type 'I4' provides no match for the signature '(): I3'. -qualify.ts(48,13): error TS2322: Type 'I4' is not assignable to type '(k: I3) => void'. - Type 'I4' provides no match for the signature '(k: I3): void'. -qualify.ts(49,13): error TS2741: Property 'k' is missing in type 'I4' but required in type '{ k: I3; }'. +qualify.ts(47,13): error TS2322: Type 'I4' is not assignable to type '() => K1.I3'. + Type 'I4' provides no match for the signature '(): K1.I3'. +qualify.ts(48,13): error TS2322: Type 'I4' is not assignable to type '(k: K1.I3) => void'. + Type 'I4' provides no match for the signature '(k: K1.I3): void'. +qualify.ts(49,13): error TS2741: Property 'k' is missing in type 'I4' but required in type '{ k: K1.I3; }'. qualify.ts(58,5): error TS2741: Property 'p' is missing in type 'I' but required in type 'T.I'. @@ -68,15 +68,15 @@ qualify.ts(58,5): error TS2741: Property 'p' is missing in type 'I' but required !!! error TS2740: Type 'I4' is missing the following properties from type 'I3[]': length, pop, push, concat, and 25 more. var v4:()=>K1.I3=v1; ~~ -!!! error TS2322: Type 'I4' is not assignable to type '() => I3'. -!!! error TS2322: Type 'I4' provides no match for the signature '(): I3'. +!!! error TS2322: Type 'I4' is not assignable to type '() => K1.I3'. +!!! error TS2322: Type 'I4' provides no match for the signature '(): K1.I3'. var v5:(k:K1.I3)=>void=v1; ~~ -!!! error TS2322: Type 'I4' is not assignable to type '(k: I3) => void'. -!!! error TS2322: Type 'I4' provides no match for the signature '(k: I3): void'. +!!! error TS2322: Type 'I4' is not assignable to type '(k: K1.I3) => void'. +!!! error TS2322: Type 'I4' provides no match for the signature '(k: K1.I3): void'. var v6:{k:K1.I3;}=v1; ~~ -!!! error TS2741: Property 'k' is missing in type 'I4' but required in type '{ k: I3; }'. +!!! error TS2741: Property 'k' is missing in type 'I4' but required in type '{ k: K1.I3; }'. !!! related TS2728 qualify.ts:49:17: 'k' is declared here. } } diff --git a/testdata/baselines/reference/submodule/compiler/qualify.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/qualify.errors.txt.diff new file mode 100644 index 00000000000..35c550705c9 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/qualify.errors.txt.diff @@ -0,0 +1,40 @@ +--- old.qualify.errors.txt ++++ new.qualify.errors.txt +@@= skipped -1, +1 lines =@@ + qualify.ts(30,13): error TS2322: Type 'number' is not assignable to type 'I2'. + qualify.ts(45,13): error TS2741: Property 'zeep' is missing in type 'I4' but required in type 'I3'. + qualify.ts(46,13): error TS2740: Type 'I4' is missing the following properties from type 'I3[]': length, pop, push, concat, and 25 more. +-qualify.ts(47,13): error TS2322: Type 'I4' is not assignable to type '() => I3'. +- Type 'I4' provides no match for the signature '(): I3'. +-qualify.ts(48,13): error TS2322: Type 'I4' is not assignable to type '(k: I3) => void'. +- Type 'I4' provides no match for the signature '(k: I3): void'. +-qualify.ts(49,13): error TS2741: Property 'k' is missing in type 'I4' but required in type '{ k: I3; }'. ++qualify.ts(47,13): error TS2322: Type 'I4' is not assignable to type '() => K1.I3'. ++ Type 'I4' provides no match for the signature '(): K1.I3'. ++qualify.ts(48,13): error TS2322: Type 'I4' is not assignable to type '(k: K1.I3) => void'. ++ Type 'I4' provides no match for the signature '(k: K1.I3): void'. ++qualify.ts(49,13): error TS2741: Property 'k' is missing in type 'I4' but required in type '{ k: K1.I3; }'. + qualify.ts(58,5): error TS2741: Property 'p' is missing in type 'I' but required in type 'T.I'. + + +@@= skipped -66, +66 lines =@@ + !!! error TS2740: Type 'I4' is missing the following properties from type 'I3[]': length, pop, push, concat, and 25 more. + var v4:()=>K1.I3=v1; + ~~ +-!!! error TS2322: Type 'I4' is not assignable to type '() => I3'. +-!!! error TS2322: Type 'I4' provides no match for the signature '(): I3'. ++!!! error TS2322: Type 'I4' is not assignable to type '() => K1.I3'. ++!!! error TS2322: Type 'I4' provides no match for the signature '(): K1.I3'. + var v5:(k:K1.I3)=>void=v1; + ~~ +-!!! error TS2322: Type 'I4' is not assignable to type '(k: I3) => void'. +-!!! error TS2322: Type 'I4' provides no match for the signature '(k: I3): void'. ++!!! error TS2322: Type 'I4' is not assignable to type '(k: K1.I3) => void'. ++!!! error TS2322: Type 'I4' provides no match for the signature '(k: K1.I3): void'. + var v6:{k:K1.I3;}=v1; + ~~ +-!!! error TS2741: Property 'k' is missing in type 'I4' but required in type '{ k: I3; }'. ++!!! error TS2741: Property 'k' is missing in type 'I4' but required in type '{ k: K1.I3; }'. + !!! related TS2728 qualify.ts:49:17: 'k' is declared here. + } + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.errors.txt b/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.errors.txt index 30edbca2a8a..ad7ca11fc03 100644 --- a/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.errors.txt @@ -1,8 +1,8 @@ quickIntersectionCheckCorrectlyCachesErrors.tsx(9,15): error TS2345: Argument of type 'F' is not assignable to parameter of type 'F'. Types of parameters 'props' and 'props' are incompatible. - Type '{ children?: boolean | undefined; }' is not assignable to type 'CP & { children?: boolean | undefined; }'. - Type '{ children?: boolean | undefined; }' is not assignable to type 'CP'. - 'CP' could be instantiated with an arbitrary type which could be unrelated to '{ children?: boolean | undefined; }'. + Type '{ children?: boolean; }' is not assignable to type 'CP & { children?: boolean; }'. + Type '{ children?: boolean; }' is not assignable to type 'CP'. + 'CP' could be instantiated with an arbitrary type which could be unrelated to '{ children?: boolean; }'. quickIntersectionCheckCorrectlyCachesErrors.tsx(10,21): error TS2874: This JSX tag requires 'React' to be in scope, but it could not be found. @@ -19,9 +19,9 @@ quickIntersectionCheckCorrectlyCachesErrors.tsx(10,21): error TS2874: This JSX t ~~ !!! error TS2345: Argument of type 'F' is not assignable to parameter of type 'F'. !!! error TS2345: Types of parameters 'props' and 'props' are incompatible. -!!! error TS2345: Type '{ children?: boolean | undefined; }' is not assignable to type 'CP & { children?: boolean | undefined; }'. -!!! error TS2345: Type '{ children?: boolean | undefined; }' is not assignable to type 'CP'. -!!! error TS2345: 'CP' could be instantiated with an arbitrary type which could be unrelated to '{ children?: boolean | undefined; }'. +!!! error TS2345: Type '{ children?: boolean; }' is not assignable to type 'CP & { children?: boolean; }'. +!!! error TS2345: Type '{ children?: boolean; }' is not assignable to type 'CP'. +!!! error TS2345: 'CP' could be instantiated with an arbitrary type which could be unrelated to '{ children?: boolean; }'. return ; ~~ !!! error TS2874: This JSX tag requires 'React' to be in scope, but it could not be found. diff --git a/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.errors.txt.diff new file mode 100644 index 00000000000..b9498c13639 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.errors.txt.diff @@ -0,0 +1,27 @@ +--- old.quickIntersectionCheckCorrectlyCachesErrors.errors.txt ++++ new.quickIntersectionCheckCorrectlyCachesErrors.errors.txt +@@= skipped -0, +0 lines =@@ + quickIntersectionCheckCorrectlyCachesErrors.tsx(9,15): error TS2345: Argument of type 'F' is not assignable to parameter of type 'F'. + Types of parameters 'props' and 'props' are incompatible. +- Type '{ children?: boolean | undefined; }' is not assignable to type 'CP & { children?: boolean | undefined; }'. +- Type '{ children?: boolean | undefined; }' is not assignable to type 'CP'. +- 'CP' could be instantiated with an arbitrary type which could be unrelated to '{ children?: boolean | undefined; }'. ++ Type '{ children?: boolean; }' is not assignable to type 'CP & { children?: boolean; }'. ++ Type '{ children?: boolean; }' is not assignable to type 'CP'. ++ 'CP' could be instantiated with an arbitrary type which could be unrelated to '{ children?: boolean; }'. + quickIntersectionCheckCorrectlyCachesErrors.tsx(10,21): error TS2874: This JSX tag requires 'React' to be in scope, but it could not be found. + + +@@= skipped -18, +18 lines =@@ + ~~ + !!! error TS2345: Argument of type 'F' is not assignable to parameter of type 'F'. + !!! error TS2345: Types of parameters 'props' and 'props' are incompatible. +-!!! error TS2345: Type '{ children?: boolean | undefined; }' is not assignable to type 'CP & { children?: boolean | undefined; }'. +-!!! error TS2345: Type '{ children?: boolean | undefined; }' is not assignable to type 'CP'. +-!!! error TS2345: 'CP' could be instantiated with an arbitrary type which could be unrelated to '{ children?: boolean | undefined; }'. ++!!! error TS2345: Type '{ children?: boolean; }' is not assignable to type 'CP & { children?: boolean; }'. ++!!! error TS2345: Type '{ children?: boolean; }' is not assignable to type 'CP'. ++!!! error TS2345: 'CP' could be instantiated with an arbitrary type which could be unrelated to '{ children?: boolean; }'. + return ; + ~~ + !!! error TS2874: This JSX tag requires 'React' to be in scope, but it could not be found. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.types b/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.types index 5ae4afbe0a9..4fc5e4d38d7 100644 --- a/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.types +++ b/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.types @@ -3,7 +3,7 @@ === quickIntersectionCheckCorrectlyCachesErrors.tsx === interface F

{ (props: P & { children?: boolean }): void; ->props : P & { children?: boolean | undefined; } +>props : P & { children?: boolean; } >children : boolean | undefined propTypes: { [K in keyof P]: null extends P ? K : K }; diff --git a/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.types.diff b/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.types.diff deleted file mode 100644 index f2b8ee08c73..00000000000 --- a/testdata/baselines/reference/submodule/compiler/quickIntersectionCheckCorrectlyCachesErrors.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.quickIntersectionCheckCorrectlyCachesErrors.types -+++ new.quickIntersectionCheckCorrectlyCachesErrors.types -@@= skipped -2, +2 lines =@@ - === quickIntersectionCheckCorrectlyCachesErrors.tsx === - interface F

{ - (props: P & { children?: boolean }): void; -->props : P & { children?: boolean; } -+>props : P & { children?: boolean | undefined; } - >children : boolean | undefined - - propTypes: { [K in keyof P]: null extends P ? K : K }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/quickinfoTypeAtReturnPositionsInaccurate.types b/testdata/baselines/reference/submodule/compiler/quickinfoTypeAtReturnPositionsInaccurate.types index 238e41639a1..404c8aa7134 100644 --- a/testdata/baselines/reference/submodule/compiler/quickinfoTypeAtReturnPositionsInaccurate.types +++ b/testdata/baselines/reference/submodule/compiler/quickinfoTypeAtReturnPositionsInaccurate.types @@ -219,18 +219,18 @@ interface Program { >state : any } declare function isBuilderProgram(program: Program | T): program is T; ->isBuilderProgram : (program: T | Program) => program is T +>isBuilderProgram : (program: Program | T) => program is T >program : T | Program export function listFiles(program: Program | T) { ->listFiles : (program: T | Program) => void +>listFiles : (program: Program | T) => void >program : T | Program const x: Program = isBuilderProgram(program) ? program.getProgram() : program; >x : Program >isBuilderProgram(program) ? program.getProgram() : program : Program >isBuilderProgram(program) : boolean ->isBuilderProgram : (program: T_1 | Program) => program is T_1 +>isBuilderProgram : (program: Program | T_1) => program is T_1 >program : T | Program >program.getProgram() : Program >program.getProgram : () => Program diff --git a/testdata/baselines/reference/submodule/compiler/quickinfoTypeAtReturnPositionsInaccurate.types.diff b/testdata/baselines/reference/submodule/compiler/quickinfoTypeAtReturnPositionsInaccurate.types.diff deleted file mode 100644 index e28084916cf..00000000000 --- a/testdata/baselines/reference/submodule/compiler/quickinfoTypeAtReturnPositionsInaccurate.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.quickinfoTypeAtReturnPositionsInaccurate.types -+++ new.quickinfoTypeAtReturnPositionsInaccurate.types -@@= skipped -218, +218 lines =@@ - >state : any - } - declare function isBuilderProgram(program: Program | T): program is T; -->isBuilderProgram : (program: Program | T) => program is T -+>isBuilderProgram : (program: T | Program) => program is T - >program : T | Program - - export function listFiles(program: Program | T) { -->listFiles : (program: Program | T) => void -+>listFiles : (program: T | Program) => void - >program : T | Program - - const x: Program = isBuilderProgram(program) ? program.getProgram() : program; - >x : Program - >isBuilderProgram(program) ? program.getProgram() : program : Program - >isBuilderProgram(program) : boolean -->isBuilderProgram : (program: Program | T_1) => program is T_1 -+>isBuilderProgram : (program: T_1 | Program) => program is T_1 - >program : T | Program - >program.getProgram() : Program - >program.getProgram : () => Program \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types b/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types index 987b07e6bc2..2890eba7f22 100644 --- a/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types +++ b/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types @@ -425,7 +425,7 @@ declare module "Number/_Internal" { >Numbers : Numbers 'string': { ->'string' : { all: "-1" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-2" | "-20" | "-21" | "-22" | "-23" | "-24" | "-25" | "-26" | "-27" | "-28" | "-29" | "-3" | "-30" | "-31" | "-32" | "-33" | "-34" | "-35" | "-36" | "-37" | "-38" | "-39" | "-4" | "-40" | "-5" | "-6" | "-7" | "-8" | "-9" | "0" | "1" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "2" | "20" | "21" | "22" | "23" | "24" | "25" | "26" | "27" | "28" | "29" | "3" | "30" | "31" | "32" | "33" | "34" | "35" | "36" | "37" | "38" | "39" | "4" | "40" | "5" | "6" | "7" | "8" | "9"; '+': "1" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "2" | "20" | "21" | "22" | "23" | "24" | "25" | "26" | "27" | "28" | "29" | "3" | "30" | "31" | "32" | "33" | "34" | "35" | "36" | "37" | "38" | "39" | "4" | "40" | "5" | "6" | "7" | "8" | "9"; '-': "-1" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-2" | "-20" | "-21" | "-22" | "-23" | "-24" | "-25" | "-26" | "-27" | "-28" | "-29" | "-3" | "-30" | "-31" | "-32" | "-33" | "-34" | "-35" | "-36" | "-37" | "-38" | "-39" | "-4" | "-40" | "-5" | "-6" | "-7" | "-8" | "-9"; '0': "0"; } +>'string' : { all: Format; '+': Format; '-': Format; '0': Format; } 'all': Format; >'all' : "-1" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-2" | "-20" | "-21" | "-22" | "-23" | "-24" | "-25" | "-26" | "-27" | "-28" | "-29" | "-3" | "-30" | "-31" | "-32" | "-33" | "-34" | "-35" | "-36" | "-37" | "-38" | "-39" | "-4" | "-40" | "-5" | "-6" | "-7" | "-8" | "-9" | "0" | "1" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "2" | "20" | "21" | "22" | "23" | "24" | "25" | "26" | "27" | "28" | "29" | "3" | "30" | "31" | "32" | "33" | "34" | "35" | "36" | "37" | "38" | "39" | "4" | "40" | "5" | "6" | "7" | "8" | "9" @@ -441,7 +441,7 @@ declare module "Number/_Internal" { }; 'number': { ->'number' : { all: -40 | -39 | -38 | -37 | -36 | -35 | -34 | -33 | -32 | -31 | -30 | -29 | -28 | -27 | -26 | -25 | -24 | -23 | -22 | -21 | -20 | -19 | -18 | -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40; '+': 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40; '-': -40 | -39 | -38 | -37 | -36 | -35 | -34 | -33 | -32 | -31 | -30 | -29 | -28 | -27 | -26 | -25 | -24 | -23 | -22 | -21 | -20 | -19 | -18 | -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1; '0': 0; } +>'number' : { all: Format; '+': Format; '-': Format; '0': Format; } 'all': Format; >'all' : -40 | -39 | -38 | -37 | -36 | -35 | -34 | -33 | -32 | -31 | -30 | -29 | -28 | -27 | -26 | -25 | -24 | -23 | -22 | -21 | -20 | -19 | -18 | -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 diff --git a/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types.diff b/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types.diff index 48b45e143cf..17fe9dd2b0b 100644 --- a/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types.diff @@ -5,7 +5,7 @@ 'string': { ->'string' : { all: Format; '+': Format; '-': Format; '0': Format; } -+>'string' : { all: "-1" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-2" | "-20" | "-21" | "-22" | "-23" | "-24" | "-25" | "-26" | "-27" | "-28" | "-29" | "-3" | "-30" | "-31" | "-32" | "-33" | "-34" | "-35" | "-36" | "-37" | "-38" | "-39" | "-4" | "-40" | "-5" | "-6" | "-7" | "-8" | "-9" | "0" | "1" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "2" | "20" | "21" | "22" | "23" | "24" | "25" | "26" | "27" | "28" | "29" | "3" | "30" | "31" | "32" | "33" | "34" | "35" | "36" | "37" | "38" | "39" | "4" | "40" | "5" | "6" | "7" | "8" | "9"; '+': "1" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "2" | "20" | "21" | "22" | "23" | "24" | "25" | "26" | "27" | "28" | "29" | "3" | "30" | "31" | "32" | "33" | "34" | "35" | "36" | "37" | "38" | "39" | "4" | "40" | "5" | "6" | "7" | "8" | "9"; '-': "-1" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-2" | "-20" | "-21" | "-22" | "-23" | "-24" | "-25" | "-26" | "-27" | "-28" | "-29" | "-3" | "-30" | "-31" | "-32" | "-33" | "-34" | "-35" | "-36" | "-37" | "-38" | "-39" | "-4" | "-40" | "-5" | "-6" | "-7" | "-8" | "-9"; '0': "0"; } ++>'string' : { all: Format; '+': Format; '-': Format; '0': Format; } 'all': Format; >'all' : "-1" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-2" | "-20" | "-21" | "-22" | "-23" | "-24" | "-25" | "-26" | "-27" | "-28" | "-29" | "-3" | "-30" | "-31" | "-32" | "-33" | "-34" | "-35" | "-36" | "-37" | "-38" | "-39" | "-4" | "-40" | "-5" | "-6" | "-7" | "-8" | "-9" | "0" | "1" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "2" | "20" | "21" | "22" | "23" | "24" | "25" | "26" | "27" | "28" | "29" | "3" | "30" | "31" | "32" | "33" | "34" | "35" | "36" | "37" | "38" | "39" | "4" | "40" | "5" | "6" | "7" | "8" | "9" @@ -14,7 +14,7 @@ }; 'number': { ->'number' : { all: Format; '+': Format; '-': Format; '0': Format; } -+>'number' : { all: -40 | -39 | -38 | -37 | -36 | -35 | -34 | -33 | -32 | -31 | -30 | -29 | -28 | -27 | -26 | -25 | -24 | -23 | -22 | -21 | -20 | -19 | -18 | -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40; '+': 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40; '-': -40 | -39 | -38 | -37 | -36 | -35 | -34 | -33 | -32 | -31 | -30 | -29 | -28 | -27 | -26 | -25 | -24 | -23 | -22 | -21 | -20 | -19 | -18 | -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1; '0': 0; } ++>'number' : { all: Format; '+': Format; '-': Format; '0': Format; } 'all': Format; >'all' : -40 | -39 | -38 | -37 | -36 | -35 | -34 | -33 | -32 | -31 | -30 | -29 | -28 | -27 | -26 | -25 | -24 | -23 | -22 | -21 | -20 | -19 | -18 | -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.errors.txt b/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.errors.txt index 92bcff8deca..721d50fa3a9 100644 --- a/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.errors.txt @@ -12,7 +12,7 @@ reachabilityChecksNoCrash1.ts(1,71): error TS7006: Parameter 'T' implicitly has reachabilityChecksNoCrash1.ts(1,72): error TS1005: ',' expected. reachabilityChecksNoCrash1.ts(1,73): error TS1109: Expression expected. reachabilityChecksNoCrash1.ts(1,74): error TS1128: Declaration or statement expected. -reachabilityChecksNoCrash1.ts(1,76): error TS2365: Operator '>' cannot be applied to types 'boolean' and '{ const: any; for: any; of: any; asyncIterable: any; out: any; "": any; }'. +reachabilityChecksNoCrash1.ts(1,76): error TS2365: Operator '>' cannot be applied to types 'boolean' and '{ const: never[]; for: any; of: any; asyncIterable: any; out: any; "": any; }'. reachabilityChecksNoCrash1.ts(1,84): error TS2304: Cannot find name 'T'. reachabilityChecksNoCrash1.ts(1,86): error TS1011: An element access expression should take an argument. reachabilityChecksNoCrash1.ts(2,11): error TS1005: ':' expected. @@ -116,7 +116,7 @@ reachabilityChecksNoCrash1.ts(7,1): error TS1128: Declaration or statement expec !!! error TS1005: ',' expected. } ~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types 'boolean' and '{ const: any; for: any; of: any; asyncIterable: any; out: any; "": any; }'. +!!! error TS2365: Operator '>' cannot be applied to types 'boolean' and '{ const: never[]; for: any; of: any; asyncIterable: any; out: any; "": any; }'. return out; } ~ diff --git a/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.errors.txt.diff index 9c58f6ab1bd..ff9b9d54b5a 100644 --- a/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.errors.txt.diff @@ -1,6 +1,15 @@ --- old.reachabilityChecksNoCrash1.errors.txt +++ new.reachabilityChecksNoCrash1.errors.txt -@@= skipped -19, +19 lines =@@ +@@= skipped -11, +11 lines =@@ + reachabilityChecksNoCrash1.ts(1,72): error TS1005: ',' expected. + reachabilityChecksNoCrash1.ts(1,73): error TS1109: Expression expected. + reachabilityChecksNoCrash1.ts(1,74): error TS1128: Declaration or statement expected. +-reachabilityChecksNoCrash1.ts(1,76): error TS2365: Operator '>' cannot be applied to types 'boolean' and '{ const: any; for: any; of: any; asyncIterable: any; out: any; "": any; }'. ++reachabilityChecksNoCrash1.ts(1,76): error TS2365: Operator '>' cannot be applied to types 'boolean' and '{ const: never[]; for: any; of: any; asyncIterable: any; out: any; "": any; }'. + reachabilityChecksNoCrash1.ts(1,84): error TS2304: Cannot find name 'T'. + reachabilityChecksNoCrash1.ts(1,86): error TS1011: An element access expression should take an argument. + reachabilityChecksNoCrash1.ts(2,11): error TS1005: ':' expected. +@@= skipped -8, +8 lines =@@ reachabilityChecksNoCrash1.ts(2,19): error TS1005: ',' expected. reachabilityChecksNoCrash1.ts(3,9): error TS1005: ':' expected. reachabilityChecksNoCrash1.ts(3,16): error TS1109: Expression expected. @@ -31,7 +40,13 @@ ~ !!! error TS1005: ':' expected. ~ -@@= skipped -33, +35 lines =@@ +@@= skipped -28, +30 lines =@@ + !!! error TS1005: ',' expected. + } + ~~~~~ +-!!! error TS2365: Operator '>' cannot be applied to types 'boolean' and '{ const: any; for: any; of: any; asyncIterable: any; out: any; "": any; }'. ++!!! error TS2365: Operator '>' cannot be applied to types 'boolean' and '{ const: never[]; for: any; of: any; asyncIterable: any; out: any; "": any; }'. + return out; } ~ !!! error TS1109: Expression expected. diff --git a/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.types b/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.types index d20ab0edb8b..33612f6fa00 100644 --- a/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.types +++ b/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.types @@ -17,7 +17,7 @@ export async function arrayFromAsync(asyncIterable!: AsyncIterable): Promi >T[] : any >T : any > : any ->{ const out = []; for await (const v of asyncIterable) { out.push(await v); } : { const: any; for: any; of: any; asyncIterable: any; out: any; "": any; } +>{ const out = []; for await (const v of asyncIterable) { out.push(await v); } : { const: never[]; for: any; of: any; asyncIterable: any; out: any; "": any; } const out = []; >const : never[] diff --git a/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.types.diff b/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.types.diff new file mode 100644 index 00000000000..3f654ab803f --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/reachabilityChecksNoCrash1.types.diff @@ -0,0 +1,11 @@ +--- old.reachabilityChecksNoCrash1.types ++++ new.reachabilityChecksNoCrash1.types +@@= skipped -16, +16 lines =@@ + >T[] : any + >T : any + > : any +->{ const out = []; for await (const v of asyncIterable) { out.push(await v); } : { const: any; for: any; of: any; asyncIterable: any; out: any; "": any; } ++>{ const out = []; for await (const v of asyncIterable) { out.push(await v); } : { const: never[]; for: any; of: any; asyncIterable: any; out: any; "": any; } + + const out = []; + >const : never[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reactHOCSpreadprops.types b/testdata/baselines/reference/submodule/compiler/reactHOCSpreadprops.types index 64f63eb8363..128de530c2d 100644 --- a/testdata/baselines/reference/submodule/compiler/reactHOCSpreadprops.types +++ b/testdata/baselines/reference/submodule/compiler/reactHOCSpreadprops.types @@ -6,7 +6,7 @@ import React = require("react"); >React : typeof 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 >React : any diff --git a/testdata/baselines/reference/submodule/compiler/reactHOCSpreadprops.types.diff b/testdata/baselines/reference/submodule/compiler/reactHOCSpreadprops.types.diff deleted file mode 100644 index c7cea76eabf..00000000000 --- a/testdata/baselines/reference/submodule/compiler/reactHOCSpreadprops.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.reactHOCSpreadprops.types -+++ new.reactHOCSpreadprops.types -@@= skipped -5, +5 lines =@@ - >React : typeof 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 - >React : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reactReadonlyHOCAssignabilityReal.types b/testdata/baselines/reference/submodule/compiler/reactReadonlyHOCAssignabilityReal.types index e5b10d14253..7faebc9249f 100644 --- a/testdata/baselines/reference/submodule/compiler/reactReadonlyHOCAssignabilityReal.types +++ b/testdata/baselines/reference/submodule/compiler/reactReadonlyHOCAssignabilityReal.types @@ -6,7 +6,7 @@ import * as React from "react"; >React : typeof 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 >name : string diff --git a/testdata/baselines/reference/submodule/compiler/reactReadonlyHOCAssignabilityReal.types.diff b/testdata/baselines/reference/submodule/compiler/reactReadonlyHOCAssignabilityReal.types.diff deleted file mode 100644 index 06097ce9ede..00000000000 --- a/testdata/baselines/reference/submodule/compiler/reactReadonlyHOCAssignabilityReal.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.reactReadonlyHOCAssignabilityReal.types -+++ new.reactReadonlyHOCAssignabilityReal.types -@@= skipped -5, +5 lines =@@ - >React : typeof 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 - >name : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reactReduxLikeDeferredInferenceAllowsAssignment.types b/testdata/baselines/reference/submodule/compiler/reactReduxLikeDeferredInferenceAllowsAssignment.types index 87f10750b08..1d58ea2dfbd 100644 --- a/testdata/baselines/reference/submodule/compiler/reactReduxLikeDeferredInferenceAllowsAssignment.types +++ b/testdata/baselines/reference/submodule/compiler/reactReduxLikeDeferredInferenceAllowsAssignment.types @@ -12,7 +12,7 @@ declare class Component

{ >context : any readonly props: Readonly

& Readonly<{ children?: {} }>; ->props : Readonly

& Readonly<{ children?: {} | undefined; }> +>props : Readonly

& Readonly<{ children?: {}; }> >children : {} | undefined } interface ComponentClass

{ @@ -31,7 +31,7 @@ interface ComponentClass

{ } interface FunctionComponent

{ (props: P & { children?: {} }, context?: any): {} | null; ->props : P & { children?: {} | undefined; } +>props : P & { children?: {}; } >children : {} | undefined >context : any @@ -218,11 +218,11 @@ const simpleAction = (payload: boolean) => ({ }); const thunkAction = (param1: number, param2: string) => async ( ->thunkAction : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise ->(param1: number, param2: string) => async ( dispatch: Dispatch, { foo }: OwnProps) => { return foo;} : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise +>thunkAction : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise +>(param1: number, param2: string) => async ( dispatch: Dispatch, { foo }: OwnProps) => { return foo;} : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise >param1 : number >param2 : string ->async ( dispatch: Dispatch, { foo }: OwnProps) => { return foo;} : (dispatch: Dispatch, { foo }: OwnProps) => Promise +>async ( dispatch: Dispatch, { foo }: OwnProps) => { return foo;} : (dispatch: Dispatch, { foo }: OwnProps) => Promise dispatch: Dispatch, >dispatch : Dispatch @@ -254,10 +254,10 @@ class TestComponent extends Component {} >Component : Component const mapDispatchToProps = { simpleAction, thunkAction }; ->mapDispatchToProps : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } ->{ simpleAction, thunkAction } : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } +>mapDispatchToProps : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } +>{ simpleAction, thunkAction } : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } >simpleAction : (payload: boolean) => { type: string; payload: boolean; } ->thunkAction : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise +>thunkAction : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise type Q = HandleThunkActionCreator; >Q : (payload: boolean) => { type: string; payload: boolean; } @@ -271,7 +271,7 @@ const Test1 = connect( null, mapDispatchToProps ->mapDispatchToProps : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } +>mapDispatchToProps : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } )(TestComponent); >TestComponent : typeof TestComponent diff --git a/testdata/baselines/reference/submodule/compiler/reactReduxLikeDeferredInferenceAllowsAssignment.types.diff b/testdata/baselines/reference/submodule/compiler/reactReduxLikeDeferredInferenceAllowsAssignment.types.diff deleted file mode 100644 index 8ad2f70d65b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/reactReduxLikeDeferredInferenceAllowsAssignment.types.diff +++ /dev/null @@ -1,58 +0,0 @@ ---- old.reactReduxLikeDeferredInferenceAllowsAssignment.types -+++ new.reactReduxLikeDeferredInferenceAllowsAssignment.types -@@= skipped -11, +11 lines =@@ - >context : any - - readonly props: Readonly

& Readonly<{ children?: {} }>; -->props : Readonly

& Readonly<{ children?: {}; }> -+>props : Readonly

& Readonly<{ children?: {} | undefined; }> - >children : {} | undefined - } - interface ComponentClass

{ -@@= skipped -19, +19 lines =@@ - } - interface FunctionComponent

{ - (props: P & { children?: {} }, context?: any): {} | null; -->props : P & { children?: {}; } -+>props : P & { children?: {} | undefined; } - >children : {} | undefined - >context : any - -@@= skipped -187, +187 lines =@@ - - }); - const thunkAction = (param1: number, param2: string) => async ( -->thunkAction : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise -->(param1: number, param2: string) => async ( dispatch: Dispatch, { foo }: OwnProps) => { return foo;} : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise -+>thunkAction : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise -+>(param1: number, param2: string) => async ( dispatch: Dispatch, { foo }: OwnProps) => { return foo;} : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise - >param1 : number - >param2 : string -->async ( dispatch: Dispatch, { foo }: OwnProps) => { return foo;} : (dispatch: Dispatch, { foo }: OwnProps) => Promise -+>async ( dispatch: Dispatch, { foo }: OwnProps) => { return foo;} : (dispatch: Dispatch, { foo }: OwnProps) => Promise - - dispatch: Dispatch, - >dispatch : Dispatch -@@= skipped -36, +36 lines =@@ - >Component : Component - - const mapDispatchToProps = { simpleAction, thunkAction }; -->mapDispatchToProps : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } -->{ simpleAction, thunkAction } : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } -+>mapDispatchToProps : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } -+>{ simpleAction, thunkAction } : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } - >simpleAction : (payload: boolean) => { type: string; payload: boolean; } -->thunkAction : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise -+>thunkAction : (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise - - type Q = HandleThunkActionCreator; - >Q : (payload: boolean) => { type: string; payload: boolean; } -@@= skipped -17, +17 lines =@@ - - null, - mapDispatchToProps -->mapDispatchToProps : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } -+>mapDispatchToProps : { simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => (dispatch: Dispatch, { foo }: OwnProps) => Promise; } - - )(TestComponent); - >TestComponent : typeof TestComponent \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reactTransitiveImportHasValidDeclaration.types b/testdata/baselines/reference/submodule/compiler/reactTransitiveImportHasValidDeclaration.types index ad79ddd7386..11a86fd0964 100644 --- a/testdata/baselines/reference/submodule/compiler/reactTransitiveImportHasValidDeclaration.types +++ b/testdata/baselines/reference/submodule/compiler/reactTransitiveImportHasValidDeclaration.types @@ -39,7 +39,7 @@ import {StyledOtherComponent, StyledOtherComponentList} from "create-emotion-sty >StyledOtherComponentList : any export default function styled(tag: string): (o: object) => StyledOtherComponent<{}, StyledOtherComponentList["div"], any>; ->styled : (tag: string) => (o: object) => StyledOtherComponent<{}, import("react").DetailedHTMLProps, HTMLDivElement>, any> +>styled : (tag: string) => (o: object) => StyledOtherComponent<{}, StyledOtherComponentList["div"], any> >tag : string >o : object diff --git a/testdata/baselines/reference/submodule/compiler/reactTransitiveImportHasValidDeclaration.types.diff b/testdata/baselines/reference/submodule/compiler/reactTransitiveImportHasValidDeclaration.types.diff index dc96e2382a2..aedcd958038 100644 --- a/testdata/baselines/reference/submodule/compiler/reactTransitiveImportHasValidDeclaration.types.diff +++ b/testdata/baselines/reference/submodule/compiler/reactTransitiveImportHasValidDeclaration.types.diff @@ -1,13 +1,6 @@ --- old.reactTransitiveImportHasValidDeclaration.types +++ new.reactTransitiveImportHasValidDeclaration.types -@@= skipped -38, +38 lines =@@ - >StyledOtherComponentList : any - - export default function styled(tag: string): (o: object) => StyledOtherComponent<{}, StyledOtherComponentList["div"], any>; -->styled : (tag: string) => (o: object) => StyledOtherComponent<{}, StyledOtherComponentList["div"], any> -+>styled : (tag: string) => (o: object) => StyledOtherComponent<{}, import("react").DetailedHTMLProps, HTMLDivElement>, any> - >tag : string - >o : object +@@= skipped -44, +44 lines =@@ === index.ts === import styled from "react-emotion" diff --git a/testdata/baselines/reference/submodule/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.types b/testdata/baselines/reference/submodule/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.types index ba3e0d2630d..33f2753acbe 100644 --- a/testdata/baselines/reference/submodule/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.types +++ b/testdata/baselines/reference/submodule/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.types @@ -2,24 +2,24 @@ === readonlyFloat32ArrayAssignableWithFloat32Array.ts === function update(b: Readonly) { ->update : (b: Readonly>) => void +>update : (b: Readonly) => void >b : Readonly> const c = copy(b); >c : Float32Array >copy(b) : Float32Array ->copy : (a: Float32Array) => Float32Array +>copy : (a: Float32Array) => Float32Array >b : Readonly> add(c, c); >add(c, c) : void ->add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void +>add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void >c : Float32Array >c : Float32Array } function add(a: Float32Array, b: Float32Array, c: Float32Array = a) { ->add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void +>add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void >a : Float32Array >b : Float32Array >c : Float32Array @@ -40,7 +40,7 @@ function add(a: Float32Array, b: Float32Array, c: Float32Array = a) { } function copy(a: Float32Array) { ->copy : (a: Float32Array) => Float32Array +>copy : (a: Float32Array) => Float32Array >a : Float32Array return new Float32Array(a); diff --git a/testdata/baselines/reference/submodule/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.types.diff b/testdata/baselines/reference/submodule/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.types.diff deleted file mode 100644 index e6972b7281e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.types.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.readonlyFloat32ArrayAssignableWithFloat32Array.types -+++ new.readonlyFloat32ArrayAssignableWithFloat32Array.types -@@= skipped -1, +1 lines =@@ - - === readonlyFloat32ArrayAssignableWithFloat32Array.ts === - function update(b: Readonly) { -->update : (b: Readonly) => void -+>update : (b: Readonly>) => void - >b : Readonly> - - const c = copy(b); - >c : Float32Array - >copy(b) : Float32Array -->copy : (a: Float32Array) => Float32Array -+>copy : (a: Float32Array) => Float32Array - >b : Readonly> - - add(c, c); - >add(c, c) : void -->add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void -+>add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void - >c : Float32Array - >c : Float32Array - } - - function add(a: Float32Array, b: Float32Array, c: Float32Array = a) { -->add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void -+>add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void - >a : Float32Array - >b : Float32Array - >c : Float32Array -@@= skipped -38, +38 lines =@@ - } - - function copy(a: Float32Array) { -->copy : (a: Float32Array) => Float32Array -+>copy : (a: Float32Array) => Float32Array - >a : Float32Array - - return new Float32Array(a); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/readonlyTupleAndArrayElaboration.types b/testdata/baselines/reference/submodule/compiler/readonlyTupleAndArrayElaboration.types index 90730c7e56b..b3fa9d5225f 100644 --- a/testdata/baselines/reference/submodule/compiler/readonlyTupleAndArrayElaboration.types +++ b/testdata/baselines/reference/submodule/compiler/readonlyTupleAndArrayElaboration.types @@ -45,12 +45,12 @@ arryFn(point); >point : readonly [3, 4] declare function arryFn2(x: Array): void; ->arryFn2 : (x: number[]) => void +>arryFn2 : (x: Array) => void >x : number[] arryFn2(point); >arryFn2(point) : void ->arryFn2 : (x: number[]) => void +>arryFn2 : (x: Array) => void >point : readonly [3, 4] declare const a: readonly number[]; @@ -64,17 +64,17 @@ declare const c: ReadonlyArray; arryFn2(a); >arryFn2(a) : void ->arryFn2 : (x: number[]) => void +>arryFn2 : (x: Array) => void >a : readonly number[] arryFn2(b); >arryFn2(b) : void ->arryFn2 : (x: number[]) => void +>arryFn2 : (x: Array) => void >b : readonly number[] arryFn2(c); >arryFn2(c) : void ->arryFn2 : (x: number[]) => void +>arryFn2 : (x: Array) => void >c : readonly number[] const t1: readonly [1] = [1]; diff --git a/testdata/baselines/reference/submodule/compiler/readonlyTupleAndArrayElaboration.types.diff b/testdata/baselines/reference/submodule/compiler/readonlyTupleAndArrayElaboration.types.diff deleted file mode 100644 index 560b54f4b3c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/readonlyTupleAndArrayElaboration.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.readonlyTupleAndArrayElaboration.types -+++ new.readonlyTupleAndArrayElaboration.types -@@= skipped -44, +44 lines =@@ - >point : readonly [3, 4] - - declare function arryFn2(x: Array): void; -->arryFn2 : (x: Array) => void -+>arryFn2 : (x: number[]) => void - >x : number[] - - arryFn2(point); - >arryFn2(point) : void -->arryFn2 : (x: Array) => void -+>arryFn2 : (x: number[]) => void - >point : readonly [3, 4] - - declare const a: readonly number[]; -@@= skipped -19, +19 lines =@@ - - arryFn2(a); - >arryFn2(a) : void -->arryFn2 : (x: Array) => void -+>arryFn2 : (x: number[]) => void - >a : readonly number[] - - arryFn2(b); - >arryFn2(b) : void -->arryFn2 : (x: Array) => void -+>arryFn2 : (x: number[]) => void - >b : readonly number[] - - arryFn2(c); - >arryFn2(c) : void -->arryFn2 : (x: Array) => void -+>arryFn2 : (x: number[]) => void - >c : readonly number[] - - const t1: readonly [1] = [1]; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/recursiveClassBaseType.types b/testdata/baselines/reference/submodule/compiler/recursiveClassBaseType.types index aaff0f8485e..8615865ead0 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveClassBaseType.types +++ b/testdata/baselines/reference/submodule/compiler/recursiveClassBaseType.types @@ -8,13 +8,13 @@ declare const 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 class C extends Base({ x: p(() => []) }) { } >C : C >Base({ x: p(() => []) }) : { x: C[]; } ->Base : (val: T) => new () => T +>Base : (val: T) => { new (): T; } >{ x: p(() => []) } : { x: C[]; } >x : C[] >p(() => []) : C[] diff --git a/testdata/baselines/reference/submodule/compiler/recursiveClassBaseType.types.diff b/testdata/baselines/reference/submodule/compiler/recursiveClassBaseType.types.diff deleted file mode 100644 index 8df1a7830eb..00000000000 --- a/testdata/baselines/reference/submodule/compiler/recursiveClassBaseType.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.recursiveClassBaseType.types -+++ new.recursiveClassBaseType.types -@@= skipped -7, +7 lines =@@ - >fn : () => T - - declare const Base: (val: T) => { new(): T }; -->Base : (val: T) => { new (): T; } -+>Base : (val: T) => new () => T - >val : T - - class C extends Base({ x: p(() => []) }) { } - >C : C - >Base({ x: p(() => []) }) : { x: C[]; } -->Base : (val: T) => { new (): T; } -+>Base : (val: T) => new () => T - >{ x: p(() => []) } : { x: C[]; } - >x : C[] - >p(() => []) : C[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/recursiveClassReferenceTest.types b/testdata/baselines/reference/submodule/compiler/recursiveClassReferenceTest.types index e2dac6f81a7..4f93c500c7e 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveClassReferenceTest.types +++ b/testdata/baselines/reference/submodule/compiler/recursiveClassReferenceTest.types @@ -16,8 +16,8 @@ declare namespace Sample.Thing { >destroy : () => any gar(runner:(widget:Sample.Thing.IWidget)=>any):any; ->gar : (runner: (widget: IWidget) => any) => any ->runner : (widget: IWidget) => any +>gar : (runner: (widget: Sample.Thing.IWidget) => any) => any +>runner : (widget: Sample.Thing.IWidget) => any >widget : IWidget >Sample : any >Thing : any @@ -90,14 +90,14 @@ namespace Sample.Thing.Widgets { >Thing : typeof Thing public gar(runner:(widget:Sample.Thing.IWidget)=>any) { if (true) {return runner(this);}} ->gar : (runner: (widget: IWidget) => any) => any ->runner : (widget: IWidget) => any +>gar : (runner: (widget: Sample.Thing.IWidget) => any) => any +>runner : (widget: Sample.Thing.IWidget) => any >widget : IWidget >Sample : any >Thing : any >true : true >runner(this) : any ->runner : (widget: IWidget) => any +>runner : (widget: Sample.Thing.IWidget) => any >this : this private domNode:any = null; diff --git a/testdata/baselines/reference/submodule/compiler/recursiveClassReferenceTest.types.diff b/testdata/baselines/reference/submodule/compiler/recursiveClassReferenceTest.types.diff deleted file mode 100644 index aad2e9e46e1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/recursiveClassReferenceTest.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.recursiveClassReferenceTest.types -+++ new.recursiveClassReferenceTest.types -@@= skipped -15, +15 lines =@@ - >destroy : () => any - - gar(runner:(widget:Sample.Thing.IWidget)=>any):any; -->gar : (runner: (widget: Sample.Thing.IWidget) => any) => any -->runner : (widget: Sample.Thing.IWidget) => any -+>gar : (runner: (widget: IWidget) => any) => any -+>runner : (widget: IWidget) => any - >widget : IWidget - >Sample : any - >Thing : any -@@= skipped -74, +74 lines =@@ - >Thing : typeof Thing - - public gar(runner:(widget:Sample.Thing.IWidget)=>any) { if (true) {return runner(this);}} -->gar : (runner: (widget: Sample.Thing.IWidget) => any) => any -->runner : (widget: Sample.Thing.IWidget) => any -+>gar : (runner: (widget: IWidget) => any) => any -+>runner : (widget: IWidget) => any - >widget : IWidget - >Sample : any - >Thing : any - >true : true - >runner(this) : any -->runner : (widget: Sample.Thing.IWidget) => any -+>runner : (widget: IWidget) => any - >this : this - - private domNode:any = null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/recursiveConditionalTypes.types b/testdata/baselines/reference/submodule/compiler/recursiveConditionalTypes.types index ed6b043d886..73d9df41e47 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveConditionalTypes.types +++ b/testdata/baselines/reference/submodule/compiler/recursiveConditionalTypes.types @@ -125,12 +125,12 @@ function f22(tn: TupleOf, tm: TupleOf< } declare function f23(t: TupleOf): T; ->f23 : (t: [T, T, T]) => T +>f23 : (t: TupleOf) => T >t : [T, T, T] f23(['a', 'b', 'c']); // string >f23(['a', 'b', 'c']) : string ->f23 : (t: [T, T, T]) => T +>f23 : (t: TupleOf) => T >['a', 'b', 'c'] : [string, string, string] >'a' : "a" >'b' : "b" @@ -179,11 +179,11 @@ declare let b3: InfBox; >b3 : InfBox declare let b4: { value: { value: { value: typeof b4 }}}; ->b4 : { value: { value: { value: any; }; }; } ->value : { value: { value: { value: any; }; }; } ->value : { value: { value: { value: any; }; }; } ->value : { value: { value: { value: any; }; }; } ->b4 : { value: { value: { value: any; }; }; } +>b4 : { value: { value: { value: typeof b4; }; }; } +>value : { value: { value: typeof b4; }; } +>value : { value: typeof b4; } +>value : { value: { value: { value: typeof b4; }; }; } +>b4 : { value: { value: { value: typeof b4; }; }; } unbox(b1); // string >unbox(b1) : string @@ -218,9 +218,9 @@ unbox({ value: { value: { value: { value: { value: { value: 5 }}}}}}); // numbe >5 : 5 unbox(b4); // { value: { value: typeof b4 }} ->unbox(b4) : { value: { value: { value: any; }; }; } +>unbox(b4) : { value: { value: typeof b4; }; } >unbox : (box: RecBox) => T ->b4 : { value: { value: { value: any; }; }; } +>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; }; } @@ -380,7 +380,7 @@ type Enumerate = number extends N : never; function foo2(value: T): Enumerate { ->foo2 : (value: T) => Enumerate +>foo2 : (value: T) => Enumerate >value : T return value.length; // Error diff --git a/testdata/baselines/reference/submodule/compiler/recursiveConditionalTypes.types.diff b/testdata/baselines/reference/submodule/compiler/recursiveConditionalTypes.types.diff index 710cd661741..08017d13ac9 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveConditionalTypes.types.diff +++ b/testdata/baselines/reference/submodule/compiler/recursiveConditionalTypes.types.diff @@ -1,46 +1,11 @@ --- old.recursiveConditionalTypes.types +++ new.recursiveConditionalTypes.types -@@= skipped -124, +124 lines =@@ - } +@@= skipped -379, +379 lines =@@ + : never; - declare function f23(t: TupleOf): T; -->f23 : (t: TupleOf) => T -+>f23 : (t: [T, T, T]) => T - >t : [T, T, T] + function foo2(value: T): Enumerate { +->foo2 : (value: T) => Enumerate ++>foo2 : (value: T) => Enumerate + >value : T - f23(['a', 'b', 'c']); // string - >f23(['a', 'b', 'c']) : string -->f23 : (t: TupleOf) => T -+>f23 : (t: [T, T, T]) => T - >['a', 'b', 'c'] : [string, string, string] - >'a' : "a" - >'b' : "b" -@@= skipped -54, +54 lines =@@ - >b3 : InfBox - - declare let b4: { value: { value: { value: typeof b4 }}}; -->b4 : { value: { value: { value: typeof b4; }; }; } -->value : { value: { value: typeof b4; }; } -->value : { value: typeof b4; } -->value : { value: { value: { value: typeof b4; }; }; } -->b4 : { value: { value: { value: typeof b4; }; }; } -+>b4 : { value: { value: { value: any; }; }; } -+>value : { value: { value: { value: any; }; }; } -+>value : { value: { value: { value: any; }; }; } -+>value : { value: { value: { value: any; }; }; } -+>b4 : { value: { value: { value: any; }; }; } - - unbox(b1); // string - >unbox(b1) : string -@@= skipped -39, +39 lines =@@ - >5 : 5 - - unbox(b4); // { value: { value: typeof b4 }} -->unbox(b4) : { value: { value: typeof b4; }; } -+>unbox(b4) : { value: { value: { value: any; }; }; } - >unbox : (box: RecBox) => T -->b4 : { value: { value: { value: typeof b4; }; }; } -+>b4 : { value: { value: { value: any; }; }; } - - unbox({ value: { value: { get value() { return this; } }}}); // { readonly value: ... } - >unbox({ value: { value: { get value() { return this; } }}}) : { readonly value: { readonly value: any; }; } \ No newline at end of file + return value.length; // Error \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.errors.txt b/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.errors.txt index d3f23f78c56..8454047e499 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.errors.txt @@ -5,15 +5,15 @@ recursiveFunctionTypes.ts(4,5): error TS2322: Type '() => typeof fn' is not assi recursiveFunctionTypes.ts(11,16): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. recursiveFunctionTypes.ts(12,16): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. recursiveFunctionTypes.ts(17,5): error TS2322: Type '() => I' is not assignable to type 'number'. -recursiveFunctionTypes.ts(22,5): error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. -recursiveFunctionTypes.ts(25,1): error TS2322: Type 'number' is not assignable to type '() => any'. +recursiveFunctionTypes.ts(22,5): error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof C.g) => void'. +recursiveFunctionTypes.ts(25,1): error TS2322: Type 'number' is not assignable to type '() => typeof f4'. recursiveFunctionTypes.ts(30,10): error TS2394: This overload signature is not compatible with its implementation signature. recursiveFunctionTypes.ts(33,8): error TS2554: Expected 0-1 arguments, but got 2. recursiveFunctionTypes.ts(34,4): error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'. recursiveFunctionTypes.ts(42,8): error TS2554: Expected 0-1 arguments, but got 2. recursiveFunctionTypes.ts(43,4): error TS2769: No overload matches this call. The last overload gave the following error. - Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; }'. + Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. ==== recursiveFunctionTypes.ts (13 errors) ==== @@ -53,12 +53,12 @@ recursiveFunctionTypes.ts(43,4): error TS2769: No overload matches this call. } C.g(3); // error ~ -!!! error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. +!!! error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof C.g) => void'. var f4: () => typeof f4; f4 = 3; // error ~~ -!!! error TS2322: Type 'number' is not assignable to type '() => any'. +!!! error TS2322: Type 'number' is not assignable to type '() => typeof f4'. function f5() { return f5; } @@ -90,6 +90,6 @@ recursiveFunctionTypes.ts(43,4): error TS2769: No overload matches this call. ~~ !!! error TS2769: No overload matches this call. !!! error TS2769: The last overload gave the following error. -!!! error TS2769: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; }'. +!!! error TS2769: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. !!! related TS2771 recursiveFunctionTypes.ts:40:18: The last overload is declared here. f7(); // ok \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.errors.txt.diff index 95345484419..e20cd67aee6 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.errors.txt.diff @@ -1,6 +1,15 @@ --- old.recursiveFunctionTypes.errors.txt +++ new.recursiveFunctionTypes.errors.txt -@@= skipped -11, +11 lines =@@ +@@= skipped -4, +4 lines =@@ + recursiveFunctionTypes.ts(11,16): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. + recursiveFunctionTypes.ts(12,16): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. + recursiveFunctionTypes.ts(17,5): error TS2322: Type '() => I' is not assignable to type 'number'. +-recursiveFunctionTypes.ts(22,5): error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. +-recursiveFunctionTypes.ts(25,1): error TS2322: Type 'number' is not assignable to type '() => any'. ++recursiveFunctionTypes.ts(22,5): error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof C.g) => void'. ++recursiveFunctionTypes.ts(25,1): error TS2322: Type 'number' is not assignable to type '() => typeof f4'. + recursiveFunctionTypes.ts(30,10): error TS2394: This overload signature is not compatible with its implementation signature. + recursiveFunctionTypes.ts(33,8): error TS2554: Expected 0-1 arguments, but got 2. recursiveFunctionTypes.ts(34,4): error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'. recursiveFunctionTypes.ts(42,8): error TS2554: Expected 0-1 arguments, but got 2. recursiveFunctionTypes.ts(43,4): error TS2769: No overload matches this call. @@ -9,11 +18,28 @@ - Overload 2 of 4, '(a: number): number', gave the following error. - Argument of type 'string' is not assignable to parameter of type 'number'. - Overload 3 of 4, '(a?: { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } | undefined): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; }', gave the following error. +- Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; }'. + The last overload gave the following error. - Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; }'. ++ Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. -@@= skipped -81, +77 lines =@@ + ==== recursiveFunctionTypes.ts (13 errors) ==== +@@= skipped -52, +48 lines =@@ + } + C.g(3); // error + ~ +-!!! error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. ++!!! error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof C.g) => void'. + + var f4: () => typeof f4; + f4 = 3; // error + ~~ +-!!! error TS2322: Type 'number' is not assignable to type '() => any'. ++!!! error TS2322: Type 'number' is not assignable to type '() => typeof f4'. + + function f5() { return f5; } + +@@= skipped -36, +36 lines =@@ f7(""); // ok (function takes an any param) ~~ !!! error TS2769: No overload matches this call. @@ -24,6 +50,6 @@ -!!! error TS2769: Overload 3 of 4, '(a?: { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } | undefined): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; }', gave the following error. -!!! error TS2769: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; }'. +!!! error TS2769: The last overload gave the following error. -+!!! error TS2769: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; }'. ++!!! error TS2769: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. +!!! related TS2771 recursiveFunctionTypes.ts:40:18: The last overload is declared here. f7(); // ok \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.types b/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.types index 6383477693d..16e55f5109f 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.types +++ b/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.types @@ -15,12 +15,12 @@ var y: () => number = fn; // ok >fn : () => typeof fn var f: () => typeof g; ->f : () => () => any ->g : () => () => any +>f : () => typeof g +>g : () => typeof f var g: () => typeof f; ->g : () => () => any ->f : () => () => any +>g : () => typeof f +>f : () => typeof g function f1(d: typeof f1) { } >f1 : (d: typeof f1) => void @@ -28,12 +28,12 @@ function f1(d: typeof f1) { } >f1 : (d: typeof f1) => void function f2(): typeof g2 { } ->f2 : () => () => typeof f2 ->g2 : () => () => typeof g2 +>f2 : () => typeof g2 +>g2 : () => typeof f2 function g2(): typeof f2 { } ->g2 : () => () => typeof g2 ->f2 : () => () => typeof f2 +>g2 : () => typeof f2 +>f2 : () => typeof g2 interface I { } function f3(): I { return f3; } @@ -63,12 +63,12 @@ C.g(3); // error >3 : 3 var f4: () => typeof f4; ->f4 : () => any ->f4 : () => any +>f4 : () => typeof f4 +>f4 : () => typeof f4 f4 = 3; // error >f4 = 3 : 3 ->f4 : () => any +>f4 : () => typeof f4 >3 : 3 function f5() { return f5; } @@ -105,36 +105,36 @@ f6(); // ok >f6 : { (): typeof f6; (a: typeof f6): () => number; } declare function f7(): typeof f7; ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } declare function f7(a: typeof f7): () => number; ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } ->a : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } +>a : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } declare function f7(a: number): number; ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } >a : number declare function f7(a?: typeof f7): typeof f7; ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } ->a : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } | undefined ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } +>a : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } | undefined +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } f7("", 3); // error (arity mismatch) ->f7("", 3) : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } & (() => number) & number ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } +>f7("", 3) : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } & (() => number) & number +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } >"" : "" >3 : 3 f7(""); // ok (function takes an any param) ->f7("") : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } & (() => number) & number ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } +>f7("") : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } & (() => number) & number +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } >"" : "" f7(); // ok ->f7() : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } ->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } +>f7() : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } +>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } diff --git a/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.types.diff b/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.types.diff deleted file mode 100644 index 7969bae6cf9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/recursiveFunctionTypes.types.diff +++ /dev/null @@ -1,104 +0,0 @@ ---- old.recursiveFunctionTypes.types -+++ new.recursiveFunctionTypes.types -@@= skipped -14, +14 lines =@@ - >fn : () => typeof fn - - var f: () => typeof g; -->f : () => typeof g -->g : () => typeof f -+>f : () => () => any -+>g : () => () => any - - var g: () => typeof f; -->g : () => typeof f -->f : () => typeof g -+>g : () => () => any -+>f : () => () => any - - function f1(d: typeof f1) { } - >f1 : (d: typeof f1) => void -@@= skipped -13, +13 lines =@@ - >f1 : (d: typeof f1) => void - - function f2(): typeof g2 { } -->f2 : () => typeof g2 -->g2 : () => typeof f2 -+>f2 : () => () => typeof f2 -+>g2 : () => () => typeof g2 - - function g2(): typeof f2 { } -->g2 : () => typeof f2 -->f2 : () => typeof g2 -+>g2 : () => () => typeof g2 -+>f2 : () => () => typeof f2 - - interface I { } - function f3(): I { return f3; } -@@= skipped -35, +35 lines =@@ - >3 : 3 - - var f4: () => typeof f4; -->f4 : () => typeof f4 -->f4 : () => typeof f4 -+>f4 : () => any -+>f4 : () => any - - f4 = 3; // error - >f4 = 3 : 3 -->f4 : () => typeof f4 -+>f4 : () => any - >3 : 3 - - function f5() { return f5; } -@@= skipped -42, +42 lines =@@ - >f6 : { (): typeof f6; (a: typeof f6): () => number; } - - declare function f7(): typeof f7; -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } - - declare function f7(a: typeof f7): () => number; -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -->a : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } -+>a : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } - - declare function f7(a: number): number; -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } - >a : number - - declare function f7(a?: typeof f7): typeof f7; -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -->a : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } | undefined -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } -+>a : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } | undefined -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } - - f7("", 3); // error (arity mismatch) -->f7("", 3) : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } & (() => number) & number -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -+>f7("", 3) : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } & (() => number) & number -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } - >"" : "" - >3 : 3 - - f7(""); // ok (function takes an any param) -->f7("") : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } & (() => number) & number -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -+>f7("") : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } & (() => number) & number -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } - >"" : "" - - f7(); // ok -->f7() : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -->f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; } -+>f7() : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } -+>f7 : { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7 | undefined): typeof f7; } diff --git a/testdata/baselines/reference/submodule/compiler/recursiveGenericMethodCall.types b/testdata/baselines/reference/submodule/compiler/recursiveGenericMethodCall.types index 414200945c4..dde1c6e387a 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveGenericMethodCall.types +++ b/testdata/baselines/reference/submodule/compiler/recursiveGenericMethodCall.types @@ -4,12 +4,12 @@ interface Generator { (): T; } function Generate(func: Generator): T { ->Generate : (func: Generator) => T +>Generate : (func: Generator) => T >func : Generator return Generate(func); >Generate(func) : T ->Generate : (func: Generator) => T +>Generate : (func: Generator) => T >func : Generator } diff --git a/testdata/baselines/reference/submodule/compiler/recursiveGenericMethodCall.types.diff b/testdata/baselines/reference/submodule/compiler/recursiveGenericMethodCall.types.diff deleted file mode 100644 index 784c872b532..00000000000 --- a/testdata/baselines/reference/submodule/compiler/recursiveGenericMethodCall.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.recursiveGenericMethodCall.types -+++ new.recursiveGenericMethodCall.types -@@= skipped -3, +3 lines =@@ - interface Generator { (): T; } - - function Generate(func: Generator): T { -->Generate : (func: Generator) => T -+>Generate : (func: Generator) => T - >func : Generator - - return Generate(func); - >Generate(func) : T -->Generate : (func: Generator) => T -+>Generate : (func: Generator) => T - >func : Generator - } diff --git a/testdata/baselines/reference/submodule/compiler/recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types b/testdata/baselines/reference/submodule/compiler/recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types index 695793fc526..8ea77279317 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types +++ b/testdata/baselines/reference/submodule/compiler/recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types @@ -4,15 +4,15 @@ export {} export interface Option { zip1>>(...others: O): Option<[T, ...UnzipOptionArray1]>; ->zip1 : []>(...others: O) => Option<[T, ...UnzipOptionArray1]> +>zip1 : >>(...others: O) => Option<[T, ...UnzipOptionArray1]> >others : O zip2>>(...others: O): Option<[T, ...UnzipOptionArray2]>; ->zip2 : []>(...others: O) => Option<[T, ...UnzipOptionArray2]> +>zip2 : >>(...others: O) => Option<[T, ...UnzipOptionArray2]> >others : O zip3>>(...others: O): Option<[T, ...UnzipOptionArray3]>; ->zip3 : []>(...others: O) => Option<[T, ...UnzipOptionArray3]> +>zip3 : >>(...others: O) => Option<[T, ...UnzipOptionArray3]> >others : O } @@ -42,27 +42,27 @@ declare const opt3: Option; const zipped1 = opt1.zip1(opt2, opt3); >zipped1 : Option<[number, string, boolean]> >opt1.zip1(opt2, opt3) : Option<[number, string, boolean]> ->opt1.zip1 : []>(...others: O) => Option<[number, ...UnzipOptionArray1]> +>opt1.zip1 : >>(...others: O) => Option<[number, ...UnzipOptionArray1]> >opt1 : Option ->zip1 : []>(...others: O) => Option<[number, ...UnzipOptionArray1]> +>zip1 : >>(...others: O) => Option<[number, ...UnzipOptionArray1]> >opt2 : Option >opt3 : Option const zipped2 = opt1.zip2(opt2, opt3); >zipped2 : Option<[number, string, boolean]> >opt1.zip2(opt2, opt3) : Option<[number, string, boolean]> ->opt1.zip2 : []>(...others: O) => Option<[number, ...UnzipOptionArray2]> +>opt1.zip2 : >>(...others: O) => Option<[number, ...UnzipOptionArray2]> >opt1 : Option ->zip2 : []>(...others: O) => Option<[number, ...UnzipOptionArray2]> +>zip2 : >>(...others: O) => Option<[number, ...UnzipOptionArray2]> >opt2 : Option >opt3 : Option const zipped3 = opt1.zip3(opt2, opt3); >zipped3 : Option<[number, string, boolean]> >opt1.zip3(opt2, opt3) : Option<[number, string, boolean]> ->opt1.zip3 : []>(...others: O) => Option<[number, ...UnzipOptionArray3]> +>opt1.zip3 : >>(...others: O) => Option<[number, ...UnzipOptionArray3]> >opt1 : Option ->zip3 : []>(...others: O) => Option<[number, ...UnzipOptionArray3]> +>zip3 : >>(...others: O) => Option<[number, ...UnzipOptionArray3]> >opt2 : Option >opt3 : Option diff --git a/testdata/baselines/reference/submodule/compiler/recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types.diff b/testdata/baselines/reference/submodule/compiler/recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types.diff deleted file mode 100644 index 11801dab39a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types.diff +++ /dev/null @@ -1,54 +0,0 @@ ---- old.recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types -+++ new.recursiveTypeAliasWithSpreadConditionalReturnNotCircular.types -@@= skipped -3, +3 lines =@@ - export {} - export interface Option { - zip1>>(...others: O): Option<[T, ...UnzipOptionArray1]>; -->zip1 : >>(...others: O) => Option<[T, ...UnzipOptionArray1]> -+>zip1 : []>(...others: O) => Option<[T, ...UnzipOptionArray1]> - >others : O - - zip2>>(...others: O): Option<[T, ...UnzipOptionArray2]>; -->zip2 : >>(...others: O) => Option<[T, ...UnzipOptionArray2]> -+>zip2 : []>(...others: O) => Option<[T, ...UnzipOptionArray2]> - >others : O - - zip3>>(...others: O): Option<[T, ...UnzipOptionArray3]>; -->zip3 : >>(...others: O) => Option<[T, ...UnzipOptionArray3]> -+>zip3 : []>(...others: O) => Option<[T, ...UnzipOptionArray3]> - >others : O - } - -@@= skipped -38, +38 lines =@@ - const zipped1 = opt1.zip1(opt2, opt3); - >zipped1 : Option<[number, string, boolean]> - >opt1.zip1(opt2, opt3) : Option<[number, string, boolean]> -->opt1.zip1 : >>(...others: O) => Option<[number, ...UnzipOptionArray1]> -+>opt1.zip1 : []>(...others: O) => Option<[number, ...UnzipOptionArray1]> - >opt1 : Option -->zip1 : >>(...others: O) => Option<[number, ...UnzipOptionArray1]> -+>zip1 : []>(...others: O) => Option<[number, ...UnzipOptionArray1]> - >opt2 : Option - >opt3 : Option - - const zipped2 = opt1.zip2(opt2, opt3); - >zipped2 : Option<[number, string, boolean]> - >opt1.zip2(opt2, opt3) : Option<[number, string, boolean]> -->opt1.zip2 : >>(...others: O) => Option<[number, ...UnzipOptionArray2]> -+>opt1.zip2 : []>(...others: O) => Option<[number, ...UnzipOptionArray2]> - >opt1 : Option -->zip2 : >>(...others: O) => Option<[number, ...UnzipOptionArray2]> -+>zip2 : []>(...others: O) => Option<[number, ...UnzipOptionArray2]> - >opt2 : Option - >opt3 : Option - - const zipped3 = opt1.zip3(opt2, opt3); - >zipped3 : Option<[number, string, boolean]> - >opt1.zip3(opt2, opt3) : Option<[number, string, boolean]> -->opt1.zip3 : >>(...others: O) => Option<[number, ...UnzipOptionArray3]> -+>opt1.zip3 : []>(...others: O) => Option<[number, ...UnzipOptionArray3]> - >opt1 : Option -->zip3 : >>(...others: O) => Option<[number, ...UnzipOptionArray3]> -+>zip3 : []>(...others: O) => Option<[number, ...UnzipOptionArray3]> - >opt2 : Option - >opt3 : Option diff --git a/testdata/baselines/reference/submodule/compiler/recursiveTypeComparison2.types b/testdata/baselines/reference/submodule/compiler/recursiveTypeComparison2.types index 1016d9aeb19..adbf4583ebf 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveTypeComparison2.types +++ b/testdata/baselines/reference/submodule/compiler/recursiveTypeComparison2.types @@ -19,7 +19,7 @@ declare namespace Bacon { >b : U slidingWindow(max: number, min?: number): Property; ->slidingWindow : (max: number, min?: number | undefined) => Property +>slidingWindow : (max: number, min?: number) => Property >max : number >min : number | undefined @@ -49,7 +49,7 @@ declare namespace Bacon { >other : Observable endOnError(f?: (value: T) => boolean): Observable; ->endOnError : (f?: ((value: T) => boolean) | undefined) => Observable +>endOnError : (f?: (value: T) => boolean) => Observable >f : ((value: T) => boolean) | undefined >value : T diff --git a/testdata/baselines/reference/submodule/compiler/recursiveTypeComparison2.types.diff b/testdata/baselines/reference/submodule/compiler/recursiveTypeComparison2.types.diff deleted file mode 100644 index d77a292e14c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/recursiveTypeComparison2.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.recursiveTypeComparison2.types -+++ new.recursiveTypeComparison2.types -@@= skipped -18, +18 lines =@@ - >b : U - - slidingWindow(max: number, min?: number): Property; -->slidingWindow : (max: number, min?: number) => Property -+>slidingWindow : (max: number, min?: number | undefined) => Property - >max : number - >min : number | undefined - -@@= skipped -30, +30 lines =@@ - >other : Observable - - endOnError(f?: (value: T) => boolean): Observable; -->endOnError : (f?: (value: T) => boolean) => Observable -+>endOnError : (f?: ((value: T) => boolean) | undefined) => Observable - >f : ((value: T) => boolean) | undefined - >value : T diff --git a/testdata/baselines/reference/submodule/compiler/recursiveUnionTypeInference.types b/testdata/baselines/reference/submodule/compiler/recursiveUnionTypeInference.types index 12436c07951..2961b877175 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveUnionTypeInference.types +++ b/testdata/baselines/reference/submodule/compiler/recursiveUnionTypeInference.types @@ -7,12 +7,12 @@ interface Foo { } function bar(x: Foo | string): T { ->bar : (x: string | Foo) => T +>bar : (x: Foo | string) => T >x : string | Foo return bar(x); >bar(x) : T ->bar : (x: string | Foo) => T +>bar : (x: Foo | string) => T >x : string | Foo } diff --git a/testdata/baselines/reference/submodule/compiler/recursiveUnionTypeInference.types.diff b/testdata/baselines/reference/submodule/compiler/recursiveUnionTypeInference.types.diff deleted file mode 100644 index 3bc083e6737..00000000000 --- a/testdata/baselines/reference/submodule/compiler/recursiveUnionTypeInference.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.recursiveUnionTypeInference.types -+++ new.recursiveUnionTypeInference.types -@@= skipped -6, +6 lines =@@ - } - - function bar(x: Foo | string): T { -->bar : (x: Foo | string) => T -+>bar : (x: string | Foo) => T - >x : string | Foo - - return bar(x); - >bar(x) : T -->bar : (x: Foo | string) => T -+>bar : (x: string | Foo) => T - >x : string | Foo - } diff --git a/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.js b/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.js index 3695d3d2e63..31acf5fb734 100644 --- a/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.js +++ b/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.js @@ -172,13 +172,13 @@ interface I { declare function f1({ a: string }: O): void; declare const f2: ({ a: string }: O) => void; declare const f3: ({ a: string, b, c }: O) => void; -declare const f4: ({ a: string }: O) => string; -declare const f5: ({ a: string, b, c }: O) => string; +declare const f4: ({ a: string }: O) => typeof string; +declare const f5: ({ a: string, b, c }: O) => typeof string; declare const obj1: { method({ a: string }: O): void; }; declare const obj2: { - method({ a: string }: O): string; + method({ a: string }: O): typeof string; }; declare function f6({ a: string }: O): void; declare const f7: ({ a: string, b, c }: O) => void; diff --git a/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.js.diff b/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.js.diff deleted file mode 100644 index 34c842e1209..00000000000 --- a/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.js.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.renamingDestructuredPropertyInFunctionType.js -+++ new.renamingDestructuredPropertyInFunctionType.js -@@= skipped -171, +171 lines =@@ - declare function f1({ a: string }: O): void; - declare const f2: ({ a: string }: O) => void; - declare const f3: ({ a: string, b, c }: O) => void; --declare const f4: ({ a: string }: O) => typeof string; --declare const f5: ({ a: string, b, c }: O) => typeof string; -+declare const f4: ({ a: string }: O) => string; -+declare const f5: ({ a: string, b, c }: O) => string; - declare const obj1: { - method({ a: string }: O): void; - }; - declare const obj2: { -- method({ a: string }: O): typeof string; -+ method({ a: string }: O): string; - }; - declare function f6({ a: string }: O): void; - declare const f7: ({ a: string, b, c }: O) => void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.types b/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.types index d9e6c83e918..c5acc4ce1d1 100644 --- a/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.types +++ b/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.types @@ -203,16 +203,16 @@ const f3 = ({ a: string, b, c }: O) => { }; >c : number const f4 = function({ a: string }: O): typeof string { return string; }; ->f4 : ({ a: string }: O) => string ->function({ a: string }: O): typeof string { return string; } : ({ a: string }: O) => string +>f4 : ({ a: string }: O) => typeof string +>function({ a: string }: O): typeof string { return string; } : ({ a: string }: O) => typeof string >a : any >string : string >string : string >string : string const f5 = ({ a: string, b, c }: O): typeof string => ''; ->f5 : ({ a: string, b, c }: O) => string ->({ a: string, b, c }: O): typeof string => '' : ({ a: string, b, c }: O) => string +>f5 : ({ a: string, b, c }: O) => typeof string +>({ a: string, b, c }: O): typeof string => '' : ({ a: string, b, c }: O) => typeof string >a : any >string : string >b : number @@ -231,11 +231,11 @@ const obj1 = { }; const obj2 = { ->obj2 : { method({ a: string }: O): string; } ->{ method({ a: string }: O): typeof string { return string; }} : { method({ a: string }: O): string; } +>obj2 : { method({ a: string }: O): typeof string; } +>{ method({ a: string }: O): typeof string { return string; }} : { method({ a: string }: O): typeof string; } method({ a: string }: O): typeof string { return string; } ->method : ({ a: string }: O) => string +>method : ({ a: string }: O) => typeof string >a : any >string : string >string : string @@ -279,7 +279,7 @@ const f11 = ({ [2]: string }) => { }; // In below case `string` should be kept because it is used function f12({ a: string = "" }: O): typeof string { return "a"; } ->f12 : ({ a: string }: O) => string +>f12 : ({ a: string }: O) => typeof string >a : any >string : string >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.types.diff b/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.types.diff deleted file mode 100644 index 613c2e58ba5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/renamingDestructuredPropertyInFunctionType.types.diff +++ /dev/null @@ -1,47 +0,0 @@ ---- old.renamingDestructuredPropertyInFunctionType.types -+++ new.renamingDestructuredPropertyInFunctionType.types -@@= skipped -202, +202 lines =@@ - >c : number - - const f4 = function({ a: string }: O): typeof string { return string; }; -->f4 : ({ a: string }: O) => typeof string -->function({ a: string }: O): typeof string { return string; } : ({ a: string }: O) => typeof string -+>f4 : ({ a: string }: O) => string -+>function({ a: string }: O): typeof string { return string; } : ({ a: string }: O) => string - >a : any - >string : string - >string : string - >string : string - - const f5 = ({ a: string, b, c }: O): typeof string => ''; -->f5 : ({ a: string, b, c }: O) => typeof string -->({ a: string, b, c }: O): typeof string => '' : ({ a: string, b, c }: O) => typeof string -+>f5 : ({ a: string, b, c }: O) => string -+>({ a: string, b, c }: O): typeof string => '' : ({ a: string, b, c }: O) => string - >a : any - >string : string - >b : number -@@= skipped -28, +28 lines =@@ - - }; - const obj2 = { -->obj2 : { method({ a: string }: O): typeof string; } -->{ method({ a: string }: O): typeof string { return string; }} : { method({ a: string }: O): typeof string; } -+>obj2 : { method({ a: string }: O): string; } -+>{ method({ a: string }: O): typeof string { return string; }} : { method({ a: string }: O): string; } - - method({ a: string }: O): typeof string { return string; } -->method : ({ a: string }: O) => typeof string -+>method : ({ a: string }: O) => string - >a : any - >string : string - >string : string -@@= skipped -48, +48 lines =@@ - - // In below case `string` should be kept because it is used - function f12({ a: string = "" }: O): typeof string { return "a"; } -->f12 : ({ a: string }: O) => typeof string -+>f12 : ({ a: string }: O) => string - >a : any - >string : string - >"" : "" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.errors.txt b/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.errors.txt index b1d10411f8d..c836db4a49c 100644 --- a/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.errors.txt @@ -1,15 +1,15 @@ -requiredMappedTypeModifierTrumpsVariance.ts(5,1): error TS2741: Property 'a' is missing in type 'Required<{ b?: 1 | undefined; x: 1; }>' but required in type 'Required<{ a?: 1 | undefined; x: 1; }>'. -requiredMappedTypeModifierTrumpsVariance.ts(6,1): error TS2741: Property 'b' is missing in type 'Required<{ a?: 1 | undefined; x: 1; }>' but required in type 'Required<{ b?: 1 | undefined; x: 1; }>'. -requiredMappedTypeModifierTrumpsVariance.ts(8,3): error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1 | undefined; x: 1; }>'. -requiredMappedTypeModifierTrumpsVariance.ts(9,3): error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1 | undefined; x: 1; }>'. -requiredMappedTypeModifierTrumpsVariance.ts(18,1): error TS2322: Type 'Foo<{ b?: 1 | undefined; x: 1; }>' is not assignable to type 'Foo<{ a?: 1 | undefined; x: 1; }>'. +requiredMappedTypeModifierTrumpsVariance.ts(5,1): error TS2741: Property 'a' is missing in type 'Required<{ b?: 1; x: 1; }>' but required in type 'Required<{ a?: 1; x: 1; }>'. +requiredMappedTypeModifierTrumpsVariance.ts(6,1): error TS2741: Property 'b' is missing in type 'Required<{ a?: 1; x: 1; }>' but required in type 'Required<{ b?: 1; x: 1; }>'. +requiredMappedTypeModifierTrumpsVariance.ts(8,3): error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. +requiredMappedTypeModifierTrumpsVariance.ts(9,3): error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. +requiredMappedTypeModifierTrumpsVariance.ts(18,1): error TS2322: Type 'Foo<{ b?: 1; x: 1; }>' is not assignable to type 'Foo<{ a?: 1; x: 1; }>'. Types of property 'a' are incompatible. - Property 'a' is missing in type 'Required<{ b?: 1 | undefined; x: 1; }>' but required in type 'Required<{ a?: 1 | undefined; x: 1; }>'. -requiredMappedTypeModifierTrumpsVariance.ts(19,1): error TS2322: Type 'Foo<{ a?: 1 | undefined; x: 1; }>' is not assignable to type 'Foo<{ b?: 1 | undefined; x: 1; }>'. + Property 'a' is missing in type 'Required<{ b?: 1; x: 1; }>' but required in type 'Required<{ a?: 1; x: 1; }>'. +requiredMappedTypeModifierTrumpsVariance.ts(19,1): error TS2322: Type 'Foo<{ a?: 1; x: 1; }>' is not assignable to type 'Foo<{ b?: 1; x: 1; }>'. Types of property 'a' are incompatible. - Property 'b' is missing in type 'Required<{ a?: 1 | undefined; x: 1; }>' but required in type 'Required<{ b?: 1 | undefined; x: 1; }>'. -requiredMappedTypeModifierTrumpsVariance.ts(21,6): error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1 | undefined; x: 1; }>'. -requiredMappedTypeModifierTrumpsVariance.ts(22,6): error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1 | undefined; x: 1; }>'. + Property 'b' is missing in type 'Required<{ a?: 1; x: 1; }>' but required in type 'Required<{ b?: 1; x: 1; }>'. +requiredMappedTypeModifierTrumpsVariance.ts(21,6): error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. +requiredMappedTypeModifierTrumpsVariance.ts(22,6): error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. ==== requiredMappedTypeModifierTrumpsVariance.ts (8 errors) ==== @@ -19,19 +19,19 @@ requiredMappedTypeModifierTrumpsVariance.ts(22,6): error TS2339: Property 'a' do export let B = b; A = b; // Should Error ~ -!!! error TS2741: Property 'a' is missing in type 'Required<{ b?: 1 | undefined; x: 1; }>' but required in type 'Required<{ a?: 1 | undefined; x: 1; }>'. +!!! error TS2741: Property 'a' is missing in type 'Required<{ b?: 1; x: 1; }>' but required in type 'Required<{ a?: 1; x: 1; }>'. !!! related TS2728 requiredMappedTypeModifierTrumpsVariance.ts:1:21: 'a' is declared here. B = a; // Should Error ~ -!!! error TS2741: Property 'b' is missing in type 'Required<{ a?: 1 | undefined; x: 1; }>' but required in type 'Required<{ b?: 1 | undefined; x: 1; }>'. +!!! error TS2741: Property 'b' is missing in type 'Required<{ a?: 1; x: 1; }>' but required in type 'Required<{ b?: 1; x: 1; }>'. !!! related TS2728 requiredMappedTypeModifierTrumpsVariance.ts:2:21: 'b' is declared here. a.b; // Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. ~ -!!! error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1 | undefined; x: 1; }>'. +!!! error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. b.a; // Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. ~ -!!! error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1 | undefined; x: 1; }>'. +!!! error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. interface Foo { a: Required; @@ -42,20 +42,20 @@ requiredMappedTypeModifierTrumpsVariance.ts(22,6): error TS2339: Property 'a' do export let BB = bb; AA = bb; // Should Error ~~ -!!! error TS2322: Type 'Foo<{ b?: 1 | undefined; x: 1; }>' is not assignable to type 'Foo<{ a?: 1 | undefined; x: 1; }>'. +!!! error TS2322: Type 'Foo<{ b?: 1; x: 1; }>' is not assignable to type 'Foo<{ a?: 1; x: 1; }>'. !!! error TS2322: Types of property 'a' are incompatible. -!!! error TS2322: Property 'a' is missing in type 'Required<{ b?: 1 | undefined; x: 1; }>' but required in type 'Required<{ a?: 1 | undefined; x: 1; }>'. +!!! error TS2322: Property 'a' is missing in type 'Required<{ b?: 1; x: 1; }>' but required in type 'Required<{ a?: 1; x: 1; }>'. !!! related TS2728 requiredMappedTypeModifierTrumpsVariance.ts:14:17: 'a' is declared here. BB = aa; // Should Error ~~ -!!! error TS2322: Type 'Foo<{ a?: 1 | undefined; x: 1; }>' is not assignable to type 'Foo<{ b?: 1 | undefined; x: 1; }>'. +!!! error TS2322: Type 'Foo<{ a?: 1; x: 1; }>' is not assignable to type 'Foo<{ b?: 1; x: 1; }>'. !!! error TS2322: Types of property 'a' are incompatible. -!!! error TS2322: Property 'b' is missing in type 'Required<{ a?: 1 | undefined; x: 1; }>' but required in type 'Required<{ b?: 1 | undefined; x: 1; }>'. +!!! error TS2322: Property 'b' is missing in type 'Required<{ a?: 1; x: 1; }>' but required in type 'Required<{ b?: 1; x: 1; }>'. !!! related TS2728 requiredMappedTypeModifierTrumpsVariance.ts:15:17: 'b' is declared here. aa.a.b; // Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. ~ -!!! error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1 | undefined; x: 1; }>'. +!!! error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. bb.a.a; // Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. ~ -!!! error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1 | undefined; x: 1; }>'. \ No newline at end of file +!!! error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.errors.txt.diff new file mode 100644 index 00000000000..af5e1a23a53 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.errors.txt.diff @@ -0,0 +1,81 @@ +--- old.requiredMappedTypeModifierTrumpsVariance.errors.txt ++++ new.requiredMappedTypeModifierTrumpsVariance.errors.txt +@@= skipped -0, +0 lines =@@ +-requiredMappedTypeModifierTrumpsVariance.ts(5,1): error TS2741: Property 'a' is missing in type 'Required<{ b?: 1 | undefined; x: 1; }>' but required in type 'Required<{ a?: 1 | undefined; x: 1; }>'. +-requiredMappedTypeModifierTrumpsVariance.ts(6,1): error TS2741: Property 'b' is missing in type 'Required<{ a?: 1 | undefined; x: 1; }>' but required in type 'Required<{ b?: 1 | undefined; x: 1; }>'. +-requiredMappedTypeModifierTrumpsVariance.ts(8,3): error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1 | undefined; x: 1; }>'. +-requiredMappedTypeModifierTrumpsVariance.ts(9,3): error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1 | undefined; x: 1; }>'. +-requiredMappedTypeModifierTrumpsVariance.ts(18,1): error TS2322: Type 'Foo<{ b?: 1 | undefined; x: 1; }>' is not assignable to type 'Foo<{ a?: 1 | undefined; x: 1; }>'. +- Types of property 'a' are incompatible. +- Property 'a' is missing in type 'Required<{ b?: 1 | undefined; x: 1; }>' but required in type 'Required<{ a?: 1 | undefined; x: 1; }>'. +-requiredMappedTypeModifierTrumpsVariance.ts(19,1): error TS2322: Type 'Foo<{ a?: 1 | undefined; x: 1; }>' is not assignable to type 'Foo<{ b?: 1 | undefined; x: 1; }>'. +- Types of property 'a' are incompatible. +- Property 'b' is missing in type 'Required<{ a?: 1 | undefined; x: 1; }>' but required in type 'Required<{ b?: 1 | undefined; x: 1; }>'. +-requiredMappedTypeModifierTrumpsVariance.ts(21,6): error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1 | undefined; x: 1; }>'. +-requiredMappedTypeModifierTrumpsVariance.ts(22,6): error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1 | undefined; x: 1; }>'. ++requiredMappedTypeModifierTrumpsVariance.ts(5,1): error TS2741: Property 'a' is missing in type 'Required<{ b?: 1; x: 1; }>' but required in type 'Required<{ a?: 1; x: 1; }>'. ++requiredMappedTypeModifierTrumpsVariance.ts(6,1): error TS2741: Property 'b' is missing in type 'Required<{ a?: 1; x: 1; }>' but required in type 'Required<{ b?: 1; x: 1; }>'. ++requiredMappedTypeModifierTrumpsVariance.ts(8,3): error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. ++requiredMappedTypeModifierTrumpsVariance.ts(9,3): error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. ++requiredMappedTypeModifierTrumpsVariance.ts(18,1): error TS2322: Type 'Foo<{ b?: 1; x: 1; }>' is not assignable to type 'Foo<{ a?: 1; x: 1; }>'. ++ Types of property 'a' are incompatible. ++ Property 'a' is missing in type 'Required<{ b?: 1; x: 1; }>' but required in type 'Required<{ a?: 1; x: 1; }>'. ++requiredMappedTypeModifierTrumpsVariance.ts(19,1): error TS2322: Type 'Foo<{ a?: 1; x: 1; }>' is not assignable to type 'Foo<{ b?: 1; x: 1; }>'. ++ Types of property 'a' are incompatible. ++ Property 'b' is missing in type 'Required<{ a?: 1; x: 1; }>' but required in type 'Required<{ b?: 1; x: 1; }>'. ++requiredMappedTypeModifierTrumpsVariance.ts(21,6): error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. ++requiredMappedTypeModifierTrumpsVariance.ts(22,6): error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. + + + ==== requiredMappedTypeModifierTrumpsVariance.ts (8 errors) ==== +@@= skipped -18, +18 lines =@@ + export let B = b; + A = b; // Should Error + ~ +-!!! error TS2741: Property 'a' is missing in type 'Required<{ b?: 1 | undefined; x: 1; }>' but required in type 'Required<{ a?: 1 | undefined; x: 1; }>'. ++!!! error TS2741: Property 'a' is missing in type 'Required<{ b?: 1; x: 1; }>' but required in type 'Required<{ a?: 1; x: 1; }>'. + !!! related TS2728 requiredMappedTypeModifierTrumpsVariance.ts:1:21: 'a' is declared here. + B = a; // Should Error + ~ +-!!! error TS2741: Property 'b' is missing in type 'Required<{ a?: 1 | undefined; x: 1; }>' but required in type 'Required<{ b?: 1 | undefined; x: 1; }>'. ++!!! error TS2741: Property 'b' is missing in type 'Required<{ a?: 1; x: 1; }>' but required in type 'Required<{ b?: 1; x: 1; }>'. + !!! related TS2728 requiredMappedTypeModifierTrumpsVariance.ts:2:21: 'b' is declared here. + + a.b; // Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. + ~ +-!!! error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1 | undefined; x: 1; }>'. ++!!! error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. + b.a; // Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. + ~ +-!!! error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1 | undefined; x: 1; }>'. ++!!! error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. + + interface Foo { + a: Required; +@@= skipped -23, +23 lines =@@ + export let BB = bb; + AA = bb; // Should Error + ~~ +-!!! error TS2322: Type 'Foo<{ b?: 1 | undefined; x: 1; }>' is not assignable to type 'Foo<{ a?: 1 | undefined; x: 1; }>'. ++!!! error TS2322: Type 'Foo<{ b?: 1; x: 1; }>' is not assignable to type 'Foo<{ a?: 1; x: 1; }>'. + !!! error TS2322: Types of property 'a' are incompatible. +-!!! error TS2322: Property 'a' is missing in type 'Required<{ b?: 1 | undefined; x: 1; }>' but required in type 'Required<{ a?: 1 | undefined; x: 1; }>'. ++!!! error TS2322: Property 'a' is missing in type 'Required<{ b?: 1; x: 1; }>' but required in type 'Required<{ a?: 1; x: 1; }>'. + !!! related TS2728 requiredMappedTypeModifierTrumpsVariance.ts:14:17: 'a' is declared here. + BB = aa; // Should Error + ~~ +-!!! error TS2322: Type 'Foo<{ a?: 1 | undefined; x: 1; }>' is not assignable to type 'Foo<{ b?: 1 | undefined; x: 1; }>'. ++!!! error TS2322: Type 'Foo<{ a?: 1; x: 1; }>' is not assignable to type 'Foo<{ b?: 1; x: 1; }>'. + !!! error TS2322: Types of property 'a' are incompatible. +-!!! error TS2322: Property 'b' is missing in type 'Required<{ a?: 1 | undefined; x: 1; }>' but required in type 'Required<{ b?: 1 | undefined; x: 1; }>'. ++!!! error TS2322: Property 'b' is missing in type 'Required<{ a?: 1; x: 1; }>' but required in type 'Required<{ b?: 1; x: 1; }>'. + !!! related TS2728 requiredMappedTypeModifierTrumpsVariance.ts:15:17: 'b' is declared here. + + aa.a.b; // Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. + ~ +-!!! error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1 | undefined; x: 1; }>'. ++!!! error TS2339: Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. + bb.a.a; // Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. + ~ +-!!! error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1 | undefined; x: 1; }>'. ++!!! error TS2339: Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.types b/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.types index af2a338d2bc..0f39ea3ac45 100644 --- a/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.types +++ b/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.types @@ -2,7 +2,7 @@ === requiredMappedTypeModifierTrumpsVariance.ts === const a: Required<{ a?: 1; x: 1 }> = { a: 1, x: 1 }; ->a : Required<{ a?: 1 | undefined; x: 1; }> +>a : Required<{ a?: 1; x: 1; }> >a : 1 | undefined >x : 1 >{ a: 1, x: 1 } : { a: 1; x: 1; } @@ -12,7 +12,7 @@ const a: Required<{ a?: 1; x: 1 }> = { a: 1, x: 1 }; >1 : 1 const b: Required<{ b?: 1; x: 1 }> = { b: 1, x: 1 }; ->b : Required<{ b?: 1 | undefined; x: 1; }> +>b : Required<{ b?: 1; x: 1; }> >b : 1 | undefined >x : 1 >{ b: 1, x: 1 } : { b: 1; x: 1; } @@ -22,31 +22,31 @@ const b: Required<{ b?: 1; x: 1 }> = { b: 1, x: 1 }; >1 : 1 export let A = a; ->A : Required<{ a?: 1 | undefined; x: 1; }> ->a : Required<{ a?: 1 | undefined; x: 1; }> +>A : Required<{ a?: 1; x: 1; }> +>a : Required<{ a?: 1; x: 1; }> export let B = b; ->B : Required<{ b?: 1 | undefined; x: 1; }> ->b : Required<{ b?: 1 | undefined; x: 1; }> +>B : Required<{ b?: 1; x: 1; }> +>b : Required<{ b?: 1; x: 1; }> A = b; // Should Error ->A = b : Required<{ b?: 1 | undefined; x: 1; }> ->A : Required<{ a?: 1 | undefined; x: 1; }> ->b : Required<{ b?: 1 | undefined; x: 1; }> +>A = b : Required<{ b?: 1; x: 1; }> +>A : Required<{ a?: 1; x: 1; }> +>b : Required<{ b?: 1; x: 1; }> B = a; // Should Error ->B = a : Required<{ a?: 1 | undefined; x: 1; }> ->B : Required<{ b?: 1 | undefined; x: 1; }> ->a : Required<{ a?: 1 | undefined; x: 1; }> +>B = a : Required<{ a?: 1; x: 1; }> +>B : Required<{ b?: 1; x: 1; }> +>a : Required<{ a?: 1; x: 1; }> a.b; // Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. >a.b : any ->a : Required<{ a?: 1 | undefined; x: 1; }> +>a : Required<{ a?: 1; x: 1; }> >b : any b.a; // Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. >b.a : any ->b : Required<{ b?: 1 | undefined; x: 1; }> +>b : Required<{ b?: 1; x: 1; }> >a : any interface Foo { @@ -54,7 +54,7 @@ interface Foo { >a : Required } const aa: Foo<{ a?: 1; x: 1 }> = { a: { a: 1, x: 1 } }; ->aa : Foo<{ a?: 1 | undefined; x: 1; }> +>aa : Foo<{ a?: 1; x: 1; }> >a : 1 | undefined >x : 1 >{ a: { a: 1, x: 1 } } : { a: { a: 1; x: 1; }; } @@ -66,7 +66,7 @@ const aa: Foo<{ a?: 1; x: 1 }> = { a: { a: 1, x: 1 } }; >1 : 1 const bb: Foo<{ b?: 1; x: 1 }> = { a: { b: 1, x: 1 } }; ->bb : Foo<{ b?: 1 | undefined; x: 1; }> +>bb : Foo<{ b?: 1; x: 1; }> >b : 1 | undefined >x : 1 >{ a: { b: 1, x: 1 } } : { a: { b: 1; x: 1; }; } @@ -78,34 +78,34 @@ const bb: Foo<{ b?: 1; x: 1 }> = { a: { b: 1, x: 1 } }; >1 : 1 export let AA = aa; ->AA : Foo<{ a?: 1 | undefined; x: 1; }> ->aa : Foo<{ a?: 1 | undefined; x: 1; }> +>AA : Foo<{ a?: 1; x: 1; }> +>aa : Foo<{ a?: 1; x: 1; }> export let BB = bb; ->BB : Foo<{ b?: 1 | undefined; x: 1; }> ->bb : Foo<{ b?: 1 | undefined; x: 1; }> +>BB : Foo<{ b?: 1; x: 1; }> +>bb : Foo<{ b?: 1; x: 1; }> AA = bb; // Should Error ->AA = bb : Foo<{ b?: 1 | undefined; x: 1; }> ->AA : Foo<{ a?: 1 | undefined; x: 1; }> ->bb : Foo<{ b?: 1 | undefined; x: 1; }> +>AA = bb : Foo<{ b?: 1; x: 1; }> +>AA : Foo<{ a?: 1; x: 1; }> +>bb : Foo<{ b?: 1; x: 1; }> BB = aa; // Should Error ->BB = aa : Foo<{ a?: 1 | undefined; x: 1; }> ->BB : Foo<{ b?: 1 | undefined; x: 1; }> ->aa : Foo<{ a?: 1 | undefined; x: 1; }> +>BB = aa : Foo<{ a?: 1; x: 1; }> +>BB : Foo<{ b?: 1; x: 1; }> +>aa : Foo<{ a?: 1; x: 1; }> aa.a.b; // Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. >aa.a.b : any ->aa.a : Required<{ a?: 1 | undefined; x: 1; }> ->aa : Foo<{ a?: 1 | undefined; x: 1; }> ->a : Required<{ a?: 1 | undefined; x: 1; }> +>aa.a : Required<{ a?: 1; x: 1; }> +>aa : Foo<{ a?: 1; x: 1; }> +>a : Required<{ a?: 1; x: 1; }> >b : any bb.a.a; // Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. >bb.a.a : any ->bb.a : Required<{ b?: 1 | undefined; x: 1; }> ->bb : Foo<{ b?: 1 | undefined; x: 1; }> ->a : Required<{ b?: 1 | undefined; x: 1; }> +>bb.a : Required<{ b?: 1; x: 1; }> +>bb : Foo<{ b?: 1; x: 1; }> +>a : Required<{ b?: 1; x: 1; }> >a : any diff --git a/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.types.diff b/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.types.diff deleted file mode 100644 index f326fb9d1dc..00000000000 --- a/testdata/baselines/reference/submodule/compiler/requiredMappedTypeModifierTrumpsVariance.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.requiredMappedTypeModifierTrumpsVariance.types -+++ new.requiredMappedTypeModifierTrumpsVariance.types -@@= skipped -1, +1 lines =@@ - - === requiredMappedTypeModifierTrumpsVariance.ts === - const a: Required<{ a?: 1; x: 1 }> = { a: 1, x: 1 }; -->a : Required<{ a?: 1; x: 1; }> -+>a : Required<{ a?: 1 | undefined; x: 1; }> - >a : 1 | undefined - >x : 1 - >{ a: 1, x: 1 } : { a: 1; x: 1; } -@@= skipped -10, +10 lines =@@ - >1 : 1 - - const b: Required<{ b?: 1; x: 1 }> = { b: 1, x: 1 }; -->b : Required<{ b?: 1; x: 1; }> -+>b : Required<{ b?: 1 | undefined; x: 1; }> - >b : 1 | undefined - >x : 1 - >{ b: 1, x: 1 } : { b: 1; x: 1; } -@@= skipped -10, +10 lines =@@ - >1 : 1 - - export let A = a; -->A : Required<{ a?: 1; x: 1; }> -->a : Required<{ a?: 1; x: 1; }> -+>A : Required<{ a?: 1 | undefined; x: 1; }> -+>a : Required<{ a?: 1 | undefined; x: 1; }> - - export let B = b; -->B : Required<{ b?: 1; x: 1; }> -->b : Required<{ b?: 1; x: 1; }> -+>B : Required<{ b?: 1 | undefined; x: 1; }> -+>b : Required<{ b?: 1 | undefined; x: 1; }> - - A = b; // Should Error -->A = b : Required<{ b?: 1; x: 1; }> -->A : Required<{ a?: 1; x: 1; }> -->b : Required<{ b?: 1; x: 1; }> -+>A = b : Required<{ b?: 1 | undefined; x: 1; }> -+>A : Required<{ a?: 1 | undefined; x: 1; }> -+>b : Required<{ b?: 1 | undefined; x: 1; }> - - B = a; // Should Error -->B = a : Required<{ a?: 1; x: 1; }> -->B : Required<{ b?: 1; x: 1; }> -->a : Required<{ a?: 1; x: 1; }> -+>B = a : Required<{ a?: 1 | undefined; x: 1; }> -+>B : Required<{ b?: 1 | undefined; x: 1; }> -+>a : Required<{ a?: 1 | undefined; x: 1; }> - - a.b; // Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. - >a.b : any -->a : Required<{ a?: 1; x: 1; }> -+>a : Required<{ a?: 1 | undefined; x: 1; }> - >b : any - - b.a; // Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. - >b.a : any -->b : Required<{ b?: 1; x: 1; }> -+>b : Required<{ b?: 1 | undefined; x: 1; }> - >a : any - - interface Foo { -@@= skipped -32, +32 lines =@@ - >a : Required - } - const aa: Foo<{ a?: 1; x: 1 }> = { a: { a: 1, x: 1 } }; -->aa : Foo<{ a?: 1; x: 1; }> -+>aa : Foo<{ a?: 1 | undefined; x: 1; }> - >a : 1 | undefined - >x : 1 - >{ a: { a: 1, x: 1 } } : { a: { a: 1; x: 1; }; } -@@= skipped -12, +12 lines =@@ - >1 : 1 - - const bb: Foo<{ b?: 1; x: 1 }> = { a: { b: 1, x: 1 } }; -->bb : Foo<{ b?: 1; x: 1; }> -+>bb : Foo<{ b?: 1 | undefined; x: 1; }> - >b : 1 | undefined - >x : 1 - >{ a: { b: 1, x: 1 } } : { a: { b: 1; x: 1; }; } -@@= skipped -12, +12 lines =@@ - >1 : 1 - - export let AA = aa; -->AA : Foo<{ a?: 1; x: 1; }> -->aa : Foo<{ a?: 1; x: 1; }> -+>AA : Foo<{ a?: 1 | undefined; x: 1; }> -+>aa : Foo<{ a?: 1 | undefined; x: 1; }> - - export let BB = bb; -->BB : Foo<{ b?: 1; x: 1; }> -->bb : Foo<{ b?: 1; x: 1; }> -+>BB : Foo<{ b?: 1 | undefined; x: 1; }> -+>bb : Foo<{ b?: 1 | undefined; x: 1; }> - - AA = bb; // Should Error -->AA = bb : Foo<{ b?: 1; x: 1; }> -->AA : Foo<{ a?: 1; x: 1; }> -->bb : Foo<{ b?: 1; x: 1; }> -+>AA = bb : Foo<{ b?: 1 | undefined; x: 1; }> -+>AA : Foo<{ a?: 1 | undefined; x: 1; }> -+>bb : Foo<{ b?: 1 | undefined; x: 1; }> - - BB = aa; // Should Error -->BB = aa : Foo<{ a?: 1; x: 1; }> -->BB : Foo<{ b?: 1; x: 1; }> -->aa : Foo<{ a?: 1; x: 1; }> -+>BB = aa : Foo<{ a?: 1 | undefined; x: 1; }> -+>BB : Foo<{ b?: 1 | undefined; x: 1; }> -+>aa : Foo<{ a?: 1 | undefined; x: 1; }> - - aa.a.b; // Property 'b' does not exist on type 'Required<{ a?: 1; x: 1; }>'. - >aa.a.b : any -->aa.a : Required<{ a?: 1; x: 1; }> -->aa : Foo<{ a?: 1; x: 1; }> -->a : Required<{ a?: 1; x: 1; }> -+>aa.a : Required<{ a?: 1 | undefined; x: 1; }> -+>aa : Foo<{ a?: 1 | undefined; x: 1; }> -+>a : Required<{ a?: 1 | undefined; x: 1; }> - >b : any - - bb.a.a; // Property 'a' does not exist on type 'Required<{ b?: 1; x: 1; }>'. - >bb.a.a : any -->bb.a : Required<{ b?: 1; x: 1; }> -->bb : Foo<{ b?: 1; x: 1; }> -->a : Required<{ b?: 1; x: 1; }> -+>bb.a : Required<{ b?: 1 | undefined; x: 1; }> -+>bb : Foo<{ b?: 1 | undefined; x: 1; }> -+>a : Required<{ b?: 1 | undefined; x: 1; }> - >a : any diff --git a/testdata/baselines/reference/submodule/compiler/resolveNameWithNamspace.types b/testdata/baselines/reference/submodule/compiler/resolveNameWithNamspace.types index e92f35663a9..a5546ce3f17 100644 --- a/testdata/baselines/reference/submodule/compiler/resolveNameWithNamspace.types +++ b/testdata/baselines/reference/submodule/compiler/resolveNameWithNamspace.types @@ -9,7 +9,7 @@ declare module "assert" { >"assert" : typeof import("assert") export function equal(actual: any, expected: any, message?: string | Error): void; ->equal : (actual: any, expected: any, message?: string | Error | undefined) => void +>equal : (actual: any, expected: any, message?: string | Error) => void >actual : any >expected : any >message : string | Error | undefined diff --git a/testdata/baselines/reference/submodule/compiler/resolveNameWithNamspace.types.diff b/testdata/baselines/reference/submodule/compiler/resolveNameWithNamspace.types.diff index c8227924d20..76ba0ca31f3 100644 --- a/testdata/baselines/reference/submodule/compiler/resolveNameWithNamspace.types.diff +++ b/testdata/baselines/reference/submodule/compiler/resolveNameWithNamspace.types.diff @@ -1,15 +1,6 @@ --- old.resolveNameWithNamspace.types +++ new.resolveNameWithNamspace.types -@@= skipped -8, +8 lines =@@ - >"assert" : typeof import("assert") - - export function equal(actual: any, expected: any, message?: string | Error): void; -->equal : (actual: any, expected: any, message?: string | Error) => void -+>equal : (actual: any, expected: any, message?: string | Error | undefined) => void - >actual : any - >expected : any - >message : string | Error | undefined -@@= skipped -21, +21 lines =@@ +@@= skipped -29, +29 lines =@@ === app.js === exports.equal = myAssert.equal >exports.equal = myAssert.equal : any diff --git a/testdata/baselines/reference/submodule/compiler/resolvingClassDeclarationWhenInBaseTypeResolution.types b/testdata/baselines/reference/submodule/compiler/resolvingClassDeclarationWhenInBaseTypeResolution.types index 11311506adb..cfccf6adfe4 100644 --- a/testdata/baselines/reference/submodule/compiler/resolvingClassDeclarationWhenInBaseTypeResolution.types +++ b/testdata/baselines/reference/submodule/compiler/resolvingClassDeclarationWhenInBaseTypeResolution.types @@ -1002,7 +1002,7 @@ namespace ruatanica { >x : julianae.steerii eurycerus() : panamensis.linulus, lavali.wilsoni> { var x : panamensis.linulus, lavali.wilsoni>; () => { var y = this; }; return x; } ->eurycerus : () => panamensis.linulus, lavali.wilsoni> +>eurycerus : () => panamensis.linulus, lavali.wilsoni> >panamensis : any >ruatanica : any >Lanthanum : any @@ -2428,7 +2428,7 @@ namespace quasiater { >x : rendalli.moojeni, gabriellae.echinatus> Copper() : argurus.netscheri { var x : argurus.netscheri; () => { var y = this; }; return x; } ->Copper : () => argurus.netscheri +>Copper : () => argurus.netscheri >argurus : any >quasiater : any >dogramacii : any @@ -3649,7 +3649,7 @@ namespace lutreolus { >x : quasiater.carolinensis Tin() : sagitta.leptoceros> { var x : sagitta.leptoceros>; () => { var y = this; }; return x; } ->Tin : () => sagitta.leptoceros> +>Tin : () => sagitta.leptoceros> >sagitta : any >lutreolus : any >daubentonii : any @@ -3667,7 +3667,7 @@ namespace lutreolus { >x : sagitta.leptoceros> marmorata() : panamensis.setulosus> { var x : panamensis.setulosus>; () => { var y = this; }; return x; } ->marmorata : () => panamensis.setulosus> +>marmorata : () => panamensis.setulosus> >panamensis : any >quasiater : any >daubentonii : any @@ -3699,7 +3699,7 @@ namespace lutreolus { >x : Lanthanum.nitidus peregrina() : daubentonii.nesiotes { var x : daubentonii.nesiotes; () => { var y = this; }; return x; } ->peregrina : () => daubentonii.nesiotes +>peregrina : () => daubentonii.nesiotes >daubentonii : any >macrorhinos : any >lutreolus : any @@ -3888,7 +3888,7 @@ namespace argurus { >x : rionegrensis.veraecrucis jacobitus() : caurinus.johorensis>> { var x : caurinus.johorensis>>; () => { var y = this; }; return x; } ->jacobitus : () => caurinus.johorensis>> +>jacobitus : () => caurinus.johorensis>> >caurinus : any >macrorhinos : any >caurinus : any @@ -3910,7 +3910,7 @@ namespace argurus { >x : caurinus.johorensis>> guentheri() : rendalli.moojeni { var x : rendalli.moojeni; () => { var y = this; }; return x; } ->guentheri : () => rendalli.moojeni +>guentheri : () => rendalli.moojeni >rendalli : any >lutreolus : any >argurus : any @@ -3924,7 +3924,7 @@ namespace argurus { >x : rendalli.moojeni mahomet() : imperfecta.ciliolabrum { var x : imperfecta.ciliolabrum; () => { var y = this; }; return x; } ->mahomet : () => imperfecta.ciliolabrum +>mahomet : () => imperfecta.ciliolabrum >imperfecta : any >argurus : any >lutreolus : any @@ -4007,7 +4007,7 @@ namespace nigra { >x : caurinus.psilurus morrisi() : ruatanica.hector, quasiater.wattsi>>> { var x : ruatanica.hector, quasiater.wattsi>>>; () => { var y = this; }; return x; } ->morrisi : () => ruatanica.hector, quasiater.wattsi>>> +>morrisi : () => ruatanica.hector, quasiater.wattsi>>> >ruatanica : any >trivirgatus : any >sagitta : any @@ -4484,7 +4484,7 @@ namespace minutus { >x : patas.uralensis flaviceps(): minutus.inez> { var x: minutus.inez>; () => { var y = this; }; return x; } ->flaviceps : () => inez> +>flaviceps : () => minutus.inez> >minutus : any >argurus : any >panglima : any @@ -4598,7 +4598,7 @@ namespace caurinus { >macrorhinos : any martiniquensis(): ruatanica.hector>> { var x: ruatanica.hector>>; () => { var y = this; }; return x; } ->martiniquensis : () => ruatanica.hector>> +>martiniquensis : () => ruatanica.hector>> >ruatanica : any >julianae : any >macrorhinos : any @@ -4652,7 +4652,7 @@ namespace caurinus { >x : argurus.oreas kathleenae(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } ->kathleenae : () => nigra.dolichurus +>kathleenae : () => nigra.dolichurus >nigra : any >patas : any >caurinus : any @@ -4676,7 +4676,7 @@ namespace caurinus { >x : gabriellae.echinatus nigrovittatus(): caurinus.mahaganus>> { var x: caurinus.mahaganus>>; () => { var y = this; }; return x; } ->nigrovittatus : () => mahaganus>> +>nigrovittatus : () => caurinus.mahaganus>> >caurinus : any >gabriellae : any >petrophilus : any @@ -4753,7 +4753,7 @@ namespace howi { >stolzmanni : typeof sagitta.stolzmanni pennatus(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } ->pennatus : () => marcanoi +>pennatus : () => howi.marcanoi >howi : any >x : marcanoi >howi : any @@ -5098,7 +5098,7 @@ namespace nigra { >gracilis : gracilis weddellii(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } ->weddellii : () => dolichurus +>weddellii : () => nigra.dolichurus >nigra : any >dogramacii : any >julianae : any @@ -5140,7 +5140,7 @@ namespace nigra { >x : dogramacii.koepckeae rouxii(): nigra.gracilis, nigra.thalia> { var x: nigra.gracilis, nigra.thalia>; () => { var y = this; }; return x; } ->rouxii : () => gracilis, thalia> +>rouxii : () => nigra.gracilis, nigra.thalia> >nigra : any >argurus : any >macrorhinos : any @@ -5182,7 +5182,7 @@ namespace nigra { >x : rionegrensis.caniventer theresa(): macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus> { var x: macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus>; () => { var y = this; }; return x; } ->theresa : () => macrorhinos.marmosurus, argurus.luctuosa>, dolichurus> +>theresa : () => macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus> >macrorhinos : any >argurus : any >dammermani : any @@ -6080,7 +6080,7 @@ namespace argurus { >x : Lanthanum.jugularis cracens(): argurus.gilbertii { var x: argurus.gilbertii; () => { var y = this; }; return x; } ->cracens : () => gilbertii +>cracens : () => argurus.gilbertii >argurus : any >lavali : any >lutreolus : any @@ -6200,7 +6200,7 @@ namespace argurus { >x : dammermani.melanops nghetinhensis(): gabriellae.klossii { var x: gabriellae.klossii; () => { var y = this; }; return x; } ->nghetinhensis : () => gabriellae.klossii +>nghetinhensis : () => gabriellae.klossii >gabriellae : any >argurus : any >julianae : any @@ -6228,7 +6228,7 @@ namespace argurus { >x : samarensis.cahirinus univittatus(): argurus.peninsulae { var x: argurus.peninsulae; () => { var y = this; }; return x; } ->univittatus : () => peninsulae +>univittatus : () => argurus.peninsulae >argurus : any >x : peninsulae >argurus : any @@ -6657,7 +6657,7 @@ namespace sagitta { >x : samarensis.cahirinus, dogramacii.robustulus> simulator(): macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>> { var x: macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>>; () => { var y = this; }; return x; } ->simulator : () => macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, stolzmanni>> +>simulator : () => macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>> >macrorhinos : any >Lanthanum : any >dammermani : any @@ -6785,7 +6785,7 @@ namespace howi { >x : argurus.oreas zerda(): quasiater.wattsi, howi.coludo>> { var x: quasiater.wattsi, howi.coludo>>; () => { var y = this; }; return x; } ->zerda : () => quasiater.wattsi, coludo>> +>zerda : () => quasiater.wattsi, howi.coludo>> >quasiater : any >julianae : any >julianae : any @@ -6916,7 +6916,7 @@ namespace argurus { >x : julianae.steerii sondaicus(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } ->sondaicus : () => samarensis.fuscus +>sondaicus : () => samarensis.fuscus >samarensis : any >argurus : any >lavali : any @@ -6944,7 +6944,7 @@ namespace argurus { >x : petrophilus.rosalia cherriei(): ruatanica.Praseodymium { var x: ruatanica.Praseodymium; () => { var y = this; }; return x; } ->cherriei : () => ruatanica.Praseodymium +>cherriei : () => ruatanica.Praseodymium >ruatanica : any >Lanthanum : any >argurus : any @@ -7106,7 +7106,7 @@ namespace lutreolus { >x : macrorhinos.konganensis lemniscatus(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } ->lemniscatus : () => panglima.fundatus +>lemniscatus : () => panglima.fundatus >panglima : any >gabriellae : any >lutreolus : any @@ -7154,7 +7154,7 @@ namespace lutreolus { >x : julianae.galapagoensis monochromos(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } ->monochromos : () => howi.coludo +>monochromos : () => howi.coludo >howi : any >lavali : any >lutreolus : any @@ -7168,7 +7168,7 @@ namespace lutreolus { >x : howi.coludo purinus(): ruatanica.hector { var x: ruatanica.hector; () => { var y = this; }; return x; } ->purinus : () => ruatanica.hector +>purinus : () => ruatanica.hector >ruatanica : any >lutreolus : any >provocax : any @@ -7450,7 +7450,7 @@ namespace sagitta { >x : nigra.gracilis epimelas(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } ->epimelas : () => stolzmanni +>epimelas : () => sagitta.stolzmanni >sagitta : any >x : stolzmanni >sagitta : any @@ -7460,7 +7460,7 @@ namespace sagitta { >x : stolzmanni pittieri(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } ->pittieri : () => samarensis.fuscus +>pittieri : () => samarensis.fuscus >samarensis : any >quasiater : any >sagitta : any @@ -8240,7 +8240,7 @@ namespace lutreolus { >foina : foina tarfayensis(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } ->tarfayensis : () => punicus +>tarfayensis : () => lutreolus.punicus >lutreolus : any >x : punicus >lutreolus : any @@ -8392,7 +8392,7 @@ namespace lutreolus { >x : caurinus.psilurus argentiventer(): trivirgatus.mixtus { var x: trivirgatus.mixtus; () => { var y = this; }; return x; } ->argentiventer : () => trivirgatus.mixtus +>argentiventer : () => trivirgatus.mixtus >trivirgatus : any >gabriellae : any >lutreolus : any @@ -8460,7 +8460,7 @@ namespace lutreolus { >x : quasiater.carolinensis truncatus(): trivirgatus.lotor { var x: trivirgatus.lotor; () => { var y = this; }; return x; } ->truncatus : () => trivirgatus.lotor +>truncatus : () => trivirgatus.lotor >trivirgatus : any >sagitta : any >lutreolus : any @@ -8764,7 +8764,7 @@ namespace dammermani { >dammermani : any blarina(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } ->blarina : () => melanops +>blarina : () => dammermani.melanops >dammermani : any >x : melanops >dammermani : any @@ -8944,7 +8944,7 @@ namespace argurus { >uralensis : typeof patas.uralensis aitkeni(): trivirgatus.mixtus, panglima.amphibius> { var x: trivirgatus.mixtus, panglima.amphibius>; () => { var y = this; }; return x; } ->aitkeni : () => trivirgatus.mixtus, panglima.amphibius> +>aitkeni : () => trivirgatus.mixtus, panglima.amphibius> >trivirgatus : any >argurus : any >dogramacii : any @@ -9030,7 +9030,7 @@ namespace argurus { >x : trivirgatus.oconnelli cavernarum(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } ->cavernarum : () => minutus.inez +>cavernarum : () => minutus.inez >minutus : any >gabriellae : any >argurus : any @@ -9097,7 +9097,7 @@ namespace argurus { >x : lavali.wilsoni fernandezi(): dammermani.siberu, panglima.abidi> { var x: dammermani.siberu, panglima.abidi>; () => { var y = this; }; return x; } ->fernandezi : () => dammermani.siberu, panglima.abidi> +>fernandezi : () => dammermani.siberu, panglima.abidi> >dammermani : any >nigra : any >lutreolus : any @@ -9153,7 +9153,7 @@ namespace argurus { >x : chrysaeolus.sarasinorum tatei(): argurus.pygmaea> { var x: argurus.pygmaea>; () => { var y = this; }; return x; } ->tatei : () => pygmaea> +>tatei : () => argurus.pygmaea> >argurus : any >argurus : any >panglima : any @@ -9191,7 +9191,7 @@ namespace argurus { >x : trivirgatus.falconeri delator(): argurus.netscheri { var x: argurus.netscheri; () => { var y = this; }; return x; } ->delator : () => netscheri +>delator : () => argurus.netscheri >argurus : any >dogramacii : any >lavali : any @@ -9269,7 +9269,7 @@ namespace ruatanica { >gabriellae : any clara(): panglima.amphibius, argurus.dauricus> { var x: panglima.amphibius, argurus.dauricus>; () => { var y = this; }; return x; } ->clara : () => panglima.amphibius, argurus.dauricus> +>clara : () => panglima.amphibius, argurus.dauricus> >panglima : any >imperfecta : any >quasiater : any @@ -9794,7 +9794,7 @@ namespace caurinus { >punicus : typeof lutreolus.punicus socialis(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } ->socialis : () => panglima.amphibius +>socialis : () => panglima.amphibius >panglima : any >trivirgatus : any >caurinus : any diff --git a/testdata/baselines/reference/submodule/compiler/resolvingClassDeclarationWhenInBaseTypeResolution.types.diff b/testdata/baselines/reference/submodule/compiler/resolvingClassDeclarationWhenInBaseTypeResolution.types.diff deleted file mode 100644 index 0336f11724d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/resolvingClassDeclarationWhenInBaseTypeResolution.types.diff +++ /dev/null @@ -1,362 +0,0 @@ ---- old.resolvingClassDeclarationWhenInBaseTypeResolution.types -+++ new.resolvingClassDeclarationWhenInBaseTypeResolution.types -@@= skipped -1001, +1001 lines =@@ - >x : julianae.steerii - - eurycerus() : panamensis.linulus, lavali.wilsoni> { var x : panamensis.linulus, lavali.wilsoni>; () => { var y = this; }; return x; } -->eurycerus : () => panamensis.linulus, lavali.wilsoni> -+>eurycerus : () => panamensis.linulus, lavali.wilsoni> - >panamensis : any - >ruatanica : any - >Lanthanum : any -@@= skipped -1426, +1426 lines =@@ - >x : rendalli.moojeni, gabriellae.echinatus> - - Copper() : argurus.netscheri { var x : argurus.netscheri; () => { var y = this; }; return x; } -->Copper : () => argurus.netscheri -+>Copper : () => argurus.netscheri - >argurus : any - >quasiater : any - >dogramacii : any -@@= skipped -1221, +1221 lines =@@ - >x : quasiater.carolinensis - - Tin() : sagitta.leptoceros> { var x : sagitta.leptoceros>; () => { var y = this; }; return x; } -->Tin : () => sagitta.leptoceros> -+>Tin : () => sagitta.leptoceros> - >sagitta : any - >lutreolus : any - >daubentonii : any -@@= skipped -18, +18 lines =@@ - >x : sagitta.leptoceros> - - marmorata() : panamensis.setulosus> { var x : panamensis.setulosus>; () => { var y = this; }; return x; } -->marmorata : () => panamensis.setulosus> -+>marmorata : () => panamensis.setulosus> - >panamensis : any - >quasiater : any - >daubentonii : any -@@= skipped -32, +32 lines =@@ - >x : Lanthanum.nitidus - - peregrina() : daubentonii.nesiotes { var x : daubentonii.nesiotes; () => { var y = this; }; return x; } -->peregrina : () => daubentonii.nesiotes -+>peregrina : () => daubentonii.nesiotes - >daubentonii : any - >macrorhinos : any - >lutreolus : any -@@= skipped -189, +189 lines =@@ - >x : rionegrensis.veraecrucis - - jacobitus() : caurinus.johorensis>> { var x : caurinus.johorensis>>; () => { var y = this; }; return x; } -->jacobitus : () => caurinus.johorensis>> -+>jacobitus : () => caurinus.johorensis>> - >caurinus : any - >macrorhinos : any - >caurinus : any -@@= skipped -22, +22 lines =@@ - >x : caurinus.johorensis>> - - guentheri() : rendalli.moojeni { var x : rendalli.moojeni; () => { var y = this; }; return x; } -->guentheri : () => rendalli.moojeni -+>guentheri : () => rendalli.moojeni - >rendalli : any - >lutreolus : any - >argurus : any -@@= skipped -14, +14 lines =@@ - >x : rendalli.moojeni - - mahomet() : imperfecta.ciliolabrum { var x : imperfecta.ciliolabrum; () => { var y = this; }; return x; } -->mahomet : () => imperfecta.ciliolabrum -+>mahomet : () => imperfecta.ciliolabrum - >imperfecta : any - >argurus : any - >lutreolus : any -@@= skipped -83, +83 lines =@@ - >x : caurinus.psilurus - - morrisi() : ruatanica.hector, quasiater.wattsi>>> { var x : ruatanica.hector, quasiater.wattsi>>>; () => { var y = this; }; return x; } -->morrisi : () => ruatanica.hector, quasiater.wattsi>>> -+>morrisi : () => ruatanica.hector, quasiater.wattsi>>> - >ruatanica : any - >trivirgatus : any - >sagitta : any -@@= skipped -477, +477 lines =@@ - >x : patas.uralensis - - flaviceps(): minutus.inez> { var x: minutus.inez>; () => { var y = this; }; return x; } -->flaviceps : () => minutus.inez> -+>flaviceps : () => inez> - >minutus : any - >argurus : any - >panglima : any -@@= skipped -114, +114 lines =@@ - >macrorhinos : any - - martiniquensis(): ruatanica.hector>> { var x: ruatanica.hector>>; () => { var y = this; }; return x; } -->martiniquensis : () => ruatanica.hector>> -+>martiniquensis : () => ruatanica.hector>> - >ruatanica : any - >julianae : any - >macrorhinos : any -@@= skipped -54, +54 lines =@@ - >x : argurus.oreas - - kathleenae(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } -->kathleenae : () => nigra.dolichurus -+>kathleenae : () => nigra.dolichurus - >nigra : any - >patas : any - >caurinus : any -@@= skipped -24, +24 lines =@@ - >x : gabriellae.echinatus - - nigrovittatus(): caurinus.mahaganus>> { var x: caurinus.mahaganus>>; () => { var y = this; }; return x; } -->nigrovittatus : () => caurinus.mahaganus>> -+>nigrovittatus : () => mahaganus>> - >caurinus : any - >gabriellae : any - >petrophilus : any -@@= skipped -77, +77 lines =@@ - >stolzmanni : typeof sagitta.stolzmanni - - pennatus(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } -->pennatus : () => howi.marcanoi -+>pennatus : () => marcanoi - >howi : any - >x : marcanoi - >howi : any -@@= skipped -345, +345 lines =@@ - >gracilis : gracilis - - weddellii(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } -->weddellii : () => nigra.dolichurus -+>weddellii : () => dolichurus - >nigra : any - >dogramacii : any - >julianae : any -@@= skipped -42, +42 lines =@@ - >x : dogramacii.koepckeae - - rouxii(): nigra.gracilis, nigra.thalia> { var x: nigra.gracilis, nigra.thalia>; () => { var y = this; }; return x; } -->rouxii : () => nigra.gracilis, nigra.thalia> -+>rouxii : () => gracilis, thalia> - >nigra : any - >argurus : any - >macrorhinos : any -@@= skipped -42, +42 lines =@@ - >x : rionegrensis.caniventer - - theresa(): macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus> { var x: macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus>; () => { var y = this; }; return x; } -->theresa : () => macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus> -+>theresa : () => macrorhinos.marmosurus, argurus.luctuosa>, dolichurus> - >macrorhinos : any - >argurus : any - >dammermani : any -@@= skipped -898, +898 lines =@@ - >x : Lanthanum.jugularis - - cracens(): argurus.gilbertii { var x: argurus.gilbertii; () => { var y = this; }; return x; } -->cracens : () => argurus.gilbertii -+>cracens : () => gilbertii - >argurus : any - >lavali : any - >lutreolus : any -@@= skipped -120, +120 lines =@@ - >x : dammermani.melanops - - nghetinhensis(): gabriellae.klossii { var x: gabriellae.klossii; () => { var y = this; }; return x; } -->nghetinhensis : () => gabriellae.klossii -+>nghetinhensis : () => gabriellae.klossii - >gabriellae : any - >argurus : any - >julianae : any -@@= skipped -28, +28 lines =@@ - >x : samarensis.cahirinus - - univittatus(): argurus.peninsulae { var x: argurus.peninsulae; () => { var y = this; }; return x; } -->univittatus : () => argurus.peninsulae -+>univittatus : () => peninsulae - >argurus : any - >x : peninsulae - >argurus : any -@@= skipped -429, +429 lines =@@ - >x : samarensis.cahirinus, dogramacii.robustulus> - - simulator(): macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>> { var x: macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>>; () => { var y = this; }; return x; } -->simulator : () => macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>> -+>simulator : () => macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, stolzmanni>> - >macrorhinos : any - >Lanthanum : any - >dammermani : any -@@= skipped -128, +128 lines =@@ - >x : argurus.oreas - - zerda(): quasiater.wattsi, howi.coludo>> { var x: quasiater.wattsi, howi.coludo>>; () => { var y = this; }; return x; } -->zerda : () => quasiater.wattsi, howi.coludo>> -+>zerda : () => quasiater.wattsi, coludo>> - >quasiater : any - >julianae : any - >julianae : any -@@= skipped -131, +131 lines =@@ - >x : julianae.steerii - - sondaicus(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } -->sondaicus : () => samarensis.fuscus -+>sondaicus : () => samarensis.fuscus - >samarensis : any - >argurus : any - >lavali : any -@@= skipped -28, +28 lines =@@ - >x : petrophilus.rosalia - - cherriei(): ruatanica.Praseodymium { var x: ruatanica.Praseodymium; () => { var y = this; }; return x; } -->cherriei : () => ruatanica.Praseodymium -+>cherriei : () => ruatanica.Praseodymium - >ruatanica : any - >Lanthanum : any - >argurus : any -@@= skipped -162, +162 lines =@@ - >x : macrorhinos.konganensis - - lemniscatus(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } -->lemniscatus : () => panglima.fundatus -+>lemniscatus : () => panglima.fundatus - >panglima : any - >gabriellae : any - >lutreolus : any -@@= skipped -48, +48 lines =@@ - >x : julianae.galapagoensis - - monochromos(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } -->monochromos : () => howi.coludo -+>monochromos : () => howi.coludo - >howi : any - >lavali : any - >lutreolus : any -@@= skipped -14, +14 lines =@@ - >x : howi.coludo - - purinus(): ruatanica.hector { var x: ruatanica.hector; () => { var y = this; }; return x; } -->purinus : () => ruatanica.hector -+>purinus : () => ruatanica.hector - >ruatanica : any - >lutreolus : any - >provocax : any -@@= skipped -282, +282 lines =@@ - >x : nigra.gracilis - - epimelas(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } -->epimelas : () => sagitta.stolzmanni -+>epimelas : () => stolzmanni - >sagitta : any - >x : stolzmanni - >sagitta : any -@@= skipped -10, +10 lines =@@ - >x : stolzmanni - - pittieri(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } -->pittieri : () => samarensis.fuscus -+>pittieri : () => samarensis.fuscus - >samarensis : any - >quasiater : any - >sagitta : any -@@= skipped -780, +780 lines =@@ - >foina : foina - - tarfayensis(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } -->tarfayensis : () => lutreolus.punicus -+>tarfayensis : () => punicus - >lutreolus : any - >x : punicus - >lutreolus : any -@@= skipped -152, +152 lines =@@ - >x : caurinus.psilurus - - argentiventer(): trivirgatus.mixtus { var x: trivirgatus.mixtus; () => { var y = this; }; return x; } -->argentiventer : () => trivirgatus.mixtus -+>argentiventer : () => trivirgatus.mixtus - >trivirgatus : any - >gabriellae : any - >lutreolus : any -@@= skipped -68, +68 lines =@@ - >x : quasiater.carolinensis - - truncatus(): trivirgatus.lotor { var x: trivirgatus.lotor; () => { var y = this; }; return x; } -->truncatus : () => trivirgatus.lotor -+>truncatus : () => trivirgatus.lotor - >trivirgatus : any - >sagitta : any - >lutreolus : any -@@= skipped -304, +304 lines =@@ - >dammermani : any - - blarina(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } -->blarina : () => dammermani.melanops -+>blarina : () => melanops - >dammermani : any - >x : melanops - >dammermani : any -@@= skipped -180, +180 lines =@@ - >uralensis : typeof patas.uralensis - - aitkeni(): trivirgatus.mixtus, panglima.amphibius> { var x: trivirgatus.mixtus, panglima.amphibius>; () => { var y = this; }; return x; } -->aitkeni : () => trivirgatus.mixtus, panglima.amphibius> -+>aitkeni : () => trivirgatus.mixtus, panglima.amphibius> - >trivirgatus : any - >argurus : any - >dogramacii : any -@@= skipped -86, +86 lines =@@ - >x : trivirgatus.oconnelli - - cavernarum(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } -->cavernarum : () => minutus.inez -+>cavernarum : () => minutus.inez - >minutus : any - >gabriellae : any - >argurus : any -@@= skipped -67, +67 lines =@@ - >x : lavali.wilsoni - - fernandezi(): dammermani.siberu, panglima.abidi> { var x: dammermani.siberu, panglima.abidi>; () => { var y = this; }; return x; } -->fernandezi : () => dammermani.siberu, panglima.abidi> -+>fernandezi : () => dammermani.siberu, panglima.abidi> - >dammermani : any - >nigra : any - >lutreolus : any -@@= skipped -56, +56 lines =@@ - >x : chrysaeolus.sarasinorum - - tatei(): argurus.pygmaea> { var x: argurus.pygmaea>; () => { var y = this; }; return x; } -->tatei : () => argurus.pygmaea> -+>tatei : () => pygmaea> - >argurus : any - >argurus : any - >panglima : any -@@= skipped -38, +38 lines =@@ - >x : trivirgatus.falconeri - - delator(): argurus.netscheri { var x: argurus.netscheri; () => { var y = this; }; return x; } -->delator : () => argurus.netscheri -+>delator : () => netscheri - >argurus : any - >dogramacii : any - >lavali : any -@@= skipped -78, +78 lines =@@ - >gabriellae : any - - clara(): panglima.amphibius, argurus.dauricus> { var x: panglima.amphibius, argurus.dauricus>; () => { var y = this; }; return x; } -->clara : () => panglima.amphibius, argurus.dauricus> -+>clara : () => panglima.amphibius, argurus.dauricus> - >panglima : any - >imperfecta : any - >quasiater : any -@@= skipped -525, +525 lines =@@ - >punicus : typeof lutreolus.punicus - - socialis(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } -->socialis : () => panglima.amphibius -+>socialis : () => panglima.amphibius - >panglima : any - >trivirgatus : any - >caurinus : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName(target=es2015).types b/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName(target=es2015).types index 0732a1e154e..bf0263a3991 100644 --- a/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName(target=es2015).types @@ -3,7 +3,7 @@ === restElementWithNumberPropertyName.ts === const { 0: a, ...b } = [0, 1, 2]; >a : number ->b : { [n: number]: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): number | undefined; push(...items: number[]): number; concat(...items: ConcatArray[]): number[]; concat(...items: (number | ConcatArray)[]): number[]; join(separator?: string | undefined): string; reverse(): number[]; shift(): number | undefined; slice(start?: number | undefined, end?: number | undefined): number[]; sort(compareFn?: ((a: number, b: number) => number) | undefined): [number, number, number]; splice(start: number, deleteCount?: number | undefined): number[]; splice(start: number, deleteCount: number, ...items: number[]): number[]; unshift(...items: number[]): number; indexOf(searchElement: number, fromIndex?: number | undefined): number; lastIndexOf(searchElement: number, fromIndex?: number | undefined): number; every(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; some(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any): void; map(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[]; filter(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; find(predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; findIndex(predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; fill(value: number, start?: number | undefined, end?: number | undefined): [number, number, number]; copyWithin(target: number, start: number, end?: number | undefined): [number, number, number]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, number]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; 0: number; 1: number; 2: number; length: 3; } +>b : { [n: number]: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): number | undefined; push(...items: number[]): number; concat(...items: ConcatArray[]): number[]; concat(...items: (number | ConcatArray)[]): number[]; join(separator?: string): string; reverse(): number[]; shift(): number | undefined; slice(start?: number, end?: number): number[]; sort(compareFn?: ((a: number, b: number) => number) | undefined): [number, number, number]; splice(start: number, deleteCount?: number): number[]; splice(start: number, deleteCount: number, ...items: number[]): number[]; unshift(...items: number[]): number; indexOf(searchElement: number, fromIndex?: number): number; lastIndexOf(searchElement: number, fromIndex?: number): number; every(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; some(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any): void; map(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[]; filter(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; find(predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; findIndex(predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; fill(value: number, start?: number, end?: number): [number, number, number]; copyWithin(target: number, start: number, end?: number): [number, number, number]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, number]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; 0: number; 1: number; 2: number; length: 3; } >[0, 1, 2] : [number, number, number] >0 : 0 >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName(target=es2015).types.diff deleted file mode 100644 index d1ca9b9e291..00000000000 --- a/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.restElementWithNumberPropertyName(target=es2015).types -+++ new.restElementWithNumberPropertyName(target=es2015).types -@@= skipped -2, +2 lines =@@ - === restElementWithNumberPropertyName.ts === - const { 0: a, ...b } = [0, 1, 2]; - >a : number -->b : { [n: number]: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): number | undefined; push(...items: number[]): number; concat(...items: ConcatArray[]): number[]; concat(...items: (number | ConcatArray)[]): number[]; join(separator?: string): string; reverse(): number[]; shift(): number | undefined; slice(start?: number, end?: number): number[]; sort(compareFn?: ((a: number, b: number) => number) | undefined): [number, number, number]; splice(start: number, deleteCount?: number): number[]; splice(start: number, deleteCount: number, ...items: number[]): number[]; unshift(...items: number[]): number; indexOf(searchElement: number, fromIndex?: number): number; lastIndexOf(searchElement: number, fromIndex?: number): number; every(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; some(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any): void; map(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[]; filter(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; find(predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; findIndex(predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; fill(value: number, start?: number, end?: number): [number, number, number]; copyWithin(target: number, start: number, end?: number): [number, number, number]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, number]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; 0: number; 1: number; 2: number; length: 3; } -+>b : { [n: number]: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): number | undefined; push(...items: number[]): number; concat(...items: ConcatArray[]): number[]; concat(...items: (number | ConcatArray)[]): number[]; join(separator?: string | undefined): string; reverse(): number[]; shift(): number | undefined; slice(start?: number | undefined, end?: number | undefined): number[]; sort(compareFn?: ((a: number, b: number) => number) | undefined): [number, number, number]; splice(start: number, deleteCount?: number | undefined): number[]; splice(start: number, deleteCount: number, ...items: number[]): number[]; unshift(...items: number[]): number; indexOf(searchElement: number, fromIndex?: number | undefined): number; lastIndexOf(searchElement: number, fromIndex?: number | undefined): number; every(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; some(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any): void; map(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[]; filter(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; find(predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number | undefined; findIndex(predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; fill(value: number, start?: number | undefined, end?: number | undefined): [number, number, number]; copyWithin(target: number, start: number, end?: number | undefined): [number, number, number]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, number]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; 0: number; 1: number; 2: number; length: 3; } - >[0, 1, 2] : [number, number, number] - >0 : 0 - >1 : 1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/restInvalidArgumentType.types b/testdata/baselines/reference/submodule/compiler/restInvalidArgumentType.types index 66e606448f2..dd943b4788d 100644 --- a/testdata/baselines/reference/submodule/compiler/restInvalidArgumentType.types +++ b/testdata/baselines/reference/submodule/compiler/restInvalidArgumentType.types @@ -76,7 +76,7 @@ function f(p1: T, p2: T[]) { >p1 : T var {...r2} = p2; // OK ->r2 : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string | undefined): string; reverse(): T[]; shift(): T | undefined; slice(start?: number | undefined, end?: number | undefined): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number | undefined): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number | undefined): number; lastIndexOf(searchElement: T, fromIndex?: number | undefined): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number | undefined, end?: number | undefined): T[]; copyWithin(target: number, start: number, end?: number | undefined): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } +>r2 : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string): string; reverse(): T[]; shift(): T | undefined; slice(start?: number, end?: number): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number): number; lastIndexOf(searchElement: T, fromIndex?: number): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number, end?: number): T[]; copyWithin(target: number, start: number, end?: number): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } >p2 : T[] var {...r3} = t; // Error, generic type paramter diff --git a/testdata/baselines/reference/submodule/compiler/restInvalidArgumentType.types.diff b/testdata/baselines/reference/submodule/compiler/restInvalidArgumentType.types.diff deleted file mode 100644 index 75212c96812..00000000000 --- a/testdata/baselines/reference/submodule/compiler/restInvalidArgumentType.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.restInvalidArgumentType.types -+++ new.restInvalidArgumentType.types -@@= skipped -75, +75 lines =@@ - >p1 : T - - var {...r2} = p2; // OK -->r2 : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string): string; reverse(): T[]; shift(): T | undefined; slice(start?: number, end?: number): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number): number; lastIndexOf(searchElement: T, fromIndex?: number): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number, end?: number): T[]; copyWithin(target: number, start: number, end?: number): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } -+>r2 : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string | undefined): string; reverse(): T[]; shift(): T | undefined; slice(start?: number | undefined, end?: number | undefined): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number | undefined): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number | undefined): number; lastIndexOf(searchElement: T, fromIndex?: number | undefined): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number | undefined, end?: number | undefined): T[]; copyWithin(target: number, start: number, end?: number | undefined): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } - >p2 : T[] - - var {...r3} = t; // Error, generic type paramter \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/restParamUsingMappedTypeOverUnionConstraint.types b/testdata/baselines/reference/submodule/compiler/restParamUsingMappedTypeOverUnionConstraint.types index 75286318573..e53a8522284 100644 --- a/testdata/baselines/reference/submodule/compiler/restParamUsingMappedTypeOverUnionConstraint.types +++ b/testdata/baselines/reference/submodule/compiler/restParamUsingMappedTypeOverUnionConstraint.types @@ -7,7 +7,7 @@ type HomomorphicMappedType = { [P in keyof T]: T[P] extends string ? boolean >HomomorphicMappedType : HomomorphicMappedType declare function test( ->test : (args: T, fn: (...args: HomomorphicMappedType) => void) => void +>test : (args: T, fn: (...args: HomomorphicMappedType) => void) => void args: T, >args : T diff --git a/testdata/baselines/reference/submodule/compiler/restParamUsingMappedTypeOverUnionConstraint.types.diff b/testdata/baselines/reference/submodule/compiler/restParamUsingMappedTypeOverUnionConstraint.types.diff deleted file mode 100644 index 6a3de239f82..00000000000 --- a/testdata/baselines/reference/submodule/compiler/restParamUsingMappedTypeOverUnionConstraint.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.restParamUsingMappedTypeOverUnionConstraint.types -+++ new.restParamUsingMappedTypeOverUnionConstraint.types -@@= skipped -6, +6 lines =@@ - >HomomorphicMappedType : HomomorphicMappedType - - declare function test( -->test : (args: T, fn: (...args: HomomorphicMappedType) => void) => void -+>test : (args: T, fn: (...args: HomomorphicMappedType) => void) => void - - args: T, - >args : T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types b/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types index e659a2e103a..6cb28a78167 100644 --- a/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types +++ b/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types @@ -31,5 +31,5 @@ function e(...{0: a = 1, 1: b = true, ...rest: rest}: [boolean, string, number]) >b : string >true : true >rest : any ->rest : { [n: number]: string | number | boolean; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): string | number | boolean | undefined; push(...items: (string | number | boolean)[]): number; concat(...items: ConcatArray[]): (string | number | boolean)[]; concat(...items: (string | number | boolean | ConcatArray)[]): (string | number | boolean)[]; join(separator?: string | undefined): string; reverse(): (string | number | boolean)[]; shift(): string | number | boolean | undefined; slice(start?: number | undefined, end?: number | undefined): (string | number | boolean)[]; sort(compareFn?: ((a: string | number | boolean, b: string | number | boolean) => number) | undefined): [boolean, string, number]; splice(start: number, deleteCount?: number | undefined): (string | number | boolean)[]; splice(start: number, deleteCount: number, ...items: (string | number | boolean)[]): (string | number | boolean)[]; unshift(...items: (string | number | boolean)[]): number; indexOf(searchElement: string | number | boolean, fromIndex?: number | undefined): number; lastIndexOf(searchElement: string | number | boolean, fromIndex?: number | undefined): number; every(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): boolean; some(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => void, thisArg?: any): void; map(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => U, thisArg?: any): U[]; filter(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): (string | number | boolean)[]; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; find(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): string | number | boolean | undefined; findIndex(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): number; fill(value: string | number | boolean, start?: number | undefined, end?: number | undefined): [boolean, string, number]; copyWithin(target: number, start: number, end?: number | undefined): [boolean, string, number]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, string | number | boolean]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; 0: boolean; 1: string; 2: number; length: 3; } +>rest : { [n: number]: string | number | boolean; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): string | number | boolean | undefined; push(...items: (string | number | boolean)[]): number; concat(...items: ConcatArray[]): (string | number | boolean)[]; concat(...items: (string | number | boolean | ConcatArray)[]): (string | number | boolean)[]; join(separator?: string): string; reverse(): (string | number | boolean)[]; shift(): string | number | boolean | undefined; slice(start?: number, end?: number): (string | number | boolean)[]; sort(compareFn?: ((a: string | number | boolean, b: string | number | boolean) => number) | undefined): [boolean, string, number]; splice(start: number, deleteCount?: number): (string | number | boolean)[]; splice(start: number, deleteCount: number, ...items: (string | number | boolean)[]): (string | number | boolean)[]; unshift(...items: (string | number | boolean)[]): number; indexOf(searchElement: string | number | boolean, fromIndex?: number): number; lastIndexOf(searchElement: string | number | boolean, fromIndex?: number): number; every(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): boolean; some(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => void, thisArg?: any): void; map(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => U, thisArg?: any): U[]; filter(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): (string | number | boolean)[]; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; find(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): string | number | boolean | undefined; findIndex(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): number; fill(value: string | number | boolean, start?: number, end?: number): [boolean, string, number]; copyWithin(target: number, start: number, end?: number): [boolean, string, number]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, string | number | boolean]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; 0: boolean; 1: string; 2: number; length: 3; } diff --git a/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types.diff b/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types.diff deleted file mode 100644 index f6c60c9f93b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.restParameterWithBindingPattern3.types -+++ new.restParameterWithBindingPattern3.types -@@= skipped -30, +30 lines =@@ - >b : string - >true : true - >rest : any -->rest : { [n: number]: string | number | boolean; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): string | number | boolean | undefined; push(...items: (string | number | boolean)[]): number; concat(...items: ConcatArray[]): (string | number | boolean)[]; concat(...items: (string | number | boolean | ConcatArray)[]): (string | number | boolean)[]; join(separator?: string): string; reverse(): (string | number | boolean)[]; shift(): string | number | boolean | undefined; slice(start?: number, end?: number): (string | number | boolean)[]; sort(compareFn?: ((a: string | number | boolean, b: string | number | boolean) => number) | undefined): [boolean, string, number]; splice(start: number, deleteCount?: number): (string | number | boolean)[]; splice(start: number, deleteCount: number, ...items: (string | number | boolean)[]): (string | number | boolean)[]; unshift(...items: (string | number | boolean)[]): number; indexOf(searchElement: string | number | boolean, fromIndex?: number): number; lastIndexOf(searchElement: string | number | boolean, fromIndex?: number): number; every(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): boolean; some(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => void, thisArg?: any): void; map(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => U, thisArg?: any): U[]; filter(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): (string | number | boolean)[]; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; find(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): string | number | boolean | undefined; findIndex(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): number; fill(value: string | number | boolean, start?: number, end?: number): [boolean, string, number]; copyWithin(target: number, start: number, end?: number): [boolean, string, number]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, string | number | boolean]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; 0: boolean; 1: string; 2: number; length: 3; } -+>rest : { [n: number]: string | number | boolean; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): string | number | boolean | undefined; push(...items: (string | number | boolean)[]): number; concat(...items: ConcatArray[]): (string | number | boolean)[]; concat(...items: (string | number | boolean | ConcatArray)[]): (string | number | boolean)[]; join(separator?: string | undefined): string; reverse(): (string | number | boolean)[]; shift(): string | number | boolean | undefined; slice(start?: number | undefined, end?: number | undefined): (string | number | boolean)[]; sort(compareFn?: ((a: string | number | boolean, b: string | number | boolean) => number) | undefined): [boolean, string, number]; splice(start: number, deleteCount?: number | undefined): (string | number | boolean)[]; splice(start: number, deleteCount: number, ...items: (string | number | boolean)[]): (string | number | boolean)[]; unshift(...items: (string | number | boolean)[]): number; indexOf(searchElement: string | number | boolean, fromIndex?: number | undefined): number; lastIndexOf(searchElement: string | number | boolean, fromIndex?: number | undefined): number; every(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): boolean; some(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => void, thisArg?: any): void; map(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => U, thisArg?: any): U[]; filter(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => unknown, thisArg?: any): (string | number | boolean)[]; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; find(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): string | number | boolean | undefined; findIndex(predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): number; fill(value: string | number | boolean, start?: number | undefined, end?: number | undefined): [boolean, string, number]; copyWithin(target: number, start: number, end?: number | undefined): [boolean, string, number]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, string | number | boolean]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; 0: boolean; 1: string; 2: number; length: 3; } diff --git a/testdata/baselines/reference/submodule/compiler/restParameters.types b/testdata/baselines/reference/submodule/compiler/restParameters.types index 79fd5dab9d0..ef6309a7a94 100644 --- a/testdata/baselines/reference/submodule/compiler/restParameters.types +++ b/testdata/baselines/reference/submodule/compiler/restParameters.types @@ -2,24 +2,24 @@ === restParameters.ts === function f18(a?:string, ...b:number[]){} ->f18 : (a?: string | undefined, ...b: number[]) => void +>f18 : (a?: string, ...b: number[]) => void >a : string | undefined >b : number[] function f19(a?:string, b?:number, ...c:number[]){} ->f19 : (a?: string | undefined, b?: number | undefined, ...c: number[]) => void +>f19 : (a?: string, b?: number, ...c: number[]) => void >a : string | undefined >b : number | undefined >c : number[] function f20(a:string, b?:string, ...c:number[]){} ->f20 : (a: string, b?: string | undefined, ...c: number[]) => void +>f20 : (a: string, b?: string, ...c: number[]) => void >a : string >b : string | undefined >c : number[] function f21(a:string, b?:string, c?:number, ...d:number[]){} ->f21 : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void +>f21 : (a: string, b?: string, c?: number, ...d: number[]) => void >a : string >b : string | undefined >c : number | undefined diff --git a/testdata/baselines/reference/submodule/compiler/restParameters.types.diff b/testdata/baselines/reference/submodule/compiler/restParameters.types.diff deleted file mode 100644 index 62316333066..00000000000 --- a/testdata/baselines/reference/submodule/compiler/restParameters.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.restParameters.types -+++ new.restParameters.types -@@= skipped -1, +1 lines =@@ - - === restParameters.ts === - function f18(a?:string, ...b:number[]){} -->f18 : (a?: string, ...b: number[]) => void -+>f18 : (a?: string | undefined, ...b: number[]) => void - >a : string | undefined - >b : number[] - - function f19(a?:string, b?:number, ...c:number[]){} -->f19 : (a?: string, b?: number, ...c: number[]) => void -+>f19 : (a?: string | undefined, b?: number | undefined, ...c: number[]) => void - >a : string | undefined - >b : number | undefined - >c : number[] - - function f20(a:string, b?:string, ...c:number[]){} -->f20 : (a: string, b?: string, ...c: number[]) => void -+>f20 : (a: string, b?: string | undefined, ...c: number[]) => void - >a : string - >b : string | undefined - >c : number[] - - function f21(a:string, b?:string, c?:number, ...d:number[]){} -->f21 : (a: string, b?: string, c?: number, ...d: number[]) => void -+>f21 : (a: string, b?: string | undefined, c?: number | undefined, ...d: number[]) => void - >a : string - >b : string | undefined - >c : number | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/restParamsWithNonRestParams.types b/testdata/baselines/reference/submodule/compiler/restParamsWithNonRestParams.types index 8fd5e64d6e3..3ab1a57f6b8 100644 --- a/testdata/baselines/reference/submodule/compiler/restParamsWithNonRestParams.types +++ b/testdata/baselines/reference/submodule/compiler/restParamsWithNonRestParams.types @@ -19,11 +19,11 @@ foo2(); // should be an error >foo2 : (a: string, ...b: number[]) => void function foo3(a?:string, ...b:number[]){} ->foo3 : (a?: string | undefined, ...b: number[]) => void +>foo3 : (a?: string, ...b: number[]) => void >a : string | undefined >b : number[] foo3(); // error but shouldn't be >foo3() : void ->foo3 : (a?: string | undefined, ...b: number[]) => void +>foo3 : (a?: string, ...b: number[]) => void diff --git a/testdata/baselines/reference/submodule/compiler/restParamsWithNonRestParams.types.diff b/testdata/baselines/reference/submodule/compiler/restParamsWithNonRestParams.types.diff deleted file mode 100644 index 57872a9ada1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/restParamsWithNonRestParams.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.restParamsWithNonRestParams.types -+++ new.restParamsWithNonRestParams.types -@@= skipped -18, +18 lines =@@ - >foo2 : (a: string, ...b: number[]) => void - - function foo3(a?:string, ...b:number[]){} -->foo3 : (a?: string, ...b: number[]) => void -+>foo3 : (a?: string | undefined, ...b: number[]) => void - >a : string | undefined - >b : number[] - - foo3(); // error but shouldn't be - >foo3() : void -->foo3 : (a?: string, ...b: number[]) => void -+>foo3 : (a?: string | undefined, ...b: number[]) => void diff --git a/testdata/baselines/reference/submodule/compiler/returnTypeInferenceContextualParameterTypesInGenerator1.types b/testdata/baselines/reference/submodule/compiler/returnTypeInferenceContextualParameterTypesInGenerator1.types index 4c0fe9a2c52..770276bf903 100644 --- a/testdata/baselines/reference/submodule/compiler/returnTypeInferenceContextualParameterTypesInGenerator1.types +++ b/testdata/baselines/reference/submodule/compiler/returnTypeInferenceContextualParameterTypesInGenerator1.types @@ -7,10 +7,10 @@ interface Effect { } declare function gen, AEff>( ->gen : , AEff>(f: () => Generator) => Effect +>gen : , AEff>(f: () => Generator) => Effect f: () => Generator ->f : () => Generator +>f : () => Generator ): Effect; @@ -82,7 +82,7 @@ export const layerServerHandlers = Rpcs.toLayer( gen(function* () { >gen(function* () { return { Register: (id) => String(id), }; }) : Effect<{ Register: (id: number) => string; }> ->gen : , AEff>(f: () => Generator) => Effect +>gen : , AEff>(f: () => Generator) => Effect >function* () { return { Register: (id) => String(id), }; } : () => Generator string; }, any> return { diff --git a/testdata/baselines/reference/submodule/compiler/returnTypeInferenceContextualParameterTypesInGenerator1.types.diff b/testdata/baselines/reference/submodule/compiler/returnTypeInferenceContextualParameterTypesInGenerator1.types.diff deleted file mode 100644 index 1932b1cbdb2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/returnTypeInferenceContextualParameterTypesInGenerator1.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.returnTypeInferenceContextualParameterTypesInGenerator1.types -+++ new.returnTypeInferenceContextualParameterTypesInGenerator1.types -@@= skipped -6, +6 lines =@@ - } - - declare function gen, AEff>( -->gen : , AEff>(f: () => Generator) => Effect -+>gen : , AEff>(f: () => Generator) => Effect - - f: () => Generator -->f : () => Generator -+>f : () => Generator - - ): Effect; - -@@= skipped -75, +75 lines =@@ - - gen(function* () { - >gen(function* () { return { Register: (id) => String(id), }; }) : Effect<{ Register: (id: number) => string; }> -->gen : , AEff>(f: () => Generator) => Effect -+>gen : , AEff>(f: () => Generator) => Effect - >function* () { return { Register: (id) => String(id), }; } : () => Generator string; }, any> - - return { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/returnTypeParameterWithModules.types b/testdata/baselines/reference/submodule/compiler/returnTypeParameterWithModules.types index 55497ad1816..ab578c813f4 100644 --- a/testdata/baselines/reference/submodule/compiler/returnTypeParameterWithModules.types +++ b/testdata/baselines/reference/submodule/compiler/returnTypeParameterWithModules.types @@ -5,7 +5,7 @@ namespace M1 { >M1 : typeof M1 export function reduce(ar, f, e?): Array { ->reduce : (ar: any, f: any, e?: any) => A[] +>reduce : (ar: any, f: any, e?: any) => Array >ar : any >f : any >e : any @@ -42,9 +42,9 @@ namespace M2 { A.reduce(arguments, compose2); >A.reduce(arguments, compose2) : unknown[] ->A.reduce : (ar: any, f: any, e?: any) => A[] +>A.reduce : (ar: any, f: any, e?: any) => Array >A : typeof A ->reduce : (ar: any, f: any, e?: any) => A[] +>reduce : (ar: any, f: any, e?: any) => Array >arguments : IArguments >compose2 : (g: (x: B) => C, f: (x: D) => B) => (x: D) => C diff --git a/testdata/baselines/reference/submodule/compiler/returnTypeParameterWithModules.types.diff b/testdata/baselines/reference/submodule/compiler/returnTypeParameterWithModules.types.diff deleted file mode 100644 index e0b0af56084..00000000000 --- a/testdata/baselines/reference/submodule/compiler/returnTypeParameterWithModules.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.returnTypeParameterWithModules.types -+++ new.returnTypeParameterWithModules.types -@@= skipped -4, +4 lines =@@ - >M1 : typeof M1 - - export function reduce(ar, f, e?): Array { -->reduce : (ar: any, f: any, e?: any) => Array -+>reduce : (ar: any, f: any, e?: any) => A[] - >ar : any - >f : any - >e : any -@@= skipped -37, +37 lines =@@ - - A.reduce(arguments, compose2); - >A.reduce(arguments, compose2) : unknown[] -->A.reduce : (ar: any, f: any, e?: any) => Array -+>A.reduce : (ar: any, f: any, e?: any) => A[] - >A : typeof A -->reduce : (ar: any, f: any, e?: any) => Array -+>reduce : (ar: any, f: any, e?: any) => A[] - >arguments : IArguments - >compose2 : (g: (x: B) => C, f: (x: D) => B) => (x: D) => C diff --git a/testdata/baselines/reference/submodule/compiler/returnTypeTypeArguments.types b/testdata/baselines/reference/submodule/compiler/returnTypeTypeArguments.types index 42448b77719..e8e7aee52c0 100644 --- a/testdata/baselines/reference/submodule/compiler/returnTypeTypeArguments.types +++ b/testdata/baselines/reference/submodule/compiler/returnTypeTypeArguments.types @@ -30,62 +30,62 @@ class Three{ } function A1(): One { return null; } ->A1 : () => any +>A1 : () => One function A2(): Two { return null; } ->A2 : () => any +>A2 : () => Two function A3(): Three { return null; } ->A3 : () => any +>A3 : () => Three function B1(): Two { return null; } ->B1 : () => any +>B1 : () => Two function B2(): Three { return null; } ->B2 : () => any +>B2 : () => Three function B3(): Three { return null; } ->B3 : () => any +>B3 : () => Three class C { >C : C A1(): One { return null; } ->A1 : () => any +>A1 : () => One A2(): Two { return null; } ->A2 : () => any +>A2 : () => Two A3(): Three { return null; } ->A3 : () => any +>A3 : () => Three B1(): Two { return null; } ->B1 : () => any +>B1 : () => Two B2(): Three { return null; } ->B2 : () => any +>B2 : () => Three B3(): Three { return null; } ->B3 : () => any +>B3 : () => Three } class D { >D : D A2(): Two { return null; } ->A2 : () => any +>A2 : () => Two A3(): Three { return null; } ->A3 : () => any +>A3 : () => Three B1(): Two { return null; } ->B1 : () => any +>B1 : () => Two B2(): Three { return null; } ->B2 : () => any +>B2 : () => Three B3(): Three { return null; } ->B3 : () => any +>B3 : () => Three } interface I { @@ -104,7 +104,7 @@ class X >X : X { p1: () => X; ->p1 : () => any +>p1 : () => X p2: { [idx: number]: X } >p2 : { [idx: number]: any; } @@ -120,7 +120,7 @@ class X >p5 : any p6: () => Y; ->p6 : () => any +>p6 : () => Y p7: { [idx: number]: Y } >p7 : { [idx: number]: any; } @@ -137,10 +137,10 @@ class X } declare var a: { ->a : { p1: () => any; p2: { [idx: number]: any; }; p3: any[]; p4: I; p5: any; p6: () => any; p7: { [idx: number]: any; }; p8: any[]; p9: I; pa: any; } +>a : { p1: () => X; p2: { [idx: number]: X; }; p3: X[]; p4: I; p5: X; p6: () => Y; p7: { [idx: number]: Y; }; p8: Y[]; p9: I; pa: Y; } p1: () => X; ->p1 : () => any +>p1 : () => X p2: { [idx: number]: X } >p2 : { [idx: number]: any; } @@ -156,7 +156,7 @@ declare var a: { >p5 : any p6: () => Y; ->p6 : () => any +>p6 : () => Y p7: { [idx: number]: Y } >p7 : { [idx: number]: any; } diff --git a/testdata/baselines/reference/submodule/compiler/returnTypeTypeArguments.types.diff b/testdata/baselines/reference/submodule/compiler/returnTypeTypeArguments.types.diff deleted file mode 100644 index dd004f7c7e8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/returnTypeTypeArguments.types.diff +++ /dev/null @@ -1,122 +0,0 @@ ---- old.returnTypeTypeArguments.types -+++ new.returnTypeTypeArguments.types -@@= skipped -29, +29 lines =@@ - } - - function A1(): One { return null; } -->A1 : () => One -+>A1 : () => any - - function A2(): Two { return null; } -->A2 : () => Two -+>A2 : () => any - - function A3(): Three { return null; } -->A3 : () => Three -+>A3 : () => any - - function B1(): Two { return null; } -->B1 : () => Two -+>B1 : () => any - - function B2(): Three { return null; } -->B2 : () => Three -+>B2 : () => any - - function B3(): Three { return null; } -->B3 : () => Three -+>B3 : () => any - - class C { - >C : C - - A1(): One { return null; } -->A1 : () => One -+>A1 : () => any - - A2(): Two { return null; } -->A2 : () => Two -+>A2 : () => any - - A3(): Three { return null; } -->A3 : () => Three -+>A3 : () => any - - B1(): Two { return null; } -->B1 : () => Two -+>B1 : () => any - - B2(): Three { return null; } -->B2 : () => Three -+>B2 : () => any - - B3(): Three { return null; } -->B3 : () => Three -+>B3 : () => any - } - - class D { - >D : D - - A2(): Two { return null; } -->A2 : () => Two -+>A2 : () => any - - A3(): Three { return null; } -->A3 : () => Three -+>A3 : () => any - - B1(): Two { return null; } -->B1 : () => Two -+>B1 : () => any - - B2(): Three { return null; } -->B2 : () => Three -+>B2 : () => any - - B3(): Three { return null; } -->B3 : () => Three -+>B3 : () => any - } - - interface I { -@@= skipped -74, +74 lines =@@ - >X : X - { - p1: () => X; -->p1 : () => X -+>p1 : () => any - - p2: { [idx: number]: X } - >p2 : { [idx: number]: any; } -@@= skipped -16, +16 lines =@@ - >p5 : any - - p6: () => Y; -->p6 : () => Y -+>p6 : () => any - - p7: { [idx: number]: Y } - >p7 : { [idx: number]: any; } -@@= skipped -17, +17 lines =@@ - } - - declare var a: { -->a : { p1: () => X; p2: { [idx: number]: X; }; p3: X[]; p4: I; p5: X; p6: () => Y; p7: { [idx: number]: Y; }; p8: Y[]; p9: I; pa: Y; } -+>a : { p1: () => any; p2: { [idx: number]: any; }; p3: any[]; p4: I; p5: any; p6: () => any; p7: { [idx: number]: any; }; p8: any[]; p9: I; pa: any; } - - p1: () => X; -->p1 : () => X -+>p1 : () => any - - p2: { [idx: number]: X } - >p2 : { [idx: number]: any; } -@@= skipped -19, +19 lines =@@ - >p5 : any - - p6: () => Y; -->p6 : () => Y -+>p6 : () => any - - p7: { [idx: number]: Y } - >p7 : { [idx: number]: any; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js b/testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js index 3f1f2f34aac..41f5b45f149 100644 --- a/testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js +++ b/testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js @@ -42,6 +42,6 @@ export type ParamStateRecord = Record; //// [index.d.ts] export declare const blah: { publicMixin: { - getGovernedParams: () => globalThis.ERef; + getGovernedParams: () => globalThis.ERef; }; }; diff --git a/testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js.diff b/testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js.diff index 3a624554a13..85f63e1a95a 100644 --- a/testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js.diff +++ b/testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js.diff @@ -16,7 +16,5 @@ -export const blah: { +export declare const blah: { publicMixin: { -- getGovernedParams: () => globalThis.ERef; -+ getGovernedParams: () => globalThis.ERef; - }; - }; \ No newline at end of file + getGovernedParams: () => globalThis.ERef; + }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedPartiallyInferableTypes.types b/testdata/baselines/reference/submodule/compiler/reverseMappedPartiallyInferableTypes.types index 9efef1581da..c25702df0bb 100644 --- a/testdata/baselines/reference/submodule/compiler/reverseMappedPartiallyInferableTypes.types +++ b/testdata/baselines/reference/submodule/compiler/reverseMappedPartiallyInferableTypes.types @@ -47,7 +47,7 @@ export type PropsDefinition = RecordPropsDefinition; declare function extend({ props }: { props: PropsDefinition }): PropsDefinition; ->extend : ({ props }: { props: RecordPropsDefinition; }) => RecordPropsDefinition +>extend : ({ props }: { props: PropsDefinition; }) => PropsDefinition >props : RecordPropsDefinition >props : RecordPropsDefinition @@ -59,7 +59,7 @@ interface MyType { const r = extend({ >r : RecordPropsDefinition<{ notResolved: MyType; explicit: MyType; }> >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: RecordPropsDefinition; }) => RecordPropsDefinition +>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; }; }; } props: { diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedPartiallyInferableTypes.types.diff b/testdata/baselines/reference/submodule/compiler/reverseMappedPartiallyInferableTypes.types.diff deleted file mode 100644 index 8f0c9cdda73..00000000000 --- a/testdata/baselines/reference/submodule/compiler/reverseMappedPartiallyInferableTypes.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.reverseMappedPartiallyInferableTypes.types -+++ new.reverseMappedPartiallyInferableTypes.types -@@= skipped -46, +46 lines =@@ - - - declare function extend({ props }: { props: PropsDefinition }): PropsDefinition; -->extend : ({ props }: { props: PropsDefinition; }) => PropsDefinition -+>extend : ({ props }: { props: RecordPropsDefinition; }) => RecordPropsDefinition - >props : RecordPropsDefinition - >props : RecordPropsDefinition - -@@= skipped -12, +12 lines =@@ - const r = extend({ - >r : RecordPropsDefinition<{ notResolved: MyType; explicit: MyType; }> - >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: RecordPropsDefinition; }) => RecordPropsDefinition - >{ 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; }; }; } - - props: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeInferenceSameSource1.types b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeInferenceSameSource1.types index bea49d7e9c6..4b285d655c2 100644 --- a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeInferenceSameSource1.types +++ b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeInferenceSameSource1.types @@ -35,7 +35,7 @@ interface ConfigureStoreOptions { } declare function configureStore( ->configureStore : = UnknownAction>(options: ConfigureStoreOptions) => void +>configureStore : (options: ConfigureStoreOptions) => void options: ConfigureStoreOptions, >options : ConfigureStoreOptions @@ -51,7 +51,7 @@ declare function configureStore( const store1 = configureStore({ reducer }); >store1 : void >configureStore({ reducer }) : void ->configureStore : = UnknownAction>(options: ConfigureStoreOptions) => void +>configureStore : (options: ConfigureStoreOptions) => void >{ reducer } : { reducer: Reducer; } >reducer : Reducer } @@ -64,7 +64,7 @@ const counterReducer1: Reducer = () => 0; const store2 = configureStore({ >store2 : void >configureStore({ reducer: { counter1: counterReducer1, },}) : void ->configureStore : = UnknownAction>(options: ConfigureStoreOptions) => void +>configureStore : (options: ConfigureStoreOptions) => void >{ reducer: { counter1: counterReducer1, },} : { reducer: { counter1: Reducer; }; } reducer: { diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeInferenceSameSource1.types.diff b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeInferenceSameSource1.types.diff deleted file mode 100644 index cc5d3ac36a7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeInferenceSameSource1.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.reverseMappedTypeInferenceSameSource1.types -+++ new.reverseMappedTypeInferenceSameSource1.types -@@= skipped -34, +34 lines =@@ - } - - declare function configureStore( -->configureStore : (options: ConfigureStoreOptions) => void -+>configureStore : = UnknownAction>(options: ConfigureStoreOptions) => void - - options: ConfigureStoreOptions, - >options : ConfigureStoreOptions -@@= skipped -16, +16 lines =@@ - const store1 = configureStore({ reducer }); - >store1 : void - >configureStore({ reducer }) : void -->configureStore : (options: ConfigureStoreOptions) => void -+>configureStore : = UnknownAction>(options: ConfigureStoreOptions) => void - >{ reducer } : { reducer: Reducer; } - >reducer : Reducer - } -@@= skipped -13, +13 lines =@@ - const store2 = configureStore({ - >store2 : void - >configureStore({ reducer: { counter1: counterReducer1, },}) : void -->configureStore : (options: ConfigureStoreOptions) => void -+>configureStore : = UnknownAction>(options: ConfigureStoreOptions) => void - >{ reducer: { counter1: counterReducer1, },} : { reducer: { counter1: Reducer; }; } - - reducer: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.errors.txt b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.errors.txt index 510266950c5..22caadd2140 100644 --- a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.errors.txt @@ -12,7 +12,7 @@ reverseMappedTypeIntersectionConstraint.ts(87,12): error TS2353: Object literal reverseMappedTypeIntersectionConstraint.ts(98,12): error TS2353: Object literal may only specify known properties, and 'z' does not exist in type '{ x: 1; }'. reverseMappedTypeIntersectionConstraint.ts(100,22): error TS2353: Object literal may only specify known properties, and 'z' does not exist in type '{ x: 1; y: "foo"; }'. reverseMappedTypeIntersectionConstraint.ts(113,67): error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ nested: { prop: string; }; prop: "foo"; }'. -reverseMappedTypeIntersectionConstraint.ts(164,3): error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "str"; }; types: { actors: { src: "str"; logic: () => Promise; }; }; }'. +reverseMappedTypeIntersectionConstraint.ts(164,3): error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "str"; }; types: { actors: { src: "str"; logic: typeof child; }; }; }'. reverseMappedTypeIntersectionConstraint.ts(171,3): error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "whatever"; }; }'. @@ -208,7 +208,7 @@ reverseMappedTypeIntersectionConstraint.ts(171,3): error TS2353: Object literal }, extra: 10 ~~~~~ -!!! error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "str"; }; types: { actors: { src: "str"; logic: () => Promise; }; }; }'. +!!! error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "str"; }; types: { actors: { src: "str"; logic: typeof child; }; }; }'. }); const config2 = createXMachine({ diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.errors.txt.diff new file mode 100644 index 00000000000..954832d4841 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.errors.txt.diff @@ -0,0 +1,20 @@ +--- old.reverseMappedTypeIntersectionConstraint.errors.txt ++++ new.reverseMappedTypeIntersectionConstraint.errors.txt +@@= skipped -11, +11 lines =@@ + reverseMappedTypeIntersectionConstraint.ts(98,12): error TS2353: Object literal may only specify known properties, and 'z' does not exist in type '{ x: 1; }'. + reverseMappedTypeIntersectionConstraint.ts(100,22): error TS2353: Object literal may only specify known properties, and 'z' does not exist in type '{ x: 1; y: "foo"; }'. + reverseMappedTypeIntersectionConstraint.ts(113,67): error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ nested: { prop: string; }; prop: "foo"; }'. +-reverseMappedTypeIntersectionConstraint.ts(164,3): error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "str"; }; types: { actors: { src: "str"; logic: () => Promise; }; }; }'. ++reverseMappedTypeIntersectionConstraint.ts(164,3): error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "str"; }; types: { actors: { src: "str"; logic: typeof child; }; }; }'. + reverseMappedTypeIntersectionConstraint.ts(171,3): error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "whatever"; }; }'. + + +@@= skipped -196, +196 lines =@@ + }, + extra: 10 + ~~~~~ +-!!! error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "str"; }; types: { actors: { src: "str"; logic: () => Promise; }; }; }'. ++!!! error TS2353: Object literal may only specify known properties, and 'extra' does not exist in type '{ invoke: { readonly src: "str"; }; types: { actors: { src: "str"; logic: typeof child; }; }; }'. + }); + + const config2 = createXMachine({ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.types b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.types index 961663b9247..39f5fe16f43 100644 --- a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.types +++ b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.types @@ -213,7 +213,7 @@ type XNumber = { x: number } >x : number declare function foo(props: {[K in keyof T & keyof XNumber]: T[K]}): void; ->foo : (props: { [K in keyof T & "x"]: T[K]; }) => void +>foo : (props: { [K in keyof T & keyof XNumber]: T[K]; }) => void >props : { [K in keyof T & "x"]: T[K]; } function bar(props: {x: number, y: string}) { @@ -224,13 +224,13 @@ function bar(props: {x: number, y: string}) { return foo(props); // no error because lack of excess property check by design >foo(props) : void ->foo : (props: { [K in keyof T & "x"]: T[K]; }) => void +>foo : (props: { [K in keyof T & keyof XNumber]: T[K]; }) => void >props : { x: number; y: string; } } foo({x: 1, y: 'foo'}); >foo({x: 1, y: 'foo'}) : void ->foo : (props: { [K in keyof T & "x"]: T[K]; }) => void +>foo : (props: { [K in keyof T & keyof XNumber]: T[K]; }) => void >{x: 1, y: 'foo'} : { x: 1; y: string; } >x : 1 >1 : 1 @@ -239,7 +239,7 @@ foo({x: 1, y: 'foo'}); foo({...{x: 1, y: 'foo'}}); // no error because lack of excess property check by design >foo({...{x: 1, y: 'foo'}}) : void ->foo : (props: { [K in keyof T & "x"]: T[K]; }) => void +>foo : (props: { [K in keyof T & keyof XNumber]: T[K]; }) => void >{...{x: 1, y: 'foo'}} : { x: 1; y: string; } >{x: 1, y: 'foo'} : { x: 1; y: string; } >x : 1 @@ -356,7 +356,7 @@ type DistributeActors = TActor extends { src: infer TSrc } interface MachineConfig { types?: { ->types : { actors?: TActor | undefined; } | undefined +>types : { actors?: TActor; } | undefined actors?: TActor; >actors : TActor | undefined @@ -401,18 +401,18 @@ const child = () => Promise.resolve("foo"); >"foo" : "foo" const config = createXMachine({ ->config : { types: { actors: { src: "str"; logic: () => Promise; }; }; invoke: { readonly src: "str"; }; } ->createXMachine({ types: {} as { actors: { src: "str"; logic: typeof child; }; }, invoke: { src: "str", }, extra: 10}) : { types: { actors: { src: "str"; logic: () => Promise; }; }; invoke: { readonly src: "str"; }; } +>config : { types: { actors: { src: "str"; logic: typeof child; }; }; invoke: { readonly src: "str"; }; } +>createXMachine({ types: {} as { actors: { src: "str"; logic: typeof child; }; }, invoke: { src: "str", }, extra: 10}) : { types: { actors: { src: "str"; logic: typeof child; }; }; invoke: { readonly src: "str"; }; } >createXMachine : , TActor extends ProvidedActor = TConfig extends { types: { actors: ProvidedActor; }; } ? TConfig["types"]["actors"] : ProvidedActor>(config: { [K in keyof MachineConfig & keyof TConfig]: TConfig[K]; }) => TConfig ->{ types: {} as { actors: { src: "str"; logic: typeof child; }; }, invoke: { src: "str", }, extra: 10} : { types: { actors: { src: "str"; logic: () => Promise; }; }; invoke: { src: "str"; }; extra: number; } +>{ types: {} as { actors: { src: "str"; logic: typeof child; }; }, invoke: { src: "str", }, extra: 10} : { types: { actors: { src: "str"; logic: typeof child; }; }; invoke: { src: "str"; }; extra: number; } types: {} as { ->types : { actors: { src: "str"; logic: () => Promise; }; } ->{} as { actors: { src: "str"; logic: typeof child; }; } : { actors: { src: "str"; logic: () => Promise; }; } +>types : { actors: { src: "str"; logic: typeof child; }; } +>{} as { actors: { src: "str"; logic: typeof child; }; } : { actors: { src: "str"; logic: typeof child; }; } >{} : {} actors: { ->actors : { src: "str"; logic: () => Promise; } +>actors : { src: "str"; logic: typeof child; } src: "str"; >src : "str" diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.types.diff b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.types.diff deleted file mode 100644 index 9602f46d376..00000000000 --- a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeIntersectionConstraint.types.diff +++ /dev/null @@ -1,70 +0,0 @@ ---- old.reverseMappedTypeIntersectionConstraint.types -+++ new.reverseMappedTypeIntersectionConstraint.types -@@= skipped -212, +212 lines =@@ - >x : number - - declare function foo(props: {[K in keyof T & keyof XNumber]: T[K]}): void; -->foo : (props: { [K in keyof T & keyof XNumber]: T[K]; }) => void -+>foo : (props: { [K in keyof T & "x"]: T[K]; }) => void - >props : { [K in keyof T & "x"]: T[K]; } - - function bar(props: {x: number, y: string}) { -@@= skipped -11, +11 lines =@@ - - return foo(props); // no error because lack of excess property check by design - >foo(props) : void -->foo : (props: { [K in keyof T & keyof XNumber]: T[K]; }) => void -+>foo : (props: { [K in keyof T & "x"]: T[K]; }) => void - >props : { x: number; y: string; } - } - - foo({x: 1, y: 'foo'}); - >foo({x: 1, y: 'foo'}) : void -->foo : (props: { [K in keyof T & keyof XNumber]: T[K]; }) => void -+>foo : (props: { [K in keyof T & "x"]: T[K]; }) => void - >{x: 1, y: 'foo'} : { x: 1; y: string; } - >x : 1 - >1 : 1 -@@= skipped -15, +15 lines =@@ - - foo({...{x: 1, y: 'foo'}}); // no error because lack of excess property check by design - >foo({...{x: 1, y: 'foo'}}) : void -->foo : (props: { [K in keyof T & keyof XNumber]: T[K]; }) => void -+>foo : (props: { [K in keyof T & "x"]: T[K]; }) => void - >{...{x: 1, y: 'foo'}} : { x: 1; y: string; } - >{x: 1, y: 'foo'} : { x: 1; y: string; } - >x : 1 -@@= skipped -117, +117 lines =@@ - - interface MachineConfig { - types?: { -->types : { actors?: TActor; } | undefined -+>types : { actors?: TActor | undefined; } | undefined - - actors?: TActor; - >actors : TActor | undefined -@@= skipped -45, +45 lines =@@ - >"foo" : "foo" - - const config = createXMachine({ -->config : { types: { actors: { src: "str"; logic: typeof child; }; }; invoke: { readonly src: "str"; }; } -->createXMachine({ types: {} as { actors: { src: "str"; logic: typeof child; }; }, invoke: { src: "str", }, extra: 10}) : { types: { actors: { src: "str"; logic: typeof child; }; }; invoke: { readonly src: "str"; }; } -+>config : { types: { actors: { src: "str"; logic: () => Promise; }; }; invoke: { readonly src: "str"; }; } -+>createXMachine({ types: {} as { actors: { src: "str"; logic: typeof child; }; }, invoke: { src: "str", }, extra: 10}) : { types: { actors: { src: "str"; logic: () => Promise; }; }; invoke: { readonly src: "str"; }; } - >createXMachine : , TActor extends ProvidedActor = TConfig extends { types: { actors: ProvidedActor; }; } ? TConfig["types"]["actors"] : ProvidedActor>(config: { [K in keyof MachineConfig & keyof TConfig]: TConfig[K]; }) => TConfig -->{ types: {} as { actors: { src: "str"; logic: typeof child; }; }, invoke: { src: "str", }, extra: 10} : { types: { actors: { src: "str"; logic: typeof child; }; }; invoke: { src: "str"; }; extra: number; } -+>{ types: {} as { actors: { src: "str"; logic: typeof child; }; }, invoke: { src: "str", }, extra: 10} : { types: { actors: { src: "str"; logic: () => Promise; }; }; invoke: { src: "str"; }; extra: number; } - - types: {} as { -->types : { actors: { src: "str"; logic: typeof child; }; } -->{} as { actors: { src: "str"; logic: typeof child; }; } : { actors: { src: "str"; logic: typeof child; }; } -+>types : { actors: { src: "str"; logic: () => Promise; }; } -+>{} as { actors: { src: "str"; logic: typeof child; }; } : { actors: { src: "str"; logic: () => Promise; }; } - >{} : {} - - actors: { -->actors : { src: "str"; logic: typeof child; } -+>actors : { src: "str"; logic: () => Promise; } - - src: "str"; - >src : "str" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeLimitedConstraint.types b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeLimitedConstraint.types index 27d1aa60c2b..87e7c41c636 100644 --- a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeLimitedConstraint.types +++ b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeLimitedConstraint.types @@ -6,12 +6,12 @@ type XNumber_ = { x: number } >x : number declare function foo_(props: {[K in keyof T & keyof XNumber_]: T[K]}): T; ->foo_ : (props: { [K in keyof T & "x"]: T[K]; }) => T +>foo_ : (props: { [K in keyof T & keyof XNumber_]: T[K]; }) => T >props : { [K in keyof T & "x"]: T[K]; } foo_({x: 1, y: 'foo'}); >foo_({x: 1, y: 'foo'}) : { x: 1; } ->foo_ : (props: { [K in keyof T & "x"]: T[K]; }) => T +>foo_ : (props: { [K in keyof T & keyof XNumber_]: T[K]; }) => T >{x: 1, y: 'foo'} : { x: 1; y: string; } >x : 1 >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeLimitedConstraint.types.diff b/testdata/baselines/reference/submodule/compiler/reverseMappedTypeLimitedConstraint.types.diff deleted file mode 100644 index 1463fa8570a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/reverseMappedTypeLimitedConstraint.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.reverseMappedTypeLimitedConstraint.types -+++ new.reverseMappedTypeLimitedConstraint.types -@@= skipped -5, +5 lines =@@ - >x : number - - declare function foo_(props: {[K in keyof T & keyof XNumber_]: T[K]}): T; -->foo_ : (props: { [K in keyof T & keyof XNumber_]: T[K]; }) => T -+>foo_ : (props: { [K in keyof T & "x"]: T[K]; }) => T - >props : { [K in keyof T & "x"]: T[K]; } - - foo_({x: 1, y: 'foo'}); - >foo_({x: 1, y: 'foo'}) : { x: 1; } -->foo_ : (props: { [K in keyof T & keyof XNumber_]: T[K]; }) => T -+>foo_ : (props: { [K in keyof T & "x"]: T[K]; }) => T - >{x: 1, y: 'foo'} : { x: 1; y: string; } - >x : 1 - >1 : 1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/selfReferentialFunctionType.types b/testdata/baselines/reference/submodule/compiler/selfReferentialFunctionType.types index 22eeefe484e..4bfe19485d8 100644 --- a/testdata/baselines/reference/submodule/compiler/selfReferentialFunctionType.types +++ b/testdata/baselines/reference/submodule/compiler/selfReferentialFunctionType.types @@ -2,9 +2,9 @@ === selfReferentialFunctionType.ts === declare function f(args: typeof f): T; ->f : (args: (args: any) => T) => T ->args : (args: any) => T ->f : (args: (args: any) => T) => T +>f : (args: typeof f) => T +>args : typeof f +>f : (args: typeof f) => T declare function g(args: T): T; >g : (args: T) => T @@ -12,6 +12,6 @@ declare function g(args: T): T; >args : T declare function h(): typeof h; ->h : () => () => any ->h : () => () => any +>h : () => typeof h +>h : () => typeof h diff --git a/testdata/baselines/reference/submodule/compiler/selfReferentialFunctionType.types.diff b/testdata/baselines/reference/submodule/compiler/selfReferentialFunctionType.types.diff deleted file mode 100644 index 876d67d21f2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/selfReferentialFunctionType.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.selfReferentialFunctionType.types -+++ new.selfReferentialFunctionType.types -@@= skipped -1, +1 lines =@@ - - === selfReferentialFunctionType.ts === - declare function f(args: typeof f): T; -->f : (args: typeof f) => T -->args : typeof f -->f : (args: typeof f) => T -+>f : (args: (args: any) => T) => T -+>args : (args: any) => T -+>f : (args: (args: any) => T) => T - - declare function g(args: T): T; - >g : (args: T) => T -@@= skipped -10, +10 lines =@@ - >args : T - - declare function h(): typeof h; -->h : () => typeof h -->h : () => typeof h -+>h : () => () => any -+>h : () => () => any diff --git a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters1.types b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters1.types index 2671e9447f1..f4a2853d6aa 100644 --- a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters1.types +++ b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters1.types @@ -32,9 +32,9 @@ for (const [key, fn] of Object.entries(map)) { >key : string >fn : (() => unknown) | (() => unknown) | ((args_0: string) => unknown) | ((args_0: number) => unknown) >Object.entries(map) : [string, (() => unknown) | (() => unknown) | ((args_0: string) => unknown) | ((args_0: number) => unknown)][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >map : { A: () => unknown; B: () => unknown; C: (args_0: string) => unknown; D: (args_0: number) => unknown; } fn(...args); diff --git a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters1.types.diff b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters1.types.diff deleted file mode 100644 index 4aa84238dcf..00000000000 --- a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters1.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.signatureCombiningRestParameters1.types -+++ new.signatureCombiningRestParameters1.types -@@= skipped -31, +31 lines =@@ - >key : string - >fn : (() => unknown) | (() => unknown) | ((args_0: string) => unknown) | ((args_0: number) => unknown) - >Object.entries(map) : [string, (() => unknown) | (() => unknown) | ((args_0: string) => unknown) | ((args_0: number) => unknown)][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >map : { A: () => unknown; B: () => unknown; C: (args_0: string) => unknown; D: (args_0: number) => unknown; } - - fn(...args); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters3.types b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters3.types index b03f07af97d..1b1f7df40e5 100644 --- a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters3.types +++ b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters3.types @@ -3,7 +3,7 @@ === signatureCombiningRestParameters3.ts === interface ExtensionConfig { extendMarkSchema?: ->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined +>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined | (( this: { @@ -66,7 +66,7 @@ declare class Node { interface NodeConfig { extendMarkSchema?: ->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Node) => Record) | null | undefined +>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Node) => Record) | null | undefined | (( this: { @@ -98,7 +98,7 @@ declare class Mark { interface MarkConfig { extendMarkSchema?: ->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined +>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined | (( this: { diff --git a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters3.types.diff b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters3.types.diff deleted file mode 100644 index 7980e8ac828..00000000000 --- a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters3.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.signatureCombiningRestParameters3.types -+++ new.signatureCombiningRestParameters3.types -@@= skipped -2, +2 lines =@@ - === signatureCombiningRestParameters3.ts === - interface ExtensionConfig { - extendMarkSchema?: -->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined -+>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined - - | (( - this: { -@@= skipped -63, +63 lines =@@ - - interface NodeConfig { - extendMarkSchema?: -->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Node) => Record) | null | undefined -+>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Node) => Record) | null | undefined - - | (( - this: { -@@= skipped -32, +32 lines =@@ - - interface MarkConfig { - extendMarkSchema?: -->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined -+>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined - - | (( - this: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters4.types b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters4.types index 046d7ed9a4b..58803231557 100644 --- a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters4.types +++ b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters4.types @@ -22,7 +22,7 @@ declare class Node { interface NodeConfig { extendMarkSchema?: ->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Node) => Record) | null | undefined +>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Node) => Record) | null | undefined | (( this: { @@ -54,7 +54,7 @@ declare class Mark { interface MarkConfig { extendMarkSchema?: ->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined +>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined | (( this: { diff --git a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters4.types.diff b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters4.types.diff deleted file mode 100644 index add33357cfa..00000000000 --- a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters4.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.signatureCombiningRestParameters4.types -+++ new.signatureCombiningRestParameters4.types -@@= skipped -21, +21 lines =@@ - - interface NodeConfig { - extendMarkSchema?: -->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Node) => Record) | null | undefined -+>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Node) => Record) | null | undefined - - | (( - this: { -@@= skipped -32, +32 lines =@@ - - interface MarkConfig { - extendMarkSchema?: -->extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined -+>extendMarkSchema : ((this: { name: string; options: Options; }, extension: Mark) => Record) | null | undefined - - | (( - this: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters5.types b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters5.types index 94d606310d7..01c6727223e 100644 --- a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters5.types +++ b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters5.types @@ -24,7 +24,7 @@ test1(42, [true]); // error >true : true declare function test2< ->test2 : (c: (...args: A) => void, d: (...args: B) => void, e: (arg: ((...args: A) => void) | ((...args: B) => void)) => void) => void +>test2 : (c: (...args: A) => void, d: (...args: B) => void, e: (arg: typeof c | typeof d) => void) => void A extends readonly unknown[], B extends readonly unknown[], @@ -38,7 +38,7 @@ declare function test2< >args : B e: (arg: typeof c | typeof d) => void, ->e : (arg: ((...args: A) => void) | ((...args: B) => void)) => void +>e : (arg: typeof c | typeof d) => void >arg : ((...args: A) => void) | ((...args: B) => void) >c : (...args: A) => void >d : (...args: B) => void @@ -47,7 +47,7 @@ declare function test2< test2( >test2( (a: number | boolean, b: string | number) => {}, (c: string | boolean, d: number | boolean) => {}, (cb) => { cb(true, 42); cb(true, [42]); // error },) : void ->test2 : (c: (...args: A) => void, d: (...args: B) => void, e: (arg: ((...args: A) => void) | ((...args: B) => void)) => void) => void +>test2 : (c: (...args: A) => void, d: (...args: B) => void, e: (arg: typeof c | typeof d) => void) => void (a: number | boolean, b: string | number) => {}, >(a: number | boolean, b: string | number) => {} : (a: number | boolean, b: string | number) => void diff --git a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters5.types.diff b/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters5.types.diff deleted file mode 100644 index f82756ce83b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/signatureCombiningRestParameters5.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.signatureCombiningRestParameters5.types -+++ new.signatureCombiningRestParameters5.types -@@= skipped -23, +23 lines =@@ - >true : true - - declare function test2< -->test2 : (c: (...args: A) => void, d: (...args: B) => void, e: (arg: typeof c | typeof d) => void) => void -+>test2 : (c: (...args: A) => void, d: (...args: B) => void, e: (arg: ((...args: A) => void) | ((...args: B) => void)) => void) => void - - A extends readonly unknown[], - B extends readonly unknown[], -@@= skipped -14, +14 lines =@@ - >args : B - - e: (arg: typeof c | typeof d) => void, -->e : (arg: typeof c | typeof d) => void -+>e : (arg: ((...args: A) => void) | ((...args: B) => void)) => void - >arg : ((...args: A) => void) | ((...args: B) => void) - >c : (...args: A) => void - >d : (...args: B) => void -@@= skipped -9, +9 lines =@@ - - test2( - >test2( (a: number | boolean, b: string | number) => {}, (c: string | boolean, d: number | boolean) => {}, (cb) => { cb(true, 42); cb(true, [42]); // error },) : void -->test2 : (c: (...args: A) => void, d: (...args: B) => void, e: (arg: typeof c | typeof d) => void) => void -+>test2 : (c: (...args: A) => void, d: (...args: B) => void, e: (arg: ((...args: A) => void) | ((...args: B) => void)) => void) => void - - (a: number | boolean, b: string | number) => {}, - >(a: number | boolean, b: string | number) => {} : (a: number | boolean, b: string | number) => void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.errors.txt index 0f8538680ce..97044913a1a 100644 --- a/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.errors.txt @@ -1,4 +1,4 @@ -signatureLengthMismatchWithOptionalParameters.ts(5,8): error TS2345: Argument of type '(n: number | undefined, m: string) => void' is not assignable to parameter of type '(n?: number | undefined) => void'. +signatureLengthMismatchWithOptionalParameters.ts(5,8): error TS2345: Argument of type '(n: number | undefined, m: string) => void' is not assignable to parameter of type '(n?: number) => void'. Target signature provides too few arguments. Expected 2 or more, but got 1. @@ -9,6 +9,6 @@ signatureLengthMismatchWithOptionalParameters.ts(5,8): error TS2345: Argument of caller(callee); ~~~~~~ -!!! error TS2345: Argument of type '(n: number | undefined, m: string) => void' is not assignable to parameter of type '(n?: number | undefined) => void'. +!!! error TS2345: Argument of type '(n: number | undefined, m: string) => void' is not assignable to parameter of type '(n?: number) => void'. !!! error TS2345: Target signature provides too few arguments. Expected 2 or more, but got 1. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.errors.txt.diff new file mode 100644 index 00000000000..683e34e2590 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.errors.txt.diff @@ -0,0 +1,16 @@ +--- old.signatureLengthMismatchWithOptionalParameters.errors.txt ++++ new.signatureLengthMismatchWithOptionalParameters.errors.txt +@@= skipped -0, +0 lines =@@ +-signatureLengthMismatchWithOptionalParameters.ts(5,8): error TS2345: Argument of type '(n: number | undefined, m: string) => void' is not assignable to parameter of type '(n?: number | undefined) => void'. ++signatureLengthMismatchWithOptionalParameters.ts(5,8): error TS2345: Argument of type '(n: number | undefined, m: string) => void' is not assignable to parameter of type '(n?: number) => void'. + Target signature provides too few arguments. Expected 2 or more, but got 1. + + +@@= skipped -8, +8 lines =@@ + + caller(callee); + ~~~~~~ +-!!! error TS2345: Argument of type '(n: number | undefined, m: string) => void' is not assignable to parameter of type '(n?: number | undefined) => void'. ++!!! error TS2345: Argument of type '(n: number | undefined, m: string) => void' is not assignable to parameter of type '(n?: number) => void'. + !!! error TS2345: Target signature provides too few arguments. Expected 2 or more, but got 1. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.types b/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.types index 45da13b29ac..65da56b33f2 100644 --- a/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.types +++ b/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.types @@ -7,12 +7,12 @@ function callee(n: number | undefined, m: string) { } >m : string function caller(arg: (n?: number) => void) { } ->caller : (arg: (n?: number | undefined) => void) => void ->arg : (n?: number | undefined) => void +>caller : (arg: (n?: number) => void) => void +>arg : (n?: number) => void >n : number | undefined caller(callee); >caller(callee) : void ->caller : (arg: (n?: number | undefined) => void) => void +>caller : (arg: (n?: number) => void) => void >callee : (n: number | undefined, m: string) => void diff --git a/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.types.diff b/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.types.diff deleted file mode 100644 index e82f072b6c1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/signatureLengthMismatchWithOptionalParameters.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.signatureLengthMismatchWithOptionalParameters.types -+++ new.signatureLengthMismatchWithOptionalParameters.types -@@= skipped -6, +6 lines =@@ - >m : string - - function caller(arg: (n?: number) => void) { } -->caller : (arg: (n?: number) => void) => void -->arg : (n?: number) => void -+>caller : (arg: (n?: number | undefined) => void) => void -+>arg : (n?: number | undefined) => void - >n : number | undefined - - caller(callee); - >caller(callee) : void -->caller : (arg: (n?: number) => void) => void -+>caller : (arg: (n?: number | undefined) => void) => void - >callee : (n: number | undefined, m: string) => void diff --git a/testdata/baselines/reference/submodule/compiler/sliceResultCast.types b/testdata/baselines/reference/submodule/compiler/sliceResultCast.types index fc44bf8d668..805838f8650 100644 --- a/testdata/baselines/reference/submodule/compiler/sliceResultCast.types +++ b/testdata/baselines/reference/submodule/compiler/sliceResultCast.types @@ -7,8 +7,8 @@ declare var x: [number, string] | [number, string, string]; x.slice(1) as readonly string[]; >x.slice(1) as readonly string[] : readonly string[] >x.slice(1) : (string | number)[] ->x.slice : ((start?: number | undefined, end?: number | undefined) => (string | number)[]) | ((start?: number | undefined, end?: number | undefined) => (string | number)[]) +>x.slice : ((start?: number, end?: number) => (string | number)[]) | ((start?: number, end?: number) => (string | number)[]) >x : [number, string] | [number, string, string] ->slice : ((start?: number | undefined, end?: number | undefined) => (string | number)[]) | ((start?: number | undefined, end?: number | undefined) => (string | number)[]) +>slice : ((start?: number, end?: number) => (string | number)[]) | ((start?: number, end?: number) => (string | number)[]) >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/sliceResultCast.types.diff b/testdata/baselines/reference/submodule/compiler/sliceResultCast.types.diff deleted file mode 100644 index ae93720dc08..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sliceResultCast.types.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.sliceResultCast.types -+++ new.sliceResultCast.types -@@= skipped -6, +6 lines =@@ - x.slice(1) as readonly string[]; - >x.slice(1) as readonly string[] : readonly string[] - >x.slice(1) : (string | number)[] -->x.slice : ((start?: number, end?: number) => (string | number)[]) | ((start?: number, end?: number) => (string | number)[]) -+>x.slice : ((start?: number | undefined, end?: number | undefined) => (string | number)[]) | ((start?: number | undefined, end?: number | undefined) => (string | number)[]) - >x : [number, string] | [number, string, string] -->slice : ((start?: number, end?: number) => (string | number)[]) | ((start?: number, end?: number) => (string | number)[]) -+>slice : ((start?: number | undefined, end?: number | undefined) => (string | number)[]) | ((start?: number | undefined, end?: number | undefined) => (string | number)[]) - >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDecorators(target=es2015).types b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDecorators(target=es2015).types index e40bae2ec62..2d79801330b 100644 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDecorators(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDecorators(target=es2015).types @@ -11,13 +11,13 @@ declare function ClassDecorator2(x: number): (target: Function) => void; >target : Function declare function PropertyDecorator1(target: Object, key: string | symbol, descriptor?: PropertyDescriptor): void; ->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >target : Object >key : string | symbol >descriptor : PropertyDescriptor | undefined declare function PropertyDecorator2(x: number): (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void; ->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >x : number >target : Object >key : string | symbol @@ -72,11 +72,11 @@ class Greeter { } @PropertyDecorator1 ->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void @PropertyDecorator2(40) ->PropertyDecorator2(40) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void ->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator2(40) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void +>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >40 : 40 greet() { @@ -93,22 +93,22 @@ class Greeter { } @PropertyDecorator1 ->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void @PropertyDecorator2(50) ->PropertyDecorator2(50) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void ->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator2(50) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void +>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >50 : 50 private x: string; >x : string @PropertyDecorator1 ->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void @PropertyDecorator2(60) ->PropertyDecorator2(60) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void ->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator2(60) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void +>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >60 : 60 private static x1: number = 10; @@ -136,11 +136,11 @@ class Greeter { } @PropertyDecorator1 ->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void @PropertyDecorator2(80) ->PropertyDecorator2(80) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void ->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void +>PropertyDecorator2(80) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void +>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >80 : 80 get greetings() { diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDecorators(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDecorators(target=es2015).types.diff deleted file mode 100644 index f05c0ab1227..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDecorators(target=es2015).types.diff +++ /dev/null @@ -1,77 +0,0 @@ ---- old.sourceMapValidationDecorators(target=es2015).types -+++ new.sourceMapValidationDecorators(target=es2015).types -@@= skipped -10, +10 lines =@@ - >target : Function - - declare function PropertyDecorator1(target: Object, key: string | symbol, descriptor?: PropertyDescriptor): void; -->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - >target : Object - >key : string | symbol - >descriptor : PropertyDescriptor | undefined - - declare function PropertyDecorator2(x: number): (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void; -->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - >x : number - >target : Object - >key : string | symbol -@@= skipped -61, +61 lines =@@ - } - - @PropertyDecorator1 -->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - - @PropertyDecorator2(40) -->PropertyDecorator2(40) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator2(40) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void -+>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - >40 : 40 - - greet() { -@@= skipped -21, +21 lines =@@ - } - - @PropertyDecorator1 -->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - - @PropertyDecorator2(50) -->PropertyDecorator2(50) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator2(50) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void -+>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - >50 : 50 - - private x: string; - >x : string - - @PropertyDecorator1 -->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - - @PropertyDecorator2(60) -->PropertyDecorator2(60) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator2(60) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void -+>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - >60 : 60 - - private static x1: number = 10; -@@= skipped -43, +43 lines =@@ - } - - @PropertyDecorator1 -->PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator1 : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - - @PropertyDecorator2(80) -->PropertyDecorator2(80) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -->PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void -+>PropertyDecorator2(80) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void -+>PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor | undefined) => void - >80 : 80 - - get greetings() { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types index 2646281a6e2..b4fb5f6a884 100644 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types +++ b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types @@ -21,7 +21,7 @@ interface MultiRobot { >name : string skills: { ->skills : { primary?: string | undefined; secondary?: string | undefined; } +>skills : { primary?: string; secondary?: string; } primary?: string; >primary : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types.diff b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types.diff deleted file mode 100644 index fa36cb82a37..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types -+++ new.sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types -@@= skipped -20, +20 lines =@@ - >name : string - - skills: { -->skills : { primary?: string; secondary?: string; } -+>skills : { primary?: string | undefined; secondary?: string | undefined; } - - primary?: string; - >primary : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types index c86d6d3776d..acf7abb10d6 100644 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types +++ b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types @@ -21,7 +21,7 @@ interface MultiRobot { >name : string skills: { ->skills : { primary?: string | undefined; secondary?: string | undefined; } +>skills : { primary?: string; secondary?: string; } primary?: string; >primary : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types.diff b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types.diff deleted file mode 100644 index 3c734df8510..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types -+++ new.sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types -@@= skipped -20, +20 lines =@@ - >name : string - - skills: { -->skills : { primary?: string; secondary?: string; } -+>skills : { primary?: string | undefined; secondary?: string | undefined; } - - primary?: string; - >primary : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types index d7ba4759f5f..6be6d381310 100644 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types @@ -21,7 +21,7 @@ interface MultiRobot { >name : string skills: { ->skills : { primary?: string | undefined; secondary?: string | undefined; } +>skills : { primary?: string; secondary?: string; } primary?: string; >primary : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types.diff deleted file mode 100644 index 2a5bb8e4e7c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types -+++ new.sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues(target=es2015).types -@@= skipped -20, +20 lines =@@ - >name : string - - skills: { -->skills : { primary?: string; secondary?: string; } -+>skills : { primary?: string | undefined; secondary?: string | undefined; } - - primary?: string; - >primary : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types index a737cccb40e..c1cb5823020 100644 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types +++ b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types @@ -13,7 +13,7 @@ interface Robot { >name : string skills: { ->skills : { primary?: string | undefined; secondary?: string | undefined; } +>skills : { primary?: string; secondary?: string; } primary?: string; >primary : string | undefined @@ -108,7 +108,7 @@ function foo2( } function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { >foo3 : ({ skills }?: Robot) => void ->skills : { primary?: string | undefined; secondary?: string | undefined; } +>skills : { primary?: string; secondary?: string; } >{ primary: "SomeSkill", secondary: "someSkill" } : { primary: string; secondary: string; } >primary : string >"SomeSkill" : "SomeSkill" @@ -122,7 +122,7 @@ function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Ro >console : { log(msg: string): void; } >log : (msg: string) => void >skills.primary : string | undefined ->skills : { primary?: string | undefined; secondary?: string | undefined; } +>skills : { primary?: string; secondary?: string; } >primary : string | undefined } diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types.diff b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types.diff deleted file mode 100644 index 3fddddcb4d8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types -+++ new.sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types -@@= skipped -12, +12 lines =@@ - >name : string - - skills: { -->skills : { primary?: string; secondary?: string; } -+>skills : { primary?: string | undefined; secondary?: string | undefined; } - - primary?: string; - >primary : string | undefined -@@= skipped -95, +95 lines =@@ - } - function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { - >foo3 : ({ skills }?: Robot) => void -->skills : { primary?: string; secondary?: string; } -+>skills : { primary?: string | undefined; secondary?: string | undefined; } - >{ primary: "SomeSkill", secondary: "someSkill" } : { primary: string; secondary: string; } - >primary : string - >"SomeSkill" : "SomeSkill" -@@= skipped -14, +14 lines =@@ - >console : { log(msg: string): void; } - >log : (msg: string) => void - >skills.primary : string | undefined -->skills : { primary?: string; secondary?: string; } -+>skills : { primary?: string | undefined; secondary?: string | undefined; } - >primary : string | undefined - } diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types index 94365e0dc53..7fc3ab39e9e 100644 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types +++ b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types @@ -13,7 +13,7 @@ interface Robot { >name : string skills: { ->skills : { primary?: string | undefined; secondary?: string | undefined; } +>skills : { primary?: string; secondary?: string; } primary?: string; >primary : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types.diff b/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types.diff deleted file mode 100644 index 9a691f9277f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types -+++ new.sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types -@@= skipped -12, +12 lines =@@ - >name : string - - skills: { -->skills : { primary?: string; secondary?: string; } -+>skills : { primary?: string | undefined; secondary?: string | undefined; } - - primary?: string; - >primary : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationFor.types b/testdata/baselines/reference/submodule/compiler/sourceMapValidationFor.types index 96176f28691..89efd760de8 100644 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationFor.types +++ b/testdata/baselines/reference/submodule/compiler/sourceMapValidationFor.types @@ -13,7 +13,7 @@ for (var i = 0; i < 10; i++) { WScript.Echo("i: " + i); >WScript.Echo("i: " + i) : void >WScript.Echo : (s: any) => void ->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } +>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } >Echo : (s: any) => void >"i: " + i : string >"i: " : "i: " @@ -32,7 +32,7 @@ for (i = 0; i < 10; i++) WScript.Echo("i: " + i); >WScript.Echo("i: " + i) : void >WScript.Echo : (s: any) => void ->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } +>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } >Echo : (s: any) => void >"i: " + i : string >"i: " : "i: " diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationFor.types.diff b/testdata/baselines/reference/submodule/compiler/sourceMapValidationFor.types.diff deleted file mode 100644 index 5938fa707f1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationFor.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.sourceMapValidationFor.types -+++ new.sourceMapValidationFor.types -@@= skipped -12, +12 lines =@@ - WScript.Echo("i: " + i); - >WScript.Echo("i: " + i) : void - >WScript.Echo : (s: any) => void -->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } -+>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } - >Echo : (s: any) => void - >"i: " + i : string - >"i: " : "i: " -@@= skipped -19, +19 lines =@@ - WScript.Echo("i: " + i); - >WScript.Echo("i: " + i) : void - >WScript.Echo : (s: any) => void -->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } -+>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } - >Echo : (s: any) => void - >"i: " + i : string - >"i: " : "i: " \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationForIn.types b/testdata/baselines/reference/submodule/compiler/sourceMapValidationForIn.types index 72e8b1f977b..095d8622e08 100644 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationForIn.types +++ b/testdata/baselines/reference/submodule/compiler/sourceMapValidationForIn.types @@ -8,7 +8,7 @@ for (var x in String) { WScript.Echo(x); >WScript.Echo(x) : void >WScript.Echo : (s: any) => void ->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } +>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } >Echo : (s: any) => void >x : string } @@ -19,7 +19,7 @@ for (x in String) { WScript.Echo(x); >WScript.Echo(x) : void >WScript.Echo : (s: any) => void ->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } +>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } >Echo : (s: any) => void >x : string } @@ -30,7 +30,7 @@ for (var x2 in String) WScript.Echo(x2); >WScript.Echo(x2) : void >WScript.Echo : (s: any) => void ->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } +>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } >Echo : (s: any) => void >x2 : string } @@ -41,7 +41,7 @@ for (x in String) WScript.Echo(x); >WScript.Echo(x) : void >WScript.Echo : (s: any) => void ->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } +>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } >Echo : (s: any) => void >x : string } diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationForIn.types.diff b/testdata/baselines/reference/submodule/compiler/sourceMapValidationForIn.types.diff deleted file mode 100644 index e8e65dbe2e6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationForIn.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.sourceMapValidationForIn.types -+++ new.sourceMapValidationForIn.types -@@= skipped -7, +7 lines =@@ - WScript.Echo(x); - >WScript.Echo(x) : void - >WScript.Echo : (s: any) => void -->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } -+>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } - >Echo : (s: any) => void - >x : string - } -@@= skipped -11, +11 lines =@@ - WScript.Echo(x); - >WScript.Echo(x) : void - >WScript.Echo : (s: any) => void -->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } -+>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } - >Echo : (s: any) => void - >x : string - } -@@= skipped -11, +11 lines =@@ - WScript.Echo(x2); - >WScript.Echo(x2) : void - >WScript.Echo : (s: any) => void -->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } -+>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } - >Echo : (s: any) => void - >x2 : string - } -@@= skipped -11, +11 lines =@@ - WScript.Echo(x); - >WScript.Echo(x) : void - >WScript.Echo : (s: any) => void -->WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; Sleep(intTime: number): void; } -+>WScript : { Echo(s: any): void; StdErr: TextStreamWriter; StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; ScriptFullName: string; Quit(exitCode?: number | undefined): number; BuildVersion: number; FullName: string; Interactive: boolean; Name: string; Path: string; ScriptName: string; StdIn: TextStreamReader; Version: string; ConnectObject(objEventSource: any, strPrefix: string): void; CreateObject(strProgID: string, strPrefix?: string | undefined): any; DisconnectObject(obj: any): void; GetObject(strPathname: string, strProgID?: string | undefined, strPrefix?: string | undefined): any; Sleep(intTime: number): void; } - >Echo : (s: any) => void - >x : string - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationFunctions.types b/testdata/baselines/reference/submodule/compiler/sourceMapValidationFunctions.types index 0d31d932ffe..2dcd0806c7a 100644 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationFunctions.types +++ b/testdata/baselines/reference/submodule/compiler/sourceMapValidationFunctions.types @@ -17,7 +17,7 @@ function greet(greeting: string): number { >greetings : number } function greet2(greeting: string, n = 10, x?: string, ...restParams: string[]): number { ->greet2 : (greeting: string, n?: number, x?: string | undefined, ...restParams: string[]) => number +>greet2 : (greeting: string, n?: number, x?: string, ...restParams: string[]) => number >greeting : string >n : number >10 : 10 @@ -32,7 +32,7 @@ function greet2(greeting: string, n = 10, x?: string, ...restParams: string[]): >greetings : number } function foo(greeting: string, n = 10, x?: string, ...restParams: string[]) ->foo : (greeting: string, n?: number, x?: string | undefined, ...restParams: string[]) => void +>foo : (greeting: string, n?: number, x?: string, ...restParams: string[]) => void >greeting : string >n : number >10 : 10 diff --git a/testdata/baselines/reference/submodule/compiler/sourceMapValidationFunctions.types.diff b/testdata/baselines/reference/submodule/compiler/sourceMapValidationFunctions.types.diff deleted file mode 100644 index 83eba9022f0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/sourceMapValidationFunctions.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.sourceMapValidationFunctions.types -+++ new.sourceMapValidationFunctions.types -@@= skipped -16, +16 lines =@@ - >greetings : number - } - function greet2(greeting: string, n = 10, x?: string, ...restParams: string[]): number { -->greet2 : (greeting: string, n?: number, x?: string, ...restParams: string[]) => number -+>greet2 : (greeting: string, n?: number, x?: string | undefined, ...restParams: string[]) => number - >greeting : string - >n : number - >10 : 10 -@@= skipped -15, +15 lines =@@ - >greetings : number - } - function foo(greeting: string, n = 10, x?: string, ...restParams: string[]) -->foo : (greeting: string, n?: number, x?: string, ...restParams: string[]) => void -+>foo : (greeting: string, n?: number, x?: string | undefined, ...restParams: string[]) => void - >greeting : string - >n : number - >10 : 10 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/specializationError.types b/testdata/baselines/reference/submodule/compiler/specializationError.types index b4e5d5cd2ac..02be1831d61 100644 --- a/testdata/baselines/reference/submodule/compiler/specializationError.types +++ b/testdata/baselines/reference/submodule/compiler/specializationError.types @@ -3,7 +3,7 @@ === specializationError.ts === interface Promise { then(value: T): void; ->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (value: T): void; } +>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (value: T): void; } >value : T } diff --git a/testdata/baselines/reference/submodule/compiler/specializationError.types.diff b/testdata/baselines/reference/submodule/compiler/specializationError.types.diff index 832e7d13f14..843ebd543d3 100644 --- a/testdata/baselines/reference/submodule/compiler/specializationError.types.diff +++ b/testdata/baselines/reference/submodule/compiler/specializationError.types.diff @@ -1,15 +1,6 @@ --- old.specializationError.types +++ new.specializationError.types -@@= skipped -2, +2 lines =@@ - === specializationError.ts === - interface Promise { - then(value: T): void; -->then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; (value: T): void; } -+>then : { (onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; (value: T): void; } - >value : T - } - -@@= skipped -10, +10 lines =@@ +@@= skipped -12, +12 lines =@@ >value : "Menu" bar(value: string, element: string): Promise; diff --git a/testdata/baselines/reference/submodule/compiler/specializedOverloadWithRestParameters.types b/testdata/baselines/reference/submodule/compiler/specializedOverloadWithRestParameters.types index 1b9abe933aa..455c6a014b5 100644 --- a/testdata/baselines/reference/submodule/compiler/specializedOverloadWithRestParameters.types +++ b/testdata/baselines/reference/submodule/compiler/specializedOverloadWithRestParameters.types @@ -11,33 +11,33 @@ class Derived1 extends Base { bar() { } } >bar : () => void function f(tagName: 'span', ...args): Derived1; // error ->f : { (tagName: "span", ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } +>f : { (tagName: 'span', ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } >tagName : "span" >args : any[] function f(tagName: number, ...args): Base; ->f : { (tagName: "span", ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } +>f : { (tagName: 'span', ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } >tagName : number >args : any[] function f(tagName: any): Base { ->f : { (tagName: "span", ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } +>f : { (tagName: 'span', ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } >tagName : any return null; } function g(tagName: 'span', arg): Derived1; // error ->g : { (tagName: "span", arg: any): Derived1; (tagName: number, arg: any): Base; } +>g : { (tagName: 'span', arg: any): Derived1; (tagName: number, arg: any): Base; } >tagName : "span" >arg : any function g(tagName: number, arg): Base; ->g : { (tagName: "span", arg: any): Derived1; (tagName: number, arg: any): Base; } +>g : { (tagName: 'span', arg: any): Derived1; (tagName: number, arg: any): Base; } >tagName : number >arg : any function g(tagName: any): Base { ->g : { (tagName: "span", arg: any): Derived1; (tagName: number, arg: any): Base; } +>g : { (tagName: 'span', arg: any): Derived1; (tagName: number, arg: any): Base; } >tagName : any return null; diff --git a/testdata/baselines/reference/submodule/compiler/specializedOverloadWithRestParameters.types.diff b/testdata/baselines/reference/submodule/compiler/specializedOverloadWithRestParameters.types.diff new file mode 100644 index 00000000000..17bab1f3c29 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/specializedOverloadWithRestParameters.types.diff @@ -0,0 +1,42 @@ +--- old.specializedOverloadWithRestParameters.types ++++ new.specializedOverloadWithRestParameters.types +@@= skipped -10, +10 lines =@@ + >bar : () => void + + function f(tagName: 'span', ...args): Derived1; // error +->f : { (tagName: "span", ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } ++>f : { (tagName: 'span', ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } + >tagName : "span" + >args : any[] + + function f(tagName: number, ...args): Base; +->f : { (tagName: "span", ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } ++>f : { (tagName: 'span', ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } + >tagName : number + >args : any[] + + function f(tagName: any): Base { +->f : { (tagName: "span", ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } ++>f : { (tagName: 'span', ...args: any[]): Derived1; (tagName: number, ...args: any[]): Base; } + >tagName : any + + return null; + } + function g(tagName: 'span', arg): Derived1; // error +->g : { (tagName: "span", arg: any): Derived1; (tagName: number, arg: any): Base; } ++>g : { (tagName: 'span', arg: any): Derived1; (tagName: number, arg: any): Base; } + >tagName : "span" + >arg : any + + function g(tagName: number, arg): Base; +->g : { (tagName: "span", arg: any): Derived1; (tagName: number, arg: any): Base; } ++>g : { (tagName: 'span', arg: any): Derived1; (tagName: number, arg: any): Base; } + >tagName : number + >arg : any + + function g(tagName: any): Base { +->g : { (tagName: "span", arg: any): Derived1; (tagName: number, arg: any): Base; } ++>g : { (tagName: 'span', arg: any): Derived1; (tagName: number, arg: any): Base; } + >tagName : any + + return null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/specializedSignatureAsCallbackParameter1.types b/testdata/baselines/reference/submodule/compiler/specializedSignatureAsCallbackParameter1.types index b775642e948..c575e32da88 100644 --- a/testdata/baselines/reference/submodule/compiler/specializedSignatureAsCallbackParameter1.types +++ b/testdata/baselines/reference/submodule/compiler/specializedSignatureAsCallbackParameter1.types @@ -37,7 +37,7 @@ x3(1, (x: 'hm') => 1); >x3(1, (x: 'hm') => 1) : any >x3 : { (a: number, cb: (x: number) => number): any; (a: string, cb: (x: number) => number): any; } >1 : 1 ->(x: 'hm') => 1 : (x: "hm") => number +>(x: 'hm') => 1 : (x: 'hm') => number >x : "hm" >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/specializedSignatureAsCallbackParameter1.types.diff b/testdata/baselines/reference/submodule/compiler/specializedSignatureAsCallbackParameter1.types.diff new file mode 100644 index 00000000000..5121a0d56fb --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/specializedSignatureAsCallbackParameter1.types.diff @@ -0,0 +1,10 @@ +--- old.specializedSignatureAsCallbackParameter1.types ++++ new.specializedSignatureAsCallbackParameter1.types +@@= skipped -36, +36 lines =@@ + >x3(1, (x: 'hm') => 1) : any + >x3 : { (a: number, cb: (x: number) => number): any; (a: string, cb: (x: number) => number): any; } + >1 : 1 +->(x: 'hm') => 1 : (x: "hm") => number ++>(x: 'hm') => 1 : (x: 'hm') => number + >x : "hm" + >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.errors.txt b/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.errors.txt index 186736b1940..2c5fe38ca66 100644 --- a/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.errors.txt @@ -8,16 +8,16 @@ spellingSuggestionJSXAttribute.tsx(11,8): error TS2322: Type '{ for: string; cla Property 'for' does not exist on type 'DetailedHTMLProps, HTMLLabelElement>'. Did you mean 'htmlFor'? spellingSuggestionJSXAttribute.tsx(12,9): error TS2769: No overload matches this call. The last overload gave the following error. - Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. - Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'className'? -spellingSuggestionJSXAttribute.tsx(13,10): error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. - Property 'class' does not exist on type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. Did you mean 'className'? + Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. + Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. Did you mean 'className'? +spellingSuggestionJSXAttribute.tsx(13,10): error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. + Property 'class' does not exist on type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. Did you mean 'className'? spellingSuggestionJSXAttribute.tsx(14,9): error TS2769: No overload matches this call. The last overload gave the following error. - Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. - Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'htmlFor'? -spellingSuggestionJSXAttribute.tsx(15,10): error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. - Property 'for' does not exist on type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. Did you mean 'htmlFor'? + Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. + Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. Did you mean 'htmlFor'? +spellingSuggestionJSXAttribute.tsx(15,10): error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. + Property 'for' does not exist on type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. Did you mean 'htmlFor'? ==== spellingSuggestionJSXAttribute.tsx (8 errors) ==== @@ -48,22 +48,22 @@ spellingSuggestionJSXAttribute.tsx(15,10): error TS2322: Type '{ for: string; }' ~~~~~ !!! error TS2769: No overload matches this call. !!! error TS2769: The last overload gave the following error. -!!! error TS2769: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. -!!! error TS2769: Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'className'? +!!! error TS2769: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. +!!! error TS2769: Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. Did you mean 'className'? !!! related TS2771 react16.d.ts:357:13: The last overload is declared here. ; ~~~~~ -!!! error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. -!!! error TS2322: Property 'class' does not exist on type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. Did you mean 'className'? +!!! error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. +!!! error TS2322: Property 'class' does not exist on type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. Did you mean 'className'? ; ~~~ !!! error TS2769: No overload matches this call. !!! error TS2769: The last overload gave the following error. -!!! error TS2769: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. -!!! error TS2769: Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'htmlFor'? +!!! error TS2769: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. +!!! error TS2769: Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. Did you mean 'htmlFor'? !!! related TS2771 react16.d.ts:357:13: The last overload is declared here. ; ~~~ -!!! error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. -!!! error TS2322: Property 'for' does not exist on type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. Did you mean 'htmlFor'? +!!! error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. +!!! error TS2322: Property 'for' does not exist on type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. Did you mean 'htmlFor'? \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.errors.txt.diff index b70169b3909..f162a99cbdc 100644 --- a/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.errors.txt.diff @@ -8,20 +8,32 @@ - Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. - Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'className'? - Overload 2 of 2, '(props: { className?: string | undefined; htmlFor?: string | undefined; }, context?: any): MyComp', gave the following error. +- Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. +- Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'className'? +-spellingSuggestionJSXAttribute.tsx(13,10): error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. +- Property 'class' does not exist on type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. Did you mean 'className'? + The last overload gave the following error. - Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. - Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'className'? - spellingSuggestionJSXAttribute.tsx(13,10): error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. - Property 'class' does not exist on type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. Did you mean 'className'? ++ Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. ++ Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. Did you mean 'className'? ++spellingSuggestionJSXAttribute.tsx(13,10): error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. ++ Property 'class' does not exist on type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. Did you mean 'className'? spellingSuggestionJSXAttribute.tsx(14,9): error TS2769: No overload matches this call. - Overload 1 of 2, '(props: Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>): MyComp', gave the following error. - Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. - Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'htmlFor'? - Overload 2 of 2, '(props: { className?: string | undefined; htmlFor?: string | undefined; }, context?: any): MyComp', gave the following error. +- Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. +- Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'htmlFor'? +-spellingSuggestionJSXAttribute.tsx(15,10): error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. +- Property 'for' does not exist on type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. Did you mean 'htmlFor'? + The last overload gave the following error. - Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. - Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'htmlFor'? - spellingSuggestionJSXAttribute.tsx(15,10): error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. ++ Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. ++ Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. Did you mean 'htmlFor'? ++spellingSuggestionJSXAttribute.tsx(15,10): error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. ++ Property 'for' does not exist on type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. Did you mean 'htmlFor'? + + + ==== spellingSuggestionJSXAttribute.tsx (8 errors) ==== @@= skipped -46, +40 lines =@@ ; ~~~~~ @@ -33,13 +45,15 @@ -!!! error TS2769: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. -!!! error TS2769: Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'className'? +!!! error TS2769: The last overload gave the following error. -+!!! error TS2769: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. -+!!! error TS2769: Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'className'? ++!!! error TS2769: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. ++!!! error TS2769: Property 'class' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. Did you mean 'className'? +!!! related TS2771 react16.d.ts:357:13: The last overload is declared here. ; ~~~~~ - !!! error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. -@@= skipped -13, +11 lines =@@ +-!!! error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. +-!!! error TS2322: Property 'class' does not exist on type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. Did you mean 'className'? ++!!! error TS2322: Type '{ class: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. ++!!! error TS2322: Property 'class' does not exist on type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. Did you mean 'className'? ; ~~~ !!! error TS2769: No overload matches this call. @@ -50,9 +64,13 @@ -!!! error TS2769: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. -!!! error TS2769: Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'htmlFor'? +!!! error TS2769: The last overload gave the following error. -+!!! error TS2769: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. -+!!! error TS2769: Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string | undefined; htmlFor?: string | undefined; }>'. Did you mean 'htmlFor'? ++!!! error TS2769: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. ++!!! error TS2769: Property 'for' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly<{ className?: string; htmlFor?: string; }>'. Did you mean 'htmlFor'? +!!! related TS2771 react16.d.ts:357:13: The last overload is declared here. ; ~~~ - !!! error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. \ No newline at end of file +-!!! error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. +-!!! error TS2322: Property 'for' does not exist on type 'IntrinsicAttributes & { className?: string | undefined; htmlFor?: string | undefined; }'. Did you mean 'htmlFor'? ++!!! error TS2322: Type '{ for: string; }' is not assignable to type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. ++!!! error TS2322: Property 'for' does not exist on type 'IntrinsicAttributes & { className?: string; htmlFor?: string; }'. Did you mean 'htmlFor'? + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.types b/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.types index 55e544d8403..5c065e10538 100644 --- a/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.types +++ b/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.types @@ -6,8 +6,8 @@ import * as React from "react"; >React : typeof React function MyComp2(props: { className?: string, htmlFor?: string }) { ->MyComp2 : (props: { className?: string | undefined; htmlFor?: string | undefined; }) => never ->props : { className?: string | undefined; htmlFor?: string | undefined; } +>MyComp2 : (props: { className?: string; htmlFor?: string; }) => never +>props : { className?: string; htmlFor?: string; } >className : string | undefined >htmlFor : string | undefined @@ -16,7 +16,7 @@ function MyComp2(props: { className?: string, htmlFor?: string }) { } class MyComp extends React.Component<{ className?: string, htmlFor?: string }> { } >MyComp : MyComp ->React.Component : React.Component<{ className?: string | undefined; htmlFor?: string | undefined; }, {}, any> +>React.Component : React.Component<{ className?: string; htmlFor?: string; }, {}, any> >React : typeof React >Component : typeof React.Component >className : string | undefined @@ -50,7 +50,7 @@ class MyComp extends React.Component<{ className?: string, htmlFor?: string }> { ; > : JSX.Element ->MyComp2 : (props: { className?: string | undefined; htmlFor?: string | undefined; }) => never +>MyComp2 : (props: { className?: string; htmlFor?: string; }) => never >class : string ; @@ -60,6 +60,6 @@ class MyComp extends React.Component<{ className?: string, htmlFor?: string }> { ; > : JSX.Element ->MyComp2 : (props: { className?: string | undefined; htmlFor?: string | undefined; }) => never +>MyComp2 : (props: { className?: string; htmlFor?: string; }) => never >for : string diff --git a/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.types.diff b/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.types.diff deleted file mode 100644 index d675d9f0d00..00000000000 --- a/testdata/baselines/reference/submodule/compiler/spellingSuggestionJSXAttribute.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.spellingSuggestionJSXAttribute.types -+++ new.spellingSuggestionJSXAttribute.types -@@= skipped -5, +5 lines =@@ - >React : typeof React - - function MyComp2(props: { className?: string, htmlFor?: string }) { -->MyComp2 : (props: { className?: string; htmlFor?: string; }) => never -->props : { className?: string; htmlFor?: string; } -+>MyComp2 : (props: { className?: string | undefined; htmlFor?: string | undefined; }) => never -+>props : { className?: string | undefined; htmlFor?: string | undefined; } - >className : string | undefined - >htmlFor : string | undefined - -@@= skipped -10, +10 lines =@@ - } - class MyComp extends React.Component<{ className?: string, htmlFor?: string }> { } - >MyComp : MyComp -->React.Component : React.Component<{ className?: string; htmlFor?: string; }, {}, any> -+>React.Component : React.Component<{ className?: string | undefined; htmlFor?: string | undefined; }, {}, any> - >React : typeof React - >Component : typeof React.Component - >className : string | undefined -@@= skipped -34, +34 lines =@@ - - ; - > : JSX.Element -->MyComp2 : (props: { className?: string; htmlFor?: string; }) => never -+>MyComp2 : (props: { className?: string | undefined; htmlFor?: string | undefined; }) => never - >class : string - - ; -@@= skipped -10, +10 lines =@@ - - ; - > : JSX.Element -->MyComp2 : (props: { className?: string; htmlFor?: string; }) => never -+>MyComp2 : (props: { className?: string | undefined; htmlFor?: string | undefined; }) => never - >for : string diff --git a/testdata/baselines/reference/submodule/compiler/spreadIdenticalTypesRemoved.types b/testdata/baselines/reference/submodule/compiler/spreadIdenticalTypesRemoved.types index 91a274fd179..ad19f4e47e1 100644 --- a/testdata/baselines/reference/submodule/compiler/spreadIdenticalTypesRemoved.types +++ b/testdata/baselines/reference/submodule/compiler/spreadIdenticalTypesRemoved.types @@ -19,7 +19,7 @@ interface Animal { } function clonePet(pet: Animal, fullCopy?: boolean) { ->clonePet : (pet: Animal, fullCopy?: boolean | undefined) => { age?: number | undefined; location?: string | undefined; owner?: object | undefined; name: string; kind: string; } +>clonePet : (pet: Animal, fullCopy?: boolean) => { age?: number | undefined; location?: string | undefined; owner?: object | undefined; name: string; kind: string; } >pet : Animal >fullCopy : boolean | undefined @@ -54,11 +54,11 @@ interface Animal2 { >owner : string | undefined } function billOwner(pet: Animal2) { ->billOwner : (pet: Animal2) => { name?: string | undefined; owner?: string | undefined; paid: boolean; } +>billOwner : (pet: Animal2) => { name?: string | undefined; owner?: string; paid: boolean; } >pet : Animal2 return { ->{ ...(pet.owner && pet), paid: false } : { name?: string | undefined; owner?: string | undefined; paid: boolean; } +>{ ...(pet.owner && pet), paid: false } : { name?: string | undefined; owner?: string; paid: boolean; } ...(pet.owner && pet), >(pet.owner && pet) : "" | Animal2 | undefined diff --git a/testdata/baselines/reference/submodule/compiler/spreadIdenticalTypesRemoved.types.diff b/testdata/baselines/reference/submodule/compiler/spreadIdenticalTypesRemoved.types.diff deleted file mode 100644 index 45cf4083ff6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/spreadIdenticalTypesRemoved.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.spreadIdenticalTypesRemoved.types -+++ new.spreadIdenticalTypesRemoved.types -@@= skipped -18, +18 lines =@@ - } - - function clonePet(pet: Animal, fullCopy?: boolean) { -->clonePet : (pet: Animal, fullCopy?: boolean) => { age?: number | undefined; location?: string | undefined; owner?: object | undefined; name: string; kind: string; } -+>clonePet : (pet: Animal, fullCopy?: boolean | undefined) => { age?: number | undefined; location?: string | undefined; owner?: object | undefined; name: string; kind: string; } - >pet : Animal - >fullCopy : boolean | undefined - -@@= skipped -35, +35 lines =@@ - >owner : string | undefined - } - function billOwner(pet: Animal2) { -->billOwner : (pet: Animal2) => { name?: string | undefined; owner?: string; paid: boolean; } -+>billOwner : (pet: Animal2) => { name?: string | undefined; owner?: string | undefined; paid: boolean; } - >pet : Animal2 - - return { -->{ ...(pet.owner && pet), paid: false } : { name?: string | undefined; owner?: string; paid: boolean; } -+>{ ...(pet.owner && pet), paid: false } : { name?: string | undefined; owner?: string | undefined; paid: boolean; } - - ...(pet.owner && pet), - >(pet.owner && pet) : "" | Animal2 | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/spreadInvalidArgumentType.types b/testdata/baselines/reference/submodule/compiler/spreadInvalidArgumentType.types index f8038d556b8..7a982c64776 100644 --- a/testdata/baselines/reference/submodule/compiler/spreadInvalidArgumentType.types +++ b/testdata/baselines/reference/submodule/compiler/spreadInvalidArgumentType.types @@ -78,8 +78,8 @@ function f(p1: T, p2: T[]) { >p1 : T var o2 = { ...p2 }; // OK ->o2 : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string | undefined): string; reverse(): T[]; shift(): T | undefined; slice(start?: number | undefined, end?: number | undefined): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number | undefined): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number | undefined): number; lastIndexOf(searchElement: T, fromIndex?: number | undefined): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number | undefined, end?: number | undefined): T[]; copyWithin(target: number, start: number, end?: number | undefined): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } ->{ ...p2 } : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string | undefined): string; reverse(): T[]; shift(): T | undefined; slice(start?: number | undefined, end?: number | undefined): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number | undefined): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number | undefined): number; lastIndexOf(searchElement: T, fromIndex?: number | undefined): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number | undefined, end?: number | undefined): T[]; copyWithin(target: number, start: number, end?: number | undefined): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } +>o2 : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string): string; reverse(): T[]; shift(): T | undefined; slice(start?: number, end?: number): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number): number; lastIndexOf(searchElement: T, fromIndex?: number): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number, end?: number): T[]; copyWithin(target: number, start: number, end?: number): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } +>{ ...p2 } : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string): string; reverse(): T[]; shift(): T | undefined; slice(start?: number, end?: number): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number): number; lastIndexOf(searchElement: T, fromIndex?: number): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number, end?: number): T[]; copyWithin(target: number, start: number, end?: number): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } >p2 : T[] var o3 = { ...t }; // OK, generic type paramter diff --git a/testdata/baselines/reference/submodule/compiler/spreadInvalidArgumentType.types.diff b/testdata/baselines/reference/submodule/compiler/spreadInvalidArgumentType.types.diff deleted file mode 100644 index 8ce374cfb08..00000000000 --- a/testdata/baselines/reference/submodule/compiler/spreadInvalidArgumentType.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.spreadInvalidArgumentType.types -+++ new.spreadInvalidArgumentType.types -@@= skipped -77, +77 lines =@@ - >p1 : T - - var o2 = { ...p2 }; // OK -->o2 : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string): string; reverse(): T[]; shift(): T | undefined; slice(start?: number, end?: number): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number): number; lastIndexOf(searchElement: T, fromIndex?: number): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number, end?: number): T[]; copyWithin(target: number, start: number, end?: number): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } -->{ ...p2 } : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string): string; reverse(): T[]; shift(): T | undefined; slice(start?: number, end?: number): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number): number; lastIndexOf(searchElement: T, fromIndex?: number): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number, end?: number): T[]; copyWithin(target: number, start: number, end?: number): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } -+>o2 : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string | undefined): string; reverse(): T[]; shift(): T | undefined; slice(start?: number | undefined, end?: number | undefined): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number | undefined): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number | undefined): number; lastIndexOf(searchElement: T, fromIndex?: number | undefined): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number | undefined, end?: number | undefined): T[]; copyWithin(target: number, start: number, end?: number | undefined): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } -+>{ ...p2 } : { [n: number]: T; length: number; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): T | undefined; push(...items: T[]): number; concat(...items: ConcatArray[]): T[]; concat(...items: (T | ConcatArray)[]): T[]; join(separator?: string | undefined): string; reverse(): T[]; shift(): T | undefined; slice(start?: number | undefined, end?: number | undefined): T[]; sort(compareFn?: ((a: T, b: T) => number) | undefined): T[]; splice(start: number, deleteCount?: number | undefined): T[]; splice(start: number, deleteCount: number, ...items: T[]): T[]; unshift(...items: T[]): number; indexOf(searchElement: T, fromIndex?: number | undefined): number; lastIndexOf(searchElement: T, fromIndex?: number | undefined): number; every(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; filter(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; find(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; fill(value: T, start?: number | undefined, end?: number | undefined): T[]; copyWithin(target: number, start: number, end?: number | undefined): T[]; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, T]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; } - >p2 : T[] - - var o3 = { ...t }; // OK, generic type paramter \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/spreadObjectNoCircular1.types b/testdata/baselines/reference/submodule/compiler/spreadObjectNoCircular1.types index 507ecc22757..c2973bf87b7 100644 --- a/testdata/baselines/reference/submodule/compiler/spreadObjectNoCircular1.types +++ b/testdata/baselines/reference/submodule/compiler/spreadObjectNoCircular1.types @@ -16,10 +16,10 @@ class Foo { >Foo : Foo get foo() { ->foo : { content: Box | Foo; } +>foo : { content: Foo | Box; } return { ->{ content: this as Foo | Box, ...b, } : { content: Box | Foo; } +>{ content: this as Foo | Box, ...b, } : { content: Foo | Box; } content: this as Foo | Box, >content : Box | Foo diff --git a/testdata/baselines/reference/submodule/compiler/spreadObjectNoCircular1.types.diff b/testdata/baselines/reference/submodule/compiler/spreadObjectNoCircular1.types.diff deleted file mode 100644 index 76eba273693..00000000000 --- a/testdata/baselines/reference/submodule/compiler/spreadObjectNoCircular1.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.spreadObjectNoCircular1.types -+++ new.spreadObjectNoCircular1.types -@@= skipped -15, +15 lines =@@ - >Foo : Foo - - get foo() { -->foo : { content: Foo | Box; } -+>foo : { content: Box | Foo; } - - return { -->{ content: this as Foo | Box, ...b, } : { content: Foo | Box; } -+>{ content: this as Foo | Box, ...b, } : { content: Box | Foo; } - - content: this as Foo | Box, - >content : Box | Foo \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=false).types b/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=false).types index adb2ccfc47f..a11d513ed08 100644 --- a/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=false).types +++ b/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=false).types @@ -6,7 +6,7 @@ declare const a: { x: string | number }; >x : string | number declare const b: { x?: string | number }; ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } >x : string | number | undefined declare const c: { x?: string | number | undefined }; @@ -19,9 +19,9 @@ const v_a = { ...a }; >a : { x: string | number; } const v_b = { ...b }; ->v_b : { x?: string | number | undefined; } ->{ ...b } : { x?: string | number | undefined; } ->b : { x?: string | number | undefined; } +>v_b : { x?: string | number; } +>{ ...b } : { x?: string | number; } +>b : { x?: string | number; } const v_c = { ...c }; >v_c : { x?: string | number | undefined; } @@ -32,7 +32,7 @@ const v_ab = { ...a, ...b }; >v_ab : { x: string | number; } >{ ...a, ...b } : { x: string | number; } >a : { x: string | number; } ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } const v_ac = { ...a, ...c }; >v_ac : { x: string | number; } @@ -43,13 +43,13 @@ const v_ac = { ...a, ...c }; const v_ba = { ...b, ...a }; >v_ba : { x: string | number; } >{ ...b, ...a } : { x: string | number; } ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } >a : { x: string | number; } const v_bc = { ...b, ...c }; ->v_bc : { x?: string | number | undefined; } ->{ ...b, ...c } : { x?: string | number | undefined; } ->b : { x?: string | number | undefined; } +>v_bc : { x?: string | number; } +>{ ...b, ...c } : { x?: string | number; } +>b : { x?: string | number; } >c : { x?: string | number | undefined; } const v_ca = { ...c, ...a }; @@ -62,13 +62,13 @@ const v_cb = { ...c, ...b }; >v_cb : { x?: string | number | undefined; } >{ ...c, ...b } : { x?: string | number | undefined; } >c : { x?: string | number | undefined; } ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } const v_abc = { ...a, ...b, ...c }; >v_abc : { x: string | number; } >{ ...a, ...b, ...c } : { x: string | number; } >a : { x: string | number; } ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } >c : { x?: string | number | undefined; } const v_acb = { ...a, ...c, ...b }; @@ -76,19 +76,19 @@ const v_acb = { ...a, ...c, ...b }; >{ ...a, ...c, ...b } : { x: string | number; } >a : { x: string | number; } >c : { x?: string | number | undefined; } ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } const v_bac = { ...b, ...a, ...c }; >v_bac : { x: string | number; } >{ ...b, ...a, ...c } : { x: string | number; } ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } >a : { x: string | number; } >c : { x?: string | number | undefined; } const v_bca = { ...b, ...c, ...a }; >v_bca : { x: string | number; } >{ ...b, ...c, ...a } : { x: string | number; } ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } >c : { x?: string | number | undefined; } >a : { x: string | number; } @@ -97,12 +97,12 @@ const v_cab = { ...c, ...a, ...b }; >{ ...c, ...a, ...b } : { x: string | number; } >c : { x?: string | number | undefined; } >a : { x: string | number; } ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } const v_cba = { ...c, ...b, ...a }; >v_cba : { x: string | number; } >{ ...c, ...b, ...a } : { x: string | number; } >c : { x?: string | number | undefined; } ->b : { x?: string | number | undefined; } +>b : { x?: string | number; } >a : { x: string | number; } diff --git a/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=false).types.diff b/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=false).types.diff deleted file mode 100644 index faad0bd93ce..00000000000 --- a/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=false).types.diff +++ /dev/null @@ -1,104 +0,0 @@ ---- old.spreadObjectPermutations(exactoptionalpropertytypes=false).types -+++ new.spreadObjectPermutations(exactoptionalpropertytypes=false).types -@@= skipped -5, +5 lines =@@ - >x : string | number - - declare const b: { x?: string | number }; -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - >x : string | number | undefined - - declare const c: { x?: string | number | undefined }; -@@= skipped -13, +13 lines =@@ - >a : { x: string | number; } - - const v_b = { ...b }; -->v_b : { x?: string | number; } -->{ ...b } : { x?: string | number; } -->b : { x?: string | number; } -+>v_b : { x?: string | number | undefined; } -+>{ ...b } : { x?: string | number | undefined; } -+>b : { x?: string | number | undefined; } - - const v_c = { ...c }; - >v_c : { x?: string | number | undefined; } -@@= skipped -13, +13 lines =@@ - >v_ab : { x: string | number; } - >{ ...a, ...b } : { x: string | number; } - >a : { x: string | number; } -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - - const v_ac = { ...a, ...c }; - >v_ac : { x: string | number; } -@@= skipped -11, +11 lines =@@ - const v_ba = { ...b, ...a }; - >v_ba : { x: string | number; } - >{ ...b, ...a } : { x: string | number; } -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - >a : { x: string | number; } - - const v_bc = { ...b, ...c }; -->v_bc : { x?: string | number; } -->{ ...b, ...c } : { x?: string | number; } -->b : { x?: string | number; } -+>v_bc : { x?: string | number | undefined; } -+>{ ...b, ...c } : { x?: string | number | undefined; } -+>b : { x?: string | number | undefined; } - >c : { x?: string | number | undefined; } - - const v_ca = { ...c, ...a }; -@@= skipped -19, +19 lines =@@ - >v_cb : { x?: string | number | undefined; } - >{ ...c, ...b } : { x?: string | number | undefined; } - >c : { x?: string | number | undefined; } -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - - const v_abc = { ...a, ...b, ...c }; - >v_abc : { x: string | number; } - >{ ...a, ...b, ...c } : { x: string | number; } - >a : { x: string | number; } -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - >c : { x?: string | number | undefined; } - - const v_acb = { ...a, ...c, ...b }; -@@= skipped -14, +14 lines =@@ - >{ ...a, ...c, ...b } : { x: string | number; } - >a : { x: string | number; } - >c : { x?: string | number | undefined; } -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - - const v_bac = { ...b, ...a, ...c }; - >v_bac : { x: string | number; } - >{ ...b, ...a, ...c } : { x: string | number; } -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - >a : { x: string | number; } - >c : { x?: string | number | undefined; } - - const v_bca = { ...b, ...c, ...a }; - >v_bca : { x: string | number; } - >{ ...b, ...c, ...a } : { x: string | number; } -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - >c : { x?: string | number | undefined; } - >a : { x: string | number; } - -@@= skipped -21, +21 lines =@@ - >{ ...c, ...a, ...b } : { x: string | number; } - >c : { x?: string | number | undefined; } - >a : { x: string | number; } -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - - const v_cba = { ...c, ...b, ...a }; - >v_cba : { x: string | number; } - >{ ...c, ...b, ...a } : { x: string | number; } - >c : { x?: string | number | undefined; } -->b : { x?: string | number; } -+>b : { x?: string | number | undefined; } - >a : { x: string | number; } diff --git a/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=true).types b/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=true).types index c471f645283..b46d7521f39 100644 --- a/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=true).types +++ b/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=true).types @@ -47,8 +47,8 @@ const v_ba = { ...b, ...a }; >a : { x: string | number; } const v_bc = { ...b, ...c }; ->v_bc : { x?: string | number | undefined; } ->{ ...b, ...c } : { x?: string | number | undefined; } +>v_bc : { x?: string | number; } +>{ ...b, ...c } : { x?: string | number; } >b : { x?: string | number; } >c : { x?: string | number | undefined; } diff --git a/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=true).types.diff b/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=true).types.diff deleted file mode 100644 index 38a9917edbc..00000000000 --- a/testdata/baselines/reference/submodule/compiler/spreadObjectPermutations(exactoptionalpropertytypes=true).types.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.spreadObjectPermutations(exactoptionalpropertytypes=true).types -+++ new.spreadObjectPermutations(exactoptionalpropertytypes=true).types -@@= skipped -46, +46 lines =@@ - >a : { x: string | number; } - - const v_bc = { ...b, ...c }; -->v_bc : { x?: string | number; } -->{ ...b, ...c } : { x?: string | number; } -+>v_bc : { x?: string | number | undefined; } -+>{ ...b, ...c } : { x?: string | number | undefined; } - >b : { x?: string | number; } - >c : { x?: string | number | undefined; } diff --git a/testdata/baselines/reference/submodule/compiler/spreadOfParamsFromGeneratorMakesRequiredParams.types b/testdata/baselines/reference/submodule/compiler/spreadOfParamsFromGeneratorMakesRequiredParams.types index 830806c9ece..321fa9fe1f7 100644 --- a/testdata/baselines/reference/submodule/compiler/spreadOfParamsFromGeneratorMakesRequiredParams.types +++ b/testdata/baselines/reference/submodule/compiler/spreadOfParamsFromGeneratorMakesRequiredParams.types @@ -16,6 +16,6 @@ declare function call any>( call(function* (a: 'a') { }); // error, 2nd argument required >call(function* (a: 'a') { }) : any >call : any>(fn: Fn, ...args: Parameters) => any ->function* (a: 'a') { } : (a: "a") => Generator +>function* (a: 'a') { } : (a: 'a') => Generator >a : "a" diff --git a/testdata/baselines/reference/submodule/compiler/spreadOfParamsFromGeneratorMakesRequiredParams.types.diff b/testdata/baselines/reference/submodule/compiler/spreadOfParamsFromGeneratorMakesRequiredParams.types.diff new file mode 100644 index 00000000000..4150d402ee2 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/spreadOfParamsFromGeneratorMakesRequiredParams.types.diff @@ -0,0 +1,9 @@ +--- old.spreadOfParamsFromGeneratorMakesRequiredParams.types ++++ new.spreadOfParamsFromGeneratorMakesRequiredParams.types +@@= skipped -15, +15 lines =@@ + call(function* (a: 'a') { }); // error, 2nd argument required + >call(function* (a: 'a') { }) : any + >call : any>(fn: Fn, ...args: Parameters) => any +->function* (a: 'a') { } : (a: "a") => Generator ++>function* (a: 'a') { } : (a: 'a') => Generator + >a : "a" diff --git a/testdata/baselines/reference/submodule/compiler/spreadUnionPropOverride.types b/testdata/baselines/reference/submodule/compiler/spreadUnionPropOverride.types index 53b8fde02de..56d90115926 100644 --- a/testdata/baselines/reference/submodule/compiler/spreadUnionPropOverride.types +++ b/testdata/baselines/reference/submodule/compiler/spreadUnionPropOverride.types @@ -18,7 +18,7 @@ const things: Thing[] = []; >[] : never[] function find(id: string): undefined | Thing { ->find : (id: string) => Thing | undefined +>find : (id: string) => undefined | Thing >id : string return things.find(thing => thing.id === id); @@ -51,7 +51,7 @@ fun({ ...find('foo') ?? { >find('foo') ?? { label: 'Foo', } : Thing | { label: string; } >find('foo') : Thing | undefined ->find : (id: string) => Thing | undefined +>find : (id: string) => undefined | Thing >'foo' : "foo" >{ label: 'Foo', } : { label: string; } @@ -151,8 +151,8 @@ const obj3 = { // Should error when property is required in all types const obj4 = { ->obj4 : { a: string; b?: number | undefined; } | { a: string; c: boolean; } ->{ a: "test", ...partial,} : { a: string; b?: number | undefined; } | { a: string; c: boolean; } +>obj4 : { a: string; b?: number; } | { a: string; c: boolean; } +>{ a: "test", ...partial,} : { a: string; b?: number; } | { a: string; c: boolean; } a: "test", >a : string diff --git a/testdata/baselines/reference/submodule/compiler/spreadUnionPropOverride.types.diff b/testdata/baselines/reference/submodule/compiler/spreadUnionPropOverride.types.diff deleted file mode 100644 index 749dbb5ff2b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/spreadUnionPropOverride.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.spreadUnionPropOverride.types -+++ new.spreadUnionPropOverride.types -@@= skipped -17, +17 lines =@@ - >[] : never[] - - function find(id: string): undefined | Thing { -->find : (id: string) => undefined | Thing -+>find : (id: string) => Thing | undefined - >id : string - - return things.find(thing => thing.id === id); -@@= skipped -33, +33 lines =@@ - ...find('foo') ?? { - >find('foo') ?? { label: 'Foo', } : Thing | { label: string; } - >find('foo') : Thing | undefined -->find : (id: string) => undefined | Thing -+>find : (id: string) => Thing | undefined - >'foo' : "foo" - >{ label: 'Foo', } : { label: string; } - -@@= skipped -100, +100 lines =@@ - - // Should error when property is required in all types - const obj4 = { -->obj4 : { a: string; b?: number; } | { a: string; c: boolean; } -->{ a: "test", ...partial,} : { a: string; b?: number; } | { a: string; c: boolean; } -+>obj4 : { a: string; b?: number | undefined; } | { a: string; c: boolean; } -+>{ a: "test", ...partial,} : { a: string; b?: number | undefined; } | { a: string; c: boolean; } - - a: "test", - >a : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/spreadsAndContextualTupleTypes.types b/testdata/baselines/reference/submodule/compiler/spreadsAndContextualTupleTypes.types index 0743e8d3aa7..f8299846f9f 100644 --- a/testdata/baselines/reference/submodule/compiler/spreadsAndContextualTupleTypes.types +++ b/testdata/baselines/reference/submodule/compiler/spreadsAndContextualTupleTypes.types @@ -2,11 +2,11 @@ === spreadsAndContextualTupleTypes.ts === declare function fx1(x: T): T; ->fx1 : (x: T) => T +>fx1 : (x: T) => T >x : T declare function fx2(x: T): T; ->fx2 : (x: T) => T +>fx2 : (x: T) => T >x : T const t3 = ['x', 'y', 'z'] as const; @@ -19,7 +19,7 @@ const t3 = ['x', 'y', 'z'] as const; fx1(['x', 'y', 'z', 'a']); >fx1(['x', 'y', 'z', 'a']) : [string, string, string, "a"] ->fx1 : (x: T) => T +>fx1 : (x: T) => T >['x', 'y', 'z', 'a'] : [string, string, string, "a"] >'x' : "x" >'y' : "y" @@ -28,7 +28,7 @@ fx1(['x', 'y', 'z', 'a']); fx1([...t3, 'a']); >fx1([...t3, 'a']) : ["x", "y", "z", "a"] ->fx1 : (x: T) => T +>fx1 : (x: T) => T >[...t3, 'a'] : ["x", "y", "z", "a"] >...t3 : "x" | "y" | "z" >t3 : readonly ["x", "y", "z"] @@ -36,7 +36,7 @@ fx1([...t3, 'a']); fx2(['x', 'y', 'z', 'a']); >fx2(['x', 'y', 'z', 'a']) : [string, string, string, "a"] ->fx2 : (x: T) => T +>fx2 : (x: T) => T >['x', 'y', 'z', 'a'] : [string, string, string, "a"] >'x' : "x" >'y' : "y" @@ -45,7 +45,7 @@ fx2(['x', 'y', 'z', 'a']); fx2([...t3, 'a']); >fx2([...t3, 'a']) : ["x", "y", "z", "a"] ->fx2 : (x: T) => T +>fx2 : (x: T) => T >[...t3, 'a'] : ["x", "y", "z", "a"] >...t3 : "x" | "y" | "z" >t3 : readonly ["x", "y", "z"] diff --git a/testdata/baselines/reference/submodule/compiler/spreadsAndContextualTupleTypes.types.diff b/testdata/baselines/reference/submodule/compiler/spreadsAndContextualTupleTypes.types.diff new file mode 100644 index 00000000000..0e5ddda56a6 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/spreadsAndContextualTupleTypes.types.diff @@ -0,0 +1,52 @@ +--- old.spreadsAndContextualTupleTypes.types ++++ new.spreadsAndContextualTupleTypes.types +@@= skipped -1, +1 lines =@@ + + === spreadsAndContextualTupleTypes.ts === + declare function fx1(x: T): T; +->fx1 : (x: T) => T ++>fx1 : (x: T) => T + >x : T + + declare function fx2(x: T): T; +->fx2 : (x: T) => T ++>fx2 : (x: T) => T + >x : T + + const t3 = ['x', 'y', 'z'] as const; +@@= skipped -17, +17 lines =@@ + + fx1(['x', 'y', 'z', 'a']); + >fx1(['x', 'y', 'z', 'a']) : [string, string, string, "a"] +->fx1 : (x: T) => T ++>fx1 : (x: T) => T + >['x', 'y', 'z', 'a'] : [string, string, string, "a"] + >'x' : "x" + >'y' : "y" +@@= skipped -9, +9 lines =@@ + + fx1([...t3, 'a']); + >fx1([...t3, 'a']) : ["x", "y", "z", "a"] +->fx1 : (x: T) => T ++>fx1 : (x: T) => T + >[...t3, 'a'] : ["x", "y", "z", "a"] + >...t3 : "x" | "y" | "z" + >t3 : readonly ["x", "y", "z"] +@@= skipped -8, +8 lines =@@ + + fx2(['x', 'y', 'z', 'a']); + >fx2(['x', 'y', 'z', 'a']) : [string, string, string, "a"] +->fx2 : (x: T) => T ++>fx2 : (x: T) => T + >['x', 'y', 'z', 'a'] : [string, string, string, "a"] + >'x' : "x" + >'y' : "y" +@@= skipped -9, +9 lines =@@ + + fx2([...t3, 'a']); + >fx2([...t3, 'a']) : ["x", "y", "z", "a"] +->fx2 : (x: T) => T ++>fx2 : (x: T) => T + >[...t3, 'a'] : ["x", "y", "z", "a"] + >...t3 : "x" | "y" | "z" + >t3 : readonly ["x", "y", "z"] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/spuriousCircularityOnTypeImport.types b/testdata/baselines/reference/submodule/compiler/spuriousCircularityOnTypeImport.types index 686896d173a..6a641975995 100644 --- a/testdata/baselines/reference/submodule/compiler/spuriousCircularityOnTypeImport.types +++ b/testdata/baselines/reference/submodule/compiler/spuriousCircularityOnTypeImport.types @@ -17,10 +17,10 @@ export type SelectorMap unkno }; export declare const value2: { ->value2 : { sliceSelectors: >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters; }; } +>value2 : { sliceSelectors: >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters; }; } sliceSelectors: >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters }; ->sliceSelectors : >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters; } +>sliceSelectors : >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters; } >selectorsBySlice : FuncMap }; diff --git a/testdata/baselines/reference/submodule/compiler/spuriousCircularityOnTypeImport.types.diff b/testdata/baselines/reference/submodule/compiler/spuriousCircularityOnTypeImport.types.diff new file mode 100644 index 00000000000..7ed8564d1e4 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/spuriousCircularityOnTypeImport.types.diff @@ -0,0 +1,15 @@ +--- old.spuriousCircularityOnTypeImport.types ++++ new.spuriousCircularityOnTypeImport.types +@@= skipped -16, +16 lines =@@ + }; + + export declare const value2: { +->value2 : { sliceSelectors: >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters; }; } ++>value2 : { sliceSelectors: >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters; }; } + + sliceSelectors: >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters }; +->sliceSelectors : >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters; } ++>sliceSelectors : >(selectorsBySlice: FuncMap) => { [P in keyof FuncMap]: Parameters; } + >selectorsBySlice : FuncMap + + }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/spyComparisonChecking.types b/testdata/baselines/reference/submodule/compiler/spyComparisonChecking.types index 228b1294ac7..004ca525f64 100644 --- a/testdata/baselines/reference/submodule/compiler/spyComparisonChecking.types +++ b/testdata/baselines/reference/submodule/compiler/spyComparisonChecking.types @@ -26,21 +26,21 @@ type SpyObj = T & { } declare function createSpyObj( ->createSpyObj : (name: string, names: (keyof T)[]) => SpyObj +>createSpyObj : (name: string, names: Array) => SpyObj name: string, names: Array): SpyObj; >name : string >names : (keyof T)[] function mock(spyName: string, methodNames: Array): SpyObj { ->mock : (spyName: string, methodNames: (keyof T)[]) => SpyObj +>mock : (spyName: string, methodNames: Array) => SpyObj >spyName : string >methodNames : (keyof T)[] const spyObj = createSpyObj(spyName, methodNames); >spyObj : SpyObj >createSpyObj(spyName, methodNames) : SpyObj ->createSpyObj : (name: string, names: (keyof T_1)[]) => SpyObj +>createSpyObj : (name: string, names: Array) => SpyObj >spyName : string >methodNames : (keyof T)[] diff --git a/testdata/baselines/reference/submodule/compiler/spyComparisonChecking.types.diff b/testdata/baselines/reference/submodule/compiler/spyComparisonChecking.types.diff deleted file mode 100644 index 4912cd1481f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/spyComparisonChecking.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.spyComparisonChecking.types -+++ new.spyComparisonChecking.types -@@= skipped -25, +25 lines =@@ - } - - declare function createSpyObj( -->createSpyObj : (name: string, names: Array) => SpyObj -+>createSpyObj : (name: string, names: (keyof T)[]) => SpyObj - - name: string, names: Array): SpyObj; - >name : string - >names : (keyof T)[] - - function mock(spyName: string, methodNames: Array): SpyObj { -->mock : (spyName: string, methodNames: Array) => SpyObj -+>mock : (spyName: string, methodNames: (keyof T)[]) => SpyObj - >spyName : string - >methodNames : (keyof T)[] - - const spyObj = createSpyObj(spyName, methodNames); - >spyObj : SpyObj - >createSpyObj(spyName, methodNames) : SpyObj -->createSpyObj : (name: string, names: Array) => SpyObj -+>createSpyObj : (name: string, names: (keyof T_1)[]) => SpyObj - >spyName : string - >methodNames : (keyof T)[] diff --git a/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=false).types b/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=false).types index 6265de7ef30..479d9c65db1 100644 --- a/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=false).types +++ b/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=false).types @@ -7,14 +7,14 @@ class Message { value: string = ""; } >"" : "" function takeMessageOrArray(message: Message | Message[]) { return message; } ->takeMessageOrArray : (message: Message[] | Message) => Message[] | Message +>takeMessageOrArray : (message: Message | Message[]) => Message[] | Message >message : Message[] | Message >message : Message[] | Message const result1 = takeMessageOrArray(null!); >result1 : Message[] | Message >takeMessageOrArray(null!) : Message[] | Message ->takeMessageOrArray : (message: Message[] | Message) => Message[] | Message +>takeMessageOrArray : (message: Message | Message[]) => Message[] | Message >null! : never function checkType(x: string | number | boolean) { @@ -46,7 +46,7 @@ enum Color { Red, Green, Blue } >Blue : Color.Blue function enumUnion(x: Color | string | string[]) { ->enumUnion : (x: string | string[] | Color) => string | string[] | Color +>enumUnion : (x: Color | string | string[]) => string | string[] | Color >x : string | string[] | Color return x; diff --git a/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=false).types.diff b/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=false).types.diff index 6a4de122eeb..5a7cc0d2145 100644 --- a/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=false).types.diff +++ b/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=false).types.diff @@ -7,7 +7,7 @@ ->takeMessageOrArray : (message: Message | Message[]) => Message | Message[] ->message : Message | Message[] ->message : Message | Message[] -+>takeMessageOrArray : (message: Message[] | Message) => Message[] | Message ++>takeMessageOrArray : (message: Message | Message[]) => Message[] | Message +>message : Message[] | Message +>message : Message[] | Message @@ -17,7 +17,7 @@ ->takeMessageOrArray : (message: Message | Message[]) => Message | Message[] +>result1 : Message[] | Message +>takeMessageOrArray(null!) : Message[] | Message -+>takeMessageOrArray : (message: Message[] | Message) => Message[] | Message ++>takeMessageOrArray : (message: Message | Message[]) => Message[] | Message >null! : never function checkType(x: string | number | boolean) { @@ -56,7 +56,7 @@ function enumUnion(x: Color | string | string[]) { ->enumUnion : (x: Color | string | string[]) => string | Color | string[] ->x : string | Color | string[] -+>enumUnion : (x: string | string[] | Color) => string | string[] | Color ++>enumUnion : (x: Color | string | string[]) => string | string[] | Color +>x : string | string[] | Color return x; diff --git a/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=true).types b/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=true).types index 6265de7ef30..479d9c65db1 100644 --- a/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=true).types +++ b/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=true).types @@ -7,14 +7,14 @@ class Message { value: string = ""; } >"" : "" function takeMessageOrArray(message: Message | Message[]) { return message; } ->takeMessageOrArray : (message: Message[] | Message) => Message[] | Message +>takeMessageOrArray : (message: Message | Message[]) => Message[] | Message >message : Message[] | Message >message : Message[] | Message const result1 = takeMessageOrArray(null!); >result1 : Message[] | Message >takeMessageOrArray(null!) : Message[] | Message ->takeMessageOrArray : (message: Message[] | Message) => Message[] | Message +>takeMessageOrArray : (message: Message | Message[]) => Message[] | Message >null! : never function checkType(x: string | number | boolean) { @@ -46,7 +46,7 @@ enum Color { Red, Green, Blue } >Blue : Color.Blue function enumUnion(x: Color | string | string[]) { ->enumUnion : (x: string | string[] | Color) => string | string[] | Color +>enumUnion : (x: Color | string | string[]) => string | string[] | Color >x : string | string[] | Color return x; diff --git a/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=true).types.diff b/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=true).types.diff deleted file mode 100644 index 1c128958b00..00000000000 --- a/testdata/baselines/reference/submodule/compiler/stableTypeOrdering(stabletypeordering=true).types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.stableTypeOrdering(stabletypeordering=true).types -+++ new.stableTypeOrdering(stabletypeordering=true).types -@@= skipped -6, +6 lines =@@ - >"" : "" - - function takeMessageOrArray(message: Message | Message[]) { return message; } -->takeMessageOrArray : (message: Message | Message[]) => Message[] | Message -+>takeMessageOrArray : (message: Message[] | Message) => Message[] | Message - >message : Message[] | Message - >message : Message[] | Message - - const result1 = takeMessageOrArray(null!); - >result1 : Message[] | Message - >takeMessageOrArray(null!) : Message[] | Message -->takeMessageOrArray : (message: Message | Message[]) => Message[] | Message -+>takeMessageOrArray : (message: Message[] | Message) => Message[] | Message - >null! : never - - function checkType(x: string | number | boolean) { -@@= skipped -39, +39 lines =@@ - >Blue : Color.Blue - - function enumUnion(x: Color | string | string[]) { -->enumUnion : (x: Color | string | string[]) => string | string[] | Color -+>enumUnion : (x: string | string[] | Color) => string | string[] | Color - >x : string | string[] | Color - - return x; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/stackDepthLimitCastingType.types b/testdata/baselines/reference/submodule/compiler/stackDepthLimitCastingType.types index e31f8adaffa..c238c313466 100644 --- a/testdata/baselines/reference/submodule/compiler/stackDepthLimitCastingType.types +++ b/testdata/baselines/reference/submodule/compiler/stackDepthLimitCastingType.types @@ -9,7 +9,7 @@ declare global { >Model : Model initialize(attributes?: T, options?: CombinedModelConstructorOptions): void; ->initialize : (attributes?: T | undefined, options?: CombinedModelConstructorOptions | undefined) => void +>initialize : (attributes?: T, options?: CombinedModelConstructorOptions) => void >attributes : T | undefined >options : CombinedModelConstructorOptions | undefined diff --git a/testdata/baselines/reference/submodule/compiler/stackDepthLimitCastingType.types.diff b/testdata/baselines/reference/submodule/compiler/stackDepthLimitCastingType.types.diff deleted file mode 100644 index 06ac84c4c4c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/stackDepthLimitCastingType.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.stackDepthLimitCastingType.types -+++ new.stackDepthLimitCastingType.types -@@= skipped -8, +8 lines =@@ - >Model : Model - - initialize(attributes?: T, options?: CombinedModelConstructorOptions): void; -->initialize : (attributes?: T, options?: CombinedModelConstructorOptions) => void -+>initialize : (attributes?: T | undefined, options?: CombinedModelConstructorOptions | undefined) => void - >attributes : T | undefined - >options : CombinedModelConstructorOptions | undefined diff --git a/testdata/baselines/reference/submodule/compiler/staticAnonymousTypeNotReferencingTypeParameter.types b/testdata/baselines/reference/submodule/compiler/staticAnonymousTypeNotReferencingTypeParameter.types index d55c2b577a0..3854a857823 100644 --- a/testdata/baselines/reference/submodule/compiler/staticAnonymousTypeNotReferencingTypeParameter.types +++ b/testdata/baselines/reference/submodule/compiler/staticAnonymousTypeNotReferencingTypeParameter.types @@ -35,9 +35,9 @@ class ListWrapper2 { >ListWrapper2 : typeof ListWrapper2 >array : T[] >array.slice(0) : T[] ->array.slice : (start?: number | undefined, end?: number | undefined) => T[] +>array.slice : (start?: number, end?: number) => T[] >array : T[] ->slice : (start?: number | undefined, end?: number | undefined) => T[] +>slice : (start?: number, end?: number) => T[] >0 : 0 static reversed(dit: typeof ListWrapper2, array: T[]): T[] { @@ -147,9 +147,9 @@ class ListWrapper { >ListWrapper : typeof ListWrapper >array : T[] >array.slice(0) : T[] ->array.slice : (start?: number | undefined, end?: number | undefined) => T[] +>array.slice : (start?: number, end?: number) => T[] >array : T[] ->slice : (start?: number | undefined, end?: number | undefined) => T[] +>slice : (start?: number, end?: number) => T[] >0 : 0 static forEachWithIndex(dit: typeof ListWrapper, array: T[], fn: (t: T, n: number) => void) { @@ -232,9 +232,9 @@ class ListWrapper { return array.indexOf(value, startIndex); >array.indexOf(value, startIndex) : number ->array.indexOf : (searchElement: T, fromIndex?: number | undefined) => number +>array.indexOf : (searchElement: T, fromIndex?: number) => number >array : T[] ->indexOf : (searchElement: T, fromIndex?: number | undefined) => number +>indexOf : (searchElement: T, fromIndex?: number) => number >value : T >startIndex : number } @@ -246,9 +246,9 @@ class ListWrapper { >el : T >list.indexOf(el) !== -1 : boolean >list.indexOf(el) : number ->list.indexOf : (searchElement: T, fromIndex?: number | undefined) => number +>list.indexOf : (searchElement: T, fromIndex?: number) => number >list : T[] ->indexOf : (searchElement: T, fromIndex?: number | undefined) => number +>indexOf : (searchElement: T, fromIndex?: number) => number >el : T >-1 : -1 >1 : 1 @@ -319,9 +319,9 @@ class ListWrapper { >index : number >value : T >list.splice(index, 0, value) : T[] ->list.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >list : T[] ->splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >index : number >0 : 0 >value : T @@ -341,9 +341,9 @@ class ListWrapper { list.splice(index, 1); >list.splice(index, 1) : T[] ->list.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >list : T[] ->splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >index : number >1 : 1 @@ -371,18 +371,18 @@ class ListWrapper { var index = list.indexOf(items[i]); >index : number >list.indexOf(items[i]) : number ->list.indexOf : (searchElement: T, fromIndex?: number | undefined) => number +>list.indexOf : (searchElement: T, fromIndex?: number) => number >list : T[] ->indexOf : (searchElement: T, fromIndex?: number | undefined) => number +>indexOf : (searchElement: T, fromIndex?: number) => number >items[i] : T >items : T[] >i : number list.splice(index, 1); >list.splice(index, 1) : T[] ->list.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >list : T[] ->splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >index : number >1 : 1 } @@ -397,9 +397,9 @@ class ListWrapper { var index = list.indexOf(el); >index : number >list.indexOf(el) : number ->list.indexOf : (searchElement: T, fromIndex?: number | undefined) => number +>list.indexOf : (searchElement: T, fromIndex?: number) => number >list : T[] ->indexOf : (searchElement: T, fromIndex?: number | undefined) => number +>indexOf : (searchElement: T, fromIndex?: number) => number >el : T if (index > -1) { @@ -410,9 +410,9 @@ class ListWrapper { list.splice(index, 1); >list.splice(index, 1) : T[] ->list.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >list : T[] ->splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >index : number >1 : 1 @@ -456,9 +456,9 @@ class ListWrapper { list.fill(value, start, end === null ? list.length : end); >list.fill(value, start, end === null ? list.length : end) : void ->list.fill : { (value: any, start?: number | undefined, end?: number | undefined): any[]; (value: any, start: number, end: number): void; } +>list.fill : { (value: any, start?: number, end?: number): any[]; (value: any, start: number, end: number): void; } >list : any[] ->fill : { (value: any, start?: number | undefined, end?: number | undefined): any[]; (value: any, start: number, end: number): void; } +>fill : { (value: any, start?: number, end?: number): any[]; (value: any, start: number, end: number): void; } >value : any >start : number >end === null ? list.length : end : number @@ -521,9 +521,9 @@ class ListWrapper { return l.slice(from, to === null ? undefined : to); >l.slice(from, to === null ? undefined : to) : T[] ->l.slice : (start?: number | undefined, end?: number | undefined) => T[] +>l.slice : (start?: number, end?: number) => T[] >l : T[] ->slice : (start?: number | undefined, end?: number | undefined) => T[] +>slice : (start?: number, end?: number) => T[] >from : number >to === null ? undefined : to : number | undefined >to === null : boolean @@ -539,14 +539,14 @@ class ListWrapper { >from : number >length : number >l.splice(from, length) : T[] ->l.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>l.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >l : T[] ->splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } >from : number >length : number static sort(dit: typeof ListWrapper, l: T[], compareFn?: (a: T, b: T) => number) { ->sort : (dit: typeof ListWrapper, l: T[], compareFn?: ((a: T, b: T) => number) | undefined) => void +>sort : (dit: typeof ListWrapper, l: T[], compareFn?: (a: T, b: T) => number) => void >dit : typeof ListWrapper >ListWrapper : typeof ListWrapper >l : T[] @@ -556,7 +556,7 @@ class ListWrapper { if (isPresent(compareFn)) { >isPresent(compareFn) : boolean ->isPresent : (compareFn?: ((a: T_1, b: T_1) => number) | undefined) => boolean +>isPresent : (compareFn?: (a: T_1, b: T_1) => number) => boolean >compareFn : ((a: T, b: T) => number) | undefined l.sort(compareFn); @@ -590,9 +590,9 @@ class ListWrapper { >ListWrapper : typeof ListWrapper >l : T[] >JSON.stringify(l) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >l : T[] static maximum(dit: typeof ListWrapper, list: T[], predicate: (t: T) => number): T { @@ -688,14 +688,14 @@ declare function isBlank(x: any): boolean; >x : any declare function isPresent(compareFn?: (a: T, b: T) => number): boolean; ->isPresent : (compareFn?: ((a: T, b: T) => number) | undefined) => boolean +>isPresent : (compareFn?: (a: T, b: T) => number) => boolean >compareFn : ((a: T, b: T) => number) | undefined >a : T >b : T interface Array { fill(value: any, start: number, end: number): void; ->fill : { (value: T, start?: number | undefined, end?: number | undefined): this; (value: any, start: number, end: number): void; } +>fill : { (value: T, start?: number, end?: number): this; (value: any, start: number, end: number): void; } >value : any >start : number >end : number diff --git a/testdata/baselines/reference/submodule/compiler/staticAnonymousTypeNotReferencingTypeParameter.types.diff b/testdata/baselines/reference/submodule/compiler/staticAnonymousTypeNotReferencingTypeParameter.types.diff deleted file mode 100644 index 1a3d03df556..00000000000 --- a/testdata/baselines/reference/submodule/compiler/staticAnonymousTypeNotReferencingTypeParameter.types.diff +++ /dev/null @@ -1,201 +0,0 @@ ---- old.staticAnonymousTypeNotReferencingTypeParameter.types -+++ new.staticAnonymousTypeNotReferencingTypeParameter.types -@@= skipped -34, +34 lines =@@ - >ListWrapper2 : typeof ListWrapper2 - >array : T[] - >array.slice(0) : T[] -->array.slice : (start?: number, end?: number) => T[] -+>array.slice : (start?: number | undefined, end?: number | undefined) => T[] - >array : T[] -->slice : (start?: number, end?: number) => T[] -+>slice : (start?: number | undefined, end?: number | undefined) => T[] - >0 : 0 - - static reversed(dit: typeof ListWrapper2, array: T[]): T[] { -@@= skipped -112, +112 lines =@@ - >ListWrapper : typeof ListWrapper - >array : T[] - >array.slice(0) : T[] -->array.slice : (start?: number, end?: number) => T[] -+>array.slice : (start?: number | undefined, end?: number | undefined) => T[] - >array : T[] -->slice : (start?: number, end?: number) => T[] -+>slice : (start?: number | undefined, end?: number | undefined) => T[] - >0 : 0 - - static forEachWithIndex(dit: typeof ListWrapper, array: T[], fn: (t: T, n: number) => void) { -@@= skipped -85, +85 lines =@@ - - return array.indexOf(value, startIndex); - >array.indexOf(value, startIndex) : number -->array.indexOf : (searchElement: T, fromIndex?: number) => number -+>array.indexOf : (searchElement: T, fromIndex?: number | undefined) => number - >array : T[] -->indexOf : (searchElement: T, fromIndex?: number) => number -+>indexOf : (searchElement: T, fromIndex?: number | undefined) => number - >value : T - >startIndex : number - } -@@= skipped -14, +14 lines =@@ - >el : T - >list.indexOf(el) !== -1 : boolean - >list.indexOf(el) : number -->list.indexOf : (searchElement: T, fromIndex?: number) => number -+>list.indexOf : (searchElement: T, fromIndex?: number | undefined) => number - >list : T[] -->indexOf : (searchElement: T, fromIndex?: number) => number -+>indexOf : (searchElement: T, fromIndex?: number | undefined) => number - >el : T - >-1 : -1 - >1 : 1 -@@= skipped -73, +73 lines =@@ - >index : number - >value : T - >list.splice(index, 0, value) : T[] -->list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>list.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >list : T[] -->splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >index : number - >0 : 0 - >value : T -@@= skipped -22, +22 lines =@@ - - list.splice(index, 1); - >list.splice(index, 1) : T[] -->list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>list.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >list : T[] -->splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >index : number - >1 : 1 - -@@= skipped -30, +30 lines =@@ - var index = list.indexOf(items[i]); - >index : number - >list.indexOf(items[i]) : number -->list.indexOf : (searchElement: T, fromIndex?: number) => number -+>list.indexOf : (searchElement: T, fromIndex?: number | undefined) => number - >list : T[] -->indexOf : (searchElement: T, fromIndex?: number) => number -+>indexOf : (searchElement: T, fromIndex?: number | undefined) => number - >items[i] : T - >items : T[] - >i : number - - list.splice(index, 1); - >list.splice(index, 1) : T[] -->list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>list.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >list : T[] -->splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >index : number - >1 : 1 - } -@@= skipped -26, +26 lines =@@ - var index = list.indexOf(el); - >index : number - >list.indexOf(el) : number -->list.indexOf : (searchElement: T, fromIndex?: number) => number -+>list.indexOf : (searchElement: T, fromIndex?: number | undefined) => number - >list : T[] -->indexOf : (searchElement: T, fromIndex?: number) => number -+>indexOf : (searchElement: T, fromIndex?: number | undefined) => number - >el : T - - if (index > -1) { -@@= skipped -13, +13 lines =@@ - - list.splice(index, 1); - >list.splice(index, 1) : T[] -->list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>list.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >list : T[] -->splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >index : number - >1 : 1 - -@@= skipped -46, +46 lines =@@ - - list.fill(value, start, end === null ? list.length : end); - >list.fill(value, start, end === null ? list.length : end) : void -->list.fill : { (value: any, start?: number, end?: number): any[]; (value: any, start: number, end: number): void; } -+>list.fill : { (value: any, start?: number | undefined, end?: number | undefined): any[]; (value: any, start: number, end: number): void; } - >list : any[] -->fill : { (value: any, start?: number, end?: number): any[]; (value: any, start: number, end: number): void; } -+>fill : { (value: any, start?: number | undefined, end?: number | undefined): any[]; (value: any, start: number, end: number): void; } - >value : any - >start : number - >end === null ? list.length : end : number -@@= skipped -65, +65 lines =@@ - - return l.slice(from, to === null ? undefined : to); - >l.slice(from, to === null ? undefined : to) : T[] -->l.slice : (start?: number, end?: number) => T[] -+>l.slice : (start?: number | undefined, end?: number | undefined) => T[] - >l : T[] -->slice : (start?: number, end?: number) => T[] -+>slice : (start?: number | undefined, end?: number | undefined) => T[] - >from : number - >to === null ? undefined : to : number | undefined - >to === null : boolean -@@= skipped -18, +18 lines =@@ - >from : number - >length : number - >l.splice(from, length) : T[] -->l.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>l.splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >l : T[] -->splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -+>splice : { (start: number, deleteCount?: number | undefined): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } - >from : number - >length : number - - static sort(dit: typeof ListWrapper, l: T[], compareFn?: (a: T, b: T) => number) { -->sort : (dit: typeof ListWrapper, l: T[], compareFn?: (a: T, b: T) => number) => void -+>sort : (dit: typeof ListWrapper, l: T[], compareFn?: ((a: T, b: T) => number) | undefined) => void - >dit : typeof ListWrapper - >ListWrapper : typeof ListWrapper - >l : T[] -@@= skipped -17, +17 lines =@@ - - if (isPresent(compareFn)) { - >isPresent(compareFn) : boolean -->isPresent : (compareFn?: (a: T_1, b: T_1) => number) => boolean -+>isPresent : (compareFn?: ((a: T_1, b: T_1) => number) | undefined) => boolean - >compareFn : ((a: T, b: T) => number) | undefined - - l.sort(compareFn); -@@= skipped -34, +34 lines =@@ - >ListWrapper : typeof ListWrapper - >l : T[] - >JSON.stringify(l) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >l : T[] - - static maximum(dit: typeof ListWrapper, list: T[], predicate: (t: T) => number): T { -@@= skipped -98, +98 lines =@@ - >x : any - - declare function isPresent(compareFn?: (a: T, b: T) => number): boolean; -->isPresent : (compareFn?: (a: T, b: T) => number) => boolean -+>isPresent : (compareFn?: ((a: T, b: T) => number) | undefined) => boolean - >compareFn : ((a: T, b: T) => number) | undefined - >a : T - >b : T - - interface Array { - fill(value: any, start: number, end: number): void; -->fill : { (value: T, start?: number, end?: number): this; (value: any, start: number, end: number): void; } -+>fill : { (value: T, start?: number | undefined, end?: number | undefined): this; (value: any, start: number, end: number): void; } - >value : any - >start : number - >end : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/strictFunctionTypes1.types b/testdata/baselines/reference/submodule/compiler/strictFunctionTypes1.types index 7eba2135865..dd1d889e4e2 100644 --- a/testdata/baselines/reference/submodule/compiler/strictFunctionTypes1.types +++ b/testdata/baselines/reference/submodule/compiler/strictFunctionTypes1.types @@ -99,13 +99,13 @@ const x11 = f3(never, fo, fx); // "def" // Repro from #21112 declare function foo(a: ReadonlyArray): T; ->foo : (a: readonly T[]) => T +>foo : (a: ReadonlyArray) => T >a : readonly T[] let x = foo([]); // never >x : never >foo([]) : never ->foo : (a: readonly T[]) => T +>foo : (a: ReadonlyArray) => T >[] : never[] // Modified repros from #26127 @@ -117,7 +117,7 @@ interface B extends A { b: string } >b : string declare function acceptUnion(x: A | number): void; ->acceptUnion : (x: number | A) => void +>acceptUnion : (x: A | number) => void >x : number | A declare function acceptA(x: A): void; @@ -141,7 +141,7 @@ const t1: A = coAndContra(a, acceptUnion); >coAndContra(a, acceptUnion) : A >coAndContra : (value: T, func: (t: T) => void) => T >a : A ->acceptUnion : (x: number | A) => void +>acceptUnion : (x: A | number) => void const t2: B = coAndContra(b, acceptA); >t2 : B @@ -169,7 +169,7 @@ const t4: A[] = coAndContraArray([a], acceptUnion); >coAndContraArray : (value: T[], func: (t: T) => void) => T[] >[a] : A[] >a : A ->acceptUnion : (x: number | A) => void +>acceptUnion : (x: A | number) => void const t5: B[] = coAndContraArray([b], acceptA); >t5 : B[] diff --git a/testdata/baselines/reference/submodule/compiler/strictFunctionTypes1.types.diff b/testdata/baselines/reference/submodule/compiler/strictFunctionTypes1.types.diff deleted file mode 100644 index b55205515de..00000000000 --- a/testdata/baselines/reference/submodule/compiler/strictFunctionTypes1.types.diff +++ /dev/null @@ -1,45 +0,0 @@ ---- old.strictFunctionTypes1.types -+++ new.strictFunctionTypes1.types -@@= skipped -98, +98 lines =@@ - // Repro from #21112 - - declare function foo(a: ReadonlyArray): T; -->foo : (a: ReadonlyArray) => T -+>foo : (a: readonly T[]) => T - >a : readonly T[] - - let x = foo([]); // never - >x : never - >foo([]) : never -->foo : (a: ReadonlyArray) => T -+>foo : (a: readonly T[]) => T - >[] : never[] - - // Modified repros from #26127 -@@= skipped -18, +18 lines =@@ - >b : string - - declare function acceptUnion(x: A | number): void; -->acceptUnion : (x: A | number) => void -+>acceptUnion : (x: number | A) => void - >x : number | A - - declare function acceptA(x: A): void; -@@= skipped -24, +24 lines =@@ - >coAndContra(a, acceptUnion) : A - >coAndContra : (value: T, func: (t: T) => void) => T - >a : A -->acceptUnion : (x: A | number) => void -+>acceptUnion : (x: number | A) => void - - const t2: B = coAndContra(b, acceptA); - >t2 : B -@@= skipped -28, +28 lines =@@ - >coAndContraArray : (value: T[], func: (t: T) => void) => T[] - >[a] : A[] - >a : A -->acceptUnion : (x: A | number) => void -+>acceptUnion : (x: number | A) => void - - const t5: B[] = coAndContraArray([b], acceptA); - >t5 : B[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/strictFunctionTypesErrors.errors.txt b/testdata/baselines/reference/submodule/compiler/strictFunctionTypesErrors.errors.txt index 80c4722cab1..8b86bb21ccd 100644 --- a/testdata/baselines/reference/submodule/compiler/strictFunctionTypesErrors.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/strictFunctionTypesErrors.errors.txt @@ -82,11 +82,11 @@ strictFunctionTypesErrors.ts(134,1): error TS2322: Type '(f: (x: Animal) => Anim Types of parameters 'f' and 'f' are incompatible. Types of parameters 'x' and 'x' are incompatible. Property 'dog' is missing in type 'Animal' but required in type 'Dog'. -strictFunctionTypesErrors.ts(147,5): error TS2322: Type '(cb: (x: Animal) => Animal) => void' is not assignable to type '(cb: (x: Dog) => Animal) => void'. +strictFunctionTypesErrors.ts(147,5): error TS2322: Type '(cb: typeof Foo.f1) => void' is not assignable to type '(cb: typeof Foo.f2) => void'. Types of parameters 'cb' and 'cb' are incompatible. Types of parameters 'x' and 'x' are incompatible. Property 'dog' is missing in type 'Animal' but required in type 'Dog'. -strictFunctionTypesErrors.ts(155,5): error TS2322: Type '(cb: (x: Animal) => Animal) => void' is not assignable to type '(cb: (x: Dog) => Animal) => void'. +strictFunctionTypesErrors.ts(155,5): error TS2322: Type '(cb: BivariantHack) => void' is not assignable to type '(cb: BivariantHack) => void'. Types of parameters 'cb' and 'cb' are incompatible. Types of parameters 'x' and 'x' are incompatible. Property 'dog' is missing in type 'Animal' but required in type 'Dog'. @@ -363,7 +363,7 @@ strictFunctionTypesErrors.ts(155,5): error TS2322: Type '(cb: (x: Animal) => Ani f1 = f2; f2 = f1; // Error ~~ -!!! error TS2322: Type '(cb: (x: Animal) => Animal) => void' is not assignable to type '(cb: (x: Dog) => Animal) => void'. +!!! error TS2322: Type '(cb: typeof Foo.f1) => void' is not assignable to type '(cb: typeof Foo.f2) => void'. !!! error TS2322: Types of parameters 'cb' and 'cb' are incompatible. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Property 'dog' is missing in type 'Animal' but required in type 'Dog'. @@ -377,7 +377,7 @@ strictFunctionTypesErrors.ts(155,5): error TS2322: Type '(cb: (x: Animal) => Ani f1 = f2; f2 = f1; // Error ~~ -!!! error TS2322: Type '(cb: (x: Animal) => Animal) => void' is not assignable to type '(cb: (x: Dog) => Animal) => void'. +!!! error TS2322: Type '(cb: BivariantHack) => void' is not assignable to type '(cb: BivariantHack) => void'. !!! error TS2322: Types of parameters 'cb' and 'cb' are incompatible. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Property 'dog' is missing in type 'Animal' but required in type 'Dog'. diff --git a/testdata/baselines/reference/submodule/compiler/strictFunctionTypesErrors.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/strictFunctionTypesErrors.errors.txt.diff index d8ba0e4ae34..4599b102527 100644 --- a/testdata/baselines/reference/submodule/compiler/strictFunctionTypesErrors.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/strictFunctionTypesErrors.errors.txt.diff @@ -12,6 +12,17 @@ strictFunctionTypesErrors.ts(134,1): error TS2322: Type '(f: (x: Animal) => Animal) => void' is not assignable to type '(f: (x: Dog) => Dog) => void'. Types of parameters 'f' and 'f' are incompatible. Types of parameters 'x' and 'x' are incompatible. + Property 'dog' is missing in type 'Animal' but required in type 'Dog'. +-strictFunctionTypesErrors.ts(147,5): error TS2322: Type '(cb: (x: Animal) => Animal) => void' is not assignable to type '(cb: (x: Dog) => Animal) => void'. ++strictFunctionTypesErrors.ts(147,5): error TS2322: Type '(cb: typeof Foo.f1) => void' is not assignable to type '(cb: typeof Foo.f2) => void'. + Types of parameters 'cb' and 'cb' are incompatible. + Types of parameters 'x' and 'x' are incompatible. + Property 'dog' is missing in type 'Animal' but required in type 'Dog'. +-strictFunctionTypesErrors.ts(155,5): error TS2322: Type '(cb: (x: Animal) => Animal) => void' is not assignable to type '(cb: (x: Dog) => Animal) => void'. ++strictFunctionTypesErrors.ts(155,5): error TS2322: Type '(cb: BivariantHack) => void' is not assignable to type '(cb: BivariantHack) => void'. + Types of parameters 'cb' and 'cb' are incompatible. + Types of parameters 'x' and 'x' are incompatible. + Property 'dog' is missing in type 'Animal' but required in type 'Dog'. @@= skipped -262, +263 lines =@@ declare let fc2: (f: (x: Dog) => Dog) => void; fc1 = fc2; // Error @@ -23,4 +34,22 @@ +!!! error TS2322: Property 'dog' is missing in type 'Animal' but required in type 'Dog'. !!! related TS2728 strictFunctionTypesErrors.ts:91:32: 'dog' is declared here. fc2 = fc1; // Error - ~~~ \ No newline at end of file + ~~~ +@@= skipped -24, +25 lines =@@ + f1 = f2; + f2 = f1; // Error + ~~ +-!!! error TS2322: Type '(cb: (x: Animal) => Animal) => void' is not assignable to type '(cb: (x: Dog) => Animal) => void'. ++!!! error TS2322: Type '(cb: typeof Foo.f1) => void' is not assignable to type '(cb: typeof Foo.f2) => void'. + !!! error TS2322: Types of parameters 'cb' and 'cb' are incompatible. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Property 'dog' is missing in type 'Animal' but required in type 'Dog'. +@@= skipped -14, +14 lines =@@ + f1 = f2; + f2 = f1; // Error + ~~ +-!!! error TS2322: Type '(cb: (x: Animal) => Animal) => void' is not assignable to type '(cb: (x: Dog) => Animal) => void'. ++!!! error TS2322: Type '(cb: BivariantHack) => void' is not assignable to type '(cb: BivariantHack) => void'. + !!! error TS2322: Types of parameters 'cb' and 'cb' are incompatible. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Property 'dog' is missing in type 'Animal' but required in type 'Dog'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/strictNullLogicalAndOr.types b/testdata/baselines/reference/submodule/compiler/strictNullLogicalAndOr.types index 6a6e1f3daca..fb31709e3f3 100644 --- a/testdata/baselines/reference/submodule/compiler/strictNullLogicalAndOr.types +++ b/testdata/baselines/reference/submodule/compiler/strictNullLogicalAndOr.types @@ -32,7 +32,7 @@ choice(Math.PI); >PI : number function sq(n?: number): number { ->sq : (n?: number | undefined) => number +>sq : (n?: number) => number >n : number | undefined const r = n !== undefined && n*n || 0; @@ -53,6 +53,6 @@ function sq(n?: number): number { sq(3); >sq(3) : number ->sq : (n?: number | undefined) => number +>sq : (n?: number) => number >3 : 3 diff --git a/testdata/baselines/reference/submodule/compiler/strictNullLogicalAndOr.types.diff b/testdata/baselines/reference/submodule/compiler/strictNullLogicalAndOr.types.diff deleted file mode 100644 index bf9a08645c8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/strictNullLogicalAndOr.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.strictNullLogicalAndOr.types -+++ new.strictNullLogicalAndOr.types -@@= skipped -31, +31 lines =@@ - >PI : number - - function sq(n?: number): number { -->sq : (n?: number) => number -+>sq : (n?: number | undefined) => number - >n : number | undefined - - const r = n !== undefined && n*n || 0; -@@= skipped -21, +21 lines =@@ - - sq(3); - >sq(3) : number -->sq : (n?: number) => number -+>sq : (n?: number | undefined) => number - >3 : 3 diff --git a/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.errors.txt b/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.errors.txt index 0107ab0f6e2..393cf568208 100644 --- a/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.errors.txt @@ -1,6 +1,6 @@ -strictSubtypeAndNarrowing.ts(123,27): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. -strictSubtypeAndNarrowing.ts(124,27): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. -strictSubtypeAndNarrowing.ts(129,26): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. +strictSubtypeAndNarrowing.ts(123,27): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. +strictSubtypeAndNarrowing.ts(124,27): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. +strictSubtypeAndNarrowing.ts(129,26): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. ==== strictSubtypeAndNarrowing.ts (3 errors) ==== @@ -128,17 +128,17 @@ strictSubtypeAndNarrowing.ts(129,26): error TS2353: Object literal may only spec function fx10(obj1: { x?: number }, obj2: { x?: number, y?: number }) { obj1 = obj2 = { x: 1, y: 2 }; ~ -!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. obj2 = obj1 = { x: 1, y: 2 }; ~ -!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. } function fx11(): { x?: number } { let obj: { x?: number, y?: number }; return obj = { x: 1, y: 2 }; ~ -!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. +!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. } // Repros from #52827 diff --git a/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.errors.txt.diff new file mode 100644 index 00000000000..59bb193d2a8 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.errors.txt.diff @@ -0,0 +1,33 @@ +--- old.strictSubtypeAndNarrowing.errors.txt ++++ new.strictSubtypeAndNarrowing.errors.txt +@@= skipped -0, +0 lines =@@ +-strictSubtypeAndNarrowing.ts(123,27): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. +-strictSubtypeAndNarrowing.ts(124,27): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. +-strictSubtypeAndNarrowing.ts(129,26): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. ++strictSubtypeAndNarrowing.ts(123,27): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. ++strictSubtypeAndNarrowing.ts(124,27): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. ++strictSubtypeAndNarrowing.ts(129,26): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. + + + ==== strictSubtypeAndNarrowing.ts (3 errors) ==== +@@= skipped -127, +127 lines =@@ + function fx10(obj1: { x?: number }, obj2: { x?: number, y?: number }) { + obj1 = obj2 = { x: 1, y: 2 }; + ~ +-!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. ++!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. + obj2 = obj1 = { x: 1, y: 2 }; + ~ +-!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. ++!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. + } + + function fx11(): { x?: number } { + let obj: { x?: number, y?: number }; + return obj = { x: 1, y: 2 }; + ~ +-!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number | undefined; }'. ++!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x?: number; }'. + } + + // Repros from #52827 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.types b/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.types index 682a7d80799..e242d1c416d 100644 --- a/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.types +++ b/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.types @@ -279,18 +279,18 @@ function checkD(f: FnTypes) { // Type of x = y is y with freshness preserved function fx10(obj1: { x?: number }, obj2: { x?: number, y?: number }) { ->fx10 : (obj1: { x?: number | undefined; }, obj2: { x?: number | undefined; y?: number | undefined; }) => void ->obj1 : { x?: number | undefined; } +>fx10 : (obj1: { x?: number; }, obj2: { x?: number; y?: number; }) => void +>obj1 : { x?: number; } >x : number | undefined ->obj2 : { x?: number | undefined; y?: number | undefined; } +>obj2 : { x?: number; y?: number; } >x : number | undefined >y : number | undefined obj1 = obj2 = { x: 1, y: 2 }; >obj1 = obj2 = { x: 1, y: 2 } : { x: number; y: number; } ->obj1 : { x?: number | undefined; } +>obj1 : { x?: number; } >obj2 = { x: 1, y: 2 } : { x: number; y: number; } ->obj2 : { x?: number | undefined; y?: number | undefined; } +>obj2 : { x?: number; y?: number; } >{ x: 1, y: 2 } : { x: number; y: number; } >x : number >1 : 1 @@ -299,9 +299,9 @@ function fx10(obj1: { x?: number }, obj2: { x?: number, y?: number }) { obj2 = obj1 = { x: 1, y: 2 }; >obj2 = obj1 = { x: 1, y: 2 } : { x: number; y: number; } ->obj2 : { x?: number | undefined; y?: number | undefined; } +>obj2 : { x?: number; y?: number; } >obj1 = { x: 1, y: 2 } : { x: number; y: number; } ->obj1 : { x?: number | undefined; } +>obj1 : { x?: number; } >{ x: 1, y: 2 } : { x: number; y: number; } >x : number >1 : 1 @@ -310,17 +310,17 @@ function fx10(obj1: { x?: number }, obj2: { x?: number, y?: number }) { } function fx11(): { x?: number } { ->fx11 : () => { x?: number | undefined; } +>fx11 : () => { x?: number; } >x : number | undefined let obj: { x?: number, y?: number }; ->obj : { x?: number | undefined; y?: number | undefined; } +>obj : { x?: number; y?: number; } >x : number | undefined >y : number | undefined return obj = { x: 1, y: 2 }; >obj = { x: 1, y: 2 } : { x: number; y: number; } ->obj : { x?: number | undefined; y?: number | undefined; } +>obj : { x?: number; y?: number; } >{ x: 1, y: 2 } : { x: number; y: number; } >x : number >1 : 1 @@ -358,7 +358,7 @@ function ff1(value: { [index: number]: boolean, length: number } | undefined) { } function ff2(value: { [index: number]: boolean, length: number } | string) { ->ff2 : (value: string | { [index: number]: boolean; length: number; }) => void +>ff2 : (value: { [index: number]: boolean; length: number; } | string) => void >value : string | { [index: number]: boolean; length: number; } >index : number >length : number @@ -380,7 +380,7 @@ function ff2(value: { [index: number]: boolean, length: number } | string) { } function ff3(value: string | string[] | { [index: number]: boolean, length: number } | [number, boolean] | number | { length: string } | { a: string } | null | undefined) { ->ff3 : (value: string | number | string[] | { [index: number]: boolean; length: number; } | { length: string; } | { a: string; } | [number, boolean] | null | undefined) => void +>ff3 : (value: string | string[] | { [index: number]: boolean; length: number; } | [number, boolean] | number | { length: string; } | { a: string; } | null | undefined) => void >value : string | number | string[] | { [index: number]: boolean; length: number; } | { length: string; } | { a: string; } | [number, boolean] | null | undefined >index : number >length : number @@ -430,7 +430,7 @@ type NarrowByDeepValue = DeepPathT extends readonly [ declare function doesValueAtDeepPathSatisfy< ->doesValueAtDeepPathSatisfy : (obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue +>doesValueAtDeepPathSatisfy : , ValueT>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue ObjT extends object, const DeepPathT extends ReadonlyArray, @@ -451,10 +451,10 @@ declare function doesValueAtDeepPathSatisfy< type Foo = {value: {type: 'A'}; a?: number} | {value: {type: 'B'}; b?: number}; >Foo : Foo ->value : { type: "A"; } +>value : { type: 'A'; } >type : "A" >a : number | undefined ->value : { type: "B"; } +>value : { type: 'B'; } >type : "B" >b : number | undefined @@ -471,9 +471,9 @@ declare function assert(condition: boolean): asserts condition; >condition : boolean function test1(foo: Foo): {value: {type: 'A'}; a?: number} { ->test1 : (foo: Foo) => { value: { type: "A"; }; a?: number | undefined; } +>test1 : (foo: Foo) => { value: { type: 'A'; }; a?: number; } >foo : Foo ->value : { type: "A"; } +>value : { type: 'A'; } >type : "A" >a : number | undefined @@ -481,7 +481,7 @@ function test1(foo: Foo): {value: {type: 'A'}; a?: number} { >assert(doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isA)) : void >assert : (condition: boolean) => asserts condition >doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isA) : boolean ->doesValueAtDeepPathSatisfy : (obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue +>doesValueAtDeepPathSatisfy : , ValueT>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue >foo : Foo >['value', 'type'] : ["value", "type"] >'value' : "value" @@ -489,13 +489,13 @@ function test1(foo: Foo): {value: {type: 'A'}; a?: number} { >isA : (arg: unknown) => arg is "A" return foo; ->foo : { value: { type: "A"; }; a?: number | undefined; } +>foo : { value: { type: 'A'; }; a?: number; } } function test2(foo: Foo): {value: {type: 'A'}; a?: number} { ->test2 : (foo: Foo) => { value: { type: "A"; }; a?: number | undefined; } +>test2 : (foo: Foo) => { value: { type: 'A'; }; a?: number; } >foo : Foo ->value : { type: "A"; } +>value : { type: 'A'; } >type : "A" >a : number | undefined @@ -504,7 +504,7 @@ function test2(foo: Foo): {value: {type: 'A'}; a?: number} { >assert : (condition: boolean) => asserts condition >!doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isB) : boolean >doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isB) : boolean ->doesValueAtDeepPathSatisfy : (obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue +>doesValueAtDeepPathSatisfy : , ValueT>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue >foo : Foo >['value', 'type'] : ["value", "type"] >'value' : "value" @@ -512,7 +512,7 @@ function test2(foo: Foo): {value: {type: 'A'}; a?: number} { >isB : (arg: unknown) => arg is "B" return foo; ->foo : { value: { type: "A"; }; a?: number | undefined; } +>foo : { value: { type: 'A'; }; a?: number; } } // Repro from #53063 diff --git a/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.types.diff b/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.types.diff index 73a03bf56a2..68a74df9885 100644 --- a/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.types.diff +++ b/testdata/baselines/reference/submodule/compiler/strictSubtypeAndNarrowing.types.diff @@ -1,136 +1,53 @@ --- old.strictSubtypeAndNarrowing.types +++ new.strictSubtypeAndNarrowing.types -@@= skipped -278, +278 lines =@@ - // Type of x = y is y with freshness preserved +@@= skipped -450, +450 lines =@@ - function fx10(obj1: { x?: number }, obj2: { x?: number, y?: number }) { -->fx10 : (obj1: { x?: number; }, obj2: { x?: number; y?: number; }) => void -->obj1 : { x?: number; } -+>fx10 : (obj1: { x?: number | undefined; }, obj2: { x?: number | undefined; y?: number | undefined; }) => void -+>obj1 : { x?: number | undefined; } - >x : number | undefined -->obj2 : { x?: number; y?: number; } -+>obj2 : { x?: number | undefined; y?: number | undefined; } - >x : number | undefined - >y : number | undefined + type Foo = {value: {type: 'A'}; a?: number} | {value: {type: 'B'}; b?: number}; + >Foo : Foo +->value : { type: "A"; } ++>value : { type: 'A'; } + >type : "A" + >a : number | undefined +->value : { type: "B"; } ++>value : { type: 'B'; } + >type : "B" + >b : number | undefined - obj1 = obj2 = { x: 1, y: 2 }; - >obj1 = obj2 = { x: 1, y: 2 } : { x: number; y: number; } -->obj1 : { x?: number; } -+>obj1 : { x?: number | undefined; } - >obj2 = { x: 1, y: 2 } : { x: number; y: number; } -->obj2 : { x?: number; y?: number; } -+>obj2 : { x?: number | undefined; y?: number | undefined; } - >{ x: 1, y: 2 } : { x: number; y: number; } - >x : number - >1 : 1 @@= skipped -20, +20 lines =@@ - - obj2 = obj1 = { x: 1, y: 2 }; - >obj2 = obj1 = { x: 1, y: 2 } : { x: number; y: number; } -->obj2 : { x?: number; y?: number; } -+>obj2 : { x?: number | undefined; y?: number | undefined; } - >obj1 = { x: 1, y: 2 } : { x: number; y: number; } -->obj1 : { x?: number; } -+>obj1 : { x?: number | undefined; } - >{ x: 1, y: 2 } : { x: number; y: number; } - >x : number - >1 : 1 -@@= skipped -11, +11 lines =@@ - } - - function fx11(): { x?: number } { -->fx11 : () => { x?: number; } -+>fx11 : () => { x?: number | undefined; } - >x : number | undefined - - let obj: { x?: number, y?: number }; -->obj : { x?: number; y?: number; } -+>obj : { x?: number | undefined; y?: number | undefined; } - >x : number | undefined - >y : number | undefined - - return obj = { x: 1, y: 2 }; - >obj = { x: 1, y: 2 } : { x: number; y: number; } -->obj : { x?: number; y?: number; } -+>obj : { x?: number | undefined; y?: number | undefined; } - >{ x: 1, y: 2 } : { x: number; y: number; } - >x : number - >1 : 1 -@@= skipped -48, +48 lines =@@ - } - - function ff2(value: { [index: number]: boolean, length: number } | string) { -->ff2 : (value: { [index: number]: boolean; length: number; } | string) => void -+>ff2 : (value: string | { [index: number]: boolean; length: number; }) => void - >value : string | { [index: number]: boolean; length: number; } - >index : number - >length : number -@@= skipped -22, +22 lines =@@ - } - - function ff3(value: string | string[] | { [index: number]: boolean, length: number } | [number, boolean] | number | { length: string } | { a: string } | null | undefined) { -->ff3 : (value: string | string[] | { [index: number]: boolean; length: number; } | [number, boolean] | number | { length: string; } | { a: string; } | null | undefined) => void -+>ff3 : (value: string | number | string[] | { [index: number]: boolean; length: number; } | { length: string; } | { a: string; } | [number, boolean] | null | undefined) => void - >value : string | number | string[] | { [index: number]: boolean; length: number; } | { length: string; } | { a: string; } | [number, boolean] | null | undefined - >index : number - >length : number -@@= skipped -50, +50 lines =@@ - - - declare function doesValueAtDeepPathSatisfy< -->doesValueAtDeepPathSatisfy : , ValueT>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue -+>doesValueAtDeepPathSatisfy : (obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue - - ObjT extends object, - const DeepPathT extends ReadonlyArray, -@@= skipped -41, +41 lines =@@ >condition : boolean function test1(foo: Foo): {value: {type: 'A'}; a?: number} { ->test1 : (foo: Foo) => { value: { type: "A"; }; a?: number; } -+>test1 : (foo: Foo) => { value: { type: "A"; }; a?: number | undefined; } ++>test1 : (foo: Foo) => { value: { type: 'A'; }; a?: number; } >foo : Foo - >value : { type: "A"; } +->value : { type: "A"; } ++>value : { type: 'A'; } >type : "A" -@@= skipped -10, +10 lines =@@ - >assert(doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isA)) : void - >assert : (condition: boolean) => asserts condition - >doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isA) : boolean -->doesValueAtDeepPathSatisfy : , ValueT>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue -+>doesValueAtDeepPathSatisfy : (obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue - >foo : Foo - >['value', 'type'] : ["value", "type"] - >'value' : "value" -@@= skipped -8, +8 lines =@@ + >a : number | undefined + +@@= skipped -18, +18 lines =@@ >isA : (arg: unknown) => arg is "A" return foo; ->foo : { value: { type: "A"; }; a?: number; } -+>foo : { value: { type: "A"; }; a?: number | undefined; } ++>foo : { value: { type: 'A'; }; a?: number; } } function test2(foo: Foo): {value: {type: 'A'}; a?: number} { ->test2 : (foo: Foo) => { value: { type: "A"; }; a?: number; } -+>test2 : (foo: Foo) => { value: { type: "A"; }; a?: number | undefined; } ++>test2 : (foo: Foo) => { value: { type: 'A'; }; a?: number; } >foo : Foo - >value : { type: "A"; } +->value : { type: "A"; } ++>value : { type: 'A'; } >type : "A" -@@= skipped -15, +15 lines =@@ - >assert : (condition: boolean) => asserts condition - >!doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isB) : boolean - >doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isB) : boolean -->doesValueAtDeepPathSatisfy : , ValueT>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue -+>doesValueAtDeepPathSatisfy : (obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue - >foo : Foo - >['value', 'type'] : ["value", "type"] - >'value' : "value" -@@= skipped -8, +8 lines =@@ + >a : number | undefined + +@@= skipped -23, +23 lines =@@ >isB : (arg: unknown) => arg is "B" return foo; ->foo : { value: { type: "A"; }; a?: number; } -+>foo : { value: { type: "A"; }; a?: number | undefined; } ++>foo : { value: { type: 'A'; }; a?: number; } } // Repro from #53063 diff --git a/testdata/baselines/reference/submodule/compiler/strictTypeofUnionNarrowing.types b/testdata/baselines/reference/submodule/compiler/strictTypeofUnionNarrowing.types index c26f7b23087..a9fdacc1680 100644 --- a/testdata/baselines/reference/submodule/compiler/strictTypeofUnionNarrowing.types +++ b/testdata/baselines/reference/submodule/compiler/strictTypeofUnionNarrowing.types @@ -37,7 +37,7 @@ function stringify2(anything: {} | undefined): string { } function stringify3(anything: unknown | undefined): string { // should simplify to just `unknown` which should narrow fine ->stringify3 : (anything: unknown) => string +>stringify3 : (anything: unknown | undefined) => string >anything : unknown return typeof anything === "string" ? anything.toUpperCase() : ""; diff --git a/testdata/baselines/reference/submodule/compiler/strictTypeofUnionNarrowing.types.diff b/testdata/baselines/reference/submodule/compiler/strictTypeofUnionNarrowing.types.diff deleted file mode 100644 index b4351b26973..00000000000 --- a/testdata/baselines/reference/submodule/compiler/strictTypeofUnionNarrowing.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.strictTypeofUnionNarrowing.types -+++ new.strictTypeofUnionNarrowing.types -@@= skipped -36, +36 lines =@@ - } - - function stringify3(anything: unknown | undefined): string { // should simplify to just `unknown` which should narrow fine -->stringify3 : (anything: unknown | undefined) => string -+>stringify3 : (anything: unknown) => string - >anything : unknown - - return typeof anything === "string" ? anything.toUpperCase() : ""; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/stringIncludes.types b/testdata/baselines/reference/submodule/compiler/stringIncludes.types index 1230a3da224..49688a74c13 100644 --- a/testdata/baselines/reference/submodule/compiler/stringIncludes.types +++ b/testdata/baselines/reference/submodule/compiler/stringIncludes.types @@ -8,18 +8,18 @@ includes = "abcde".includes("cd"); >includes = "abcde".includes("cd") : boolean >includes : boolean >"abcde".includes("cd") : boolean ->"abcde".includes : (searchString: string, position?: number | undefined) => boolean +>"abcde".includes : (searchString: string, position?: number) => boolean >"abcde" : "abcde" ->includes : (searchString: string, position?: number | undefined) => boolean +>includes : (searchString: string, position?: number) => boolean >"cd" : "cd" includes = "abcde".includes("cd", 2); >includes = "abcde".includes("cd", 2) : boolean >includes : boolean >"abcde".includes("cd", 2) : boolean ->"abcde".includes : (searchString: string, position?: number | undefined) => boolean +>"abcde".includes : (searchString: string, position?: number) => boolean >"abcde" : "abcde" ->includes : (searchString: string, position?: number | undefined) => boolean +>includes : (searchString: string, position?: number) => boolean >"cd" : "cd" >2 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/stringIncludes.types.diff b/testdata/baselines/reference/submodule/compiler/stringIncludes.types.diff deleted file mode 100644 index a612c6a0a80..00000000000 --- a/testdata/baselines/reference/submodule/compiler/stringIncludes.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.stringIncludes.types -+++ new.stringIncludes.types -@@= skipped -7, +7 lines =@@ - >includes = "abcde".includes("cd") : boolean - >includes : boolean - >"abcde".includes("cd") : boolean -->"abcde".includes : (searchString: string, position?: number) => boolean -+>"abcde".includes : (searchString: string, position?: number | undefined) => boolean - >"abcde" : "abcde" -->includes : (searchString: string, position?: number) => boolean -+>includes : (searchString: string, position?: number | undefined) => boolean - >"cd" : "cd" - - includes = "abcde".includes("cd", 2); - >includes = "abcde".includes("cd", 2) : boolean - >includes : boolean - >"abcde".includes("cd", 2) : boolean -->"abcde".includes : (searchString: string, position?: number) => boolean -+>"abcde".includes : (searchString: string, position?: number | undefined) => boolean - >"abcde" : "abcde" -->includes : (searchString: string, position?: number) => boolean -+>includes : (searchString: string, position?: number | undefined) => boolean - >"cd" : "cd" - >2 : 2 diff --git a/testdata/baselines/reference/submodule/compiler/stringPropCodeGen.types b/testdata/baselines/reference/submodule/compiler/stringPropCodeGen.types index 9cc6824066c..552a3026ba3 100644 --- a/testdata/baselines/reference/submodule/compiler/stringPropCodeGen.types +++ b/testdata/baselines/reference/submodule/compiler/stringPropCodeGen.types @@ -25,9 +25,9 @@ a.foo(); a.bar.toString(); >a.bar.toString() : string ->a.bar.toString : (radix?: number | undefined) => string +>a.bar.toString : (radix?: number) => string >a.bar : number >a : { foo: () => void; bar: number; } >bar : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/stringPropCodeGen.types.diff b/testdata/baselines/reference/submodule/compiler/stringPropCodeGen.types.diff deleted file mode 100644 index da415886674..00000000000 --- a/testdata/baselines/reference/submodule/compiler/stringPropCodeGen.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.stringPropCodeGen.types -+++ new.stringPropCodeGen.types -@@= skipped -24, +24 lines =@@ - - a.bar.toString(); - >a.bar.toString() : string -->a.bar.toString : (radix?: number) => string -+>a.bar.toString : (radix?: number | undefined) => string - >a.bar : number - >a : { foo: () => void; bar: number; } - >bar : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/stringRawType.types b/testdata/baselines/reference/submodule/compiler/stringRawType.types index d3ed44decc0..833020081f4 100644 --- a/testdata/baselines/reference/submodule/compiler/stringRawType.types +++ b/testdata/baselines/reference/submodule/compiler/stringRawType.types @@ -3,9 +3,9 @@ === stringRawType.ts === String.raw({ raw: ["foo", "bar", "baz"] }, 1, 2); >String.raw({ raw: ["foo", "bar", "baz"] }, 1, 2) : string ->String.raw : (template: { raw: ArrayLike | readonly string[]; }, ...substitutions: any[]) => string +>String.raw : (template: { raw: readonly string[] | ArrayLike; }, ...substitutions: any[]) => string >String : StringConstructor ->raw : (template: { raw: ArrayLike | readonly string[]; }, ...substitutions: any[]) => string +>raw : (template: { raw: readonly string[] | ArrayLike; }, ...substitutions: any[]) => string >{ raw: ["foo", "bar", "baz"] } : { raw: string[]; } >raw : string[] >["foo", "bar", "baz"] : string[] diff --git a/testdata/baselines/reference/submodule/compiler/stringRawType.types.diff b/testdata/baselines/reference/submodule/compiler/stringRawType.types.diff deleted file mode 100644 index 330696ea754..00000000000 --- a/testdata/baselines/reference/submodule/compiler/stringRawType.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.stringRawType.types -+++ new.stringRawType.types -@@= skipped -2, +2 lines =@@ - === stringRawType.ts === - String.raw({ raw: ["foo", "bar", "baz"] }, 1, 2); - >String.raw({ raw: ["foo", "bar", "baz"] }, 1, 2) : string -->String.raw : (template: { raw: readonly string[] | ArrayLike; }, ...substitutions: any[]) => string -+>String.raw : (template: { raw: ArrayLike | readonly string[]; }, ...substitutions: any[]) => string - >String : StringConstructor -->raw : (template: { raw: readonly string[] | ArrayLike; }, ...substitutions: any[]) => string -+>raw : (template: { raw: ArrayLike | readonly string[]; }, ...substitutions: any[]) => string - >{ raw: ["foo", "bar", "baz"] } : { raw: string[]; } - >raw : string[] - >["foo", "bar", "baz"] : string[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/stripMembersOptionality(exactoptionalpropertytypes=false).types b/testdata/baselines/reference/submodule/compiler/stripMembersOptionality(exactoptionalpropertytypes=false).types index ba8f75f724f..f75ad29afff 100644 --- a/testdata/baselines/reference/submodule/compiler/stripMembersOptionality(exactoptionalpropertytypes=false).types +++ b/testdata/baselines/reference/submodule/compiler/stripMembersOptionality(exactoptionalpropertytypes=false).types @@ -19,7 +19,7 @@ someVal.fn(""); >"" : "" declare const someVal2: Required<{ ->someVal2 : Required<{ fn?: ((key: string) => string | null) | undefined; }> +>someVal2 : Required<{ fn?: (key: string) => string | null; }> fn?: (key: string) => string | null; >fn : ((key: string) => string | null) | undefined @@ -29,7 +29,7 @@ declare const someVal2: Required<{ someVal2.fn(""); >someVal2.fn("") : string | null >someVal2.fn : (key: string) => string | null ->someVal2 : Required<{ fn?: ((key: string) => string | null) | undefined; }> +>someVal2 : Required<{ fn?: (key: string) => string | null; }> >fn : (key: string) => string | null >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/stripMembersOptionality(exactoptionalpropertytypes=false).types.diff b/testdata/baselines/reference/submodule/compiler/stripMembersOptionality(exactoptionalpropertytypes=false).types.diff deleted file mode 100644 index b7beff1fd33..00000000000 --- a/testdata/baselines/reference/submodule/compiler/stripMembersOptionality(exactoptionalpropertytypes=false).types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.stripMembersOptionality(exactoptionalpropertytypes=false).types -+++ new.stripMembersOptionality(exactoptionalpropertytypes=false).types -@@= skipped -18, +18 lines =@@ - >"" : "" - - declare const someVal2: Required<{ -->someVal2 : Required<{ fn?: (key: string) => string | null; }> -+>someVal2 : Required<{ fn?: ((key: string) => string | null) | undefined; }> - - fn?: (key: string) => string | null; - >fn : ((key: string) => string | null) | undefined -@@= skipped -10, +10 lines =@@ - someVal2.fn(""); - >someVal2.fn("") : string | null - >someVal2.fn : (key: string) => string | null -->someVal2 : Required<{ fn?: (key: string) => string | null; }> -+>someVal2 : Required<{ fn?: ((key: string) => string | null) | undefined; }> - >fn : (key: string) => string | null - >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.errors.txt b/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.errors.txt index 87d3266ff78..7a7bc1df1c4 100644 --- a/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.errors.txt @@ -3,7 +3,7 @@ styledComponentsInstantiaionLimitNotReached.ts(172,39): error TS2344: Type 'With Type 'StyledComponent' is not assignable to type 'ComponentType'. Type 'StyledComponent' is not assignable to type 'StatelessComponent'. Types of property 'propTypes' are incompatible. - Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. + Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: React.ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. Type 'WeakValidationMap & Partial>, "theme"> & { theme?: any; }>' is not assignable to type 'ValidationMap'. 'string' index signatures are incompatible. Type 'Validator | undefined' is not assignable to type 'Validator'. @@ -12,7 +12,7 @@ styledComponentsInstantiaionLimitNotReached.ts(172,39): error TS2344: Type 'With Type 'AnyStyledComponent' is not assignable to type 'StatelessComponent'. Type 'StyledComponent' is not assignable to type 'StatelessComponent'. Types of property 'propTypes' are incompatible. - Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. + Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: React.ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. Type 'WeakValidationMap & Partial>, "theme"> & { theme?: any; }>' is not assignable to type 'ValidationMap'. 'string' index signatures are incompatible. Type 'Validator | undefined' is not assignable to type 'Validator'. @@ -201,7 +201,7 @@ styledComponentsInstantiaionLimitNotReached.ts(195,65): error TS2344: Type 'AnyS !!! error TS2344: Type 'StyledComponent' is not assignable to type 'ComponentType'. !!! error TS2344: Type 'StyledComponent' is not assignable to type 'StatelessComponent'. !!! error TS2344: Types of property 'propTypes' are incompatible. -!!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. +!!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: React.ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. !!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & { theme?: any; }>' is not assignable to type 'ValidationMap'. !!! error TS2344: 'string' index signatures are incompatible. !!! error TS2344: Type 'Validator | undefined' is not assignable to type 'Validator'. @@ -210,7 +210,7 @@ styledComponentsInstantiaionLimitNotReached.ts(195,65): error TS2344: Type 'AnyS !!! error TS2344: Type 'AnyStyledComponent' is not assignable to type 'StatelessComponent'. !!! error TS2344: Type 'StyledComponent' is not assignable to type 'StatelessComponent'. !!! error TS2344: Types of property 'propTypes' are incompatible. -!!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. +!!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: React.ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. !!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & { theme?: any; }>' is not assignable to type 'ValidationMap'. !!! error TS2344: 'string' index signatures are incompatible. !!! error TS2344: Type 'Validator | undefined' is not assignable to type 'Validator'. diff --git a/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.errors.txt.diff new file mode 100644 index 00000000000..89cdaa2242a --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.errors.txt.diff @@ -0,0 +1,38 @@ +--- old.styledComponentsInstantiaionLimitNotReached.errors.txt ++++ new.styledComponentsInstantiaionLimitNotReached.errors.txt +@@= skipped -2, +2 lines =@@ + Type 'StyledComponent' is not assignable to type 'ComponentType'. + Type 'StyledComponent' is not assignable to type 'StatelessComponent'. + Types of property 'propTypes' are incompatible. +- Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. ++ Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: React.ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. + Type 'WeakValidationMap & Partial>, "theme"> & { theme?: any; }>' is not assignable to type 'ValidationMap'. + 'string' index signatures are incompatible. + Type 'Validator | undefined' is not assignable to type 'Validator'. +@@= skipped -9, +9 lines =@@ + Type 'AnyStyledComponent' is not assignable to type 'StatelessComponent'. + Type 'StyledComponent' is not assignable to type 'StatelessComponent'. + Types of property 'propTypes' are incompatible. +- Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. ++ Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: React.ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. + Type 'WeakValidationMap & Partial>, "theme"> & { theme?: any; }>' is not assignable to type 'ValidationMap'. + 'string' index signatures are incompatible. + Type 'Validator | undefined' is not assignable to type 'Validator'. +@@= skipped -189, +189 lines =@@ + !!! error TS2344: Type 'StyledComponent' is not assignable to type 'ComponentType'. + !!! error TS2344: Type 'StyledComponent' is not assignable to type 'StatelessComponent'. + !!! error TS2344: Types of property 'propTypes' are incompatible. +-!!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. ++!!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: React.ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. + !!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & { theme?: any; }>' is not assignable to type 'ValidationMap'. + !!! error TS2344: 'string' index signatures are incompatible. + !!! error TS2344: Type 'Validator | undefined' is not assignable to type 'Validator'. +@@= skipped -9, +9 lines =@@ + !!! error TS2344: Type 'AnyStyledComponent' is not assignable to type 'StatelessComponent'. + !!! error TS2344: Type 'StyledComponent' is not assignable to type 'StatelessComponent'. + !!! error TS2344: Types of property 'propTypes' are incompatible. +-!!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. ++!!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & ({ theme?: any; } | ({ theme?: any; } & { children?: React.ReactNode; }))> | undefined' is not assignable to type 'ValidationMap | undefined'. + !!! error TS2344: Type 'WeakValidationMap & Partial>, "theme"> & { theme?: any; }>' is not assignable to type 'ValidationMap'. + !!! error TS2344: 'string' index signatures are incompatible. + !!! error TS2344: Type 'Validator | undefined' is not assignable to type 'Validator'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.types b/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.types index c8708f8cdac..ba3120f932a 100644 --- a/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.types +++ b/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.types @@ -314,7 +314,7 @@ export interface StyledComponentBase< > extends ForwardRefExoticBase> { // add our own fake call signature to implement the polymorphic 'as' prop (props: StyledComponentProps & { as?: never; forwardedAs?: never }): React.ReactElement< ->props : StyledComponentProps & { as?: undefined; forwardedAs?: undefined; } +>props : StyledComponentProps & { as?: never; forwardedAs?: never; } >as : undefined >forwardedAs : undefined >React : any @@ -332,7 +332,7 @@ export interface StyledComponentBase< >React : any withComponent( ->withComponent : { (component: WithC): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; | keyof JSX.IntrinsicElements>(component: WithC): StyledComponent; } +>withComponent : { (component: WithC): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; >(component: WithC): StyledComponent; } component: WithC, >component : WithC @@ -344,7 +344,7 @@ export interface StyledComponentBase< A | StyledComponentInnerAttrs >; withComponent>( ->withComponent : { (component: WithC): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; | keyof JSX.IntrinsicElements>(component: WithC): StyledComponent; } +>withComponent : { (component: WithC): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; >(component: WithC): StyledComponent; } >JSX : any >React : any diff --git a/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.types.diff b/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.types.diff index d75cbfca7ae..d0a10ab6386 100644 --- a/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.types.diff +++ b/testdata/baselines/reference/submodule/compiler/styledComponentsInstantiaionLimitNotReached.types.diff @@ -1,20 +1,11 @@ --- old.styledComponentsInstantiaionLimitNotReached.types +++ new.styledComponentsInstantiaionLimitNotReached.types -@@= skipped -313, +313 lines =@@ - > extends ForwardRefExoticBase> { - // add our own fake call signature to implement the polymorphic 'as' prop - (props: StyledComponentProps & { as?: never; forwardedAs?: never }): React.ReactElement< -->props : StyledComponentProps & { as?: never; forwardedAs?: never; } -+>props : StyledComponentProps & { as?: undefined; forwardedAs?: undefined; } - >as : undefined - >forwardedAs : undefined - >React : any -@@= skipped -18, +18 lines =@@ +@@= skipped -331, +331 lines =@@ >React : any withComponent( ->withComponent : { (component: WithC): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; >(component: WithC_1): StyledComponent; } -+>withComponent : { (component: WithC): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; | keyof JSX.IntrinsicElements>(component: WithC): StyledComponent; } ++>withComponent : { (component: WithC): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; >(component: WithC): StyledComponent; } component: WithC, >component : WithC @@ -23,6 +14,6 @@ >; withComponent>( ->withComponent : { (component: WithC_1): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; >(component: WithC): StyledComponent; } -+>withComponent : { (component: WithC): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; | keyof JSX.IntrinsicElements>(component: WithC): StyledComponent; } ++>withComponent : { (component: WithC): StyledComponent, T, O & StyledComponentInnerOtherProps, A | StyledComponentInnerAttrs>; >(component: WithC): StyledComponent; } >JSX : any >React : any diff --git a/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.errors.txt b/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.errors.txt index e97bdfb5ac0..d3c65a9682b 100644 --- a/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.errors.txt @@ -4,7 +4,7 @@ tile1.ts(2,30): error TS2344: Type 'State' does not satisfy the constraint 'Life tile1.ts(6,81): error TS2744: Type parameter defaults can only reference previously declared type parameters. tile1.ts(11,40): error TS2344: Type 'State' does not satisfy the constraint 'Lifecycle'. tile1.ts(21,2): error TS2416: Property 'view' in type 'C' is not assignable to the same property in base type 'ClassComponent'. - Type '(v: Vnode>) => number' is not assignable to type '(vnode: Vnode) => number'. + Type '(v: Vnode) => number' is not assignable to type '(vnode: Vnode) => number'. Types of parameters 'v' and 'vnode' are incompatible. Type 'Vnode' is not assignable to type 'Vnode>'. Type 'this' is not assignable to type 'Lifecycle'. @@ -46,7 +46,7 @@ tile1.ts(24,7): error TS2322: Type 'C' is not assignable to type 'ClassComponent view(v: Vnode) { return 0; } ~~~~ !!! error TS2416: Property 'view' in type 'C' is not assignable to the same property in base type 'ClassComponent'. -!!! error TS2416: Type '(v: Vnode>) => number' is not assignable to type '(vnode: Vnode) => number'. +!!! error TS2416: Type '(v: Vnode) => number' is not assignable to type '(vnode: Vnode) => number'. !!! error TS2416: Types of parameters 'v' and 'vnode' are incompatible. !!! error TS2416: Type 'Vnode' is not assignable to type 'Vnode>'. !!! error TS2416: Type 'this' is not assignable to type 'Lifecycle'. diff --git a/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.errors.txt.diff new file mode 100644 index 00000000000..e32ed804b48 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.errors.txt.diff @@ -0,0 +1,20 @@ +--- old.subclassThisTypeAssignable01.errors.txt ++++ new.subclassThisTypeAssignable01.errors.txt +@@= skipped -3, +3 lines =@@ + tile1.ts(6,81): error TS2744: Type parameter defaults can only reference previously declared type parameters. + tile1.ts(11,40): error TS2344: Type 'State' does not satisfy the constraint 'Lifecycle'. + tile1.ts(21,2): error TS2416: Property 'view' in type 'C' is not assignable to the same property in base type 'ClassComponent'. +- Type '(v: Vnode>) => number' is not assignable to type '(vnode: Vnode) => number'. ++ Type '(v: Vnode) => number' is not assignable to type '(vnode: Vnode) => number'. + Types of parameters 'v' and 'vnode' are incompatible. + Type 'Vnode' is not assignable to type 'Vnode>'. + Type 'this' is not assignable to type 'Lifecycle'. +@@= skipped -42, +42 lines =@@ + view(v: Vnode) { return 0; } + ~~~~ + !!! error TS2416: Property 'view' in type 'C' is not assignable to the same property in base type 'ClassComponent'. +-!!! error TS2416: Type '(v: Vnode>) => number' is not assignable to type '(vnode: Vnode) => number'. ++!!! error TS2416: Type '(v: Vnode) => number' is not assignable to type '(vnode: Vnode) => number'. + !!! error TS2416: Types of parameters 'v' and 'vnode' are incompatible. + !!! error TS2416: Type 'Vnode' is not assignable to type 'Vnode>'. + !!! error TS2416: Type 'this' is not assignable to type 'Lifecycle'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.types b/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.types index 194d7c3af97..33d97a58d75 100644 --- a/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.types +++ b/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.types @@ -39,7 +39,7 @@ class C implements ClassComponent { >C : C view(v: Vnode) { return 0; } ->view : (v: Vnode>) => number +>view : (v: Vnode) => number >v : Vnode> >0 : 0 } diff --git a/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.types.diff b/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.types.diff deleted file mode 100644 index 27d0208fb0e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/subclassThisTypeAssignable01.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.subclassThisTypeAssignable01.types -+++ new.subclassThisTypeAssignable01.types -@@= skipped -38, +38 lines =@@ - >C : C - - view(v: Vnode) { return 0; } -->view : (v: Vnode) => number -+>view : (v: Vnode>) => number - >v : Vnode> - >0 : 0 - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/substitutionTypesInIndexedAccessTypes.types b/testdata/baselines/reference/submodule/compiler/substitutionTypesInIndexedAccessTypes.types index 3616f354b24..67c9005f681 100644 --- a/testdata/baselines/reference/submodule/compiler/substitutionTypesInIndexedAccessTypes.types +++ b/testdata/baselines/reference/submodule/compiler/substitutionTypesInIndexedAccessTypes.types @@ -15,17 +15,17 @@ type Subset = { [key in keyof T]: key extends keyof U ? T[key] : never }; >Subset : Subset declare function withBoundary(args?: Subset): T; ->withBoundary : (args?: Subset | undefined) => T +>withBoundary : (args?: Subset) => T >args : Subset | undefined declare function withoutBoundary(args?: T): T; ->withoutBoundary : (args?: T | undefined) => T +>withoutBoundary : (args?: T) => T >args : T | undefined const boundaryResult = withBoundary({ >boundaryResult : { select: true; } >withBoundary({ select: true,}) : { select: true; } ->withBoundary : (args?: Subset | undefined) => T +>withBoundary : (args?: Subset) => T >{ select: true,} : { select: true; } select: true, @@ -37,7 +37,7 @@ const boundaryResult = withBoundary({ const withoutBoundaryResult = withoutBoundary({ >withoutBoundaryResult : { select: true; } >withoutBoundary({ select: true,}) : { select: true; } ->withoutBoundary : (args?: T | undefined) => T +>withoutBoundary : (args?: T) => T >{ select: true,} : { select: true; } select: true, diff --git a/testdata/baselines/reference/submodule/compiler/substitutionTypesInIndexedAccessTypes.types.diff b/testdata/baselines/reference/submodule/compiler/substitutionTypesInIndexedAccessTypes.types.diff deleted file mode 100644 index bec6310d60b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/substitutionTypesInIndexedAccessTypes.types.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- old.substitutionTypesInIndexedAccessTypes.types -+++ new.substitutionTypesInIndexedAccessTypes.types -@@= skipped -14, +14 lines =@@ - >Subset : Subset - - declare function withBoundary(args?: Subset): T; -->withBoundary : (args?: Subset) => T -+>withBoundary : (args?: Subset | undefined) => T - >args : Subset | undefined - - declare function withoutBoundary(args?: T): T; -->withoutBoundary : (args?: T) => T -+>withoutBoundary : (args?: T | undefined) => T - >args : T | undefined - - const boundaryResult = withBoundary({ - >boundaryResult : { select: true; } - >withBoundary({ select: true,}) : { select: true; } -->withBoundary : (args?: Subset) => T -+>withBoundary : (args?: Subset | undefined) => T - >{ select: true,} : { select: true; } - - select: true, -@@= skipped -22, +22 lines =@@ - const withoutBoundaryResult = withoutBoundary({ - >withoutBoundaryResult : { select: true; } - >withoutBoundary({ select: true,}) : { select: true; } -->withoutBoundary : (args?: T) => T -+>withoutBoundary : (args?: T | undefined) => T - >{ select: true,} : { select: true; } - - select: true, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types b/testdata/baselines/reference/submodule/compiler/symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types index d744e244f93..5478b0aee9c 100644 --- a/testdata/baselines/reference/submodule/compiler/symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types +++ b/testdata/baselines/reference/submodule/compiler/symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types @@ -19,7 +19,7 @@ import { create } from "package-a"; >create : () => import("package-a/cls").Foo export declare function invoke(): ReturnType; ->invoke : () => import("package-a/cls").Foo +>invoke : () => ReturnType >create : () => import("package-a/cls").Foo === workspace/packageC/index.ts === @@ -29,7 +29,7 @@ import * as pkg from "package-b"; export const a = pkg.invoke(); >a : import("package-a/cls").Foo >pkg.invoke() : import("package-a/cls").Foo ->pkg.invoke : () => import("package-a/cls").Foo +>pkg.invoke : () => ReturnType<() => import("package-a/cls").Foo> >pkg : typeof pkg ->invoke : () => import("package-a/cls").Foo +>invoke : () => ReturnType<() => import("package-a/cls").Foo> diff --git a/testdata/baselines/reference/submodule/compiler/symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types.diff b/testdata/baselines/reference/submodule/compiler/symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types.diff index 0e1b05d4676..59235abf797 100644 --- a/testdata/baselines/reference/submodule/compiler/symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types.diff +++ b/testdata/baselines/reference/submodule/compiler/symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types.diff @@ -1,20 +1,11 @@ --- old.symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types +++ new.symlinkedWorkspaceDependenciesNoDirectLinkGeneratesDeepNonrelativeName.types -@@= skipped -18, +18 lines =@@ - >create : () => import("package-a/cls").Foo - - export declare function invoke(): ReturnType; -->invoke : () => ReturnType -+>invoke : () => import("package-a/cls").Foo - >create : () => import("package-a/cls").Foo - - === workspace/packageC/index.ts === -@@= skipped -10, +10 lines =@@ +@@= skipped -28, +28 lines =@@ export const a = pkg.invoke(); >a : import("package-a/cls").Foo >pkg.invoke() : import("package-a/cls").Foo ->pkg.invoke : () => ReturnType -+>pkg.invoke : () => import("package-a/cls").Foo ++>pkg.invoke : () => ReturnType<() => import("package-a/cls").Foo> >pkg : typeof pkg ->invoke : () => ReturnType -+>invoke : () => import("package-a/cls").Foo ++>invoke : () => ReturnType<() => import("package-a/cls").Foo> diff --git a/testdata/baselines/reference/submodule/compiler/targetTypeVoidFunc.types b/testdata/baselines/reference/submodule/compiler/targetTypeVoidFunc.types index 343e8d4832b..134cb971e9e 100644 --- a/testdata/baselines/reference/submodule/compiler/targetTypeVoidFunc.types +++ b/testdata/baselines/reference/submodule/compiler/targetTypeVoidFunc.types @@ -2,7 +2,7 @@ === targetTypeVoidFunc.ts === function f1(): { new (): number; } { ->f1 : () => new () => number +>f1 : () => { new (): number; } return function () { return; } >function () { return; } : () => void @@ -12,7 +12,7 @@ function f1(): { new (): number; } { var x = f1(); >x : new () => number >f1() : new () => number ->f1 : () => new () => number +>f1 : () => { new (): number; } var y = new x(); >y : number @@ -24,5 +24,5 @@ var z = new (f1())(); >new (f1())() : number >(f1()) : new () => number >f1() : new () => number ->f1 : () => new () => number +>f1 : () => { new (): number; } diff --git a/testdata/baselines/reference/submodule/compiler/targetTypeVoidFunc.types.diff b/testdata/baselines/reference/submodule/compiler/targetTypeVoidFunc.types.diff deleted file mode 100644 index 91ce78e64db..00000000000 --- a/testdata/baselines/reference/submodule/compiler/targetTypeVoidFunc.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.targetTypeVoidFunc.types -+++ new.targetTypeVoidFunc.types -@@= skipped -1, +1 lines =@@ - - === targetTypeVoidFunc.ts === - function f1(): { new (): number; } { -->f1 : () => { new (): number; } -+>f1 : () => new () => number - - return function () { return; } - >function () { return; } : () => void -@@= skipped -10, +10 lines =@@ - var x = f1(); - >x : new () => number - >f1() : new () => number -->f1 : () => { new (): number; } -+>f1 : () => new () => number - - var y = new x(); - >y : number -@@= skipped -12, +12 lines =@@ - >new (f1())() : number - >(f1()) : new () => number - >f1() : new () => number -->f1 : () => { new (): number; } -+>f1 : () => new () => number diff --git a/testdata/baselines/reference/submodule/compiler/templateLiteralIntersection2.types b/testdata/baselines/reference/submodule/compiler/templateLiteralIntersection2.types index bb08b7c650e..60e800871fc 100644 --- a/testdata/baselines/reference/submodule/compiler/templateLiteralIntersection2.types +++ b/testdata/baselines/reference/submodule/compiler/templateLiteralIntersection2.types @@ -9,12 +9,12 @@ type JoinedPath = `${Path}/${Path}`; >JoinedPath : `${Path}/${Path}` declare function joinedPath(p: JoinedPath): void; ->joinedPath : (p: `${Path}/${Path}`) => void +>joinedPath : (p: JoinedPath) => void >p : `${Path}/${Path}` joinedPath("foo/bar"); >joinedPath("foo/bar") : void ->joinedPath : (p: `${Path}/${Path}`) => void +>joinedPath : (p: JoinedPath) => void >"foo/bar" : "foo/bar" declare const somePath: Path; @@ -22,7 +22,7 @@ declare const somePath: Path; joinedPath(`${somePath}/${somePath}`); >joinedPath(`${somePath}/${somePath}`) : void ->joinedPath : (p: `${Path}/${Path}`) => void +>joinedPath : (p: JoinedPath) => void >`${somePath}/${somePath}` : `${Path}/${Path}` >somePath : Path >somePath : Path @@ -36,31 +36,31 @@ type EndsWithA = `${string}a`; declare function withinAs(p: StartsWithA & EndsWithA): void; ->withinAs : (p: `a${string}` & `${string}a`) => void +>withinAs : (p: StartsWithA & EndsWithA) => void >p : `a${string}` & `${string}a` withinAs(""); >withinAs("") : void ->withinAs : (p: `a${string}` & `${string}a`) => void +>withinAs : (p: StartsWithA & EndsWithA) => void >"" : "" withinAs("a"); >withinAs("a") : void ->withinAs : (p: `a${string}` & `${string}a`) => void +>withinAs : (p: StartsWithA & EndsWithA) => void >"a" : "a" withinAs("ab"); >withinAs("ab") : void ->withinAs : (p: `a${string}` & `${string}a`) => void +>withinAs : (p: StartsWithA & EndsWithA) => void >"ab" : "ab" withinAs("aba"); >withinAs("aba") : void ->withinAs : (p: `a${string}` & `${string}a`) => void +>withinAs : (p: StartsWithA & EndsWithA) => void >"aba" : "aba" withinAs("abavvvva"); >withinAs("abavvvva") : void ->withinAs : (p: `a${string}` & `${string}a`) => void +>withinAs : (p: StartsWithA & EndsWithA) => void >"abavvvva" : "abavvvva" diff --git a/testdata/baselines/reference/submodule/compiler/templateLiteralIntersection2.types.diff b/testdata/baselines/reference/submodule/compiler/templateLiteralIntersection2.types.diff deleted file mode 100644 index 0e357315342..00000000000 --- a/testdata/baselines/reference/submodule/compiler/templateLiteralIntersection2.types.diff +++ /dev/null @@ -1,63 +0,0 @@ ---- old.templateLiteralIntersection2.types -+++ new.templateLiteralIntersection2.types -@@= skipped -8, +8 lines =@@ - >JoinedPath : `${Path}/${Path}` - - declare function joinedPath(p: JoinedPath): void; -->joinedPath : (p: JoinedPath) => void -+>joinedPath : (p: `${Path}/${Path}`) => void - >p : `${Path}/${Path}` - - joinedPath("foo/bar"); - >joinedPath("foo/bar") : void -->joinedPath : (p: JoinedPath) => void -+>joinedPath : (p: `${Path}/${Path}`) => void - >"foo/bar" : "foo/bar" - - declare const somePath: Path; -@@= skipped -13, +13 lines =@@ - - joinedPath(`${somePath}/${somePath}`); - >joinedPath(`${somePath}/${somePath}`) : void -->joinedPath : (p: JoinedPath) => void -+>joinedPath : (p: `${Path}/${Path}`) => void - >`${somePath}/${somePath}` : `${Path}/${Path}` - >somePath : Path - >somePath : Path -@@= skipped -14, +14 lines =@@ - - - declare function withinAs(p: StartsWithA & EndsWithA): void; -->withinAs : (p: StartsWithA & EndsWithA) => void -+>withinAs : (p: `a${string}` & `${string}a`) => void - >p : `a${string}` & `${string}a` - - withinAs(""); - >withinAs("") : void -->withinAs : (p: StartsWithA & EndsWithA) => void -+>withinAs : (p: `a${string}` & `${string}a`) => void - >"" : "" - - withinAs("a"); - >withinAs("a") : void -->withinAs : (p: StartsWithA & EndsWithA) => void -+>withinAs : (p: `a${string}` & `${string}a`) => void - >"a" : "a" - - withinAs("ab"); - >withinAs("ab") : void -->withinAs : (p: StartsWithA & EndsWithA) => void -+>withinAs : (p: `a${string}` & `${string}a`) => void - >"ab" : "ab" - - withinAs("aba"); - >withinAs("aba") : void -->withinAs : (p: StartsWithA & EndsWithA) => void -+>withinAs : (p: `a${string}` & `${string}a`) => void - >"aba" : "aba" - - withinAs("abavvvva"); - >withinAs("abavvvva") : void -->withinAs : (p: StartsWithA & EndsWithA) => void -+>withinAs : (p: `a${string}` & `${string}a`) => void - >"abavvvva" : "abavvvva" diff --git a/testdata/baselines/reference/submodule/compiler/temporal.types b/testdata/baselines/reference/submodule/compiler/temporal.types index 5783c2dc940..39088d06c4f 100644 --- a/testdata/baselines/reference/submodule/compiler/temporal.types +++ b/testdata/baselines/reference/submodule/compiler/temporal.types @@ -304,9 +304,9 @@ sorted.join(" "); >sorted.join(" ") : string ->sorted.join : (separator?: string | undefined) => string +>sorted.join : (separator?: string) => string >sorted : Temporal.Instant[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >" " : " " // => '2001-09-09T01:46:40Z 2004-11-09T11:33:20Z 2008-01-10T21:20:00Z' @@ -565,9 +565,9 @@ const missionLength = startOfMoonMission.until(endOfMoonMission, { largestUnit: "hour" }); >missionLength : Temporal.Duration >startOfMoonMission.until(endOfMoonMission, { largestUnit: "hour" }) : Temporal.Duration ->startOfMoonMission.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>startOfMoonMission.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startOfMoonMission : Temporal.Instant ->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >endOfMoonMission : Temporal.Instant >{ largestUnit: "hour" } : { largestUnit: "hour"; } >largestUnit : "hour" @@ -576,9 +576,9 @@ // => PT195H18M35S missionLength.toLocaleString(); >missionLength.toLocaleString() : string ->missionLength.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>missionLength.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string >missionLength : Temporal.Duration ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string // example output: '195 hours 18 minutes 35 seconds' @@ -586,9 +586,9 @@ const approxMissionLength = startOfMoonMission.until(endOfMoonMission, { >approxMissionLength : Temporal.Duration >startOfMoonMission.until(endOfMoonMission, { largestUnit: "hour", smallestUnit: "hour", }) : Temporal.Duration ->startOfMoonMission.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>startOfMoonMission.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startOfMoonMission : Temporal.Instant ->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >endOfMoonMission : Temporal.Instant >{ largestUnit: "hour", smallestUnit: "hour", } : { largestUnit: "hour"; smallestUnit: "hour"; } @@ -626,17 +626,17 @@ epoch.until(billion); >epoch.until(billion) : Temporal.Duration ->epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >epoch : Temporal.Instant ->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >billion : Temporal.Instant // => PT1000000000S epoch.until(billion, { largestUnit: "hour" }); >epoch.until(billion, { largestUnit: "hour" }) : Temporal.Duration ->epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >epoch : Temporal.Instant ->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >billion : Temporal.Instant >{ largestUnit: "hour" } : { largestUnit: "hour"; } >largestUnit : "hour" @@ -646,9 +646,9 @@ const ns = epoch.until(billion, { largestUnit: "nanosecond" }); >ns : Temporal.Duration >epoch.until(billion, { largestUnit: "nanosecond" }) : Temporal.Duration ->epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >epoch : Temporal.Instant ->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >billion : Temporal.Instant >{ largestUnit: "nanosecond" } : { largestUnit: "nanosecond"; } >largestUnit : "nanosecond" @@ -671,13 +671,13 @@ // explicitly using the corresponding calendar date in UTC: epoch.toZonedDateTimeISO("UTC").until( >epoch.toZonedDateTimeISO("UTC").until( billion.toZonedDateTimeISO("UTC"), { largestUnit: "year" }, ) : Temporal.Duration ->epoch.toZonedDateTimeISO("UTC").until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>epoch.toZonedDateTimeISO("UTC").until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >epoch.toZonedDateTimeISO("UTC") : Temporal.ZonedDateTime >epoch.toZonedDateTimeISO : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >epoch : Temporal.Instant >toZonedDateTimeISO : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >"UTC" : "UTC" ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration billion.toZonedDateTimeISO("UTC"), >billion.toZonedDateTimeISO("UTC") : Temporal.ZonedDateTime @@ -795,15 +795,15 @@ instant.toString(); // => '2019-11-18T10:52:01.816Z' >instant.toString() : string ->instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>instant.toString : (options?: Temporal.InstantToStringOptions) => string >instant : Temporal.Instant ->toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>toString : (options?: Temporal.InstantToStringOptions) => string instant.toString({ timeZone: "UTC" }); >instant.toString({ timeZone: "UTC" }) : string ->instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>instant.toString : (options?: Temporal.InstantToStringOptions) => string >instant : Temporal.Instant ->toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>toString : (options?: Temporal.InstantToStringOptions) => string >{ timeZone: "UTC" } : { timeZone: string; } >timeZone : string >"UTC" : "UTC" @@ -811,9 +811,9 @@ // => '2019-11-18T10:52:01.816+00:00' instant.toString({ timeZone: "Asia/Seoul" }); >instant.toString({ timeZone: "Asia/Seoul" }) : string ->instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>instant.toString : (options?: Temporal.InstantToStringOptions) => string >instant : Temporal.Instant ->toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>toString : (options?: Temporal.InstantToStringOptions) => string >{ timeZone: "Asia/Seoul" } : { timeZone: string; } >timeZone : string >"Asia/Seoul" : "Asia/Seoul" @@ -822,9 +822,9 @@ instant.toString({ smallestUnit: "minute" }); >instant.toString({ smallestUnit: "minute" }) : string ->instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>instant.toString : (options?: Temporal.InstantToStringOptions) => string >instant : Temporal.Instant ->toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>toString : (options?: Temporal.InstantToStringOptions) => string >{ smallestUnit: "minute" } : { smallestUnit: "minute"; } >smallestUnit : "minute" >"minute" : "minute" @@ -832,9 +832,9 @@ // => '2019-11-18T10:52Z' instant.toString({ fractionalSecondDigits: 0 }); >instant.toString({ fractionalSecondDigits: 0 }) : string ->instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>instant.toString : (options?: Temporal.InstantToStringOptions) => string >instant : Temporal.Instant ->toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>toString : (options?: Temporal.InstantToStringOptions) => string >{ fractionalSecondDigits: 0 } : { fractionalSecondDigits: 0; } >fractionalSecondDigits : 0 >0 : 0 @@ -842,9 +842,9 @@ // => '2019-11-18T10:52:01Z' instant.toString({ fractionalSecondDigits: 4 }); >instant.toString({ fractionalSecondDigits: 4 }) : string ->instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>instant.toString : (options?: Temporal.InstantToStringOptions) => string >instant : Temporal.Instant ->toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>toString : (options?: Temporal.InstantToStringOptions) => string >{ fractionalSecondDigits: 4 } : { fractionalSecondDigits: 4; } >fractionalSecondDigits : 4 >4 : 4 @@ -852,9 +852,9 @@ // => '2019-11-18T10:52:01.8160Z' instant.toString({ smallestUnit: "second", roundingMode: "halfExpand" }); >instant.toString({ smallestUnit: "second", roundingMode: "halfExpand" }) : string ->instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>instant.toString : (options?: Temporal.InstantToStringOptions) => string >instant : Temporal.Instant ->toString : (options?: Temporal.InstantToStringOptions | undefined) => string +>toString : (options?: Temporal.InstantToStringOptions) => string >{ smallestUnit: "second", roundingMode: "halfExpand" } : { smallestUnit: "second"; roundingMode: "halfExpand"; } >smallestUnit : "second" >"second" : "second" @@ -877,22 +877,22 @@ instant.toLocaleString(); // example output: '2019-11-18, 3:00:00 a.m.' >instant.toLocaleString() : string ->instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >instant : Temporal.Instant ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string instant.toLocaleString("de-DE"); // example output: '18.11.2019, 03:00:00' >instant.toLocaleString("de-DE") : string ->instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >instant : Temporal.Instant ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" instant.toLocaleString("de-DE", { >instant.toLocaleString("de-DE", { timeZone: "Europe/Berlin", year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", timeZoneName: "long", }) : string ->instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >instant : Temporal.Instant ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >{ timeZone: "Europe/Berlin", year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", timeZoneName: "long", } : { timeZone: string; year: "numeric"; month: "numeric"; day: "numeric"; hour: "numeric"; minute: "numeric"; timeZoneName: "long"; } @@ -927,9 +927,9 @@ }); // => '18.11.2019, 12:00 Mitteleuropäische Normalzeit' instant.toLocaleString("en-US-u-nu-fullwide-hc-h12", { >instant.toLocaleString("en-US-u-nu-fullwide-hc-h12", { timeZone: "Asia/Kolkata", }) : string ->instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >instant : Temporal.Instant ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en-US-u-nu-fullwide-hc-h12" : "en-US-u-nu-fullwide-hc-h12" >{ timeZone: "Asia/Kolkata", } : { timeZone: string; } @@ -973,44 +973,44 @@ >zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo]") : Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30+02:00[Africa/Cairo]" : "1995-12-07T03:24:30+02:00[Africa/Cairo]" zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]"); >zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]") : Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]" : "1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]" zdt = Temporal.ZonedDateTime.from("19951207T032430+0200[Africa/Cairo]"); >zdt = Temporal.ZonedDateTime.from("19951207T032430+0200[Africa/Cairo]") : Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("19951207T032430+0200[Africa/Cairo]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"19951207T032430+0200[Africa/Cairo]" : "19951207T032430+0200[Africa/Cairo]" zdt = Temporal.ZonedDateTime.from({ >zdt = Temporal.ZonedDateTime.from({ timeZone: "America/Los_Angeles", year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, }) : Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from({ timeZone: "America/Los_Angeles", year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, }) : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >{ timeZone: "America/Los_Angeles", year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, } : { timeZone: string; year: number; month: number; day: number; hour: number; minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } timeZone: "America/Los_Angeles", @@ -1060,11 +1060,11 @@ >zdt = Temporal.ZonedDateTime.from({ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from({ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >{ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 } : { timeZone: string; year: number; month: number; day: number; } >timeZone : string >"Europe/Paris" : "Europe/Paris" @@ -1083,11 +1083,11 @@ >zdt = Temporal.ZonedDateTime.from({ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from({ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >{ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 } : { timeZone: string; year: number; month: number; day: number; } >timeZone : string >"Europe/Paris" : "Europe/Paris" @@ -1111,38 +1111,38 @@ Temporal.ZonedDateTime.from("2020-02-01T12:30-05:00[America/Toronto]"), >Temporal.ZonedDateTime.from("2020-02-01T12:30-05:00[America/Toronto]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-02-01T12:30-05:00[America/Toronto]" : "2020-02-01T12:30-05:00[America/Toronto]" Temporal.ZonedDateTime.from("2020-02-01T12:30-05:00[America/New_York]"), >Temporal.ZonedDateTime.from("2020-02-01T12:30-05:00[America/New_York]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-02-01T12:30-05:00[America/New_York]" : "2020-02-01T12:30-05:00[America/New_York]" Temporal.ZonedDateTime.from("2020-02-01T12:30+01:00[Europe/Brussels]"), >Temporal.ZonedDateTime.from("2020-02-01T12:30+01:00[Europe/Brussels]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-02-01T12:30+01:00[Europe/Brussels]" : "2020-02-01T12:30+01:00[Europe/Brussels]" Temporal.ZonedDateTime.from("2020-02-01T12:30+00:00[Europe/London]"), >Temporal.ZonedDateTime.from("2020-02-01T12:30+00:00[Europe/London]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-02-01T12:30+00:00[Europe/London]" : "2020-02-01T12:30+00:00[Europe/London]" ]; @@ -1160,9 +1160,9 @@ JSON.stringify(sorted, undefined, 2); >JSON.stringify(sorted, undefined, 2) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >sorted : Temporal.ZonedDateTime[] >undefined : undefined >2 : 2 @@ -1180,11 +1180,11 @@ const dt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500[Europe/Rome]"); >dt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500[Europe/Rome]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30.000003500[Europe/Rome]" : "1995-12-07T03:24:30.000003500[Europe/Rome]" dt.year; // => 1995 @@ -1242,11 +1242,11 @@ const zdt = Temporal.ZonedDateTime.from("2020-02-01T12:30+09:00[Asia/Tokyo]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-02-01T12:30+09:00[Asia/Tokyo]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-02-01T12:30+09:00[Asia/Tokyo]" : "2020-02-01T12:30+09:00[Asia/Tokyo]" const epochMs = zdt.epochMilliseconds; @@ -1329,11 +1329,11 @@ const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24-08:00[America/Los_Angeles]" : "1995-12-07T03:24-08:00[America/Los_Angeles]" `Time zone is: ${zdt.timeZoneId}`; @@ -1411,11 +1411,11 @@ const date = Temporal.ZonedDateTime.from("-000015-01-01T12:30[Europe/Rome][u-ca=gregory]"); >date : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("-000015-01-01T12:30[Europe/Rome][u-ca=gregory]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"-000015-01-01T12:30[Europe/Rome][u-ca=gregory]" : "-000015-01-01T12:30[Europe/Rome][u-ca=gregory]" date.era; @@ -1442,11 +1442,11 @@ const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24-08:00[America/Los_Angeles]" : "1995-12-07T03:24-08:00[America/Los_Angeles]" ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"][zdt.dayOfWeek - 1]; // => 'THU' @@ -1470,11 +1470,11 @@ const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24-08:00[America/Los_Angeles]" : "1995-12-07T03:24-08:00[America/Los_Angeles]" // ISO ordinal date @@ -1495,11 +1495,11 @@ const zdt = Temporal.ZonedDateTime.from("2022-01-01T03:24-08:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2022-01-01T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2022-01-01T03:24-08:00[America/Los_Angeles]" : "2022-01-01T03:24-08:00[America/Los_Angeles]" // ISO week date @@ -1523,11 +1523,11 @@ const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24-08:00[America/Los_Angeles]" : "1995-12-07T03:24-08:00[America/Los_Angeles]" zdt.daysInWeek; // => 7 @@ -1555,14 +1555,14 @@ const zdt = Temporal.Now.zonedDateTimeISO().with({ month }); >zdt : Temporal.ZonedDateTime >Temporal.Now.zonedDateTimeISO().with({ month }) : Temporal.ZonedDateTime ->Temporal.Now.zonedDateTimeISO().with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.Now.zonedDateTimeISO().with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.Now.zonedDateTimeISO() : Temporal.ZonedDateTime ->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime +>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime ->with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime +>with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >{ month } : { month: number; } >month : number @@ -1598,9 +1598,9 @@ >zdt => zdt.toLocaleString("en", { month: "long" }) : (zdt: Temporal.ZonedDateTime) => string >zdt : Temporal.ZonedDateTime >zdt.toLocaleString("en", { month: "long" }) : string ->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >zdt : Temporal.ZonedDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en" : "en" >{ month: "long" } : { month: "long"; } >month : "long" @@ -1621,9 +1621,9 @@ const format = new Intl.ListFormat("en"); >format : Intl.ListFormat >new Intl.ListFormat("en") : Intl.ListFormat ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >"en" : "en" const poem = `Thirty days hath ${format.format(strings)}`; @@ -1647,11 +1647,11 @@ const zdt = Temporal.Now.zonedDateTimeISO(); >zdt : Temporal.ZonedDateTime >Temporal.Now.zonedDateTimeISO() : Temporal.ZonedDateTime ->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime +>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime +>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime const percent = zdt.dayOfYear / zdt.daysInYear; >percent : number @@ -1666,9 +1666,9 @@ `The year is ${percent.toLocaleString("en", { style: "percent" })} over!`; >`The year is ${percent.toLocaleString("en", { style: "percent" })} over!` : string >percent.toLocaleString("en", { style: "percent" }) : string ->percent.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>percent.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >percent : number ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >"en" : "en" >{ style: "percent" } : { style: "percent"; } >style : "percent" @@ -1681,11 +1681,11 @@ const zdt = Temporal.ZonedDateTime.from("1900-01-01T12:00+09:00[Asia/Tokyo]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1900-01-01T12:00+09:00[Asia/Tokyo]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1900-01-01T12:00+09:00[Asia/Tokyo]" : "1900-01-01T12:00+09:00[Asia/Tokyo]" zdt.monthsInYear; // => 12 @@ -1699,11 +1699,11 @@ const zdt = Temporal.Now.zonedDateTimeISO(); >zdt : Temporal.ZonedDateTime >Temporal.Now.zonedDateTimeISO() : Temporal.ZonedDateTime ->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime +>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime +>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime zdt.inLeapYear; // example output: true >zdt.inLeapYear : boolean @@ -1714,9 +1714,9 @@ zdt.with({ year: 2100 }).inLeapYear; // => false >zdt.with({ year: 2100 }).inLeapYear : boolean >zdt.with({ year: 2100 }) : Temporal.ZonedDateTime ->zdt.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>zdt.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >{ year: 2100 } : { year: number; } >year : number >2100 : 2100 @@ -1727,11 +1727,11 @@ const zdt = Temporal.ZonedDateTime.from("2010-11-07T23:00:00-03:30[America/St_Johns]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2010-11-07T23:00:00-03:30[America/St_Johns]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2010-11-07T23:00:00-03:30[America/St_Johns]" : "2010-11-07T23:00:00-03:30[America/St_Johns]" zdt.hoursInDay; // 25 @@ -1744,11 +1744,11 @@ const zdt = Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-11-01T01:30-07:00[America/Los_Angeles]" : "2020-11-01T01:30-07:00[America/Los_Angeles]" zdt.offsetNanoseconds; @@ -1764,11 +1764,11 @@ const zdt = Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-11-01T01:30-07:00[America/Los_Angeles]" : "2020-11-01T01:30-07:00[America/Los_Angeles]" zdt.offset; @@ -1795,11 +1795,11 @@ const daylightTime0130 = Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]"); >daylightTime0130 : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-11-01T01:30-07:00[America/Los_Angeles]" : "2020-11-01T01:30-07:00[America/Los_Angeles]" // => 2020-11-01T01:30:00-07:00[America/Los_Angeles] @@ -1807,9 +1807,9 @@ const repeated0130 = daylightTime0130.with({ offset: minus8Hours }); >repeated0130 : Temporal.ZonedDateTime >daylightTime0130.with({ offset: minus8Hours }) : Temporal.ZonedDateTime ->daylightTime0130.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>daylightTime0130.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >daylightTime0130 : Temporal.ZonedDateTime ->with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >{ offset: minus8Hours } : { offset: string; } >offset : string >minus8Hours : "-08:00" @@ -1822,18 +1822,18 @@ const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:00-06:00[America/Chicago]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:00-06:00[America/Chicago]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:00-06:00[America/Chicago]" : "1995-12-07T03:24:00-06:00[America/Chicago]" zdt.with({ year: 2015, minute: 31 }); // => 2015-12-07T03:31:00-06:00[America/Chicago] >zdt.with({ year: 2015, minute: 31 }) : Temporal.ZonedDateTime ->zdt.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>zdt.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >{ year: 2015, minute: 31 } : { year: number; minute: number; } >year : number >2015 : 2015 @@ -1845,18 +1845,18 @@ const zdt = Temporal.ZonedDateTime.from("2015-12-07T03:24:30.000003500-08:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2015-12-07T03:24:30.000003500-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2015-12-07T03:24:30.000003500-08:00[America/Los_Angeles]" : "2015-12-07T03:24:30.000003500-08:00[America/Los_Angeles]" zdt.withPlainTime({ hour: 10 }); // => 2015-12-07T10:00:00-08:00[America/Los_Angeles] >zdt.withPlainTime({ hour: 10 }) : Temporal.ZonedDateTime ->zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >{ hour: 10 } : { hour: number; } >hour : number >10 : 10 @@ -1864,41 +1864,41 @@ const time = Temporal.PlainTime.from("11:22"); >time : Temporal.PlainTime >Temporal.PlainTime.from("11:22") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"11:22" : "11:22" zdt.withPlainTime(time); // => 2015-12-07T11:22:00-08:00[America/Los_Angeles] >zdt.withPlainTime(time) : Temporal.ZonedDateTime ->zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >time : Temporal.PlainTime zdt.withPlainTime("12:34"); // => 2015-12-07T12:34:00-08:00[America/Los_Angeles] >zdt.withPlainTime("12:34") : Temporal.ZonedDateTime ->zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >"12:34" : "12:34" // easier for chaining zdt.add({ days: 2, hours: 22 }).withPlainTime("00:00"); // => 2015-12-10T00:00:00-08:00[America/Los_Angeles] >zdt.add({ days: 2, hours: 22 }).withPlainTime("00:00") : Temporal.ZonedDateTime ->zdt.add({ days: 2, hours: 22 }).withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>zdt.add({ days: 2, hours: 22 }).withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >zdt.add({ days: 2, hours: 22 }) : Temporal.ZonedDateTime ->zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >{ days: 2, hours: 22 } : { days: number; hours: number; } >days : number >2 : 2 >hours : number >22 : 22 ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >"00:00" : "00:00" } @@ -1906,39 +1906,39 @@ const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+09:00[Asia/Tokyo]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30+09:00[Asia/Tokyo]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30+09:00[Asia/Tokyo]" : "1995-12-07T03:24:30+09:00[Asia/Tokyo]" zdt.toString(); // => '1995-12-07T03:24:30+09:00[Asia/Tokyo]' >zdt.toString() : string ->zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string +>zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string >zdt : Temporal.ZonedDateTime ->toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string zdt.withTimeZone("Africa/Accra").toString(); // => '1995-12-06T18:24:30+00:00[Africa/Accra]' >zdt.withTimeZone("Africa/Accra").toString() : string ->zdt.withTimeZone("Africa/Accra").toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string +>zdt.withTimeZone("Africa/Accra").toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string >zdt.withTimeZone("Africa/Accra") : Temporal.ZonedDateTime >zdt.withTimeZone : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime >withTimeZone : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >"Africa/Accra" : "Africa/Accra" ->toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string } { const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+09:00[Asia/Tokyo][u-ca=japanese]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+09:00[Asia/Tokyo][u-ca=japanese]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30.000003500+09:00[Asia/Tokyo][u-ca=japanese]" : "1995-12-07T03:24:30.000003500+09:00[Asia/Tokyo][u-ca=japanese]" `${zdt.era} ${zdt.eraYear}`; // => 'heisei 7' @@ -1964,20 +1964,20 @@ const zdt = Temporal.ZonedDateTime.from("2020-03-08T00:00-08:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-03-08T00:00-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-03-08T00:00-08:00[America/Los_Angeles]" : "2020-03-08T00:00-08:00[America/Los_Angeles]" // Add a day to get midnight on the day after DST starts const laterDay = zdt.add({ days: 1 }); >laterDay : Temporal.ZonedDateTime >zdt.add({ days: 1 }) : Temporal.ZonedDateTime ->zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >{ days: 1 } : { days: number; } >days : number >1 : 1 @@ -1987,9 +1987,9 @@ laterDay.since(zdt, { largestUnit: "hour" }).hours; >laterDay.since(zdt, { largestUnit: "hour" }).hours : number >laterDay.since(zdt, { largestUnit: "hour" }) : Temporal.Duration ->laterDay.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>laterDay.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >laterDay : Temporal.ZonedDateTime ->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt : Temporal.ZonedDateTime >{ largestUnit: "hour" } : { largestUnit: "hour"; } >largestUnit : "hour" @@ -2002,9 +2002,9 @@ const laterHours = zdt.add({ hours: 24 }); >laterHours : Temporal.ZonedDateTime >zdt.add({ hours: 24 }) : Temporal.ZonedDateTime ->zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >{ hours: 24 } : { hours: number; } >hours : number >24 : 24 @@ -2015,9 +2015,9 @@ laterHours.since(zdt, { largestUnit: "hour" }).hours; // => 24 >laterHours.since(zdt, { largestUnit: "hour" }).hours : number >laterHours.since(zdt, { largestUnit: "hour" }) : Temporal.Duration ->laterHours.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>laterHours.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >laterHours : Temporal.ZonedDateTime ->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt : Temporal.ZonedDateTime >{ largestUnit: "hour" } : { largestUnit: "hour"; } >largestUnit : "hour" @@ -2029,20 +2029,20 @@ const zdt = Temporal.ZonedDateTime.from("2020-03-09T00:00-07:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-03-09T00:00-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-03-09T00:00-07:00[America/Los_Angeles]" : "2020-03-09T00:00-07:00[America/Los_Angeles]" // Add a day to get midnight on the day after DST starts const earlierDay = zdt.subtract({ days: 1 }); >earlierDay : Temporal.ZonedDateTime >zdt.subtract({ days: 1 }) : Temporal.ZonedDateTime ->zdt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>zdt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >{ days: 1 } : { days: number; } >days : number >1 : 1 @@ -2052,9 +2052,9 @@ earlierDay.since(zdt, { largestUnit: "hour" }).hours; >earlierDay.since(zdt, { largestUnit: "hour" }).hours : number >earlierDay.since(zdt, { largestUnit: "hour" }) : Temporal.Duration ->earlierDay.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>earlierDay.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >earlierDay : Temporal.ZonedDateTime ->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt : Temporal.ZonedDateTime >{ largestUnit: "hour" } : { largestUnit: "hour"; } >largestUnit : "hour" @@ -2067,9 +2067,9 @@ const earlierHours = zdt.subtract({ hours: 24 }); >earlierHours : Temporal.ZonedDateTime >zdt.subtract({ hours: 24 }) : Temporal.ZonedDateTime ->zdt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>zdt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime >{ hours: 24 } : { hours: number; } >hours : number >24 : 24 @@ -2080,9 +2080,9 @@ earlierHours.since(zdt, { largestUnit: "hour" }).hours; // => -24 >earlierHours.since(zdt, { largestUnit: "hour" }).hours : number >earlierHours.since(zdt, { largestUnit: "hour" }) : Temporal.Duration ->earlierHours.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>earlierHours.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >earlierHours : Temporal.ZonedDateTime ->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt : Temporal.ZonedDateTime >{ largestUnit: "hour" } : { largestUnit: "hour"; } >largestUnit : "hour" @@ -2094,36 +2094,36 @@ const zdt1 = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]"); >zdt1 : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]" : "1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]" const zdt2 = Temporal.ZonedDateTime.from("2019-01-31T15:30+05:30[Asia/Kolkata]"); >zdt2 : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2019-01-31T15:30+05:30[Asia/Kolkata]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2019-01-31T15:30+05:30[Asia/Kolkata]" : "2019-01-31T15:30+05:30[Asia/Kolkata]" zdt1.until(zdt2); >zdt1.until(zdt2) : Temporal.Duration ->zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt1 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt2 : Temporal.ZonedDateTime // => PT202956H5M29.9999965S zdt1.until(zdt2, { largestUnit: "year" }); >zdt1.until(zdt2, { largestUnit: "year" }) : Temporal.Duration ->zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt1 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt2 : Temporal.ZonedDateTime >{ largestUnit: "year" } : { largestUnit: "year"; } >largestUnit : "year" @@ -2132,9 +2132,9 @@ // => P23Y1M24DT12H5M29.9999965S zdt2.until(zdt1, { largestUnit: "year" }); >zdt2.until(zdt1, { largestUnit: "year" }) : Temporal.Duration ->zdt2.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>zdt2.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt2 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt1 : Temporal.ZonedDateTime >{ largestUnit: "year" } : { largestUnit: "year"; } >largestUnit : "year" @@ -2143,9 +2143,9 @@ // => -P23Y1M24DT12H5M29.9999965S zdt1.until(zdt2, { largestUnit: "nanosecond" }); >zdt1.until(zdt2, { largestUnit: "nanosecond" }) : Temporal.Duration ->zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt1 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt2 : Temporal.ZonedDateTime >{ largestUnit: "nanosecond" } : { largestUnit: "nanosecond"; } >largestUnit : "nanosecond" @@ -2157,9 +2157,9 @@ // Rounding, for example if you don't care about sub-seconds zdt1.until(zdt2, { smallestUnit: "second" }); >zdt1.until(zdt2, { smallestUnit: "second" }) : Temporal.Duration ->zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt1 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt2 : Temporal.ZonedDateTime >{ smallestUnit: "second" } : { smallestUnit: "second"; } >smallestUnit : "second" @@ -2182,11 +2182,11 @@ >month => Temporal.ZonedDateTime.from({ year: 2020, month, day: 1, timeZone: "Asia/Seoul" }) : (month: number) => Temporal.ZonedDateTime >month : number >Temporal.ZonedDateTime.from({ year: 2020, month, day: 1, timeZone: "Asia/Seoul" }) : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >{ year: 2020, month, day: 1, timeZone: "Asia/Seoul" } : { year: number; month: number; day: number; timeZone: string; } >year : number >2020 : 2020 @@ -2198,9 +2198,9 @@ jan1.until(feb1, { largestUnit: "day" }); // => P31D >jan1.until(feb1, { largestUnit: "day" }) : Temporal.Duration ->jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >jan1 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >feb1 : Temporal.ZonedDateTime >{ largestUnit: "day" } : { largestUnit: "day"; } >largestUnit : "day" @@ -2208,9 +2208,9 @@ jan1.until(feb1, { largestUnit: "month" }); // => P1M >jan1.until(feb1, { largestUnit: "month" }) : Temporal.Duration ->jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >jan1 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >feb1 : Temporal.ZonedDateTime >{ largestUnit: "month" } : { largestUnit: "month"; } >largestUnit : "month" @@ -2218,9 +2218,9 @@ feb1.until(mar1, { largestUnit: "day" }); // => P29D >feb1.until(mar1, { largestUnit: "day" }) : Temporal.Duration ->feb1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>feb1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >feb1 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >mar1 : Temporal.ZonedDateTime >{ largestUnit: "day" } : { largestUnit: "day"; } >largestUnit : "day" @@ -2228,9 +2228,9 @@ feb1.until(mar1, { largestUnit: "month" }); // => P1M >feb1.until(mar1, { largestUnit: "month" }) : Temporal.Duration ->feb1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>feb1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >feb1 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >mar1 : Temporal.ZonedDateTime >{ largestUnit: "month" } : { largestUnit: "month"; } >largestUnit : "month" @@ -2238,9 +2238,9 @@ jan1.until(mar1, { largestUnit: "day" }); // => P60D >jan1.until(mar1, { largestUnit: "day" }) : Temporal.Duration ->jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >jan1 : Temporal.ZonedDateTime ->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >mar1 : Temporal.ZonedDateTime >{ largestUnit: "day" } : { largestUnit: "day"; } >largestUnit : "day" @@ -2251,28 +2251,28 @@ const zdt1 = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]"); >zdt1 : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]" : "1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]" const zdt2 = Temporal.ZonedDateTime.from("2019-01-31T15:30+05:30[Asia/Kolkata]"); >zdt2 : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2019-01-31T15:30+05:30[Asia/Kolkata]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2019-01-31T15:30+05:30[Asia/Kolkata]" : "2019-01-31T15:30+05:30[Asia/Kolkata]" zdt2.since(zdt1); // => PT202956H5M29.9999965S >zdt2.since(zdt1) : Temporal.Duration ->zdt2.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>zdt2.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt2 : Temporal.ZonedDateTime ->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >zdt1 : Temporal.ZonedDateTime } @@ -2280,11 +2280,11 @@ const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500-08:00[America/Los_Angeles]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30.000003500-08:00[America/Los_Angeles]" : "1995-12-07T03:24:30.000003500-08:00[America/Los_Angeles]" // Round to a particular unit @@ -2332,11 +2332,11 @@ const zdt = Temporal.ZonedDateTime.from("2015-10-18T12:00-02:00[America/Sao_Paulo]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2015-10-18T12:00-02:00[America/Sao_Paulo]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2015-10-18T12:00-02:00[America/Sao_Paulo]" : "2015-10-18T12:00-02:00[America/Sao_Paulo]" zdt.startOfDay(); // => 2015-10-18T01:00:00-02:00[America/Sao_Paulo] @@ -2364,11 +2364,11 @@ const now = Temporal.Now.zonedDateTimeISO(tz); >now : Temporal.ZonedDateTime >Temporal.Now.zonedDateTimeISO(tz) : Temporal.ZonedDateTime ->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime +>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime +>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >tz : string const nextTransition = now.getTimeZoneTransition("next"); @@ -2383,17 +2383,17 @@ >duration = nextTransition!.since(now) : Temporal.Duration >duration : Temporal.Duration >nextTransition!.since(now) : Temporal.Duration ->nextTransition!.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>nextTransition!.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >nextTransition! : Temporal.ZonedDateTime >nextTransition : Temporal.ZonedDateTime | null ->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >now : Temporal.ZonedDateTime duration.toLocaleString(); // output will vary >duration.toLocaleString() : string ->duration.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>duration.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string >duration : Temporal.Duration ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string // How long until the previous offset change from now, in the current location? const previousTransition = now.getTimeZoneTransition("previous"); @@ -2408,38 +2408,38 @@ >duration = now.since(previousTransition!) : Temporal.Duration >duration : Temporal.Duration >now.since(previousTransition!) : Temporal.Duration ->now.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>now.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >now : Temporal.ZonedDateTime ->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >previousTransition! : Temporal.ZonedDateTime >previousTransition : Temporal.ZonedDateTime | null duration.toLocaleString(); // output will vary >duration.toLocaleString() : string ->duration.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>duration.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string >duration : Temporal.Duration ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string } { const zdt1 = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+01:00[Europe/Paris]"); >zdt1 : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+01:00[Europe/Paris]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30.000003500+01:00[Europe/Paris]" : "1995-12-07T03:24:30.000003500+01:00[Europe/Paris]" const zdt2 = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+01:00[Europe/Brussels]"); >zdt2 : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+01:00[Europe/Brussels]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30.000003500+01:00[Europe/Brussels]" : "1995-12-07T03:24:30.000003500+01:00[Europe/Brussels]" zdt1.equals(zdt2); // => false (same offset but different time zones) @@ -2552,11 +2552,11 @@ >zdt = Temporal.ZonedDateTime.from({ year: 2019, month: 12, day: 1, hour: 12, timeZone: "Africa/Lagos" }) : Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from({ year: 2019, month: 12, day: 1, hour: 12, timeZone: "Africa/Lagos" }) : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >{ year: 2019, month: 12, day: 1, hour: 12, timeZone: "Africa/Lagos" } : { year: number; month: number; day: number; hour: number; timeZone: string; } >year : number >2019 : 2019 @@ -2571,9 +2571,9 @@ zdt.toString(); // => '2019-12-01T12:00:00+01:00[Africa/Lagos]' >zdt.toString() : string ->zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string +>zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string >zdt : Temporal.ZonedDateTime ->toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string zdt = zdt.withCalendar("japanese"); >zdt = zdt.withCalendar("japanese") : Temporal.ZonedDateTime @@ -2586,33 +2586,33 @@ zdt.toString(); // => '2019-12-01T12:00:00+01:00[Africa/Lagos][u-ca=japanese]' >zdt.toString() : string ->zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string +>zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string >zdt : Temporal.ZonedDateTime ->toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string } { const zdt = Temporal.ZonedDateTime.from("2019-12-01T12:00+01:00[Europe/Berlin]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2019-12-01T12:00+01:00[Europe/Berlin]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2019-12-01T12:00+01:00[Europe/Berlin]" : "2019-12-01T12:00+01:00[Europe/Berlin]" zdt.toLocaleString(); // example output: 12/1/2019, 12:00:00 PM >zdt.toLocaleString() : string ->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >zdt : Temporal.ZonedDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string zdt.toLocaleString("de-DE"); // => '1.12.2019, 12:00:00 MEZ' >zdt.toLocaleString("de-DE") : string ->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >zdt : Temporal.ZonedDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" const options = { weekday: "long", year: "numeric", month: "long", day: "numeric" } as const; @@ -2630,17 +2630,17 @@ zdt.toLocaleString("de-DE", options); // => 'Sonntag, 1. Dezember 2019' >zdt.toLocaleString("de-DE", options) : string ->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >zdt : Temporal.ZonedDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >options : { readonly weekday: "long"; readonly year: "numeric"; readonly month: "long"; readonly day: "numeric"; } /* WRONG */ zdt.toLocaleString("de-DE", { timeZone: "Pacific/Auckland" }); >zdt.toLocaleString("de-DE", { timeZone: "Pacific/Auckland" }) : string ->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >zdt : Temporal.ZonedDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >{ timeZone: "Pacific/Auckland" } : { timeZone: string; } >timeZone : string @@ -2649,20 +2649,20 @@ // => RangeError: Time zone option Pacific/Auckland does not match actual time zone Europe/Berlin zdt.withTimeZone("Pacific/Auckland").toLocaleString("de-DE"); // => '2.12.2019, 0:00:00 GMT+13' >zdt.withTimeZone("Pacific/Auckland").toLocaleString("de-DE") : string ->zdt.withTimeZone("Pacific/Auckland").toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>zdt.withTimeZone("Pacific/Auckland").toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >zdt.withTimeZone("Pacific/Auckland") : Temporal.ZonedDateTime >zdt.withTimeZone : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >zdt : Temporal.ZonedDateTime >withTimeZone : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >"Pacific/Auckland" : "Pacific/Auckland" ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" zdt.toLocaleString("en-US-u-nu-fullwide-hc-h12"); // => '12/1/2019, 12:00:00 PM GMT+1' >zdt.toLocaleString("en-US-u-nu-fullwide-hc-h12") : string ->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >zdt : Temporal.ZonedDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en-US-u-nu-fullwide-hc-h12" : "en-US-u-nu-fullwide-hc-h12" } @@ -2670,11 +2670,11 @@ const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Johannesburg]"); >zdt : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Johannesburg]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"1995-12-07T03:24:30+02:00[Africa/Johannesburg]" : "1995-12-07T03:24:30+02:00[Africa/Johannesburg]" zdt.toInstant(); // => 1995-12-07T01:24:30Z @@ -2742,44 +2742,44 @@ >date = Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" date = Temporal.PlainDate.from("20060824"); // => 2006-08-24 >date = Temporal.PlainDate.from("20060824") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("20060824") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"20060824" : "20060824" date = Temporal.PlainDate.from("2006-08-24T15:43:27"); // => 2006-08-24 >date = Temporal.PlainDate.from("2006-08-24T15:43:27") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24T15:43:27") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24T15:43:27" : "2006-08-24T15:43:27" date = Temporal.PlainDate.from("2006-08-24T15:43:27+01:00[Europe/Brussels]"); >date = Temporal.PlainDate.from("2006-08-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24T15:43:27+01:00[Europe/Brussels]" : "2006-08-24T15:43:27+01:00[Europe/Brussels]" // => 2006-08-24 @@ -2787,22 +2787,22 @@ >date === Temporal.PlainDate.from(date) : boolean >date : Temporal.PlainDate >Temporal.PlainDate.from(date) : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate date = Temporal.PlainDate.from({ year: 2006, month: 8, day: 24 }); // => 2006-08-24 >date = Temporal.PlainDate.from({ year: 2006, month: 8, day: 24 }) : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from({ year: 2006, month: 8, day: 24 }) : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ year: 2006, month: 8, day: 24 } : { year: number; month: number; day: number; } >year : number >2006 : 2006 @@ -2815,17 +2815,17 @@ >date = Temporal.PlainDate.from(Temporal.PlainDateTime.from("2006-08-24T15:43:27")) : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from(Temporal.PlainDateTime.from("2006-08-24T15:43:27")) : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDateTime.from("2006-08-24T15:43:27") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2006-08-24T15:43:27" : "2006-08-24T15:43:27" // => 2006-08-24 @@ -2835,11 +2835,11 @@ >date = Temporal.PlainDate.from({ year: 1427, month: 8, day: 1, calendar: "islamic" }) : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from({ year: 1427, month: 8, day: 1, calendar: "islamic" }) : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ year: 1427, month: 8, day: 1, calendar: "islamic" } : { year: number; month: number; day: number; calendar: string; } >year : number >1427 : 1427 @@ -2857,11 +2857,11 @@ >date = Temporal.PlainDate.from({ year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from({ year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ year: 2001, month: 13, day: 1 } : { year: number; month: number; day: number; } >year : number >2001 : 2001 @@ -2878,11 +2878,11 @@ >date = Temporal.PlainDate.from({ year: 2001, month: 1, day: 32 }, { overflow: "constrain" }) : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from({ year: 2001, month: 1, day: 32 }, { overflow: "constrain" }) : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ year: 2001, month: 1, day: 32 } : { year: number; month: number; day: number; } >year : number >2001 : 2001 @@ -2899,11 +2899,11 @@ >date = Temporal.PlainDate.from({ year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from({ year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ year: 2001, month: 13, day: 1 } : { year: number; month: number; day: number; } >year : number >2001 : 2001 @@ -2920,11 +2920,11 @@ >date = Temporal.PlainDate.from({ year: 2001, month: 1, day: 32 }, { overflow: "reject" }) : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from({ year: 2001, month: 1, day: 32 }, { overflow: "reject" }) : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ year: 2001, month: 1, day: 32 } : { year: number; month: number; day: number; } >year : number >2001 : 2001 @@ -2943,31 +2943,31 @@ const one = Temporal.PlainDate.from("2006-08-24"); >one : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" const two = Temporal.PlainDate.from("2015-07-14"); >two : Temporal.PlainDate >Temporal.PlainDate.from("2015-07-14") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2015-07-14" : "2015-07-14" const three = Temporal.PlainDate.from("1930-02-18"); >three : Temporal.PlainDate >Temporal.PlainDate.from("1930-02-18") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"1930-02-18" : "1930-02-18" const sorted = [one, two, three].sort(Temporal.PlainDate.compare); @@ -2987,9 +2987,9 @@ sorted.join(" "); // => '1930-02-18 2006-08-24 2015-07-14' >sorted.join(" ") : string ->sorted.join : (separator?: string | undefined) => string +>sorted.join : (separator?: string) => string >sorted : Temporal.PlainDate[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >" " : " " } @@ -3002,11 +3002,11 @@ >date = Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" date.year; // => 2006 @@ -3033,11 +3033,11 @@ >date = Temporal.PlainDate.from("2019-02-23[u-ca=hebrew]") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("2019-02-23[u-ca=hebrew]") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2019-02-23[u-ca=hebrew]" : "2019-02-23[u-ca=hebrew]" date.year; // => 5779 @@ -3065,11 +3065,11 @@ const date = Temporal.PlainDate.from("-000015-01-01[u-ca=gregory]"); >date : Temporal.PlainDate >Temporal.PlainDate.from("-000015-01-01[u-ca=gregory]") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"-000015-01-01[u-ca=gregory]" : "-000015-01-01[u-ca=gregory]" date.era; @@ -3096,11 +3096,11 @@ const date = Temporal.PlainDate.from("2006-08-24"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"][date.dayOfWeek - 1]; // => 'THU' @@ -3124,11 +3124,11 @@ const date = Temporal.PlainDate.from("2006-08-24"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" // ISO ordinal date @@ -3149,11 +3149,11 @@ const date = Temporal.PlainDate.from("2022-01-01"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2022-01-01") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2022-01-01" : "2022-01-01" // ISO week date @@ -3177,11 +3177,11 @@ const date = Temporal.PlainDate.from("2006-08-24"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" date.daysInWeek; // => 7 @@ -3209,14 +3209,14 @@ const date = Temporal.Now.plainDateISO().with({ month }); >date : Temporal.PlainDate >Temporal.Now.plainDateISO().with({ month }) : Temporal.PlainDate ->Temporal.Now.plainDateISO().with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.Now.plainDateISO().with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.Now.plainDateISO() : Temporal.PlainDate ->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate +>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate ->with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate +>with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ month } : { month: number; } >month : number @@ -3252,9 +3252,9 @@ >date => date.toLocaleString("en", { month: "long" }) : (date: Temporal.PlainDate) => string >date : Temporal.PlainDate >date.toLocaleString("en", { month: "long" }) : string ->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >date : Temporal.PlainDate ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en" : "en" >{ month: "long" } : { month: "long"; } >month : "long" @@ -3275,9 +3275,9 @@ const format = new Intl.ListFormat("en"); >format : Intl.ListFormat >new Intl.ListFormat("en") : Intl.ListFormat ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >"en" : "en" const poem = `Thirty days hath ${format.format(strings)}`; @@ -3301,11 +3301,11 @@ const date = Temporal.Now.plainDateISO(); >date : Temporal.PlainDate >Temporal.Now.plainDateISO() : Temporal.PlainDate ->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate +>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate +>plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate const percent = date.dayOfYear / date.daysInYear; >percent : number @@ -3320,9 +3320,9 @@ `The year is ${percent.toLocaleString("en", { style: "percent" })} over!`; >`The year is ${percent.toLocaleString("en", { style: "percent" })} over!` : string >percent.toLocaleString("en", { style: "percent" }) : string ->percent.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>percent.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >percent : number ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >"en" : "en" >{ style: "percent" } : { style: "percent"; } >style : "percent" @@ -3335,11 +3335,11 @@ const date = Temporal.PlainDate.from("1900-01-01"); >date : Temporal.PlainDate >Temporal.PlainDate.from("1900-01-01") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"1900-01-01" : "1900-01-01" date.monthsInYear; // => 12 @@ -3353,11 +3353,11 @@ const date = Temporal.Now.plainDateISO(); >date : Temporal.PlainDate >Temporal.Now.plainDateISO() : Temporal.PlainDate ->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate +>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate +>plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate date.inLeapYear; // example output: true >date.inLeapYear : boolean @@ -3368,9 +3368,9 @@ date.with({ year: 2100 }).inLeapYear; // => false >date.with({ year: 2100 }).inLeapYear : boolean >date.with({ year: 2100 }) : Temporal.PlainDate ->date.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>date.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate ->with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ year: 2100 } : { year: number; } >year : number >2100 : 2100 @@ -3381,19 +3381,19 @@ const date = Temporal.PlainDate.from("2006-01-24"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-01-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-01-24" : "2006-01-24" // What's the first day of this month? date.with({ day: 1 }); // => 2006-01-01 >date.with({ day: 1 }) : Temporal.PlainDate ->date.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>date.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate ->with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ day: 1 } : { day: number; } >day : number >1 : 1 @@ -3402,18 +3402,18 @@ const nextMonthDate = date.add({ months: 1 }); >nextMonthDate : Temporal.PlainDate >date.add({ months: 1 }) : Temporal.PlainDate ->date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ months: 1 } : { months: number; } >months : number >1 : 1 nextMonthDate.with({ day: nextMonthDate.daysInMonth }); // => 2006-02-28 >nextMonthDate.with({ day: nextMonthDate.daysInMonth }) : Temporal.PlainDate ->nextMonthDate.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>nextMonthDate.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >nextMonthDate : Temporal.PlainDate ->with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ day: nextMonthDate.daysInMonth } : { day: number; } >day : number >nextMonthDate.daysInMonth : number @@ -3425,11 +3425,11 @@ const date = Temporal.PlainDate.from("2006-08-24[u-ca=japanese]"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24[u-ca=japanese]") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24[u-ca=japanese]" : "2006-08-24[u-ca=japanese]" date.withCalendar("iso8601"); // => 2006-08-24 @@ -3449,18 +3449,18 @@ >date = Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" date.add({ years: 20, months: 4 }); // => 2026-12-24 >date.add({ years: 20, months: 4 }) : Temporal.PlainDate ->date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ years: 20, months: 4 } : { years: number; months: number; } >years : number >20 : 20 @@ -3471,27 +3471,27 @@ >date = Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2019-01-31" : "2019-01-31" date.add({ months: 1 }); // => 2019-02-28 >date.add({ months: 1 }) : Temporal.PlainDate ->date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ months: 1 } : { months: number; } >months : number >1 : 1 date.add({ months: 1 }, { overflow: "reject" }); // => throws >date.add({ months: 1 }, { overflow: "reject" }) : Temporal.PlainDate ->date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ months: 1 } : { months: number; } >months : number >1 : 1 @@ -3509,18 +3509,18 @@ >date = Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" date.subtract({ years: 20, months: 4 }); // => 1986-04-24 >date.subtract({ years: 20, months: 4 }) : Temporal.PlainDate ->date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ years: 20, months: 4 } : { years: number; months: number; } >years : number >20 : 20 @@ -3531,27 +3531,27 @@ >date = Temporal.PlainDate.from("2019-03-31") : Temporal.PlainDate >date : Temporal.PlainDate >Temporal.PlainDate.from("2019-03-31") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2019-03-31" : "2019-03-31" date.subtract({ months: 1 }); // => 2019-02-28 >date.subtract({ months: 1 }) : Temporal.PlainDate ->date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ months: 1 } : { months: number; } >months : number >1 : 1 date.subtract({ months: 1 }, { overflow: "reject" }); // => throws >date.subtract({ months: 1 }, { overflow: "reject" }) : Temporal.PlainDate ->date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >date : Temporal.PlainDate ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >{ months: 1 } : { months: number; } >months : number >1 : 1 @@ -3564,35 +3564,35 @@ const earlier = Temporal.PlainDate.from("2006-08-24"); >earlier : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" const later = Temporal.PlainDate.from("2019-01-31"); >later : Temporal.PlainDate >Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2019-01-31" : "2019-01-31" earlier.until(later); // => P4543D >earlier.until(later) : Temporal.Duration ->earlier.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>earlier.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >earlier : Temporal.PlainDate ->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >later : Temporal.PlainDate earlier.until(later, { largestUnit: "year" }); // => P12Y5M7D >earlier.until(later, { largestUnit: "year" }) : Temporal.Duration ->earlier.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>earlier.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >earlier : Temporal.PlainDate ->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >later : Temporal.PlainDate >{ largestUnit: "year" } : { largestUnit: "year"; } >largestUnit : "year" @@ -3600,9 +3600,9 @@ later.until(earlier, { largestUnit: "year" }); // => -P12Y5M7D >later.until(earlier, { largestUnit: "year" }) : Temporal.Duration ->later.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>later.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >later : Temporal.PlainDate ->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >earlier : Temporal.PlainDate >{ largestUnit: "year" } : { largestUnit: "year"; } >largestUnit : "year" @@ -3615,26 +3615,26 @@ const noon = Temporal.PlainTime.from("12:00"); >noon : Temporal.PlainTime >Temporal.PlainTime.from("12:00") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"12:00" : "12:00" earlier.toPlainDateTime(noon).until(later.toPlainDateTime(noon), { largestUnit: "hour" }); >earlier.toPlainDateTime(noon).until(later.toPlainDateTime(noon), { largestUnit: "hour" }) : Temporal.Duration ->earlier.toPlainDateTime(noon).until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>earlier.toPlainDateTime(noon).until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >earlier.toPlainDateTime(noon) : Temporal.PlainDateTime ->earlier.toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>earlier.toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >earlier : Temporal.PlainDate ->toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >noon : Temporal.PlainTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >later.toPlainDateTime(noon) : Temporal.PlainDateTime ->later.toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>later.toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >later : Temporal.PlainDate ->toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >noon : Temporal.PlainTime >{ largestUnit: "hour" } : { largestUnit: "hour"; } >largestUnit : "hour" @@ -3645,18 +3645,18 @@ const newyear = Temporal.PlainDate.from("2020-01-01"); >newyear : Temporal.PlainDate >Temporal.PlainDate.from("2020-01-01") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2020-01-01" : "2020-01-01" newyear.until("2020-01-15", { smallestUnit: "month", roundingMode: "halfExpand" }); >newyear.until("2020-01-15", { smallestUnit: "month", roundingMode: "halfExpand" }) : Temporal.Duration ->newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >newyear : Temporal.PlainDate ->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >"2020-01-15" : "2020-01-15" >{ smallestUnit: "month", roundingMode: "halfExpand" } : { smallestUnit: "month"; roundingMode: "halfExpand"; } >smallestUnit : "month" @@ -3667,9 +3667,9 @@ // => PT0S newyear.until("2020-01-16", { smallestUnit: "month", roundingMode: "halfExpand" }); >newyear.until("2020-01-16", { smallestUnit: "month", roundingMode: "halfExpand" }) : Temporal.Duration ->newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >newyear : Temporal.PlainDate ->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >"2020-01-16" : "2020-01-16" >{ smallestUnit: "month", roundingMode: "halfExpand" } : { smallestUnit: "month"; roundingMode: "halfExpand"; } >smallestUnit : "month" @@ -3680,9 +3680,9 @@ // => PT0S (mid-month dates rounded down to match `Temporal.PlainDateTime` behavior) newyear.until("2020-01-17", { smallestUnit: "month", roundingMode: "halfExpand" }); >newyear.until("2020-01-17", { smallestUnit: "month", roundingMode: "halfExpand" }) : Temporal.Duration ->newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >newyear : Temporal.PlainDate ->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >"2020-01-17" : "2020-01-17" >{ smallestUnit: "month", roundingMode: "halfExpand" } : { smallestUnit: "month"; roundingMode: "halfExpand"; } >smallestUnit : "month" @@ -3697,28 +3697,28 @@ const earlier = Temporal.PlainDate.from("2006-08-24"); >earlier : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" const later = Temporal.PlainDate.from("2019-01-31"); >later : Temporal.PlainDate >Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2019-01-31" : "2019-01-31" later.since(earlier); // => P4543D >later.since(earlier) : Temporal.Duration ->later.since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>later.since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >later : Temporal.PlainDate ->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >earlier : Temporal.PlainDate } @@ -3726,21 +3726,21 @@ const date = Temporal.PlainDate.from("2006-08-24"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" const other = Temporal.PlainDate.from("2019-01-31"); >other : Temporal.PlainDate >Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2019-01-31" : "2019-01-31" date.equals(other); // => false @@ -3762,49 +3762,49 @@ const date = Temporal.PlainDate.from("2006-08-24"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" date.toString(); // => '2006-08-24' >date.toString() : string ->date.toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string +>date.toString : (options?: Temporal.PlainDateToStringOptions) => string >date : Temporal.PlainDate ->toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainDateToStringOptions) => string } { const date = Temporal.PlainDate.from("2006-08-24"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" date.toLocaleString(); // example output: 8/24/2006 >date.toLocaleString() : string ->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >date : Temporal.PlainDate ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string date.toLocaleString("de-DE"); // example output: '24.8.2006' >date.toLocaleString("de-DE") : string ->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >date : Temporal.PlainDate ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" date.toLocaleString("de-DE", { weekday: "long" }); // => 'Donnerstag' >date.toLocaleString("de-DE", { weekday: "long" }) : string ->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >date : Temporal.PlainDate ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >{ weekday: "long" } : { weekday: "long"; } >weekday : "long" @@ -3812,9 +3812,9 @@ date.toLocaleString("en-US-u-nu-fullwide"); // => '8/24/2006' >date.toLocaleString("en-US-u-nu-fullwide") : string ->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >date : Temporal.PlainDate ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en-US-u-nu-fullwide" : "en-US-u-nu-fullwide" } @@ -3822,21 +3822,21 @@ const plainDate = Temporal.PlainDate.from("2006-08-24"); >plainDate : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" const plainTime = Temporal.PlainTime.from("15:23:30.003"); >plainTime : Temporal.PlainTime >Temporal.PlainTime.from("15:23:30.003") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"15:23:30.003" : "15:23:30.003" plainDate.toZonedDateTime({ timeZone: "America/Los_Angeles", plainTime }); @@ -3866,46 +3866,46 @@ const date = Temporal.PlainDate.from("2006-08-24"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" const time = Temporal.PlainTime.from("15:23:30.003"); >time : Temporal.PlainTime >Temporal.PlainTime.from("15:23:30.003") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"15:23:30.003" : "15:23:30.003" date.toPlainDateTime(time); // => 2006-08-24T15:23:30.003 >date.toPlainDateTime(time) : Temporal.PlainDateTime ->date.toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>date.toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >date : Temporal.PlainDate ->toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >time : Temporal.PlainTime date.toPlainDateTime(); // => 2006-08-24T00:00:00 >date.toPlainDateTime() : Temporal.PlainDateTime ->date.toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>date.toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >date : Temporal.PlainDate ->toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime } { const date = Temporal.PlainDate.from("2006-08-24"); >date : Temporal.PlainDate >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" date.toPlainYearMonth(); // => 2006-08 @@ -3942,44 +3942,44 @@ >time = Temporal.PlainTime.from("03:24:30") : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from("03:24:30") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"03:24:30" : "03:24:30" time = Temporal.PlainTime.from("032430"); // => 03:24:30 >time = Temporal.PlainTime.from("032430") : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from("032430") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"032430" : "032430" time = Temporal.PlainTime.from("1995-12-07T03:24:30"); // => 03:24:30 >time = Temporal.PlainTime.from("1995-12-07T03:24:30") : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from("1995-12-07T03:24:30") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"1995-12-07T03:24:30" : "1995-12-07T03:24:30" time = Temporal.PlainTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]"); >time = Temporal.PlainTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]") : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"1995-12-07T03:24:30+01:00[Europe/Brussels]" : "1995-12-07T03:24:30+01:00[Europe/Brussels]" // => 03:24:30 @@ -3988,22 +3988,22 @@ >time === Temporal.PlainTime.from(time) : boolean >time : Temporal.PlainTime >Temporal.PlainTime.from(time) : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >time : Temporal.PlainTime time = Temporal.PlainTime.from({ >time = Temporal.PlainTime.from({ hour: 19, minute: 39, second: 9, millisecond: 68, microsecond: 346, nanosecond: 205, }) : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from({ hour: 19, minute: 39, second: 9, millisecond: 68, microsecond: 346, nanosecond: 205, }) : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >{ hour: 19, minute: 39, second: 9, millisecond: 68, microsecond: 346, nanosecond: 205, } : { hour: number; minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } hour: 19, @@ -4035,11 +4035,11 @@ >time = Temporal.PlainTime.from({ hour: 19, minute: 39, second: 9 }) : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from({ hour: 19, minute: 39, second: 9 }) : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >{ hour: 19, minute: 39, second: 9 } : { hour: number; minute: number; second: number; } >hour : number >19 : 19 @@ -4052,17 +4052,17 @@ >time = Temporal.PlainTime.from(Temporal.PlainDateTime.from("2020-02-15T19:39:09")) : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from(Temporal.PlainDateTime.from("2020-02-15T19:39:09")) : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainDateTime.from("2020-02-15T19:39:09") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2020-02-15T19:39:09" : "2020-02-15T19:39:09" // => 19:39:09 @@ -4073,11 +4073,11 @@ >time = Temporal.PlainTime.from({ hour: 15, minute: 60 }, { overflow: "constrain" }) : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from({ hour: 15, minute: 60 }, { overflow: "constrain" }) : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >{ hour: 15, minute: 60 } : { hour: number; minute: number; } >hour : number >15 : 15 @@ -4092,11 +4092,11 @@ >time = Temporal.PlainTime.from({ hour: 15, minute: -1 }, { overflow: "constrain" }) : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from({ hour: 15, minute: -1 }, { overflow: "constrain" }) : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >{ hour: 15, minute: -1 } : { hour: number; minute: number; } >hour : number >15 : 15 @@ -4112,11 +4112,11 @@ >time = Temporal.PlainTime.from({ hour: 15, minute: 60 }, { overflow: "reject" }) : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from({ hour: 15, minute: 60 }, { overflow: "reject" }) : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >{ hour: 15, minute: 60 } : { hour: number; minute: number; } >hour : number >15 : 15 @@ -4131,11 +4131,11 @@ >time = Temporal.PlainTime.from({ hour: 15, minute: -1 }, { overflow: "reject" }) : Temporal.PlainTime >time : Temporal.PlainTime >Temporal.PlainTime.from({ hour: 15, minute: -1 }, { overflow: "reject" }) : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >{ hour: 15, minute: -1 } : { hour: number; minute: number; } >hour : number >15 : 15 @@ -4153,31 +4153,31 @@ const one = Temporal.PlainTime.from("03:24"); >one : Temporal.PlainTime >Temporal.PlainTime.from("03:24") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"03:24" : "03:24" const two = Temporal.PlainTime.from("01:24"); >two : Temporal.PlainTime >Temporal.PlainTime.from("01:24") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"01:24" : "01:24" const three = Temporal.PlainTime.from("01:24:05"); >three : Temporal.PlainTime >Temporal.PlainTime.from("01:24:05") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"01:24:05" : "01:24:05" const sorted = [one, two, three].sort(Temporal.PlainTime.compare); @@ -4197,9 +4197,9 @@ sorted.join(" "); // => '01:24:00 01:24:05 03:24:00' >sorted.join(" ") : string ->sorted.join : (separator?: string | undefined) => string +>sorted.join : (separator?: string) => string >sorted : Temporal.PlainTime[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >" " : " " } @@ -4208,21 +4208,21 @@ const zdtDst = Temporal.ZonedDateTime.from("2020-11-01T01:45-07:00[America/Los_Angeles]"); >zdtDst : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-11-01T01:45-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-11-01T01:45-07:00[America/Los_Angeles]" : "2020-11-01T01:45-07:00[America/Los_Angeles]" const zdtStandard = Temporal.ZonedDateTime.from("2020-11-01T01:30-08:00[America/Los_Angeles]"); >zdtStandard : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-11-01T01:30-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-11-01T01:30-08:00[America/Los_Angeles]" : "2020-11-01T01:30-08:00[America/Los_Angeles]" // The "first" 1:45 (in Daylight Time) is earlier than the "second" 1:30 (in Standard Time) @@ -4251,47 +4251,47 @@ const zdtBase = Temporal.ZonedDateTime.from("2020-03-08[America/Los_Angeles]"); >zdtBase : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-03-08[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-03-08[America/Los_Angeles]" : "2020-03-08[America/Los_Angeles]" const timeSkipped = Temporal.PlainTime.from("02:30"); >timeSkipped : Temporal.PlainTime >Temporal.PlainTime.from("02:30") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"02:30" : "02:30" const timeValid = Temporal.PlainTime.from("03:30"); >timeValid : Temporal.PlainTime >Temporal.PlainTime.from("03:30") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"03:30" : "03:30" const zdtSkipped = zdtBase.withPlainTime(timeSkipped); >zdtSkipped : Temporal.ZonedDateTime >zdtBase.withPlainTime(timeSkipped) : Temporal.ZonedDateTime ->zdtBase.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>zdtBase.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >zdtBase : Temporal.ZonedDateTime ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >timeSkipped : Temporal.PlainTime const zdtValid = zdtBase.withPlainTime(timeValid); >zdtValid : Temporal.ZonedDateTime >zdtBase.withPlainTime(timeValid) : Temporal.ZonedDateTime ->zdtBase.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>zdtBase.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >zdtBase : Temporal.ZonedDateTime ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime >timeValid : Temporal.PlainTime // The skipped time 2:30AM is disambiguated to 3:30AM, so the instants are equal @@ -4321,11 +4321,11 @@ const time = Temporal.PlainTime.from("19:39:09.068346205"); >time : Temporal.PlainTime >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" time.hour; // => 19 @@ -4363,17 +4363,17 @@ const time = Temporal.PlainTime.from("19:39:09.068346205"); >time : Temporal.PlainTime >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" // What's the top of the next hour? time.add({ hours: 1 }).with({ >time.add({ hours: 1 }).with({ minute: 0, second: 0, millisecond: 0, microsecond: 0, nanosecond: 0, }) : Temporal.PlainTime ->time.add({ hours: 1 }).with : (timeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>time.add({ hours: 1 }).with : (timeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >time.add({ hours: 1 }) : Temporal.PlainTime >time.add : (duration: Temporal.DurationLike) => Temporal.PlainTime >time : Temporal.PlainTime @@ -4381,7 +4381,7 @@ >{ hours: 1 } : { hours: number; } >hours : number >1 : 1 ->with : (timeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>with : (timeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >{ minute: 0, second: 0, millisecond: 0, microsecond: 0, nanosecond: 0, } : { minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } minute: 0, @@ -4411,11 +4411,11 @@ const time = Temporal.PlainTime.from("19:39:09.068346205"); >time : Temporal.PlainTime >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" time.add({ minutes: 5, nanoseconds: 800 }); // => 19:44:09.068347005 @@ -4434,11 +4434,11 @@ const time = Temporal.PlainTime.from("19:39:09.068346205"); >time : Temporal.PlainTime >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" time.subtract({ minutes: 5, nanoseconds: 800 }); // => 19:34:09.068345405 @@ -4457,51 +4457,51 @@ const time = Temporal.PlainTime.from("20:13:20.971398099"); >time : Temporal.PlainTime >Temporal.PlainTime.from("20:13:20.971398099") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"20:13:20.971398099" : "20:13:20.971398099" time.until(Temporal.PlainTime.from("22:39:09.068346205")); // => PT2H25M48.096948106S >time.until(Temporal.PlainTime.from("22:39:09.068346205")) : Temporal.Duration ->time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >time : Temporal.PlainTime ->until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >Temporal.PlainTime.from("22:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"22:39:09.068346205" : "22:39:09.068346205" time.until(Temporal.PlainTime.from("19:39:09.068346205")); // => -PT34M11.903051894S >time.until(Temporal.PlainTime.from("19:39:09.068346205")) : Temporal.Duration ->time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >time : Temporal.PlainTime ->until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" // Rounding, for example if you don't care about sub-seconds time.until(Temporal.PlainTime.from("22:39:09.068346205"), { smallestUnit: "second" }); >time.until(Temporal.PlainTime.from("22:39:09.068346205"), { smallestUnit: "second" }) : Temporal.Duration ->time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >time : Temporal.PlainTime ->until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >Temporal.PlainTime.from("22:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"22:39:09.068346205" : "22:39:09.068346205" >{ smallestUnit: "second" } : { smallestUnit: "second"; } >smallestUnit : "second" @@ -4514,37 +4514,37 @@ const time = Temporal.PlainTime.from("20:13:20.971398099"); >time : Temporal.PlainTime >Temporal.PlainTime.from("20:13:20.971398099") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"20:13:20.971398099" : "20:13:20.971398099" time.since(Temporal.PlainTime.from("19:39:09.068346205")); // => PT34M11.903051894S >time.since(Temporal.PlainTime.from("19:39:09.068346205")) : Temporal.Duration ->time.since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>time.since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >time : Temporal.PlainTime ->since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" time.since(Temporal.PlainTime.from("22:39:09.068346205")); // => -PT2H25M48.096948106S >time.since(Temporal.PlainTime.from("22:39:09.068346205")) : Temporal.Duration ->time.since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>time.since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >time : Temporal.PlainTime ->since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >Temporal.PlainTime.from("22:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"22:39:09.068346205" : "22:39:09.068346205" } @@ -4552,11 +4552,11 @@ const time = Temporal.PlainTime.from("19:39:09.068346205"); >time : Temporal.PlainTime >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" // Round to a particular unit @@ -4603,21 +4603,21 @@ const time = Temporal.PlainTime.from("19:39:09.068346205"); >time : Temporal.PlainTime >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" const other = Temporal.PlainTime.from("20:13:20.971398099"); >other : Temporal.PlainTime >Temporal.PlainTime.from("20:13:20.971398099") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"20:13:20.971398099" : "20:13:20.971398099" time.equals(other); // => false @@ -4639,51 +4639,51 @@ const time = Temporal.PlainTime.from("19:39:09.068346205"); >time : Temporal.PlainTime >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" time.toString(); // => '19:39:09.068346205' >time.toString() : string ->time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>time.toString : (options?: Temporal.PlainTimeToStringOptions) => string >time : Temporal.PlainTime ->toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainTimeToStringOptions) => string time.toString({ smallestUnit: "minute" }); // => '19:39' >time.toString({ smallestUnit: "minute" }) : string ->time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>time.toString : (options?: Temporal.PlainTimeToStringOptions) => string >time : Temporal.PlainTime ->toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainTimeToStringOptions) => string >{ smallestUnit: "minute" } : { smallestUnit: "minute"; } >smallestUnit : "minute" >"minute" : "minute" time.toString({ fractionalSecondDigits: 0 }); // => '19:39:09' >time.toString({ fractionalSecondDigits: 0 }) : string ->time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>time.toString : (options?: Temporal.PlainTimeToStringOptions) => string >time : Temporal.PlainTime ->toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainTimeToStringOptions) => string >{ fractionalSecondDigits: 0 } : { fractionalSecondDigits: 0; } >fractionalSecondDigits : 0 >0 : 0 time.toString({ fractionalSecondDigits: 4 }); // => '19:39:09.0683' >time.toString({ fractionalSecondDigits: 4 }) : string ->time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>time.toString : (options?: Temporal.PlainTimeToStringOptions) => string >time : Temporal.PlainTime ->toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainTimeToStringOptions) => string >{ fractionalSecondDigits: 4 } : { fractionalSecondDigits: 4; } >fractionalSecondDigits : 4 >4 : 4 time.toString({ fractionalSecondDigits: 5, roundingMode: "halfExpand" }); >time.toString({ fractionalSecondDigits: 5, roundingMode: "halfExpand" }) : string ->time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>time.toString : (options?: Temporal.PlainTimeToStringOptions) => string >time : Temporal.PlainTime ->toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainTimeToStringOptions) => string >{ fractionalSecondDigits: 5, roundingMode: "halfExpand" } : { fractionalSecondDigits: 5; roundingMode: "halfExpand"; } >fractionalSecondDigits : 5 >5 : 5 @@ -4697,31 +4697,31 @@ const time = Temporal.PlainTime.from("19:39:09.068346205"); >time : Temporal.PlainTime >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"19:39:09.068346205" : "19:39:09.068346205" time.toLocaleString(); // example output: '7:39:09 PM' >time.toLocaleString() : string ->time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >time : Temporal.PlainTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string time.toLocaleString("de-DE"); // example output: '19:39:09' >time.toLocaleString("de-DE") : string ->time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >time : Temporal.PlainTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" time.toLocaleString("de-DE", { timeZone: "Europe/Berlin" }); // => '19:39:09' >time.toLocaleString("de-DE", { timeZone: "Europe/Berlin" }) : string ->time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >time : Temporal.PlainTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >{ timeZone: "Europe/Berlin" } : { timeZone: string; } >timeZone : string @@ -4729,9 +4729,9 @@ time.toLocaleString("en-US-u-nu-fullwide-hc-h24"); // => '19:39:09' >time.toLocaleString("en-US-u-nu-fullwide-hc-h24") : string ->time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >time : Temporal.PlainTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en-US-u-nu-fullwide-hc-h24" : "en-US-u-nu-fullwide-hc-h24" } @@ -4759,33 +4759,33 @@ >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30") : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30" : "1995-12-07T03:24:30" dt = Temporal.PlainDateTime.from("19951207T032430"); >dt = Temporal.PlainDateTime.from("19951207T032430") : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("19951207T032430") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"19951207T032430" : "19951207T032430" dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]"); >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]") : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30+01:00[Europe/Brussels]" : "1995-12-07T03:24:30+01:00[Europe/Brussels]" // => 1995-12-07T03:24:30 @@ -4794,22 +4794,22 @@ >dt === Temporal.PlainDateTime.from(dt) : boolean >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from(dt) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime dt = Temporal.PlainDateTime.from({ >dt = Temporal.PlainDateTime.from({ year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, } : { year: number; month: number; day: number; hour: number; minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } year: 1995, @@ -4853,11 +4853,11 @@ >dt = Temporal.PlainDateTime.from({ year: 1995, month: 12, day: 7 }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 1995, month: 12, day: 7 }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 1995, month: 12, day: 7 } : { year: number; month: number; day: number; } >year : number >1995 : 1995 @@ -4870,17 +4870,17 @@ >dt = Temporal.PlainDateTime.from(Temporal.PlainDate.from("1995-12-07T03:24:30")) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from(Temporal.PlainDate.from("1995-12-07T03:24:30")) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDate.from("1995-12-07T03:24:30") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"1995-12-07T03:24:30" : "1995-12-07T03:24:30" // => 1995-12-07T00:00:00 @@ -4890,11 +4890,11 @@ >dt = Temporal.PlainDateTime.from({ year: 5756, month: 3, day: 14, hour: 3, minute: 24, second: 30, calendar: "hebrew" }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 5756, month: 3, day: 14, hour: 3, minute: 24, second: 30, calendar: "hebrew" }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 5756, month: 3, day: 14, hour: 3, minute: 24, second: 30, calendar: "hebrew" } : { year: number; month: number; day: number; hour: number; minute: number; second: number; calendar: string; } >year : number >5756 : 5756 @@ -4918,11 +4918,11 @@ >dt = Temporal.PlainDateTime.from({ year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2001, month: 13, day: 1 } : { year: number; month: number; day: number; } >year : number >2001 : 2001 @@ -4939,11 +4939,11 @@ >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 32 }, { overflow: "constrain" }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 32 }, { overflow: "constrain" }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2001, month: 1, day: 32 } : { year: number; month: number; day: number; } >year : number >2001 : 2001 @@ -4960,11 +4960,11 @@ >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, hour: 25 }, { overflow: "constrain" }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, hour: 25 }, { overflow: "constrain" }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2001, month: 1, day: 1, hour: 25 } : { year: number; month: number; day: number; hour: number; } >year : number >2001 : 2001 @@ -4983,11 +4983,11 @@ >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, minute: 60 }, { overflow: "constrain" }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, minute: 60 }, { overflow: "constrain" }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2001, month: 1, day: 1, minute: 60 } : { year: number; month: number; day: number; minute: number; } >year : number >2001 : 2001 @@ -5006,11 +5006,11 @@ >dt = Temporal.PlainDateTime.from({ year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2001, month: 13, day: 1 } : { year: number; month: number; day: number; } >year : number >2001 : 2001 @@ -5027,11 +5027,11 @@ >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 32 }, { overflow: "reject" }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 32 }, { overflow: "reject" }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2001, month: 1, day: 32 } : { year: number; month: number; day: number; } >year : number >2001 : 2001 @@ -5048,11 +5048,11 @@ >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, hour: 25 }, { overflow: "reject" }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, hour: 25 }, { overflow: "reject" }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2001, month: 1, day: 1, hour: 25 } : { year: number; month: number; day: number; hour: number; } >year : number >2001 : 2001 @@ -5071,11 +5071,11 @@ >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, minute: 60 }, { overflow: "reject" }) : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, minute: 60 }, { overflow: "reject" }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2001, month: 1, day: 1, minute: 60 } : { year: number; month: number; day: number; minute: number; } >year : number >2001 : 2001 @@ -5096,31 +5096,31 @@ const one = Temporal.PlainDateTime.from("1995-12-07T03:24"); >one : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24" : "1995-12-07T03:24" const two = Temporal.PlainDateTime.from("1995-12-07T01:24"); >two : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T01:24") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T01:24" : "1995-12-07T01:24" const three = Temporal.PlainDateTime.from("2015-12-07T01:24"); >three : Temporal.PlainDateTime >Temporal.PlainDateTime.from("2015-12-07T01:24") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2015-12-07T01:24" : "2015-12-07T01:24" const sorted = [one, two, three].sort(Temporal.PlainDateTime.compare); @@ -5140,9 +5140,9 @@ sorted.join(" "); >sorted.join(" ") : string ->sorted.join : (separator?: string | undefined) => string +>sorted.join : (separator?: string) => string >sorted : Temporal.PlainDateTime[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >" " : " " // => '1995-12-07T01:24:00 1995-12-07T03:24:00 2015-12-07T01:24:00' @@ -5157,11 +5157,11 @@ >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" dt.year; // => 1995 @@ -5218,11 +5218,11 @@ >dt = Temporal.PlainDateTime.from("2019-02-23T03:24:30.000003500[u-ca=hebrew]") : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("2019-02-23T03:24:30.000003500[u-ca=hebrew]") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2019-02-23T03:24:30.000003500[u-ca=hebrew]" : "2019-02-23T03:24:30.000003500[u-ca=hebrew]" dt.year; // => 5779 @@ -5280,11 +5280,11 @@ const date = Temporal.PlainDateTime.from("-000015-01-01T12:30[u-ca=gregory]"); >date : Temporal.PlainDateTime >Temporal.PlainDateTime.from("-000015-01-01T12:30[u-ca=gregory]") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"-000015-01-01T12:30[u-ca=gregory]" : "-000015-01-01T12:30[u-ca=gregory]" date.era; @@ -5311,11 +5311,11 @@ const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"][dt.dayOfWeek - 1]; // => 'THU' @@ -5339,11 +5339,11 @@ const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" // ISO ordinal date @@ -5364,11 +5364,11 @@ const dt = Temporal.PlainDateTime.from("2022-01-01T03:24:30.000003500"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("2022-01-01T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2022-01-01T03:24:30.000003500" : "2022-01-01T03:24:30.000003500" // ISO week date @@ -5392,11 +5392,11 @@ const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" dt.daysInWeek; // => 7 @@ -5424,14 +5424,14 @@ const dt = Temporal.Now.plainDateTimeISO().with({ month }); >dt : Temporal.PlainDateTime >Temporal.Now.plainDateTimeISO().with({ month }) : Temporal.PlainDateTime ->Temporal.Now.plainDateTimeISO().with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.Now.plainDateTimeISO().with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.Now.plainDateTimeISO() : Temporal.PlainDateTime ->Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime +>Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime ->with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime +>with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ month } : { month: number; } >month : number @@ -5467,9 +5467,9 @@ >dt => dt.toLocaleString("en", { month: "long" }) : (dt: Temporal.PlainDateTime) => string >dt : Temporal.PlainDateTime >dt.toLocaleString("en", { month: "long" }) : string ->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >dt : Temporal.PlainDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en" : "en" >{ month: "long" } : { month: "long"; } >month : "long" @@ -5490,9 +5490,9 @@ const format = new Intl.ListFormat("en"); >format : Intl.ListFormat >new Intl.ListFormat("en") : Intl.ListFormat ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >"en" : "en" const poem = `Thirty days hath ${format.format(strings)}`; @@ -5516,11 +5516,11 @@ const dt = Temporal.Now.plainDateTimeISO(); >dt : Temporal.PlainDateTime >Temporal.Now.plainDateTimeISO() : Temporal.PlainDateTime ->Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime +>Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime +>plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime const percent = dt.dayOfYear / dt.daysInYear; >percent : number @@ -5535,9 +5535,9 @@ `The year is ${percent.toLocaleString("en", { style: "percent" })} over!`; >`The year is ${percent.toLocaleString("en", { style: "percent" })} over!` : string >percent.toLocaleString("en", { style: "percent" }) : string ->percent.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>percent.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >percent : number ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >"en" : "en" >{ style: "percent" } : { style: "percent"; } >style : "percent" @@ -5550,11 +5550,11 @@ const dt = Temporal.PlainDate.from("1900-01-01T12:00"); >dt : Temporal.PlainDate >Temporal.PlainDate.from("1900-01-01T12:00") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"1900-01-01T12:00" : "1900-01-01T12:00" dt.monthsInYear; // => 12 @@ -5568,11 +5568,11 @@ const dt = Temporal.Now.plainDateTimeISO(); >dt : Temporal.PlainDateTime >Temporal.Now.plainDateTimeISO() : Temporal.PlainDateTime ->Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime +>Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime +>plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime dt.inLeapYear; // example output: true >dt.inLeapYear : boolean @@ -5583,9 +5583,9 @@ dt.with({ year: 2100 }).inLeapYear; // => false >dt.with({ year: 2100 }).inLeapYear : boolean >dt.with({ year: 2100 }) : Temporal.PlainDateTime ->dt.with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>dt.with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2100 } : { year: number; } >year : number >2100 : 2100 @@ -5596,18 +5596,18 @@ const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" dt.with({ year: 2015, second: 31 }); // => 2015-12-07T03:24:31.0000035 >dt.with({ year: 2015, second: 31 }) : Temporal.PlainDateTime ->dt.with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>dt.with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2015, second: 31 } : { year: number; second: number; } >year : number >2015 : 2015 @@ -5619,18 +5619,18 @@ const dt = Temporal.PlainDateTime.from("2015-12-07T03:24:30.000003500"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("2015-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2015-12-07T03:24:30.000003500" : "2015-12-07T03:24:30.000003500" dt.withPlainTime({ hour: 10 }); // => 2015-12-07T10:00:00 >dt.withPlainTime({ hour: 10 }) : Temporal.PlainDateTime ->dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >{ hour: 10 } : { hour: number; } >hour : number >10 : 10 @@ -5638,41 +5638,41 @@ const time = Temporal.PlainTime.from("11:22"); >time : Temporal.PlainTime >Temporal.PlainTime.from("11:22") : Temporal.PlainTime ->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >Temporal.PlainTime : Temporal.PlainTimeConstructor >Temporal : typeof Temporal >PlainTime : Temporal.PlainTimeConstructor ->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime +>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime >"11:22" : "11:22" dt.withPlainTime(time); // => 2015-12-07T11:22:00 >dt.withPlainTime(time) : Temporal.PlainDateTime ->dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >time : Temporal.PlainTime dt.withPlainTime("12:34"); // => 2015-12-07T12:34:00 >dt.withPlainTime("12:34") : Temporal.PlainDateTime ->dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >"12:34" : "12:34" // easier for chaining dt.add({ days: 2, hours: 22 }).withPlainTime("00:00"); // => 2015-12-10T00:00:00 >dt.add({ days: 2, hours: 22 }).withPlainTime("00:00") : Temporal.PlainDateTime ->dt.add({ days: 2, hours: 22 }).withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>dt.add({ days: 2, hours: 22 }).withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >dt.add({ days: 2, hours: 22 }) : Temporal.PlainDateTime ->dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ days: 2, hours: 22 } : { days: number; hours: number; } >days : number >2 : 2 >hours : number >22 : 22 ->withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime +>withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime >"00:00" : "00:00" } @@ -5680,11 +5680,11 @@ const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500[u-ca=japanese]"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500[u-ca=japanese]") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500[u-ca=japanese]" : "1995-12-07T03:24:30.000003500[u-ca=japanese]" dt.withCalendar("iso8601"); // => 1995-12-07T03:24:30.0000035 @@ -5704,18 +5704,18 @@ >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" dt.add({ years: 20, months: 4, nanoseconds: 500 }); // => 2016-04-07T03:24:30.000004 >dt.add({ years: 20, months: 4, nanoseconds: 500 }) : Temporal.PlainDateTime ->dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ years: 20, months: 4, nanoseconds: 500 } : { years: number; months: number; nanoseconds: number; } >years : number >20 : 20 @@ -5728,27 +5728,27 @@ >dt = Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2019-01-31T15:30" : "2019-01-31T15:30" dt.add({ months: 1 }); // => 2019-02-28T15:30:00 >dt.add({ months: 1 }) : Temporal.PlainDateTime ->dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ months: 1 } : { months: number; } >months : number >1 : 1 dt.add({ months: 1 }, { overflow: "reject" }); // => throws >dt.add({ months: 1 }, { overflow: "reject" }) : Temporal.PlainDateTime ->dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ months: 1 } : { months: number; } >months : number >1 : 1 @@ -5766,18 +5766,18 @@ >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" dt.subtract({ years: 20, months: 4, nanoseconds: 500 }); // => 1975-08-07T03:24:30.000003 >dt.subtract({ years: 20, months: 4, nanoseconds: 500 }) : Temporal.PlainDateTime ->dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ years: 20, months: 4, nanoseconds: 500 } : { years: number; months: number; nanoseconds: number; } >years : number >20 : 20 @@ -5790,27 +5790,27 @@ >dt = Temporal.PlainDateTime.from("2019-03-31T15:30") : Temporal.PlainDateTime >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("2019-03-31T15:30") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2019-03-31T15:30" : "2019-03-31T15:30" dt.subtract({ months: 1 }); // => 2019-02-28T15:30:00 >dt.subtract({ months: 1 }) : Temporal.PlainDateTime ->dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ months: 1 } : { months: number; } >months : number >1 : 1 dt.subtract({ months: 1 }, { overflow: "reject" }); // => throws >dt.subtract({ months: 1 }, { overflow: "reject" }) : Temporal.PlainDateTime ->dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >dt : Temporal.PlainDateTime ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ months: 1 } : { months: number; } >months : number >1 : 1 @@ -5823,36 +5823,36 @@ const dt1 = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt1 : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" const dt2 = Temporal.PlainDateTime.from("2019-01-31T15:30"); >dt2 : Temporal.PlainDateTime >Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2019-01-31T15:30" : "2019-01-31T15:30" dt1.until(dt2); >dt1.until(dt2) : Temporal.Duration ->dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt1 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt2 : Temporal.PlainDateTime // => P8456DT12H5M29.9999965S dt1.until(dt2, { largestUnit: "year" }); >dt1.until(dt2, { largestUnit: "year" }) : Temporal.Duration ->dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt1 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt2 : Temporal.PlainDateTime >{ largestUnit: "year" } : { largestUnit: "year"; } >largestUnit : "year" @@ -5861,9 +5861,9 @@ // => P23Y1M24DT12H5M29.9999965S dt2.until(dt1, { largestUnit: "year" }); >dt2.until(dt1, { largestUnit: "year" }) : Temporal.Duration ->dt2.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>dt2.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt2 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt1 : Temporal.PlainDateTime >{ largestUnit: "year" } : { largestUnit: "year"; } >largestUnit : "year" @@ -5872,9 +5872,9 @@ // => -P23Y1M24DT12H5M29.9999965S dt1.until(dt2, { largestUnit: "nanosecond" }); >dt1.until(dt2, { largestUnit: "nanosecond" }) : Temporal.Duration ->dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt1 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt2 : Temporal.PlainDateTime >{ largestUnit: "nanosecond" } : { largestUnit: "nanosecond"; } >largestUnit : "nanosecond" @@ -5886,9 +5886,9 @@ // Rounding, for example if you don't care about sub-seconds dt1.until(dt2, { smallestUnit: "second" }); >dt1.until(dt2, { smallestUnit: "second" }) : Temporal.Duration ->dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt1 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt2 : Temporal.PlainDateTime >{ smallestUnit: "second" } : { smallestUnit: "second"; } >smallestUnit : "second" @@ -5911,11 +5911,11 @@ >month => Temporal.PlainDateTime.from({ year: 2020, month, day: 1 }) : (month: number) => Temporal.PlainDateTime >month : number >Temporal.PlainDateTime.from({ year: 2020, month, day: 1 }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 2020, month, day: 1 } : { year: number; month: number; day: number; } >year : number >2020 : 2020 @@ -5925,16 +5925,16 @@ jan1.until(feb1); // => P31D >jan1.until(feb1) : Temporal.Duration ->jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >jan1 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >feb1 : Temporal.PlainDateTime jan1.until(feb1, { largestUnit: "month" }); // => P1M >jan1.until(feb1, { largestUnit: "month" }) : Temporal.Duration ->jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >jan1 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >feb1 : Temporal.PlainDateTime >{ largestUnit: "month" } : { largestUnit: "month"; } >largestUnit : "month" @@ -5942,16 +5942,16 @@ feb1.until(mar1); // => P29D >feb1.until(mar1) : Temporal.Duration ->feb1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>feb1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >feb1 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >mar1 : Temporal.PlainDateTime feb1.until(mar1, { largestUnit: "month" }); // => P1M >feb1.until(mar1, { largestUnit: "month" }) : Temporal.Duration ->feb1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>feb1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >feb1 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >mar1 : Temporal.PlainDateTime >{ largestUnit: "month" } : { largestUnit: "month"; } >largestUnit : "month" @@ -5959,9 +5959,9 @@ jan1.until(mar1); // => P60D >jan1.until(mar1) : Temporal.Duration ->jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >jan1 : Temporal.PlainDateTime ->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >mar1 : Temporal.PlainDateTime } @@ -5969,28 +5969,28 @@ const dt1 = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt1 : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" const dt2 = Temporal.PlainDateTime.from("2019-01-31T15:30"); >dt2 : Temporal.PlainDateTime >Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2019-01-31T15:30" : "2019-01-31T15:30" dt2.since(dt1); // => P8456DT12H5M29.9999965S >dt2.since(dt1) : Temporal.Duration ->dt2.since : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>dt2.since : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt2 : Temporal.PlainDateTime ->since : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >dt1 : Temporal.PlainDateTime } @@ -5998,11 +5998,11 @@ const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" // Round to a particular unit @@ -6049,21 +6049,21 @@ const dt1 = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt1 : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" const dt2 = Temporal.PlainDateTime.from("2019-01-31T15:30"); >dt2 : Temporal.PlainDateTime >Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"2019-01-31T15:30" : "2019-01-31T15:30" dt1.equals(dt2); // => false @@ -6085,11 +6085,11 @@ const dt = Temporal.PlainDateTime.from({ >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from({ year: 1999, month: 12, day: 31, hour: 23, minute: 59, second: 59, millisecond: 999, microsecond: 999, nanosecond: 999, }) : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >{ year: 1999, month: 12, day: 31, hour: 23, minute: 59, second: 59, millisecond: 999, microsecond: 999, nanosecond: 999, } : { year: number; month: number; day: number; hour: number; minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } year: 1999, @@ -6131,42 +6131,42 @@ }); dt.toString(); // => '1999-12-31T23:59:59.999999999' >dt.toString() : string ->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string >dt : Temporal.PlainDateTime ->toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainDateTimeToStringOptions) => string dt.toString({ smallestUnit: "minute" }); // => '1999-12-31T23:59' >dt.toString({ smallestUnit: "minute" }) : string ->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string >dt : Temporal.PlainDateTime ->toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainDateTimeToStringOptions) => string >{ smallestUnit: "minute" } : { smallestUnit: "minute"; } >smallestUnit : "minute" >"minute" : "minute" dt.toString({ fractionalSecondDigits: 0 }); // => '1999-12-31T23:59:59' >dt.toString({ fractionalSecondDigits: 0 }) : string ->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string >dt : Temporal.PlainDateTime ->toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainDateTimeToStringOptions) => string >{ fractionalSecondDigits: 0 } : { fractionalSecondDigits: 0; } >fractionalSecondDigits : 0 >0 : 0 dt.toString({ fractionalSecondDigits: 4 }); // => '1999-12-31T23:59:59.9999' >dt.toString({ fractionalSecondDigits: 4 }) : string ->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string >dt : Temporal.PlainDateTime ->toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainDateTimeToStringOptions) => string >{ fractionalSecondDigits: 4 } : { fractionalSecondDigits: 4; } >fractionalSecondDigits : 4 >4 : 4 dt.toString({ fractionalSecondDigits: 8, roundingMode: "halfExpand" }); >dt.toString({ fractionalSecondDigits: 8, roundingMode: "halfExpand" }) : string ->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string >dt : Temporal.PlainDateTime ->toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainDateTimeToStringOptions) => string >{ fractionalSecondDigits: 8, roundingMode: "halfExpand" } : { fractionalSecondDigits: 8; roundingMode: "halfExpand"; } >fractionalSecondDigits : 8 >8 : 8 @@ -6180,31 +6180,31 @@ const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" dt.toLocaleString(); // example output: 1995-12-07, 3:24:30 a.m. >dt.toLocaleString() : string ->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >dt : Temporal.PlainDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string dt.toLocaleString("de-DE"); // example output: 7.12.1995, 03:24:30 >dt.toLocaleString("de-DE") : string ->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >dt : Temporal.PlainDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" dt.toLocaleString("de-DE", { timeZone: "Europe/Berlin", weekday: "long" }); // => 'Donnerstag' >dt.toLocaleString("de-DE", { timeZone: "Europe/Berlin", weekday: "long" }) : string ->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >dt : Temporal.PlainDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >{ timeZone: "Europe/Berlin", weekday: "long" } : { timeZone: string; weekday: "long"; } >timeZone : string @@ -6214,9 +6214,9 @@ dt.toLocaleString("en-US-u-nu-fullwide-hc-h12"); // => '12/7/1995, 3:24:30 AM' >dt.toLocaleString("en-US-u-nu-fullwide-hc-h12") : string ->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >dt : Temporal.PlainDateTime ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en-US-u-nu-fullwide-hc-h12" : "en-US-u-nu-fullwide-hc-h12" } @@ -6224,11 +6224,11 @@ const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); >dt : Temporal.PlainDateTime >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime ->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor >Temporal : typeof Temporal >PlainDateTime : Temporal.PlainDateTimeConstructor ->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime +>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" dt.toPlainDate(); // => 1995-12-07 @@ -6285,44 +6285,44 @@ >ym = Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" ym = Temporal.PlainYearMonth.from("2019-06-24"); // => 2019-06 >ym = Temporal.PlainYearMonth.from("2019-06-24") : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06-24") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06-24" : "2019-06-24" ym = Temporal.PlainYearMonth.from("2019-06-24T15:43:27"); // => 2019-06 >ym = Temporal.PlainYearMonth.from("2019-06-24T15:43:27") : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06-24T15:43:27") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06-24T15:43:27" : "2019-06-24T15:43:27" ym = Temporal.PlainYearMonth.from("2019-06-24T15:43:27+01:00[Europe/Brussels]"); >ym = Temporal.PlainYearMonth.from("2019-06-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06-24T15:43:27+01:00[Europe/Brussels]" : "2019-06-24T15:43:27+01:00[Europe/Brussels]" // => 2019-06 @@ -6330,22 +6330,22 @@ >ym === Temporal.PlainYearMonth.from(ym) : boolean >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from(ym) : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth ym = Temporal.PlainYearMonth.from({ year: 2019, month: 6 }); // => 2019-06 >ym = Temporal.PlainYearMonth.from({ year: 2019, month: 6 }) : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from({ year: 2019, month: 6 }) : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ year: 2019, month: 6 } : { year: number; month: number; } >year : number >2019 : 2019 @@ -6356,17 +6356,17 @@ >ym = Temporal.PlainYearMonth.from(Temporal.PlainDate.from("2019-06-24")) : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from(Temporal.PlainDate.from("2019-06-24")) : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainDate.from("2019-06-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2019-06-24" : "2019-06-24" // => 2019-06 @@ -6377,11 +6377,11 @@ >ym = Temporal.PlainYearMonth.from({ year: 2001, month: 13 }, { overflow: "constrain" }) : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from({ year: 2001, month: 13 }, { overflow: "constrain" }) : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ year: 2001, month: 13 } : { year: number; month: number; } >year : number >2001 : 2001 @@ -6396,11 +6396,11 @@ >ym = Temporal.PlainYearMonth.from({ year: 2001, month: 13 }, { overflow: "reject" }) : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from({ year: 2001, month: 13 }, { overflow: "reject" }) : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ year: 2001, month: 13 } : { year: number; month: number; } >year : number >2001 : 2001 @@ -6417,31 +6417,31 @@ const one = Temporal.PlainYearMonth.from("2006-08"); >one : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2006-08") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2006-08" : "2006-08" const two = Temporal.PlainYearMonth.from("2015-07"); >two : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2015-07") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2015-07" : "2015-07" const three = Temporal.PlainYearMonth.from("1930-02"); >three : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("1930-02") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"1930-02" : "1930-02" const sorted = [one, two, three].sort(Temporal.PlainYearMonth.compare); @@ -6461,9 +6461,9 @@ sorted.join(" "); // => '1930-02 2006-08 2015-07' >sorted.join(" ") : string ->sorted.join : (separator?: string | undefined) => string +>sorted.join : (separator?: string) => string >sorted : Temporal.PlainYearMonth[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >" " : " " } @@ -6476,11 +6476,11 @@ >ym = Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" ym.year; // => 2019 @@ -6502,11 +6502,11 @@ >ym = Temporal.PlainYearMonth.from("2019-02-23[u-ca=hebrew]") : Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-02-23[u-ca=hebrew]") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-02-23[u-ca=hebrew]" : "2019-02-23[u-ca=hebrew]" ym.year; // => 5779 @@ -6529,11 +6529,11 @@ const ym = Temporal.PlainYearMonth.from("-000015-01-01[u-ca=gregory]"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("-000015-01-01[u-ca=gregory]") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"-000015-01-01[u-ca=gregory]" : "-000015-01-01[u-ca=gregory]" ym.era; @@ -6575,11 +6575,11 @@ const ym = Temporal.PlainYearMonth.from({ year: 2020, calendar: "iso8601", month }); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from({ year: 2020, calendar: "iso8601", month }) : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ year: 2020, calendar: "iso8601", month } : { year: number; calendar: string; month: number; } >year : number >2020 : 2020 @@ -6619,9 +6619,9 @@ >ym => ym.toLocaleString("en", { month: "long", calendar: "iso8601" }) : (ym: Temporal.PlainYearMonth) => string >ym : Temporal.PlainYearMonth >ym.toLocaleString("en", { month: "long", calendar: "iso8601" }) : string ->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >ym : Temporal.PlainYearMonth ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en" : "en" >{ month: "long", calendar: "iso8601" } : { month: "long"; calendar: string; } >month : "long" @@ -6644,9 +6644,9 @@ const format = new Intl.ListFormat("en"); >format : Intl.ListFormat >new Intl.ListFormat("en") : Intl.ListFormat ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >"en" : "en" const poem = `Thirty days hath ${format.format(strings)}`; @@ -6670,11 +6670,11 @@ const ym = Temporal.PlainYearMonth.from({ year: 2019, month: 6, calendar: "iso8601" }); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from({ year: 2019, month: 6, calendar: "iso8601" }) : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ year: 2019, month: 6, calendar: "iso8601" } : { year: number; month: number; calendar: string; } >year : number >2019 : 2019 @@ -6696,9 +6696,9 @@ `${ym.toLocaleString("en", { month: "long", year: "numeric", calendar: "iso8601" })} was ${percent.toLocaleString("en", { style: "percent" })} of the year!`; >`${ym.toLocaleString("en", { month: "long", year: "numeric", calendar: "iso8601" })} was ${percent.toLocaleString("en", { style: "percent" })} of the year!` : string >ym.toLocaleString("en", { month: "long", year: "numeric", calendar: "iso8601" }) : string ->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >ym : Temporal.PlainYearMonth ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"en" : "en" >{ month: "long", year: "numeric", calendar: "iso8601" } : { month: "long"; year: "numeric"; calendar: string; } >month : "long" @@ -6708,9 +6708,9 @@ >calendar : string >"iso8601" : "iso8601" >percent.toLocaleString("en", { style: "percent" }) : string ->percent.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>percent.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >percent : number ->toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string +>toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string >"en" : "en" >{ style: "percent" } : { style: "percent"; } >style : "percent" @@ -6723,11 +6723,11 @@ const ym = Temporal.PlainYearMonth.from("1900-01"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("1900-01") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"1900-01" : "1900-01" ym.monthsInYear; // => 12 @@ -6741,11 +6741,11 @@ const ym = Temporal.PlainYearMonth.from("2019-06"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" ym.inLeapYear; // => false @@ -6757,9 +6757,9 @@ ym.with({ year: 2100 }).inLeapYear; // => false >ym.with({ year: 2100 }).inLeapYear : boolean >ym.with({ year: 2100 }) : Temporal.PlainYearMonth ->ym.with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>ym.with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth ->with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ year: 2100 } : { year: number; } >year : number >2100 : 2100 @@ -6770,19 +6770,19 @@ const ym = Temporal.PlainYearMonth.from("2019-06"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" // Get December of that year ym.with({ month: 12 }); // => 2019-12 >ym.with({ month: 12 }) : Temporal.PlainYearMonth ->ym.with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>ym.with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth ->with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ month: 12 } : { month: number; } >month : number >12 : 12 @@ -6792,18 +6792,18 @@ const ym = Temporal.PlainYearMonth.from("2019-06"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" ym.add({ years: 20, months: 4 }); // => 2039-10 >ym.add({ years: 20, months: 4 }) : Temporal.PlainYearMonth ->ym.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>ym.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ years: 20, months: 4 } : { years: number; months: number; } >years : number >20 : 20 @@ -6815,18 +6815,18 @@ const ym = Temporal.PlainYearMonth.from("2019-06"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" ym.subtract({ years: 20, months: 4 }); // => 1999-02 >ym.subtract({ years: 20, months: 4 }) : Temporal.PlainYearMonth ->ym.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>ym.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >ym : Temporal.PlainYearMonth ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ years: 20, months: 4 } : { years: number; months: number; } >years : number >20 : 20 @@ -6838,35 +6838,35 @@ const ym = Temporal.PlainYearMonth.from("2006-08"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2006-08") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2006-08" : "2006-08" const other = Temporal.PlainYearMonth.from("2019-06"); >other : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" ym.until(other); // => P12Y10M >ym.until(other) : Temporal.Duration ->ym.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration +>ym.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration >ym : Temporal.PlainYearMonth ->until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration +>until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration >other : Temporal.PlainYearMonth ym.until(other, { largestUnit: "month" }); // => P154M >ym.until(other, { largestUnit: "month" }) : Temporal.Duration ->ym.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration +>ym.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration >ym : Temporal.PlainYearMonth ->until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration +>until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration >other : Temporal.PlainYearMonth >{ largestUnit: "month" } : { largestUnit: "month"; } >largestUnit : "month" @@ -6874,9 +6874,9 @@ other.until(ym, { largestUnit: "month" }); // => -P154M >other.until(ym, { largestUnit: "month" }) : Temporal.Duration ->other.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration +>other.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration >other : Temporal.PlainYearMonth ->until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration +>until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration >ym : Temporal.PlainYearMonth >{ largestUnit: "month" } : { largestUnit: "month"; } >largestUnit : "month" @@ -6889,7 +6889,7 @@ // the month to calculate a number of days: ym.toPlainDate({ day: 1 }).until(other.toPlainDate({ day: 1 }), { largestUnit: "day" }); // => P4687D >ym.toPlainDate({ day: 1 }).until(other.toPlainDate({ day: 1 }), { largestUnit: "day" }) : Temporal.Duration ->ym.toPlainDate({ day: 1 }).until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>ym.toPlainDate({ day: 1 }).until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >ym.toPlainDate({ day: 1 }) : Temporal.PlainDate >ym.toPlainDate : (item: Temporal.PlainYearMonthToPlainDateOptions) => Temporal.PlainDate >ym : Temporal.PlainYearMonth @@ -6897,7 +6897,7 @@ >{ day: 1 } : { day: number; } >day : number >1 : 1 ->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >other.toPlainDate({ day: 1 }) : Temporal.PlainDate >other.toPlainDate : (item: Temporal.PlainYearMonthToPlainDateOptions) => Temporal.PlainDate >other : Temporal.PlainYearMonth @@ -6914,28 +6914,28 @@ const ym = Temporal.PlainYearMonth.from("2019-06"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" const other = Temporal.PlainYearMonth.from("2006-08"); >other : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2006-08") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2006-08" : "2006-08" ym.since(other); // => P12Y10M >ym.since(other) : Temporal.Duration ->ym.since : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration +>ym.since : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration >ym : Temporal.PlainYearMonth ->since : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration +>since : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration >other : Temporal.PlainYearMonth } @@ -6943,21 +6943,21 @@ const ym = Temporal.PlainYearMonth.from("2019-06"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" const other = Temporal.PlainYearMonth.from("2006-08"); >other : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2006-08") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2006-08" : "2006-08" ym.equals(other); // => false @@ -6979,18 +6979,18 @@ const ym = Temporal.PlainYearMonth.from("2019-06"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" ym.toString(); // => '2019-06' >ym.toString() : string ->ym.toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string +>ym.toString : (options?: Temporal.PlainDateToStringOptions) => string >ym : Temporal.PlainYearMonth ->toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainDateToStringOptions) => string } { @@ -7007,11 +7007,11 @@ const ym = Temporal.PlainYearMonth.from({ year: 2019, month: 6, calendar }); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from({ year: 2019, month: 6, calendar }) : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >{ year: 2019, month: 6, calendar } : { year: number; month: number; calendar: string; } >year : number >2019 : 2019 @@ -7021,34 +7021,34 @@ ym.toLocaleString(); // example output: '6/2019' >ym.toLocaleString() : string ->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >ym : Temporal.PlainYearMonth ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string // Same as above, but explicitly specifying the calendar: ym.toLocaleString(undefined, { calendar }); >ym.toLocaleString(undefined, { calendar }) : string ->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >ym : Temporal.PlainYearMonth ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >undefined : undefined >{ calendar } : { calendar: string; } >calendar : string ym.toLocaleString("de-DE", { calendar }); // example output: '6.2019' >ym.toLocaleString("de-DE", { calendar }) : string ->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >ym : Temporal.PlainYearMonth ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >{ calendar } : { calendar: string; } >calendar : string ym.toLocaleString("de-DE", { month: "long", year: "numeric", calendar }); // => 'Juni 2019' >ym.toLocaleString("de-DE", { month: "long", year: "numeric", calendar }) : string ->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >ym : Temporal.PlainYearMonth ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >{ month: "long", year: "numeric", calendar } : { month: "long"; year: "numeric"; calendar: string; } >month : "long" @@ -7059,9 +7059,9 @@ ym.toLocaleString(`en-US-u-nu-fullwide-ca-${calendar}`); // => '6/2019' >ym.toLocaleString(`en-US-u-nu-fullwide-ca-${calendar}`) : string ->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >ym : Temporal.PlainYearMonth ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >`en-US-u-nu-fullwide-ca-${calendar}` : string >calendar : string } @@ -7070,11 +7070,11 @@ const ym = Temporal.PlainYearMonth.from("2019-06"); >ym : Temporal.PlainYearMonth >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth ->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor >Temporal : typeof Temporal >PlainYearMonth : Temporal.PlainYearMonthConstructor ->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth +>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth >"2019-06" : "2019-06" ym.toPlainDate({ day: 24 }); // => 2019-06-24 @@ -7124,55 +7124,55 @@ >md = Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"08-24" : "08-24" md = Temporal.PlainMonthDay.from("0824"); // => 08-24 >md = Temporal.PlainMonthDay.from("0824") : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("0824") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"0824" : "0824" md = Temporal.PlainMonthDay.from("2006-08-24"); // => 08-24 >md = Temporal.PlainMonthDay.from("2006-08-24") : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("2006-08-24") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"2006-08-24" : "2006-08-24" md = Temporal.PlainMonthDay.from("2006-08-24T15:43:27"); // => 08-24 >md = Temporal.PlainMonthDay.from("2006-08-24T15:43:27") : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("2006-08-24T15:43:27") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"2006-08-24T15:43:27" : "2006-08-24T15:43:27" md = Temporal.PlainMonthDay.from("2006-08-24T15:43:27+01:00[Europe/Brussels]"); >md = Temporal.PlainMonthDay.from("2006-08-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("2006-08-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"2006-08-24T15:43:27+01:00[Europe/Brussels]" : "2006-08-24T15:43:27+01:00[Europe/Brussels]" // => 08-24 @@ -7180,22 +7180,22 @@ >md === Temporal.PlainMonthDay.from(md) : boolean >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from(md) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >md : Temporal.PlainMonthDay md = Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24 }); // => 08-24 >md = Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24 }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24 }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ monthCode: "M08", day: 24 } : { monthCode: string; day: number; } >monthCode : string >"M08" : "M08" @@ -7206,17 +7206,17 @@ >md = Temporal.PlainMonthDay.from(Temporal.PlainDate.from("2006-08-24")) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from(Temporal.PlainDate.from("2006-08-24")) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2006-08-24" : "2006-08-24" // => 08-24 @@ -7227,11 +7227,11 @@ >md = Temporal.PlainMonthDay.from({ month: 13, day: 1, year: 2000 }, { overflow: "constrain" }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ month: 13, day: 1, year: 2000 }, { overflow: "constrain" }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ month: 13, day: 1, year: 2000 } : { month: number; day: number; year: number; } >month : number >13 : 13 @@ -7248,11 +7248,11 @@ >md = Temporal.PlainMonthDay.from({ month: 1, day: 32, year: 2000 }, { overflow: "constrain" }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ month: 1, day: 32, year: 2000 }, { overflow: "constrain" }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ month: 1, day: 32, year: 2000 } : { month: number; day: number; year: number; } >month : number >1 : 1 @@ -7269,11 +7269,11 @@ >md = Temporal.PlainMonthDay.from({ month: 13, day: 1, year: 2000 }, { overflow: "reject" }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ month: 13, day: 1, year: 2000 }, { overflow: "reject" }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ month: 13, day: 1, year: 2000 } : { month: number; day: number; year: number; } >month : number >13 : 13 @@ -7290,11 +7290,11 @@ >md = Temporal.PlainMonthDay.from({ month: 1, day: 32, year: 2000 }, { overflow: "reject" }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ month: 1, day: 32, year: 2000 }, { overflow: "reject" }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ month: 1, day: 32, year: 2000 } : { month: number; day: number; year: number; } >month : number >1 : 1 @@ -7311,11 +7311,11 @@ >md = Temporal.PlainMonthDay.from({ month: 2, day: 29, year: 2001 }, { overflow: "reject" }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ month: 2, day: 29, year: 2001 }, { overflow: "reject" }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ month: 2, day: 29, year: 2001 } : { month: number; day: number; year: number; } >month : number >2 : 2 @@ -7334,11 +7334,11 @@ >md = Temporal.PlainMonthDay.from({ monthCode: "M05L", day: 15, calendar: "hebrew" }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ monthCode: "M05L", day: 15, calendar: "hebrew" }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ monthCode: "M05L", day: 15, calendar: "hebrew" } : { monthCode: string; day: number; calendar: string; } >monthCode : string >"M05L" : "M05L" @@ -7352,11 +7352,11 @@ >md = Temporal.PlainMonthDay.from({ month: 6, day: 15, year: 5779, calendar: "hebrew" }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ month: 6, day: 15, year: 5779, calendar: "hebrew" }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ month: 6, day: 15, year: 5779, calendar: "hebrew" } : { month: number; day: number; year: number; calendar: string; } >month : number >6 : 6 @@ -7372,11 +7372,11 @@ >md = Temporal.PlainMonthDay.from({ month: 6, day: 15, era: "am", eraYear: 5779, calendar: "hebrew" }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ month: 6, day: 15, era: "am", eraYear: 5779, calendar: "hebrew" }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ month: 6, day: 15, era: "am", eraYear: 5779, calendar: "hebrew" } : { month: number; day: number; era: string; eraYear: number; calendar: string; } >month : number >6 : 6 @@ -7394,11 +7394,11 @@ >md = Temporal.PlainMonthDay.from({ month: 6, day: 15, calendar: "hebrew" }) : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ month: 6, day: 15, calendar: "hebrew" }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ month: 6, day: 15, calendar: "hebrew" } : { month: number; day: number; calendar: string; } >month : number >6 : 6 @@ -7412,11 +7412,11 @@ >md = Temporal.PlainMonthDay.from("2019-02-20[u-ca=hebrew]") : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("2019-02-20[u-ca=hebrew]") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"2019-02-20[u-ca=hebrew]" : "2019-02-20[u-ca=hebrew]" md.monthCode; // => 'M05L' @@ -7446,11 +7446,11 @@ >md = Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"08-24" : "08-24" md.monthCode; // => 'M08' @@ -7474,11 +7474,11 @@ >md = Temporal.PlainMonthDay.from("2019-02-20[u-ca=hebrew]") : Temporal.PlainMonthDay >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("2019-02-20[u-ca=hebrew]") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"2019-02-20[u-ca=hebrew]" : "2019-02-20[u-ca=hebrew]" md.monthCode; // => 'M05L' @@ -7503,34 +7503,34 @@ const md = Temporal.PlainMonthDay.from("11-15"); >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("11-15") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"11-15" : "11-15" // What's the last day of that month? md.with({ day: 31 }); // => 11-30 >md.with({ day: 31 }) : Temporal.PlainMonthDay ->md.with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>md.with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >md : Temporal.PlainMonthDay ->with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ day: 31 } : { day: number; } >day : number >31 : 31 Temporal.PlainMonthDay.from("02-01").with({ day: 31 }); // => 02-29 >Temporal.PlainMonthDay.from("02-01").with({ day: 31 }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from("02-01").with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from("02-01").with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("02-01") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"02-01" : "02-01" ->with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ day: 31 } : { day: number; } >day : number >31 : 31 @@ -7540,21 +7540,21 @@ const md1 = Temporal.PlainMonthDay.from("02-28"); >md1 : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("02-28") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"02-28" : "02-28" const md2 = Temporal.PlainMonthDay.from("02-29"); >md2 : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("02-29") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"02-29" : "02-29" md1.equals(md2); // => false @@ -7612,18 +7612,18 @@ const md = Temporal.PlainMonthDay.from("08-24"); >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >"08-24" : "08-24" md.toString(); // => '08-24' >md.toString() : string ->md.toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string +>md.toString : (options?: Temporal.PlainDateToStringOptions) => string >md : Temporal.PlainMonthDay ->toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string +>toString : (options?: Temporal.PlainDateToStringOptions) => string } { @@ -7640,11 +7640,11 @@ const md = Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24, calendar }); >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24, calendar }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ monthCode: "M08", day: 24, calendar } : { monthCode: string; day: number; calendar: string; } >monthCode : string >"M08" : "M08" @@ -7654,34 +7654,34 @@ md.toLocaleString(); // example output: '8/24' >md.toLocaleString() : string ->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >md : Temporal.PlainMonthDay ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string // Same as above, but explicitly specifying the calendar: md.toLocaleString(undefined, { calendar }); // example output: '8/24' >md.toLocaleString(undefined, { calendar }) : string ->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >md : Temporal.PlainMonthDay ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >undefined : undefined >{ calendar } : { calendar: string; } >calendar : string md.toLocaleString("de-DE", { calendar }); // => '24.8.' >md.toLocaleString("de-DE", { calendar }) : string ->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >md : Temporal.PlainMonthDay ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >{ calendar } : { calendar: string; } >calendar : string md.toLocaleString("de-DE", { month: "long", day: "numeric", calendar }); // => '24. August' >md.toLocaleString("de-DE", { month: "long", day: "numeric", calendar }) : string ->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >md : Temporal.PlainMonthDay ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >"de-DE" : "de-DE" >{ month: "long", day: "numeric", calendar } : { month: "long"; day: "numeric"; calendar: string; } >month : "long" @@ -7692,9 +7692,9 @@ md.toLocaleString(`en-US-u-nu-fullwide-ca-${calendar}`); // => '8/24' >md.toLocaleString(`en-US-u-nu-fullwide-ca-${calendar}`) : string ->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >md : Temporal.PlainMonthDay ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string >`en-US-u-nu-fullwide-ca-${calendar}` : string >calendar : string } @@ -7703,11 +7703,11 @@ const md = Temporal.PlainMonthDay.from({ >md : Temporal.PlainMonthDay >Temporal.PlainMonthDay.from({ calendar: "japanese", monthCode: "M01", day: 1, }) : Temporal.PlainMonthDay ->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor >Temporal : typeof Temporal >PlainMonthDay : Temporal.PlainMonthDayConstructor ->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay +>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay >{ calendar: "japanese", monthCode: "M01", day: 1, } : { calendar: string; monthCode: string; day: number; } calendar: "japanese", @@ -7919,17 +7919,17 @@ >two : Temporal.Duration >three : Temporal.Duration >sort : (compareFn?: ((a: Temporal.Duration, b: Temporal.Duration) => number) | undefined) => Temporal.Duration[] ->Temporal.Duration.compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions | undefined) => number +>Temporal.Duration.compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions) => number >Temporal.Duration : Temporal.DurationConstructor >Temporal : typeof Temporal >Duration : Temporal.DurationConstructor ->compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions | undefined) => number +>compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions) => number sorted1.join(" "); >sorted1.join(" ") : string ->sorted1.join : (separator?: string | undefined) => string +>sorted1.join : (separator?: string) => string >sorted1 : Temporal.Duration[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >" " : " " // => 'P3DT6H50M PT79H10M P3DT7H630S' @@ -7938,11 +7938,11 @@ const relativeTo = Temporal.ZonedDateTime.from("2020-11-01T00:00-07:00[America/Los_Angeles]"); >relativeTo : Temporal.ZonedDateTime >Temporal.ZonedDateTime.from("2020-11-01T00:00-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime ->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor >Temporal : typeof Temporal >ZonedDateTime : Temporal.ZonedDateTimeConstructor ->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime +>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime >"2020-11-01T00:00-07:00[America/Los_Angeles]" : "2020-11-01T00:00-07:00[America/Los_Angeles]" const sorted2 = [one, two, three].sort((one, two) => Temporal.Duration.compare(one, two, { relativeTo })); @@ -7958,11 +7958,11 @@ >one : Temporal.Duration >two : Temporal.Duration >Temporal.Duration.compare(one, two, { relativeTo }) : number ->Temporal.Duration.compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions | undefined) => number +>Temporal.Duration.compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions) => number >Temporal.Duration : Temporal.DurationConstructor >Temporal : typeof Temporal >Duration : Temporal.DurationConstructor ->compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions | undefined) => number +>compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions) => number >one : Temporal.Duration >two : Temporal.Duration >{ relativeTo } : { relativeTo: Temporal.ZonedDateTime; } @@ -7970,9 +7970,9 @@ sorted2.join(" "); >sorted2.join(" ") : string ->sorted2.join : (separator?: string | undefined) => string +>sorted2.join : (separator?: string) => string >sorted2 : Temporal.Duration[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >" " : " " // => 'PT79H10M P3DT6H50M P3DT7H630S' @@ -8220,28 +8220,28 @@ const startDate1 = Temporal.PlainDate.from("2000-12-01"); >startDate1 : Temporal.PlainDate >Temporal.PlainDate.from("2000-12-01") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2000-12-01" : "2000-12-01" startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) >startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since(startDate1, { largestUnit: "months" }) : Temporal.Duration ->startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) : Temporal.PlainDate ->startDate1.add(oneAndAHalfMonth).add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>startDate1.add(oneAndAHalfMonth).add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >startDate1.add(oneAndAHalfMonth) : Temporal.PlainDate ->startDate1.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>startDate1.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >startDate1 : Temporal.PlainDate ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >oneAndAHalfMonth : Temporal.Duration ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >oneAndAHalfMonth : Temporal.Duration .since(startDate1, { largestUnit: "months" }); // => P3M4D ->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startDate1 : Temporal.PlainDate >{ largestUnit: "months" } : { largestUnit: "months"; } >largestUnit : "months" @@ -8250,28 +8250,28 @@ const startDate2 = Temporal.PlainDate.from("2001-01-01"); >startDate2 : Temporal.PlainDate >Temporal.PlainDate.from("2001-01-01") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2001-01-01" : "2001-01-01" startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) >startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since(startDate2, { largestUnit: "months" }) : Temporal.Duration ->startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) : Temporal.PlainDate ->startDate2.add(oneAndAHalfMonth).add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>startDate2.add(oneAndAHalfMonth).add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >startDate2.add(oneAndAHalfMonth) : Temporal.PlainDate ->startDate2.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>startDate2.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >startDate2 : Temporal.PlainDate ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >oneAndAHalfMonth : Temporal.Duration ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >oneAndAHalfMonth : Temporal.Duration .since(startDate2, { largestUnit: "months" }); // => P3M1D ->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startDate2 : Temporal.PlainDate >{ largestUnit: "months" } : { largestUnit: "months"; } >largestUnit : "months" @@ -8374,28 +8374,28 @@ const startDate1 = Temporal.PlainDate.from("2001-01-01"); >startDate1 : Temporal.PlainDate >Temporal.PlainDate.from("2001-01-01") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2001-01-01" : "2001-01-01" startDate1.add(threeMonths).subtract(oneAndAHalfMonth) >startDate1.add(threeMonths).subtract(oneAndAHalfMonth) .since(startDate1, { largestUnit: "months" }) : Temporal.Duration ->startDate1.add(threeMonths).subtract(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>startDate1.add(threeMonths).subtract(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startDate1.add(threeMonths).subtract(oneAndAHalfMonth) : Temporal.PlainDate ->startDate1.add(threeMonths).subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>startDate1.add(threeMonths).subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >startDate1.add(threeMonths) : Temporal.PlainDate ->startDate1.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>startDate1.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >startDate1 : Temporal.PlainDate ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >threeMonths : Temporal.Duration ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >oneAndAHalfMonth : Temporal.Duration .since(startDate1, { largestUnit: "months" }); // => P1M13D ->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startDate1 : Temporal.PlainDate >{ largestUnit: "months" } : { largestUnit: "months"; } >largestUnit : "months" @@ -8404,28 +8404,28 @@ const startDate2 = Temporal.PlainDate.from("2001-02-01"); >startDate2 : Temporal.PlainDate >Temporal.PlainDate.from("2001-02-01") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2001-02-01" : "2001-02-01" startDate2.add(threeMonths).subtract(oneAndAHalfMonth) >startDate2.add(threeMonths).subtract(oneAndAHalfMonth) .since(startDate2, { largestUnit: "months" }) : Temporal.Duration ->startDate2.add(threeMonths).subtract(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>startDate2.add(threeMonths).subtract(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startDate2.add(threeMonths).subtract(oneAndAHalfMonth) : Temporal.PlainDate ->startDate2.add(threeMonths).subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>startDate2.add(threeMonths).subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >startDate2.add(threeMonths) : Temporal.PlainDate ->startDate2.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>startDate2.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >startDate2 : Temporal.PlainDate ->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >threeMonths : Temporal.Duration ->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >oneAndAHalfMonth : Temporal.Duration .since(startDate2, { largestUnit: "months" }); // => P1M16D ->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration +>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration >startDate2 : Temporal.PlainDate >{ largestUnit: "months" } : { largestUnit: "months"; } >largestUnit : "months" @@ -8634,11 +8634,11 @@ const refDate = Temporal.PlainDate.from("2020-01-01"); >refDate : Temporal.PlainDate >Temporal.PlainDate.from("2020-01-01") : Temporal.PlainDate ->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >Temporal.PlainDate : Temporal.PlainDateConstructor >Temporal : typeof Temporal >PlainDate : Temporal.PlainDateConstructor ->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate +>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate >"2020-01-01" : "2020-01-01" d.round({ relativeTo: refDate, largestUnit: "year" }); // => P6M8D @@ -8749,11 +8749,11 @@ relativeTo: Temporal.Now.plainDateISO(), >relativeTo : Temporal.PlainDate >Temporal.Now.plainDateISO() : Temporal.PlainDate ->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate +>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate +>plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate }); const quarters = d.months / 3; @@ -8889,9 +8889,9 @@ d.toString(); // => P1Y1D >d.toString() : string ->d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>d.toString : (options?: Temporal.DurationToStringOptions) => string >d : Temporal.Duration ->toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>toString : (options?: Temporal.DurationToStringOptions) => string d = Temporal.Duration.from({ years: -1, days: -1 }); >d = Temporal.Duration.from({ years: -1, days: -1 }) : Temporal.Duration @@ -8912,9 +8912,9 @@ d.toString(); // => -P1Y1D >d.toString() : string ->d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>d.toString : (options?: Temporal.DurationToStringOptions) => string >d : Temporal.Duration ->toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>toString : (options?: Temporal.DurationToStringOptions) => string d = Temporal.Duration.from({ milliseconds: 1000 }); >d = Temporal.Duration.from({ milliseconds: 1000 }) : Temporal.Duration @@ -8931,9 +8931,9 @@ d.toString(); // => PT1S >d.toString() : string ->d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>d.toString : (options?: Temporal.DurationToStringOptions) => string >d : Temporal.Duration ->toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>toString : (options?: Temporal.DurationToStringOptions) => string // The output format always balances units under 1 s, even if the // underlying Temporal.Duration object doesn't. @@ -9000,36 +9000,36 @@ d.toString({ smallestUnit: "second" }); // => PT59S >d.toString({ smallestUnit: "second" }) : string ->d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>d.toString : (options?: Temporal.DurationToStringOptions) => string >d : Temporal.Duration ->toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>toString : (options?: Temporal.DurationToStringOptions) => string >{ smallestUnit: "second" } : { smallestUnit: "second"; } >smallestUnit : "second" >"second" : "second" d.toString({ fractionalSecondDigits: 0 }); // => PT59S >d.toString({ fractionalSecondDigits: 0 }) : string ->d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>d.toString : (options?: Temporal.DurationToStringOptions) => string >d : Temporal.Duration ->toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>toString : (options?: Temporal.DurationToStringOptions) => string >{ fractionalSecondDigits: 0 } : { fractionalSecondDigits: 0; } >fractionalSecondDigits : 0 >0 : 0 d.toString({ fractionalSecondDigits: 4 }); // => PT59.9999S >d.toString({ fractionalSecondDigits: 4 }) : string ->d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>d.toString : (options?: Temporal.DurationToStringOptions) => string >d : Temporal.Duration ->toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>toString : (options?: Temporal.DurationToStringOptions) => string >{ fractionalSecondDigits: 4 } : { fractionalSecondDigits: 4; } >fractionalSecondDigits : 4 >4 : 4 d.toString({ fractionalSecondDigits: 8, roundingMode: "halfExpand" }); >d.toString({ fractionalSecondDigits: 8, roundingMode: "halfExpand" }) : string ->d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>d.toString : (options?: Temporal.DurationToStringOptions) => string >d : Temporal.Duration ->toString : (options?: Temporal.DurationToStringOptions | undefined) => string +>toString : (options?: Temporal.DurationToStringOptions) => string >{ fractionalSecondDigits: 8, roundingMode: "halfExpand" } : { fractionalSecondDigits: 8; roundingMode: "halfExpand"; } >fractionalSecondDigits : 8 >8 : 8 @@ -9052,22 +9052,22 @@ d.toLocaleString(); // example output: '1 day 6 hours 30 minutes' >d.toLocaleString() : string ->d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string >d : Temporal.Duration ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string d.toLocaleString("de-DE"); // example output: '1 Tag 6 Stunden 30 Minuten' >d.toLocaleString("de-DE") : string ->d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string >d : Temporal.Duration ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string >"de-DE" : "de-DE" d.toLocaleString("en-US", { days: "short", hours: "numeric" }); // example output: '1 day 6 hours' >d.toLocaleString("en-US", { days: "short", hours: "numeric" }) : string ->d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string >d : Temporal.Duration ->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string >"en-US" : "en-US" >{ days: "short", hours: "numeric" } : { days: "short"; hours: "numeric"; } >days : "short" @@ -9095,34 +9095,34 @@ Temporal.Now.zonedDateTimeISO(); // get the current date and wall-clock time in the system time zone and ISO-8601 calendar >Temporal.Now.zonedDateTimeISO() : Temporal.ZonedDateTime ->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime +>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime +>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime Temporal.Now.plainDateISO(); // get the current date in the system time zone and ISO-8601 calendar >Temporal.Now.plainDateISO() : Temporal.PlainDate ->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate +>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate +>plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate Temporal.Now.plainTimeISO(); // get the current wall-clock time in the system time zone and ISO-8601 calendar >Temporal.Now.plainTimeISO() : Temporal.PlainTime ->Temporal.Now.plainTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainTime +>Temporal.Now.plainTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainTime +>plainTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainTime Temporal.Now.plainDateTimeISO(); // same as above, but return the DateTime in the ISO-8601 calendar >Temporal.Now.plainDateTimeISO() : Temporal.PlainDateTime ->Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime +>Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime >Temporal.Now : typeof Temporal.Now >Temporal : typeof Temporal >Now : typeof Temporal.Now ->plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime +>plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime } diff --git a/testdata/baselines/reference/submodule/compiler/temporal.types.diff b/testdata/baselines/reference/submodule/compiler/temporal.types.diff deleted file mode 100644 index bd023d5ea2d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/temporal.types.diff +++ /dev/null @@ -1,5522 +0,0 @@ ---- old.temporal.types -+++ new.temporal.types -@@= skipped -303, +303 lines =@@ - - sorted.join(" "); - >sorted.join(" ") : string -->sorted.join : (separator?: string) => string -+>sorted.join : (separator?: string | undefined) => string - >sorted : Temporal.Instant[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >" " : " " - - // => '2001-09-09T01:46:40Z 2004-11-09T11:33:20Z 2008-01-10T21:20:00Z' -@@= skipped -261, +261 lines =@@ - const missionLength = startOfMoonMission.until(endOfMoonMission, { largestUnit: "hour" }); - >missionLength : Temporal.Duration - >startOfMoonMission.until(endOfMoonMission, { largestUnit: "hour" }) : Temporal.Duration -->startOfMoonMission.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>startOfMoonMission.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startOfMoonMission : Temporal.Instant -->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >endOfMoonMission : Temporal.Instant - >{ largestUnit: "hour" } : { largestUnit: "hour"; } - >largestUnit : "hour" -@@= skipped -11, +11 lines =@@ - // => PT195H18M35S - missionLength.toLocaleString(); - >missionLength.toLocaleString() : string -->missionLength.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>missionLength.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - >missionLength : Temporal.Duration -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - - // example output: '195 hours 18 minutes 35 seconds' - -@@= skipped -10, +10 lines =@@ - const approxMissionLength = startOfMoonMission.until(endOfMoonMission, { - >approxMissionLength : Temporal.Duration - >startOfMoonMission.until(endOfMoonMission, { largestUnit: "hour", smallestUnit: "hour", }) : Temporal.Duration -->startOfMoonMission.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>startOfMoonMission.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startOfMoonMission : Temporal.Instant -->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >endOfMoonMission : Temporal.Instant - >{ largestUnit: "hour", smallestUnit: "hour", } : { largestUnit: "hour"; smallestUnit: "hour"; } - -@@= skipped -40, +40 lines =@@ - - epoch.until(billion); - >epoch.until(billion) : Temporal.Duration -->epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >epoch : Temporal.Instant -->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >billion : Temporal.Instant - - // => PT1000000000S - epoch.until(billion, { largestUnit: "hour" }); - >epoch.until(billion, { largestUnit: "hour" }) : Temporal.Duration -->epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >epoch : Temporal.Instant -->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >billion : Temporal.Instant - >{ largestUnit: "hour" } : { largestUnit: "hour"; } - >largestUnit : "hour" -@@= skipped -20, +20 lines =@@ - const ns = epoch.until(billion, { largestUnit: "nanosecond" }); - >ns : Temporal.Duration - >epoch.until(billion, { largestUnit: "nanosecond" }) : Temporal.Duration -->epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>epoch.until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >epoch : Temporal.Instant -->until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >billion : Temporal.Instant - >{ largestUnit: "nanosecond" } : { largestUnit: "nanosecond"; } - >largestUnit : "nanosecond" -@@= skipped -25, +25 lines =@@ - // explicitly using the corresponding calendar date in UTC: - epoch.toZonedDateTimeISO("UTC").until( - >epoch.toZonedDateTimeISO("UTC").until( billion.toZonedDateTimeISO("UTC"), { largestUnit: "year" }, ) : Temporal.Duration -->epoch.toZonedDateTimeISO("UTC").until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>epoch.toZonedDateTimeISO("UTC").until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >epoch.toZonedDateTimeISO("UTC") : Temporal.ZonedDateTime - >epoch.toZonedDateTimeISO : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime - >epoch : Temporal.Instant - >toZonedDateTimeISO : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime - >"UTC" : "UTC" -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - - billion.toZonedDateTimeISO("UTC"), - >billion.toZonedDateTimeISO("UTC") : Temporal.ZonedDateTime -@@= skipped -124, +124 lines =@@ - - instant.toString(); // => '2019-11-18T10:52:01.816Z' - >instant.toString() : string -->instant.toString : (options?: Temporal.InstantToStringOptions) => string -+>instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >instant : Temporal.Instant -->toString : (options?: Temporal.InstantToStringOptions) => string -+>toString : (options?: Temporal.InstantToStringOptions | undefined) => string - - instant.toString({ timeZone: "UTC" }); - >instant.toString({ timeZone: "UTC" }) : string -->instant.toString : (options?: Temporal.InstantToStringOptions) => string -+>instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >instant : Temporal.Instant -->toString : (options?: Temporal.InstantToStringOptions) => string -+>toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >{ timeZone: "UTC" } : { timeZone: string; } - >timeZone : string - >"UTC" : "UTC" -@@= skipped -16, +16 lines =@@ - // => '2019-11-18T10:52:01.816+00:00' - instant.toString({ timeZone: "Asia/Seoul" }); - >instant.toString({ timeZone: "Asia/Seoul" }) : string -->instant.toString : (options?: Temporal.InstantToStringOptions) => string -+>instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >instant : Temporal.Instant -->toString : (options?: Temporal.InstantToStringOptions) => string -+>toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >{ timeZone: "Asia/Seoul" } : { timeZone: string; } - >timeZone : string - >"Asia/Seoul" : "Asia/Seoul" -@@= skipped -11, +11 lines =@@ - - instant.toString({ smallestUnit: "minute" }); - >instant.toString({ smallestUnit: "minute" }) : string -->instant.toString : (options?: Temporal.InstantToStringOptions) => string -+>instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >instant : Temporal.Instant -->toString : (options?: Temporal.InstantToStringOptions) => string -+>toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >{ smallestUnit: "minute" } : { smallestUnit: "minute"; } - >smallestUnit : "minute" - >"minute" : "minute" -@@= skipped -10, +10 lines =@@ - // => '2019-11-18T10:52Z' - instant.toString({ fractionalSecondDigits: 0 }); - >instant.toString({ fractionalSecondDigits: 0 }) : string -->instant.toString : (options?: Temporal.InstantToStringOptions) => string -+>instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >instant : Temporal.Instant -->toString : (options?: Temporal.InstantToStringOptions) => string -+>toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >{ fractionalSecondDigits: 0 } : { fractionalSecondDigits: 0; } - >fractionalSecondDigits : 0 - >0 : 0 -@@= skipped -10, +10 lines =@@ - // => '2019-11-18T10:52:01Z' - instant.toString({ fractionalSecondDigits: 4 }); - >instant.toString({ fractionalSecondDigits: 4 }) : string -->instant.toString : (options?: Temporal.InstantToStringOptions) => string -+>instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >instant : Temporal.Instant -->toString : (options?: Temporal.InstantToStringOptions) => string -+>toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >{ fractionalSecondDigits: 4 } : { fractionalSecondDigits: 4; } - >fractionalSecondDigits : 4 - >4 : 4 -@@= skipped -10, +10 lines =@@ - // => '2019-11-18T10:52:01.8160Z' - instant.toString({ smallestUnit: "second", roundingMode: "halfExpand" }); - >instant.toString({ smallestUnit: "second", roundingMode: "halfExpand" }) : string -->instant.toString : (options?: Temporal.InstantToStringOptions) => string -+>instant.toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >instant : Temporal.Instant -->toString : (options?: Temporal.InstantToStringOptions) => string -+>toString : (options?: Temporal.InstantToStringOptions | undefined) => string - >{ smallestUnit: "second", roundingMode: "halfExpand" } : { smallestUnit: "second"; roundingMode: "halfExpand"; } - >smallestUnit : "second" - >"second" : "second" -@@= skipped -25, +25 lines =@@ - - instant.toLocaleString(); // example output: '2019-11-18, 3:00:00 a.m.' - >instant.toLocaleString() : string -->instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >instant : Temporal.Instant -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - - instant.toLocaleString("de-DE"); // example output: '18.11.2019, 03:00:00' - >instant.toLocaleString("de-DE") : string -->instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >instant : Temporal.Instant -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - - instant.toLocaleString("de-DE", { - >instant.toLocaleString("de-DE", { timeZone: "Europe/Berlin", year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", timeZoneName: "long", }) : string -->instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >instant : Temporal.Instant -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >{ timeZone: "Europe/Berlin", year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", timeZoneName: "long", } : { timeZone: string; year: "numeric"; month: "numeric"; day: "numeric"; hour: "numeric"; minute: "numeric"; timeZoneName: "long"; } - -@@= skipped -50, +50 lines =@@ - }); // => '18.11.2019, 12:00 Mitteleuropäische Normalzeit' - instant.toLocaleString("en-US-u-nu-fullwide-hc-h12", { - >instant.toLocaleString("en-US-u-nu-fullwide-hc-h12", { timeZone: "Asia/Kolkata", }) : string -->instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>instant.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >instant : Temporal.Instant -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en-US-u-nu-fullwide-hc-h12" : "en-US-u-nu-fullwide-hc-h12" - >{ timeZone: "Asia/Kolkata", } : { timeZone: string; } - -@@= skipped -46, +46 lines =@@ - >zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo]") : Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30+02:00[Africa/Cairo]" : "1995-12-07T03:24:30+02:00[Africa/Cairo]" - - zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]"); - >zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]") : Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]" : "1995-12-07T03:24:30+02:00[Africa/Cairo][u-ca=islamic]" - - zdt = Temporal.ZonedDateTime.from("19951207T032430+0200[Africa/Cairo]"); - >zdt = Temporal.ZonedDateTime.from("19951207T032430+0200[Africa/Cairo]") : Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("19951207T032430+0200[Africa/Cairo]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"19951207T032430+0200[Africa/Cairo]" : "19951207T032430+0200[Africa/Cairo]" - - zdt = Temporal.ZonedDateTime.from({ - >zdt = Temporal.ZonedDateTime.from({ timeZone: "America/Los_Angeles", year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, }) : Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from({ timeZone: "America/Los_Angeles", year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, }) : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >{ timeZone: "America/Los_Angeles", year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, } : { timeZone: string; year: number; month: number; day: number; hour: number; minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } - - timeZone: "America/Los_Angeles", -@@= skipped -87, +87 lines =@@ - >zdt = Temporal.ZonedDateTime.from({ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from({ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >{ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 } : { timeZone: string; year: number; month: number; day: number; } - >timeZone : string - >"Europe/Paris" : "Europe/Paris" -@@= skipped -23, +23 lines =@@ - >zdt = Temporal.ZonedDateTime.from({ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from({ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >{ timeZone: "Europe/Paris", year: 2001, month: 13, day: 1 } : { timeZone: string; year: number; month: number; day: number; } - >timeZone : string - >"Europe/Paris" : "Europe/Paris" -@@= skipped -28, +28 lines =@@ - - Temporal.ZonedDateTime.from("2020-02-01T12:30-05:00[America/Toronto]"), - >Temporal.ZonedDateTime.from("2020-02-01T12:30-05:00[America/Toronto]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-02-01T12:30-05:00[America/Toronto]" : "2020-02-01T12:30-05:00[America/Toronto]" - - Temporal.ZonedDateTime.from("2020-02-01T12:30-05:00[America/New_York]"), - >Temporal.ZonedDateTime.from("2020-02-01T12:30-05:00[America/New_York]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-02-01T12:30-05:00[America/New_York]" : "2020-02-01T12:30-05:00[America/New_York]" - - Temporal.ZonedDateTime.from("2020-02-01T12:30+01:00[Europe/Brussels]"), - >Temporal.ZonedDateTime.from("2020-02-01T12:30+01:00[Europe/Brussels]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-02-01T12:30+01:00[Europe/Brussels]" : "2020-02-01T12:30+01:00[Europe/Brussels]" - - Temporal.ZonedDateTime.from("2020-02-01T12:30+00:00[Europe/London]"), - >Temporal.ZonedDateTime.from("2020-02-01T12:30+00:00[Europe/London]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-02-01T12:30+00:00[Europe/London]" : "2020-02-01T12:30+00:00[Europe/London]" - - ]; -@@= skipped -49, +49 lines =@@ - - JSON.stringify(sorted, undefined, 2); - >JSON.stringify(sorted, undefined, 2) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >sorted : Temporal.ZonedDateTime[] - >undefined : undefined - >2 : 2 -@@= skipped -20, +20 lines =@@ - const dt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500[Europe/Rome]"); - >dt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500[Europe/Rome]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30.000003500[Europe/Rome]" : "1995-12-07T03:24:30.000003500[Europe/Rome]" - - dt.year; // => 1995 -@@= skipped -62, +62 lines =@@ - const zdt = Temporal.ZonedDateTime.from("2020-02-01T12:30+09:00[Asia/Tokyo]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-02-01T12:30+09:00[Asia/Tokyo]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-02-01T12:30+09:00[Asia/Tokyo]" : "2020-02-01T12:30+09:00[Asia/Tokyo]" - - const epochMs = zdt.epochMilliseconds; -@@= skipped -87, +87 lines =@@ - const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24-08:00[America/Los_Angeles]" : "1995-12-07T03:24-08:00[America/Los_Angeles]" - - `Time zone is: ${zdt.timeZoneId}`; -@@= skipped -82, +82 lines =@@ - const date = Temporal.ZonedDateTime.from("-000015-01-01T12:30[Europe/Rome][u-ca=gregory]"); - >date : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("-000015-01-01T12:30[Europe/Rome][u-ca=gregory]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"-000015-01-01T12:30[Europe/Rome][u-ca=gregory]" : "-000015-01-01T12:30[Europe/Rome][u-ca=gregory]" - - date.era; -@@= skipped -31, +31 lines =@@ - const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24-08:00[America/Los_Angeles]" : "1995-12-07T03:24-08:00[America/Los_Angeles]" - - ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"][zdt.dayOfWeek - 1]; // => 'THU' -@@= skipped -28, +28 lines =@@ - const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24-08:00[America/Los_Angeles]" : "1995-12-07T03:24-08:00[America/Los_Angeles]" - - // ISO ordinal date -@@= skipped -25, +25 lines =@@ - const zdt = Temporal.ZonedDateTime.from("2022-01-01T03:24-08:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2022-01-01T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2022-01-01T03:24-08:00[America/Los_Angeles]" : "2022-01-01T03:24-08:00[America/Los_Angeles]" - - // ISO week date -@@= skipped -28, +28 lines =@@ - const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24-08:00[America/Los_Angeles]" : "1995-12-07T03:24-08:00[America/Los_Angeles]" - - zdt.daysInWeek; // => 7 -@@= skipped -32, +32 lines =@@ - const zdt = Temporal.Now.zonedDateTimeISO().with({ month }); - >zdt : Temporal.ZonedDateTime - >Temporal.Now.zonedDateTimeISO().with({ month }) : Temporal.ZonedDateTime -->Temporal.Now.zonedDateTimeISO().with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.Now.zonedDateTimeISO().with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.Now.zonedDateTimeISO() : Temporal.ZonedDateTime -->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -+>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -->with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime -+>with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >{ month } : { month: number; } - >month : number - -@@= skipped -43, +43 lines =@@ - >zdt => zdt.toLocaleString("en", { month: "long" }) : (zdt: Temporal.ZonedDateTime) => string - >zdt : Temporal.ZonedDateTime - >zdt.toLocaleString("en", { month: "long" }) : string -->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >zdt : Temporal.ZonedDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en" : "en" - >{ month: "long" } : { month: "long"; } - >month : "long" -@@= skipped -23, +23 lines =@@ - const format = new Intl.ListFormat("en"); - >format : Intl.ListFormat - >new Intl.ListFormat("en") : Intl.ListFormat -->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >"en" : "en" - - const poem = `Thirty days hath ${format.format(strings)}`; -@@= skipped -26, +26 lines =@@ - const zdt = Temporal.Now.zonedDateTimeISO(); - >zdt : Temporal.ZonedDateTime - >Temporal.Now.zonedDateTimeISO() : Temporal.ZonedDateTime -->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -+>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -+>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime - - const percent = zdt.dayOfYear / zdt.daysInYear; - >percent : number -@@= skipped -19, +19 lines =@@ - `The year is ${percent.toLocaleString("en", { style: "percent" })} over!`; - >`The year is ${percent.toLocaleString("en", { style: "percent" })} over!` : string - >percent.toLocaleString("en", { style: "percent" }) : string -->percent.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>percent.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >percent : number -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >"en" : "en" - >{ style: "percent" } : { style: "percent"; } - >style : "percent" -@@= skipped -15, +15 lines =@@ - const zdt = Temporal.ZonedDateTime.from("1900-01-01T12:00+09:00[Asia/Tokyo]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1900-01-01T12:00+09:00[Asia/Tokyo]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1900-01-01T12:00+09:00[Asia/Tokyo]" : "1900-01-01T12:00+09:00[Asia/Tokyo]" - - zdt.monthsInYear; // => 12 -@@= skipped -18, +18 lines =@@ - const zdt = Temporal.Now.zonedDateTimeISO(); - >zdt : Temporal.ZonedDateTime - >Temporal.Now.zonedDateTimeISO() : Temporal.ZonedDateTime -->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -+>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -+>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime - - zdt.inLeapYear; // example output: true - >zdt.inLeapYear : boolean -@@= skipped -15, +15 lines =@@ - zdt.with({ year: 2100 }).inLeapYear; // => false - >zdt.with({ year: 2100 }).inLeapYear : boolean - >zdt.with({ year: 2100 }) : Temporal.ZonedDateTime -->zdt.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>zdt.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >{ year: 2100 } : { year: number; } - >year : number - >2100 : 2100 -@@= skipped -13, +13 lines =@@ - const zdt = Temporal.ZonedDateTime.from("2010-11-07T23:00:00-03:30[America/St_Johns]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2010-11-07T23:00:00-03:30[America/St_Johns]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2010-11-07T23:00:00-03:30[America/St_Johns]" : "2010-11-07T23:00:00-03:30[America/St_Johns]" - - zdt.hoursInDay; // 25 -@@= skipped -17, +17 lines =@@ - const zdt = Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-11-01T01:30-07:00[America/Los_Angeles]" : "2020-11-01T01:30-07:00[America/Los_Angeles]" - - zdt.offsetNanoseconds; -@@= skipped -20, +20 lines =@@ - const zdt = Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-11-01T01:30-07:00[America/Los_Angeles]" : "2020-11-01T01:30-07:00[America/Los_Angeles]" - - zdt.offset; -@@= skipped -31, +31 lines =@@ - const daylightTime0130 = Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]"); - >daylightTime0130 : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-11-01T01:30-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-11-01T01:30-07:00[America/Los_Angeles]" : "2020-11-01T01:30-07:00[America/Los_Angeles]" - - // => 2020-11-01T01:30:00-07:00[America/Los_Angeles] -@@= skipped -12, +12 lines =@@ - const repeated0130 = daylightTime0130.with({ offset: minus8Hours }); - >repeated0130 : Temporal.ZonedDateTime - >daylightTime0130.with({ offset: minus8Hours }) : Temporal.ZonedDateTime -->daylightTime0130.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>daylightTime0130.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >daylightTime0130 : Temporal.ZonedDateTime -->with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >{ offset: minus8Hours } : { offset: string; } - >offset : string - >minus8Hours : "-08:00" -@@= skipped -15, +15 lines =@@ - const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:00-06:00[America/Chicago]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:00-06:00[America/Chicago]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:00-06:00[America/Chicago]" : "1995-12-07T03:24:00-06:00[America/Chicago]" - - zdt.with({ year: 2015, minute: 31 }); // => 2015-12-07T03:31:00-06:00[America/Chicago] - >zdt.with({ year: 2015, minute: 31 }) : Temporal.ZonedDateTime -->zdt.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>zdt.with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>with : (zonedDateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >{ year: 2015, minute: 31 } : { year: number; minute: number; } - >year : number - >2015 : 2015 -@@= skipped -23, +23 lines =@@ - const zdt = Temporal.ZonedDateTime.from("2015-12-07T03:24:30.000003500-08:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2015-12-07T03:24:30.000003500-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2015-12-07T03:24:30.000003500-08:00[America/Los_Angeles]" : "2015-12-07T03:24:30.000003500-08:00[America/Los_Angeles]" - - zdt.withPlainTime({ hour: 10 }); // => 2015-12-07T10:00:00-08:00[America/Los_Angeles] - >zdt.withPlainTime({ hour: 10 }) : Temporal.ZonedDateTime -->zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >{ hour: 10 } : { hour: number; } - >hour : number - >10 : 10 -@@= skipped -19, +19 lines =@@ - const time = Temporal.PlainTime.from("11:22"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("11:22") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"11:22" : "11:22" - - zdt.withPlainTime(time); // => 2015-12-07T11:22:00-08:00[America/Los_Angeles] - >zdt.withPlainTime(time) : Temporal.ZonedDateTime -->zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >time : Temporal.PlainTime - - zdt.withPlainTime("12:34"); // => 2015-12-07T12:34:00-08:00[America/Los_Angeles] - >zdt.withPlainTime("12:34") : Temporal.ZonedDateTime -->zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>zdt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >"12:34" : "12:34" - - // easier for chaining - zdt.add({ days: 2, hours: 22 }).withPlainTime("00:00"); // => 2015-12-10T00:00:00-08:00[America/Los_Angeles] - >zdt.add({ days: 2, hours: 22 }).withPlainTime("00:00") : Temporal.ZonedDateTime -->zdt.add({ days: 2, hours: 22 }).withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>zdt.add({ days: 2, hours: 22 }).withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >zdt.add({ days: 2, hours: 22 }) : Temporal.ZonedDateTime -->zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >{ days: 2, hours: 22 } : { days: number; hours: number; } - >days : number - >2 : 2 - >hours : number - >22 : 22 -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >"00:00" : "00:00" - } - -@@= skipped -42, +42 lines =@@ - const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+09:00[Asia/Tokyo]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30+09:00[Asia/Tokyo]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30+09:00[Asia/Tokyo]" : "1995-12-07T03:24:30+09:00[Asia/Tokyo]" - - zdt.toString(); // => '1995-12-07T03:24:30+09:00[Asia/Tokyo]' - >zdt.toString() : string -->zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string -+>zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string - >zdt : Temporal.ZonedDateTime -->toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string -+>toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string - - zdt.withTimeZone("Africa/Accra").toString(); // => '1995-12-06T18:24:30+00:00[Africa/Accra]' - >zdt.withTimeZone("Africa/Accra").toString() : string -->zdt.withTimeZone("Africa/Accra").toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string -+>zdt.withTimeZone("Africa/Accra").toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string - >zdt.withTimeZone("Africa/Accra") : Temporal.ZonedDateTime - >zdt.withTimeZone : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime - >withTimeZone : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime - >"Africa/Accra" : "Africa/Accra" -->toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string -+>toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string - } - - { - const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+09:00[Asia/Tokyo][u-ca=japanese]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+09:00[Asia/Tokyo][u-ca=japanese]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30.000003500+09:00[Asia/Tokyo][u-ca=japanese]" : "1995-12-07T03:24:30.000003500+09:00[Asia/Tokyo][u-ca=japanese]" - - `${zdt.era} ${zdt.eraYear}`; // => 'heisei 7' -@@= skipped -58, +58 lines =@@ - const zdt = Temporal.ZonedDateTime.from("2020-03-08T00:00-08:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-03-08T00:00-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-03-08T00:00-08:00[America/Los_Angeles]" : "2020-03-08T00:00-08:00[America/Los_Angeles]" - - // Add a day to get midnight on the day after DST starts - const laterDay = zdt.add({ days: 1 }); - >laterDay : Temporal.ZonedDateTime - >zdt.add({ days: 1 }) : Temporal.ZonedDateTime -->zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >{ days: 1 } : { days: number; } - >days : number - >1 : 1 -@@= skipped -23, +23 lines =@@ - laterDay.since(zdt, { largestUnit: "hour" }).hours; - >laterDay.since(zdt, { largestUnit: "hour" }).hours : number - >laterDay.since(zdt, { largestUnit: "hour" }) : Temporal.Duration -->laterDay.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>laterDay.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >laterDay : Temporal.ZonedDateTime -->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt : Temporal.ZonedDateTime - >{ largestUnit: "hour" } : { largestUnit: "hour"; } - >largestUnit : "hour" -@@= skipped -15, +15 lines =@@ - const laterHours = zdt.add({ hours: 24 }); - >laterHours : Temporal.ZonedDateTime - >zdt.add({ hours: 24 }) : Temporal.ZonedDateTime -->zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>zdt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >{ hours: 24 } : { hours: number; } - >hours : number - >24 : 24 -@@= skipped -13, +13 lines =@@ - laterHours.since(zdt, { largestUnit: "hour" }).hours; // => 24 - >laterHours.since(zdt, { largestUnit: "hour" }).hours : number - >laterHours.since(zdt, { largestUnit: "hour" }) : Temporal.Duration -->laterHours.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>laterHours.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >laterHours : Temporal.ZonedDateTime -->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt : Temporal.ZonedDateTime - >{ largestUnit: "hour" } : { largestUnit: "hour"; } - >largestUnit : "hour" -@@= skipped -14, +14 lines =@@ - const zdt = Temporal.ZonedDateTime.from("2020-03-09T00:00-07:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-03-09T00:00-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-03-09T00:00-07:00[America/Los_Angeles]" : "2020-03-09T00:00-07:00[America/Los_Angeles]" - - // Add a day to get midnight on the day after DST starts - const earlierDay = zdt.subtract({ days: 1 }); - >earlierDay : Temporal.ZonedDateTime - >zdt.subtract({ days: 1 }) : Temporal.ZonedDateTime -->zdt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>zdt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >{ days: 1 } : { days: number; } - >days : number - >1 : 1 -@@= skipped -23, +23 lines =@@ - earlierDay.since(zdt, { largestUnit: "hour" }).hours; - >earlierDay.since(zdt, { largestUnit: "hour" }).hours : number - >earlierDay.since(zdt, { largestUnit: "hour" }) : Temporal.Duration -->earlierDay.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>earlierDay.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >earlierDay : Temporal.ZonedDateTime -->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt : Temporal.ZonedDateTime - >{ largestUnit: "hour" } : { largestUnit: "hour"; } - >largestUnit : "hour" -@@= skipped -15, +15 lines =@@ - const earlierHours = zdt.subtract({ hours: 24 }); - >earlierHours : Temporal.ZonedDateTime - >zdt.subtract({ hours: 24 }) : Temporal.ZonedDateTime -->zdt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>zdt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.ZonedDateTime -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.ZonedDateTime - >{ hours: 24 } : { hours: number; } - >hours : number - >24 : 24 -@@= skipped -13, +13 lines =@@ - earlierHours.since(zdt, { largestUnit: "hour" }).hours; // => -24 - >earlierHours.since(zdt, { largestUnit: "hour" }).hours : number - >earlierHours.since(zdt, { largestUnit: "hour" }) : Temporal.Duration -->earlierHours.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>earlierHours.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >earlierHours : Temporal.ZonedDateTime -->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt : Temporal.ZonedDateTime - >{ largestUnit: "hour" } : { largestUnit: "hour"; } - >largestUnit : "hour" -@@= skipped -14, +14 lines =@@ - const zdt1 = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]"); - >zdt1 : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]" : "1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]" - - const zdt2 = Temporal.ZonedDateTime.from("2019-01-31T15:30+05:30[Asia/Kolkata]"); - >zdt2 : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2019-01-31T15:30+05:30[Asia/Kolkata]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2019-01-31T15:30+05:30[Asia/Kolkata]" : "2019-01-31T15:30+05:30[Asia/Kolkata]" - - zdt1.until(zdt2); - >zdt1.until(zdt2) : Temporal.Duration -->zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt1 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt2 : Temporal.ZonedDateTime - - // => PT202956H5M29.9999965S - zdt1.until(zdt2, { largestUnit: "year" }); - >zdt1.until(zdt2, { largestUnit: "year" }) : Temporal.Duration -->zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt1 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt2 : Temporal.ZonedDateTime - >{ largestUnit: "year" } : { largestUnit: "year"; } - >largestUnit : "year" -@@= skipped -38, +38 lines =@@ - // => P23Y1M24DT12H5M29.9999965S - zdt2.until(zdt1, { largestUnit: "year" }); - >zdt2.until(zdt1, { largestUnit: "year" }) : Temporal.Duration -->zdt2.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>zdt2.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt2 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt1 : Temporal.ZonedDateTime - >{ largestUnit: "year" } : { largestUnit: "year"; } - >largestUnit : "year" -@@= skipped -11, +11 lines =@@ - // => -P23Y1M24DT12H5M29.9999965S - zdt1.until(zdt2, { largestUnit: "nanosecond" }); - >zdt1.until(zdt2, { largestUnit: "nanosecond" }) : Temporal.Duration -->zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt1 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt2 : Temporal.ZonedDateTime - >{ largestUnit: "nanosecond" } : { largestUnit: "nanosecond"; } - >largestUnit : "nanosecond" -@@= skipped -14, +14 lines =@@ - // Rounding, for example if you don't care about sub-seconds - zdt1.until(zdt2, { smallestUnit: "second" }); - >zdt1.until(zdt2, { smallestUnit: "second" }) : Temporal.Duration -->zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>zdt1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt1 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt2 : Temporal.ZonedDateTime - >{ smallestUnit: "second" } : { smallestUnit: "second"; } - >smallestUnit : "second" -@@= skipped -25, +25 lines =@@ - >month => Temporal.ZonedDateTime.from({ year: 2020, month, day: 1, timeZone: "Asia/Seoul" }) : (month: number) => Temporal.ZonedDateTime - >month : number - >Temporal.ZonedDateTime.from({ year: 2020, month, day: 1, timeZone: "Asia/Seoul" }) : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >{ year: 2020, month, day: 1, timeZone: "Asia/Seoul" } : { year: number; month: number; day: number; timeZone: string; } - >year : number - >2020 : 2020 -@@= skipped -16, +16 lines =@@ - - jan1.until(feb1, { largestUnit: "day" }); // => P31D - >jan1.until(feb1, { largestUnit: "day" }) : Temporal.Duration -->jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >jan1 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >feb1 : Temporal.ZonedDateTime - >{ largestUnit: "day" } : { largestUnit: "day"; } - >largestUnit : "day" -@@= skipped -10, +10 lines =@@ - - jan1.until(feb1, { largestUnit: "month" }); // => P1M - >jan1.until(feb1, { largestUnit: "month" }) : Temporal.Duration -->jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >jan1 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >feb1 : Temporal.ZonedDateTime - >{ largestUnit: "month" } : { largestUnit: "month"; } - >largestUnit : "month" -@@= skipped -10, +10 lines =@@ - - feb1.until(mar1, { largestUnit: "day" }); // => P29D - >feb1.until(mar1, { largestUnit: "day" }) : Temporal.Duration -->feb1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>feb1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >feb1 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >mar1 : Temporal.ZonedDateTime - >{ largestUnit: "day" } : { largestUnit: "day"; } - >largestUnit : "day" -@@= skipped -10, +10 lines =@@ - - feb1.until(mar1, { largestUnit: "month" }); // => P1M - >feb1.until(mar1, { largestUnit: "month" }) : Temporal.Duration -->feb1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>feb1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >feb1 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >mar1 : Temporal.ZonedDateTime - >{ largestUnit: "month" } : { largestUnit: "month"; } - >largestUnit : "month" -@@= skipped -10, +10 lines =@@ - - jan1.until(mar1, { largestUnit: "day" }); // => P60D - >jan1.until(mar1, { largestUnit: "day" }) : Temporal.Duration -->jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>jan1.until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >jan1 : Temporal.ZonedDateTime -->until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >mar1 : Temporal.ZonedDateTime - >{ largestUnit: "day" } : { largestUnit: "day"; } - >largestUnit : "day" -@@= skipped -13, +13 lines =@@ - const zdt1 = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]"); - >zdt1 : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]" : "1995-12-07T03:24:30.000003500+05:30[Asia/Kolkata]" - - const zdt2 = Temporal.ZonedDateTime.from("2019-01-31T15:30+05:30[Asia/Kolkata]"); - >zdt2 : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2019-01-31T15:30+05:30[Asia/Kolkata]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2019-01-31T15:30+05:30[Asia/Kolkata]" : "2019-01-31T15:30+05:30[Asia/Kolkata]" - - zdt2.since(zdt1); // => PT202956H5M29.9999965S - >zdt2.since(zdt1) : Temporal.Duration -->zdt2.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>zdt2.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt2 : Temporal.ZonedDateTime -->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >zdt1 : Temporal.ZonedDateTime - } - -@@= skipped -29, +29 lines =@@ - const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500-08:00[America/Los_Angeles]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30.000003500-08:00[America/Los_Angeles]" : "1995-12-07T03:24:30.000003500-08:00[America/Los_Angeles]" - - // Round to a particular unit -@@= skipped -52, +52 lines =@@ - const zdt = Temporal.ZonedDateTime.from("2015-10-18T12:00-02:00[America/Sao_Paulo]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2015-10-18T12:00-02:00[America/Sao_Paulo]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2015-10-18T12:00-02:00[America/Sao_Paulo]" : "2015-10-18T12:00-02:00[America/Sao_Paulo]" - - zdt.startOfDay(); // => 2015-10-18T01:00:00-02:00[America/Sao_Paulo] -@@= skipped -32, +32 lines =@@ - const now = Temporal.Now.zonedDateTimeISO(tz); - >now : Temporal.ZonedDateTime - >Temporal.Now.zonedDateTimeISO(tz) : Temporal.ZonedDateTime -->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -+>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -+>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime - >tz : string - - const nextTransition = now.getTimeZoneTransition("next"); -@@= skipped -19, +19 lines =@@ - >duration = nextTransition!.since(now) : Temporal.Duration - >duration : Temporal.Duration - >nextTransition!.since(now) : Temporal.Duration -->nextTransition!.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>nextTransition!.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >nextTransition! : Temporal.ZonedDateTime - >nextTransition : Temporal.ZonedDateTime | null -->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >now : Temporal.ZonedDateTime - - duration.toLocaleString(); // output will vary - >duration.toLocaleString() : string -->duration.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>duration.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - >duration : Temporal.Duration -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - - // How long until the previous offset change from now, in the current location? - const previousTransition = now.getTimeZoneTransition("previous"); -@@= skipped -25, +25 lines =@@ - >duration = now.since(previousTransition!) : Temporal.Duration - >duration : Temporal.Duration - >now.since(previousTransition!) : Temporal.Duration -->now.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>now.since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >now : Temporal.ZonedDateTime -->since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.ZonedDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >previousTransition! : Temporal.ZonedDateTime - >previousTransition : Temporal.ZonedDateTime | null - - duration.toLocaleString(); // output will vary - >duration.toLocaleString() : string -->duration.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>duration.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - >duration : Temporal.Duration -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - } - - { - const zdt1 = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+01:00[Europe/Paris]"); - >zdt1 : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+01:00[Europe/Paris]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30.000003500+01:00[Europe/Paris]" : "1995-12-07T03:24:30.000003500+01:00[Europe/Paris]" - - const zdt2 = Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+01:00[Europe/Brussels]"); - >zdt2 : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30.000003500+01:00[Europe/Brussels]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30.000003500+01:00[Europe/Brussels]" : "1995-12-07T03:24:30.000003500+01:00[Europe/Brussels]" - - zdt1.equals(zdt2); // => false (same offset but different time zones) -@@= skipped -144, +144 lines =@@ - >zdt = Temporal.ZonedDateTime.from({ year: 2019, month: 12, day: 1, hour: 12, timeZone: "Africa/Lagos" }) : Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from({ year: 2019, month: 12, day: 1, hour: 12, timeZone: "Africa/Lagos" }) : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >{ year: 2019, month: 12, day: 1, hour: 12, timeZone: "Africa/Lagos" } : { year: number; month: number; day: number; hour: number; timeZone: string; } - >year : number - >2019 : 2019 -@@= skipped -19, +19 lines =@@ - - zdt.toString(); // => '2019-12-01T12:00:00+01:00[Africa/Lagos]' - >zdt.toString() : string -->zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string -+>zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string - >zdt : Temporal.ZonedDateTime -->toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string -+>toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string - - zdt = zdt.withCalendar("japanese"); - >zdt = zdt.withCalendar("japanese") : Temporal.ZonedDateTime -@@= skipped -15, +15 lines =@@ - - zdt.toString(); // => '2019-12-01T12:00:00+01:00[Africa/Lagos][u-ca=japanese]' - >zdt.toString() : string -->zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string -+>zdt.toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string - >zdt : Temporal.ZonedDateTime -->toString : (options?: Temporal.ZonedDateTimeToStringOptions) => string -+>toString : (options?: Temporal.ZonedDateTimeToStringOptions | undefined) => string - } - - { - const zdt = Temporal.ZonedDateTime.from("2019-12-01T12:00+01:00[Europe/Berlin]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2019-12-01T12:00+01:00[Europe/Berlin]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2019-12-01T12:00+01:00[Europe/Berlin]" : "2019-12-01T12:00+01:00[Europe/Berlin]" - - zdt.toLocaleString(); // example output: 12/1/2019, 12:00:00 PM - >zdt.toLocaleString() : string -->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >zdt : Temporal.ZonedDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - - zdt.toLocaleString("de-DE"); // => '1.12.2019, 12:00:00 MEZ' - >zdt.toLocaleString("de-DE") : string -->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >zdt : Temporal.ZonedDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - - const options = { weekday: "long", year: "numeric", month: "long", day: "numeric" } as const; -@@= skipped -44, +44 lines =@@ - - zdt.toLocaleString("de-DE", options); // => 'Sonntag, 1. Dezember 2019' - >zdt.toLocaleString("de-DE", options) : string -->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >zdt : Temporal.ZonedDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >options : { readonly weekday: "long"; readonly year: "numeric"; readonly month: "long"; readonly day: "numeric"; } - - /* WRONG */ zdt.toLocaleString("de-DE", { timeZone: "Pacific/Auckland" }); - >zdt.toLocaleString("de-DE", { timeZone: "Pacific/Auckland" }) : string -->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >zdt : Temporal.ZonedDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >{ timeZone: "Pacific/Auckland" } : { timeZone: string; } - >timeZone : string -@@= skipped -19, +19 lines =@@ - // => RangeError: Time zone option Pacific/Auckland does not match actual time zone Europe/Berlin - zdt.withTimeZone("Pacific/Auckland").toLocaleString("de-DE"); // => '2.12.2019, 0:00:00 GMT+13' - >zdt.withTimeZone("Pacific/Auckland").toLocaleString("de-DE") : string -->zdt.withTimeZone("Pacific/Auckland").toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>zdt.withTimeZone("Pacific/Auckland").toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >zdt.withTimeZone("Pacific/Auckland") : Temporal.ZonedDateTime - >zdt.withTimeZone : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime - >zdt : Temporal.ZonedDateTime - >withTimeZone : (timeZone: Temporal.TimeZoneLike) => Temporal.ZonedDateTime - >"Pacific/Auckland" : "Pacific/Auckland" -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - - zdt.toLocaleString("en-US-u-nu-fullwide-hc-h12"); // => '12/1/2019, 12:00:00 PM GMT+1' - >zdt.toLocaleString("en-US-u-nu-fullwide-hc-h12") : string -->zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>zdt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >zdt : Temporal.ZonedDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en-US-u-nu-fullwide-hc-h12" : "en-US-u-nu-fullwide-hc-h12" - } - -@@= skipped -21, +21 lines =@@ - const zdt = Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Johannesburg]"); - >zdt : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("1995-12-07T03:24:30+02:00[Africa/Johannesburg]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"1995-12-07T03:24:30+02:00[Africa/Johannesburg]" : "1995-12-07T03:24:30+02:00[Africa/Johannesburg]" - - zdt.toInstant(); // => 1995-12-07T01:24:30Z -@@= skipped -72, +72 lines =@@ - >date = Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - date = Temporal.PlainDate.from("20060824"); // => 2006-08-24 - >date = Temporal.PlainDate.from("20060824") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("20060824") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"20060824" : "20060824" - - date = Temporal.PlainDate.from("2006-08-24T15:43:27"); // => 2006-08-24 - >date = Temporal.PlainDate.from("2006-08-24T15:43:27") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24T15:43:27") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24T15:43:27" : "2006-08-24T15:43:27" - - date = Temporal.PlainDate.from("2006-08-24T15:43:27+01:00[Europe/Brussels]"); - >date = Temporal.PlainDate.from("2006-08-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24T15:43:27+01:00[Europe/Brussels]" : "2006-08-24T15:43:27+01:00[Europe/Brussels]" - - // => 2006-08-24 -@@= skipped -45, +45 lines =@@ - >date === Temporal.PlainDate.from(date) : boolean - >date : Temporal.PlainDate - >Temporal.PlainDate.from(date) : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate - - date = Temporal.PlainDate.from({ year: 2006, month: 8, day: 24 }); // => 2006-08-24 - >date = Temporal.PlainDate.from({ year: 2006, month: 8, day: 24 }) : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from({ year: 2006, month: 8, day: 24 }) : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ year: 2006, month: 8, day: 24 } : { year: number; month: number; day: number; } - >year : number - >2006 : 2006 -@@= skipped -28, +28 lines =@@ - >date = Temporal.PlainDate.from(Temporal.PlainDateTime.from("2006-08-24T15:43:27")) : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from(Temporal.PlainDateTime.from("2006-08-24T15:43:27")) : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDateTime.from("2006-08-24T15:43:27") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2006-08-24T15:43:27" : "2006-08-24T15:43:27" - - // => 2006-08-24 -@@= skipped -20, +20 lines =@@ - >date = Temporal.PlainDate.from({ year: 1427, month: 8, day: 1, calendar: "islamic" }) : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from({ year: 1427, month: 8, day: 1, calendar: "islamic" }) : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ year: 1427, month: 8, day: 1, calendar: "islamic" } : { year: number; month: number; day: number; calendar: string; } - >year : number - >1427 : 1427 -@@= skipped -22, +22 lines =@@ - >date = Temporal.PlainDate.from({ year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from({ year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ year: 2001, month: 13, day: 1 } : { year: number; month: number; day: number; } - >year : number - >2001 : 2001 -@@= skipped -21, +21 lines =@@ - >date = Temporal.PlainDate.from({ year: 2001, month: 1, day: 32 }, { overflow: "constrain" }) : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from({ year: 2001, month: 1, day: 32 }, { overflow: "constrain" }) : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ year: 2001, month: 1, day: 32 } : { year: number; month: number; day: number; } - >year : number - >2001 : 2001 -@@= skipped -21, +21 lines =@@ - >date = Temporal.PlainDate.from({ year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from({ year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ year: 2001, month: 13, day: 1 } : { year: number; month: number; day: number; } - >year : number - >2001 : 2001 -@@= skipped -21, +21 lines =@@ - >date = Temporal.PlainDate.from({ year: 2001, month: 1, day: 32 }, { overflow: "reject" }) : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from({ year: 2001, month: 1, day: 32 }, { overflow: "reject" }) : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ year: 2001, month: 1, day: 32 } : { year: number; month: number; day: number; } - >year : number - >2001 : 2001 -@@= skipped -23, +23 lines =@@ - const one = Temporal.PlainDate.from("2006-08-24"); - >one : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - const two = Temporal.PlainDate.from("2015-07-14"); - >two : Temporal.PlainDate - >Temporal.PlainDate.from("2015-07-14") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2015-07-14" : "2015-07-14" - - const three = Temporal.PlainDate.from("1930-02-18"); - >three : Temporal.PlainDate - >Temporal.PlainDate.from("1930-02-18") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"1930-02-18" : "1930-02-18" - - const sorted = [one, two, three].sort(Temporal.PlainDate.compare); -@@= skipped -44, +44 lines =@@ - - sorted.join(" "); // => '1930-02-18 2006-08-24 2015-07-14' - >sorted.join(" ") : string -->sorted.join : (separator?: string) => string -+>sorted.join : (separator?: string | undefined) => string - >sorted : Temporal.PlainDate[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >" " : " " - } - -@@= skipped -15, +15 lines =@@ - >date = Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - date.year; // => 2006 -@@= skipped -31, +31 lines =@@ - >date = Temporal.PlainDate.from("2019-02-23[u-ca=hebrew]") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2019-02-23[u-ca=hebrew]") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2019-02-23[u-ca=hebrew]" : "2019-02-23[u-ca=hebrew]" - - date.year; // => 5779 -@@= skipped -32, +32 lines =@@ - const date = Temporal.PlainDate.from("-000015-01-01[u-ca=gregory]"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("-000015-01-01[u-ca=gregory]") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"-000015-01-01[u-ca=gregory]" : "-000015-01-01[u-ca=gregory]" - - date.era; -@@= skipped -31, +31 lines =@@ - const date = Temporal.PlainDate.from("2006-08-24"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"][date.dayOfWeek - 1]; // => 'THU' -@@= skipped -28, +28 lines =@@ - const date = Temporal.PlainDate.from("2006-08-24"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - // ISO ordinal date -@@= skipped -25, +25 lines =@@ - const date = Temporal.PlainDate.from("2022-01-01"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2022-01-01") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2022-01-01" : "2022-01-01" - - // ISO week date -@@= skipped -28, +28 lines =@@ - const date = Temporal.PlainDate.from("2006-08-24"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - date.daysInWeek; // => 7 -@@= skipped -32, +32 lines =@@ - const date = Temporal.Now.plainDateISO().with({ month }); - >date : Temporal.PlainDate - >Temporal.Now.plainDateISO().with({ month }) : Temporal.PlainDate -->Temporal.Now.plainDateISO().with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.Now.plainDateISO().with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.Now.plainDateISO() : Temporal.PlainDate -->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -+>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -->with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate -+>with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ month } : { month: number; } - >month : number - -@@= skipped -43, +43 lines =@@ - >date => date.toLocaleString("en", { month: "long" }) : (date: Temporal.PlainDate) => string - >date : Temporal.PlainDate - >date.toLocaleString("en", { month: "long" }) : string -->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >date : Temporal.PlainDate -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en" : "en" - >{ month: "long" } : { month: "long"; } - >month : "long" -@@= skipped -23, +23 lines =@@ - const format = new Intl.ListFormat("en"); - >format : Intl.ListFormat - >new Intl.ListFormat("en") : Intl.ListFormat -->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >"en" : "en" - - const poem = `Thirty days hath ${format.format(strings)}`; -@@= skipped -26, +26 lines =@@ - const date = Temporal.Now.plainDateISO(); - >date : Temporal.PlainDate - >Temporal.Now.plainDateISO() : Temporal.PlainDate -->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -+>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -+>plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate - - const percent = date.dayOfYear / date.daysInYear; - >percent : number -@@= skipped -19, +19 lines =@@ - `The year is ${percent.toLocaleString("en", { style: "percent" })} over!`; - >`The year is ${percent.toLocaleString("en", { style: "percent" })} over!` : string - >percent.toLocaleString("en", { style: "percent" }) : string -->percent.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>percent.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >percent : number -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >"en" : "en" - >{ style: "percent" } : { style: "percent"; } - >style : "percent" -@@= skipped -15, +15 lines =@@ - const date = Temporal.PlainDate.from("1900-01-01"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("1900-01-01") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"1900-01-01" : "1900-01-01" - - date.monthsInYear; // => 12 -@@= skipped -18, +18 lines =@@ - const date = Temporal.Now.plainDateISO(); - >date : Temporal.PlainDate - >Temporal.Now.plainDateISO() : Temporal.PlainDate -->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -+>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -+>plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate - - date.inLeapYear; // example output: true - >date.inLeapYear : boolean -@@= skipped -15, +15 lines =@@ - date.with({ year: 2100 }).inLeapYear; // => false - >date.with({ year: 2100 }).inLeapYear : boolean - >date.with({ year: 2100 }) : Temporal.PlainDate -->date.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>date.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate -->with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ year: 2100 } : { year: number; } - >year : number - >2100 : 2100 -@@= skipped -13, +13 lines =@@ - const date = Temporal.PlainDate.from("2006-01-24"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-01-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-01-24" : "2006-01-24" - - // What's the first day of this month? - date.with({ day: 1 }); // => 2006-01-01 - >date.with({ day: 1 }) : Temporal.PlainDate -->date.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>date.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate -->with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ day: 1 } : { day: number; } - >day : number - >1 : 1 -@@= skipped -21, +21 lines =@@ - const nextMonthDate = date.add({ months: 1 }); - >nextMonthDate : Temporal.PlainDate - >date.add({ months: 1 }) : Temporal.PlainDate -->date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ months: 1 } : { months: number; } - >months : number - >1 : 1 - - nextMonthDate.with({ day: nextMonthDate.daysInMonth }); // => 2006-02-28 - >nextMonthDate.with({ day: nextMonthDate.daysInMonth }) : Temporal.PlainDate -->nextMonthDate.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>nextMonthDate.with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >nextMonthDate : Temporal.PlainDate -->with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>with : (dateLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ day: nextMonthDate.daysInMonth } : { day: number; } - >day : number - >nextMonthDate.daysInMonth : number -@@= skipped -23, +23 lines =@@ - const date = Temporal.PlainDate.from("2006-08-24[u-ca=japanese]"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24[u-ca=japanese]") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24[u-ca=japanese]" : "2006-08-24[u-ca=japanese]" - - date.withCalendar("iso8601"); // => 2006-08-24 -@@= skipped -24, +24 lines =@@ - >date = Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - date.add({ years: 20, months: 4 }); // => 2026-12-24 - >date.add({ years: 20, months: 4 }) : Temporal.PlainDate -->date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ years: 20, months: 4 } : { years: number; months: number; } - >years : number - >20 : 20 -@@= skipped -22, +22 lines =@@ - >date = Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2019-01-31" : "2019-01-31" - - date.add({ months: 1 }); // => 2019-02-28 - >date.add({ months: 1 }) : Temporal.PlainDate -->date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ months: 1 } : { months: number; } - >months : number - >1 : 1 - - date.add({ months: 1 }, { overflow: "reject" }); // => throws - >date.add({ months: 1 }, { overflow: "reject" }) : Temporal.PlainDate -->date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>date.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ months: 1 } : { months: number; } - >months : number - >1 : 1 -@@= skipped -38, +38 lines =@@ - >date = Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - date.subtract({ years: 20, months: 4 }); // => 1986-04-24 - >date.subtract({ years: 20, months: 4 }) : Temporal.PlainDate -->date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ years: 20, months: 4 } : { years: number; months: number; } - >years : number - >20 : 20 -@@= skipped -22, +22 lines =@@ - >date = Temporal.PlainDate.from("2019-03-31") : Temporal.PlainDate - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2019-03-31") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2019-03-31" : "2019-03-31" - - date.subtract({ months: 1 }); // => 2019-02-28 - >date.subtract({ months: 1 }) : Temporal.PlainDate -->date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ months: 1 } : { months: number; } - >months : number - >1 : 1 - - date.subtract({ months: 1 }, { overflow: "reject" }); // => throws - >date.subtract({ months: 1 }, { overflow: "reject" }) : Temporal.PlainDate -->date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>date.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >date : Temporal.PlainDate -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >{ months: 1 } : { months: number; } - >months : number - >1 : 1 -@@= skipped -33, +33 lines =@@ - const earlier = Temporal.PlainDate.from("2006-08-24"); - >earlier : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - const later = Temporal.PlainDate.from("2019-01-31"); - >later : Temporal.PlainDate - >Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2019-01-31" : "2019-01-31" - - earlier.until(later); // => P4543D - >earlier.until(later) : Temporal.Duration -->earlier.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>earlier.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >earlier : Temporal.PlainDate -->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >later : Temporal.PlainDate - - earlier.until(later, { largestUnit: "year" }); // => P12Y5M7D - >earlier.until(later, { largestUnit: "year" }) : Temporal.Duration -->earlier.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>earlier.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >earlier : Temporal.PlainDate -->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >later : Temporal.PlainDate - >{ largestUnit: "year" } : { largestUnit: "year"; } - >largestUnit : "year" -@@= skipped -36, +36 lines =@@ - - later.until(earlier, { largestUnit: "year" }); // => -P12Y5M7D - >later.until(earlier, { largestUnit: "year" }) : Temporal.Duration -->later.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>later.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >later : Temporal.PlainDate -->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >earlier : Temporal.PlainDate - >{ largestUnit: "year" } : { largestUnit: "year"; } - >largestUnit : "year" -@@= skipped -15, +15 lines =@@ - const noon = Temporal.PlainTime.from("12:00"); - >noon : Temporal.PlainTime - >Temporal.PlainTime.from("12:00") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"12:00" : "12:00" - - earlier.toPlainDateTime(noon).until(later.toPlainDateTime(noon), { largestUnit: "hour" }); - >earlier.toPlainDateTime(noon).until(later.toPlainDateTime(noon), { largestUnit: "hour" }) : Temporal.Duration -->earlier.toPlainDateTime(noon).until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>earlier.toPlainDateTime(noon).until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >earlier.toPlainDateTime(noon) : Temporal.PlainDateTime -->earlier.toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>earlier.toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >earlier : Temporal.PlainDate -->toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >noon : Temporal.PlainTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >later.toPlainDateTime(noon) : Temporal.PlainDateTime -->later.toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>later.toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >later : Temporal.PlainDate -->toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >noon : Temporal.PlainTime - >{ largestUnit: "hour" } : { largestUnit: "hour"; } - >largestUnit : "hour" -@@= skipped -30, +30 lines =@@ - const newyear = Temporal.PlainDate.from("2020-01-01"); - >newyear : Temporal.PlainDate - >Temporal.PlainDate.from("2020-01-01") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2020-01-01" : "2020-01-01" - - newyear.until("2020-01-15", { smallestUnit: "month", roundingMode: "halfExpand" }); - >newyear.until("2020-01-15", { smallestUnit: "month", roundingMode: "halfExpand" }) : Temporal.Duration -->newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >newyear : Temporal.PlainDate -->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >"2020-01-15" : "2020-01-15" - >{ smallestUnit: "month", roundingMode: "halfExpand" } : { smallestUnit: "month"; roundingMode: "halfExpand"; } - >smallestUnit : "month" -@@= skipped -22, +22 lines =@@ - // => PT0S - newyear.until("2020-01-16", { smallestUnit: "month", roundingMode: "halfExpand" }); - >newyear.until("2020-01-16", { smallestUnit: "month", roundingMode: "halfExpand" }) : Temporal.Duration -->newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >newyear : Temporal.PlainDate -->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >"2020-01-16" : "2020-01-16" - >{ smallestUnit: "month", roundingMode: "halfExpand" } : { smallestUnit: "month"; roundingMode: "halfExpand"; } - >smallestUnit : "month" -@@= skipped -13, +13 lines =@@ - // => PT0S (mid-month dates rounded down to match `Temporal.PlainDateTime` behavior) - newyear.until("2020-01-17", { smallestUnit: "month", roundingMode: "halfExpand" }); - >newyear.until("2020-01-17", { smallestUnit: "month", roundingMode: "halfExpand" }) : Temporal.Duration -->newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>newyear.until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >newyear : Temporal.PlainDate -->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >"2020-01-17" : "2020-01-17" - >{ smallestUnit: "month", roundingMode: "halfExpand" } : { smallestUnit: "month"; roundingMode: "halfExpand"; } - >smallestUnit : "month" -@@= skipped -17, +17 lines =@@ - const earlier = Temporal.PlainDate.from("2006-08-24"); - >earlier : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - const later = Temporal.PlainDate.from("2019-01-31"); - >later : Temporal.PlainDate - >Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2019-01-31" : "2019-01-31" - - later.since(earlier); // => P4543D - >later.since(earlier) : Temporal.Duration -->later.since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>later.since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >later : Temporal.PlainDate -->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >earlier : Temporal.PlainDate - } - -@@= skipped -29, +29 lines =@@ - const date = Temporal.PlainDate.from("2006-08-24"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - const other = Temporal.PlainDate.from("2019-01-31"); - >other : Temporal.PlainDate - >Temporal.PlainDate.from("2019-01-31") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2019-01-31" : "2019-01-31" - - date.equals(other); // => false -@@= skipped -36, +36 lines =@@ - const date = Temporal.PlainDate.from("2006-08-24"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - date.toString(); // => '2006-08-24' - >date.toString() : string -->date.toString : (options?: Temporal.PlainDateToStringOptions) => string -+>date.toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string - >date : Temporal.PlainDate -->toString : (options?: Temporal.PlainDateToStringOptions) => string -+>toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string - } - - { - const date = Temporal.PlainDate.from("2006-08-24"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - date.toLocaleString(); // example output: 8/24/2006 - >date.toLocaleString() : string -->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >date : Temporal.PlainDate -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - - date.toLocaleString("de-DE"); // example output: '24.8.2006' - >date.toLocaleString("de-DE") : string -->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >date : Temporal.PlainDate -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - - date.toLocaleString("de-DE", { weekday: "long" }); // => 'Donnerstag' - >date.toLocaleString("de-DE", { weekday: "long" }) : string -->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >date : Temporal.PlainDate -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >{ weekday: "long" } : { weekday: "long"; } - >weekday : "long" -@@= skipped -50, +50 lines =@@ - - date.toLocaleString("en-US-u-nu-fullwide"); // => '8/24/2006' - >date.toLocaleString("en-US-u-nu-fullwide") : string -->date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>date.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >date : Temporal.PlainDate -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en-US-u-nu-fullwide" : "en-US-u-nu-fullwide" - } - -@@= skipped -10, +10 lines =@@ - const plainDate = Temporal.PlainDate.from("2006-08-24"); - >plainDate : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - const plainTime = Temporal.PlainTime.from("15:23:30.003"); - >plainTime : Temporal.PlainTime - >Temporal.PlainTime.from("15:23:30.003") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"15:23:30.003" : "15:23:30.003" - - plainDate.toZonedDateTime({ timeZone: "America/Los_Angeles", plainTime }); -@@= skipped -44, +44 lines =@@ - const date = Temporal.PlainDate.from("2006-08-24"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - const time = Temporal.PlainTime.from("15:23:30.003"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("15:23:30.003") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"15:23:30.003" : "15:23:30.003" - - date.toPlainDateTime(time); // => 2006-08-24T15:23:30.003 - >date.toPlainDateTime(time) : Temporal.PlainDateTime -->date.toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>date.toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >date : Temporal.PlainDate -->toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >time : Temporal.PlainTime - - date.toPlainDateTime(); // => 2006-08-24T00:00:00 - >date.toPlainDateTime() : Temporal.PlainDateTime -->date.toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>date.toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >date : Temporal.PlainDate -->toPlainDateTime : (time?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>toPlainDateTime : (time?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - } - - { - const date = Temporal.PlainDate.from("2006-08-24"); - >date : Temporal.PlainDate - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - date.toPlainYearMonth(); // => 2006-08 -@@= skipped -76, +76 lines =@@ - >time = Temporal.PlainTime.from("03:24:30") : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from("03:24:30") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"03:24:30" : "03:24:30" - - time = Temporal.PlainTime.from("032430"); // => 03:24:30 - >time = Temporal.PlainTime.from("032430") : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from("032430") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"032430" : "032430" - - time = Temporal.PlainTime.from("1995-12-07T03:24:30"); // => 03:24:30 - >time = Temporal.PlainTime.from("1995-12-07T03:24:30") : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from("1995-12-07T03:24:30") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"1995-12-07T03:24:30" : "1995-12-07T03:24:30" - - time = Temporal.PlainTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]"); - >time = Temporal.PlainTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]") : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"1995-12-07T03:24:30+01:00[Europe/Brussels]" : "1995-12-07T03:24:30+01:00[Europe/Brussels]" - - // => 03:24:30 -@@= skipped -46, +46 lines =@@ - >time === Temporal.PlainTime.from(time) : boolean - >time : Temporal.PlainTime - >Temporal.PlainTime.from(time) : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >time : Temporal.PlainTime - - time = Temporal.PlainTime.from({ - >time = Temporal.PlainTime.from({ hour: 19, minute: 39, second: 9, millisecond: 68, microsecond: 346, nanosecond: 205, }) : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from({ hour: 19, minute: 39, second: 9, millisecond: 68, microsecond: 346, nanosecond: 205, }) : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >{ hour: 19, minute: 39, second: 9, millisecond: 68, microsecond: 346, nanosecond: 205, } : { hour: number; minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } - - hour: 19, -@@= skipped -47, +47 lines =@@ - >time = Temporal.PlainTime.from({ hour: 19, minute: 39, second: 9 }) : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from({ hour: 19, minute: 39, second: 9 }) : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >{ hour: 19, minute: 39, second: 9 } : { hour: number; minute: number; second: number; } - >hour : number - >19 : 19 -@@= skipped -17, +17 lines =@@ - >time = Temporal.PlainTime.from(Temporal.PlainDateTime.from("2020-02-15T19:39:09")) : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from(Temporal.PlainDateTime.from("2020-02-15T19:39:09")) : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainDateTime.from("2020-02-15T19:39:09") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2020-02-15T19:39:09" : "2020-02-15T19:39:09" - - // => 19:39:09 -@@= skipped -21, +21 lines =@@ - >time = Temporal.PlainTime.from({ hour: 15, minute: 60 }, { overflow: "constrain" }) : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from({ hour: 15, minute: 60 }, { overflow: "constrain" }) : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >{ hour: 15, minute: 60 } : { hour: number; minute: number; } - >hour : number - >15 : 15 -@@= skipped -19, +19 lines =@@ - >time = Temporal.PlainTime.from({ hour: 15, minute: -1 }, { overflow: "constrain" }) : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from({ hour: 15, minute: -1 }, { overflow: "constrain" }) : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >{ hour: 15, minute: -1 } : { hour: number; minute: number; } - >hour : number - >15 : 15 -@@= skipped -20, +20 lines =@@ - >time = Temporal.PlainTime.from({ hour: 15, minute: 60 }, { overflow: "reject" }) : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from({ hour: 15, minute: 60 }, { overflow: "reject" }) : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >{ hour: 15, minute: 60 } : { hour: number; minute: number; } - >hour : number - >15 : 15 -@@= skipped -19, +19 lines =@@ - >time = Temporal.PlainTime.from({ hour: 15, minute: -1 }, { overflow: "reject" }) : Temporal.PlainTime - >time : Temporal.PlainTime - >Temporal.PlainTime.from({ hour: 15, minute: -1 }, { overflow: "reject" }) : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >{ hour: 15, minute: -1 } : { hour: number; minute: number; } - >hour : number - >15 : 15 -@@= skipped -22, +22 lines =@@ - const one = Temporal.PlainTime.from("03:24"); - >one : Temporal.PlainTime - >Temporal.PlainTime.from("03:24") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"03:24" : "03:24" - - const two = Temporal.PlainTime.from("01:24"); - >two : Temporal.PlainTime - >Temporal.PlainTime.from("01:24") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"01:24" : "01:24" - - const three = Temporal.PlainTime.from("01:24:05"); - >three : Temporal.PlainTime - >Temporal.PlainTime.from("01:24:05") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"01:24:05" : "01:24:05" - - const sorted = [one, two, three].sort(Temporal.PlainTime.compare); -@@= skipped -44, +44 lines =@@ - - sorted.join(" "); // => '01:24:00 01:24:05 03:24:00' - >sorted.join(" ") : string -->sorted.join : (separator?: string) => string -+>sorted.join : (separator?: string | undefined) => string - >sorted : Temporal.PlainTime[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >" " : " " - } - -@@= skipped -11, +11 lines =@@ - const zdtDst = Temporal.ZonedDateTime.from("2020-11-01T01:45-07:00[America/Los_Angeles]"); - >zdtDst : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-11-01T01:45-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-11-01T01:45-07:00[America/Los_Angeles]" : "2020-11-01T01:45-07:00[America/Los_Angeles]" - - const zdtStandard = Temporal.ZonedDateTime.from("2020-11-01T01:30-08:00[America/Los_Angeles]"); - >zdtStandard : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-11-01T01:30-08:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-11-01T01:30-08:00[America/Los_Angeles]" : "2020-11-01T01:30-08:00[America/Los_Angeles]" - - // The "first" 1:45 (in Daylight Time) is earlier than the "second" 1:30 (in Standard Time) -@@= skipped -43, +43 lines =@@ - const zdtBase = Temporal.ZonedDateTime.from("2020-03-08[America/Los_Angeles]"); - >zdtBase : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-03-08[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-03-08[America/Los_Angeles]" : "2020-03-08[America/Los_Angeles]" - - const timeSkipped = Temporal.PlainTime.from("02:30"); - >timeSkipped : Temporal.PlainTime - >Temporal.PlainTime.from("02:30") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"02:30" : "02:30" - - const timeValid = Temporal.PlainTime.from("03:30"); - >timeValid : Temporal.PlainTime - >Temporal.PlainTime.from("03:30") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"03:30" : "03:30" - - const zdtSkipped = zdtBase.withPlainTime(timeSkipped); - >zdtSkipped : Temporal.ZonedDateTime - >zdtBase.withPlainTime(timeSkipped) : Temporal.ZonedDateTime -->zdtBase.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>zdtBase.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >zdtBase : Temporal.ZonedDateTime -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >timeSkipped : Temporal.PlainTime - - const zdtValid = zdtBase.withPlainTime(timeValid); - >zdtValid : Temporal.ZonedDateTime - >zdtBase.withPlainTime(timeValid) : Temporal.ZonedDateTime -->zdtBase.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>zdtBase.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >zdtBase : Temporal.ZonedDateTime -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.ZonedDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.ZonedDateTime - >timeValid : Temporal.PlainTime - - // The skipped time 2:30AM is disambiguated to 3:30AM, so the instants are equal -@@= skipped -70, +70 lines =@@ - const time = Temporal.PlainTime.from("19:39:09.068346205"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - time.hour; // => 19 -@@= skipped -42, +42 lines =@@ - const time = Temporal.PlainTime.from("19:39:09.068346205"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - // What's the top of the next hour? - time.add({ hours: 1 }).with({ - >time.add({ hours: 1 }).with({ minute: 0, second: 0, millisecond: 0, microsecond: 0, nanosecond: 0, }) : Temporal.PlainTime -->time.add({ hours: 1 }).with : (timeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>time.add({ hours: 1 }).with : (timeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >time.add({ hours: 1 }) : Temporal.PlainTime - >time.add : (duration: Temporal.DurationLike) => Temporal.PlainTime - >time : Temporal.PlainTime -@@= skipped -18, +18 lines =@@ - >{ hours: 1 } : { hours: number; } - >hours : number - >1 : 1 -->with : (timeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>with : (timeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >{ minute: 0, second: 0, millisecond: 0, microsecond: 0, nanosecond: 0, } : { minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } - - minute: 0, -@@= skipped -30, +30 lines =@@ - const time = Temporal.PlainTime.from("19:39:09.068346205"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - time.add({ minutes: 5, nanoseconds: 800 }); // => 19:44:09.068347005 -@@= skipped -23, +23 lines =@@ - const time = Temporal.PlainTime.from("19:39:09.068346205"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - time.subtract({ minutes: 5, nanoseconds: 800 }); // => 19:34:09.068345405 -@@= skipped -23, +23 lines =@@ - const time = Temporal.PlainTime.from("20:13:20.971398099"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("20:13:20.971398099") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"20:13:20.971398099" : "20:13:20.971398099" - - time.until(Temporal.PlainTime.from("22:39:09.068346205")); // => PT2H25M48.096948106S - >time.until(Temporal.PlainTime.from("22:39:09.068346205")) : Temporal.Duration -->time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >time : Temporal.PlainTime -->until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >Temporal.PlainTime.from("22:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"22:39:09.068346205" : "22:39:09.068346205" - - time.until(Temporal.PlainTime.from("19:39:09.068346205")); // => -PT34M11.903051894S - >time.until(Temporal.PlainTime.from("19:39:09.068346205")) : Temporal.Duration -->time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >time : Temporal.PlainTime -->until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - // Rounding, for example if you don't care about sub-seconds - time.until(Temporal.PlainTime.from("22:39:09.068346205"), { smallestUnit: "second" }); - >time.until(Temporal.PlainTime.from("22:39:09.068346205"), { smallestUnit: "second" }) : Temporal.Duration -->time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>time.until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >time : Temporal.PlainTime -->until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >Temporal.PlainTime.from("22:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"22:39:09.068346205" : "22:39:09.068346205" - >{ smallestUnit: "second" } : { smallestUnit: "second"; } - >smallestUnit : "second" -@@= skipped -57, +57 lines =@@ - const time = Temporal.PlainTime.from("20:13:20.971398099"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("20:13:20.971398099") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"20:13:20.971398099" : "20:13:20.971398099" - - time.since(Temporal.PlainTime.from("19:39:09.068346205")); // => PT34M11.903051894S - >time.since(Temporal.PlainTime.from("19:39:09.068346205")) : Temporal.Duration -->time.since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>time.since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >time : Temporal.PlainTime -->since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - time.since(Temporal.PlainTime.from("22:39:09.068346205")); // => -PT2H25M48.096948106S - >time.since(Temporal.PlainTime.from("22:39:09.068346205")) : Temporal.Duration -->time.since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>time.since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >time : Temporal.PlainTime -->since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.PlainTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >Temporal.PlainTime.from("22:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"22:39:09.068346205" : "22:39:09.068346205" - } - -@@= skipped -38, +38 lines =@@ - const time = Temporal.PlainTime.from("19:39:09.068346205"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - // Round to a particular unit -@@= skipped -51, +51 lines =@@ - const time = Temporal.PlainTime.from("19:39:09.068346205"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - const other = Temporal.PlainTime.from("20:13:20.971398099"); - >other : Temporal.PlainTime - >Temporal.PlainTime.from("20:13:20.971398099") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"20:13:20.971398099" : "20:13:20.971398099" - - time.equals(other); // => false -@@= skipped -36, +36 lines =@@ - const time = Temporal.PlainTime.from("19:39:09.068346205"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - time.toString(); // => '19:39:09.068346205' - >time.toString() : string -->time.toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - >time : Temporal.PlainTime -->toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - - time.toString({ smallestUnit: "minute" }); // => '19:39' - >time.toString({ smallestUnit: "minute" }) : string -->time.toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - >time : Temporal.PlainTime -->toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - >{ smallestUnit: "minute" } : { smallestUnit: "minute"; } - >smallestUnit : "minute" - >"minute" : "minute" - - time.toString({ fractionalSecondDigits: 0 }); // => '19:39:09' - >time.toString({ fractionalSecondDigits: 0 }) : string -->time.toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - >time : Temporal.PlainTime -->toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - >{ fractionalSecondDigits: 0 } : { fractionalSecondDigits: 0; } - >fractionalSecondDigits : 0 - >0 : 0 - - time.toString({ fractionalSecondDigits: 4 }); // => '19:39:09.0683' - >time.toString({ fractionalSecondDigits: 4 }) : string -->time.toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - >time : Temporal.PlainTime -->toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - >{ fractionalSecondDigits: 4 } : { fractionalSecondDigits: 4; } - >fractionalSecondDigits : 4 - >4 : 4 - - time.toString({ fractionalSecondDigits: 5, roundingMode: "halfExpand" }); - >time.toString({ fractionalSecondDigits: 5, roundingMode: "halfExpand" }) : string -->time.toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>time.toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - >time : Temporal.PlainTime -->toString : (options?: Temporal.PlainTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainTimeToStringOptions | undefined) => string - >{ fractionalSecondDigits: 5, roundingMode: "halfExpand" } : { fractionalSecondDigits: 5; roundingMode: "halfExpand"; } - >fractionalSecondDigits : 5 - >5 : 5 -@@= skipped -58, +58 lines =@@ - const time = Temporal.PlainTime.from("19:39:09.068346205"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("19:39:09.068346205") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"19:39:09.068346205" : "19:39:09.068346205" - - time.toLocaleString(); // example output: '7:39:09 PM' - >time.toLocaleString() : string -->time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >time : Temporal.PlainTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - - time.toLocaleString("de-DE"); // example output: '19:39:09' - >time.toLocaleString("de-DE") : string -->time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >time : Temporal.PlainTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - - time.toLocaleString("de-DE", { timeZone: "Europe/Berlin" }); // => '19:39:09' - >time.toLocaleString("de-DE", { timeZone: "Europe/Berlin" }) : string -->time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >time : Temporal.PlainTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >{ timeZone: "Europe/Berlin" } : { timeZone: string; } - >timeZone : string -@@= skipped -32, +32 lines =@@ - - time.toLocaleString("en-US-u-nu-fullwide-hc-h24"); // => '19:39:09' - >time.toLocaleString("en-US-u-nu-fullwide-hc-h24") : string -->time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>time.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >time : Temporal.PlainTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en-US-u-nu-fullwide-hc-h24" : "en-US-u-nu-fullwide-hc-h24" - } - -@@= skipped -30, +30 lines =@@ - >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30") : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30" : "1995-12-07T03:24:30" - - dt = Temporal.PlainDateTime.from("19951207T032430"); - >dt = Temporal.PlainDateTime.from("19951207T032430") : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("19951207T032430") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"19951207T032430" : "19951207T032430" - - dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]"); - >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]") : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30+01:00[Europe/Brussels]") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30+01:00[Europe/Brussels]" : "1995-12-07T03:24:30+01:00[Europe/Brussels]" - - // => 1995-12-07T03:24:30 -@@= skipped -35, +35 lines =@@ - >dt === Temporal.PlainDateTime.from(dt) : boolean - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from(dt) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - - dt = Temporal.PlainDateTime.from({ - >dt = Temporal.PlainDateTime.from({ year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 1995, month: 12, day: 7, hour: 3, minute: 24, second: 30, millisecond: 0, microsecond: 3, nanosecond: 500, } : { year: number; month: number; day: number; hour: number; minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } - - year: 1995, -@@= skipped -59, +59 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 1995, month: 12, day: 7 }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 1995, month: 12, day: 7 }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 1995, month: 12, day: 7 } : { year: number; month: number; day: number; } - >year : number - >1995 : 1995 -@@= skipped -17, +17 lines =@@ - >dt = Temporal.PlainDateTime.from(Temporal.PlainDate.from("1995-12-07T03:24:30")) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from(Temporal.PlainDate.from("1995-12-07T03:24:30")) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDate.from("1995-12-07T03:24:30") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"1995-12-07T03:24:30" : "1995-12-07T03:24:30" - - // => 1995-12-07T00:00:00 -@@= skipped -20, +20 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 5756, month: 3, day: 14, hour: 3, minute: 24, second: 30, calendar: "hebrew" }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 5756, month: 3, day: 14, hour: 3, minute: 24, second: 30, calendar: "hebrew" }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 5756, month: 3, day: 14, hour: 3, minute: 24, second: 30, calendar: "hebrew" } : { year: number; month: number; day: number; hour: number; minute: number; second: number; calendar: string; } - >year : number - >5756 : 5756 -@@= skipped -28, +28 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 2001, month: 13, day: 1 }, { overflow: "constrain" }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2001, month: 13, day: 1 } : { year: number; month: number; day: number; } - >year : number - >2001 : 2001 -@@= skipped -21, +21 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 32 }, { overflow: "constrain" }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 32 }, { overflow: "constrain" }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2001, month: 1, day: 32 } : { year: number; month: number; day: number; } - >year : number - >2001 : 2001 -@@= skipped -21, +21 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, hour: 25 }, { overflow: "constrain" }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, hour: 25 }, { overflow: "constrain" }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2001, month: 1, day: 1, hour: 25 } : { year: number; month: number; day: number; hour: number; } - >year : number - >2001 : 2001 -@@= skipped -23, +23 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, minute: 60 }, { overflow: "constrain" }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, minute: 60 }, { overflow: "constrain" }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2001, month: 1, day: 1, minute: 60 } : { year: number; month: number; day: number; minute: number; } - >year : number - >2001 : 2001 -@@= skipped -23, +23 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 2001, month: 13, day: 1 }, { overflow: "reject" }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2001, month: 13, day: 1 } : { year: number; month: number; day: number; } - >year : number - >2001 : 2001 -@@= skipped -21, +21 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 32 }, { overflow: "reject" }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 32 }, { overflow: "reject" }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2001, month: 1, day: 32 } : { year: number; month: number; day: number; } - >year : number - >2001 : 2001 -@@= skipped -21, +21 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, hour: 25 }, { overflow: "reject" }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, hour: 25 }, { overflow: "reject" }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2001, month: 1, day: 1, hour: 25 } : { year: number; month: number; day: number; hour: number; } - >year : number - >2001 : 2001 -@@= skipped -23, +23 lines =@@ - >dt = Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, minute: 60 }, { overflow: "reject" }) : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 2001, month: 1, day: 1, minute: 60 }, { overflow: "reject" }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2001, month: 1, day: 1, minute: 60 } : { year: number; month: number; day: number; minute: number; } - >year : number - >2001 : 2001 -@@= skipped -25, +25 lines =@@ - const one = Temporal.PlainDateTime.from("1995-12-07T03:24"); - >one : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24" : "1995-12-07T03:24" - - const two = Temporal.PlainDateTime.from("1995-12-07T01:24"); - >two : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T01:24") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T01:24" : "1995-12-07T01:24" - - const three = Temporal.PlainDateTime.from("2015-12-07T01:24"); - >three : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("2015-12-07T01:24") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2015-12-07T01:24" : "2015-12-07T01:24" - - const sorted = [one, two, three].sort(Temporal.PlainDateTime.compare); -@@= skipped -44, +44 lines =@@ - - sorted.join(" "); - >sorted.join(" ") : string -->sorted.join : (separator?: string) => string -+>sorted.join : (separator?: string | undefined) => string - >sorted : Temporal.PlainDateTime[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >" " : " " - - // => '1995-12-07T01:24:00 1995-12-07T03:24:00 2015-12-07T01:24:00' -@@= skipped -17, +17 lines =@@ - >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - dt.year; // => 1995 -@@= skipped -61, +61 lines =@@ - >dt = Temporal.PlainDateTime.from("2019-02-23T03:24:30.000003500[u-ca=hebrew]") : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("2019-02-23T03:24:30.000003500[u-ca=hebrew]") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2019-02-23T03:24:30.000003500[u-ca=hebrew]" : "2019-02-23T03:24:30.000003500[u-ca=hebrew]" - - dt.year; // => 5779 -@@= skipped -62, +62 lines =@@ - const date = Temporal.PlainDateTime.from("-000015-01-01T12:30[u-ca=gregory]"); - >date : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("-000015-01-01T12:30[u-ca=gregory]") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"-000015-01-01T12:30[u-ca=gregory]" : "-000015-01-01T12:30[u-ca=gregory]" - - date.era; -@@= skipped -31, +31 lines =@@ - const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"][dt.dayOfWeek - 1]; // => 'THU' -@@= skipped -28, +28 lines =@@ - const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - // ISO ordinal date -@@= skipped -25, +25 lines =@@ - const dt = Temporal.PlainDateTime.from("2022-01-01T03:24:30.000003500"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("2022-01-01T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2022-01-01T03:24:30.000003500" : "2022-01-01T03:24:30.000003500" - - // ISO week date -@@= skipped -28, +28 lines =@@ - const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - dt.daysInWeek; // => 7 -@@= skipped -32, +32 lines =@@ - const dt = Temporal.Now.plainDateTimeISO().with({ month }); - >dt : Temporal.PlainDateTime - >Temporal.Now.plainDateTimeISO().with({ month }) : Temporal.PlainDateTime -->Temporal.Now.plainDateTimeISO().with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.Now.plainDateTimeISO().with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.Now.plainDateTimeISO() : Temporal.PlainDateTime -->Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime -+>Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime -->with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime -+>with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ month } : { month: number; } - >month : number - -@@= skipped -43, +43 lines =@@ - >dt => dt.toLocaleString("en", { month: "long" }) : (dt: Temporal.PlainDateTime) => string - >dt : Temporal.PlainDateTime - >dt.toLocaleString("en", { month: "long" }) : string -->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en" : "en" - >{ month: "long" } : { month: "long"; } - >month : "long" -@@= skipped -23, +23 lines =@@ - const format = new Intl.ListFormat("en"); - >format : Intl.ListFormat - >new Intl.ListFormat("en") : Intl.ListFormat -->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >"en" : "en" - - const poem = `Thirty days hath ${format.format(strings)}`; -@@= skipped -26, +26 lines =@@ - const dt = Temporal.Now.plainDateTimeISO(); - >dt : Temporal.PlainDateTime - >Temporal.Now.plainDateTimeISO() : Temporal.PlainDateTime -->Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime -+>Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime -+>plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime - - const percent = dt.dayOfYear / dt.daysInYear; - >percent : number -@@= skipped -19, +19 lines =@@ - `The year is ${percent.toLocaleString("en", { style: "percent" })} over!`; - >`The year is ${percent.toLocaleString("en", { style: "percent" })} over!` : string - >percent.toLocaleString("en", { style: "percent" }) : string -->percent.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>percent.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >percent : number -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >"en" : "en" - >{ style: "percent" } : { style: "percent"; } - >style : "percent" -@@= skipped -15, +15 lines =@@ - const dt = Temporal.PlainDate.from("1900-01-01T12:00"); - >dt : Temporal.PlainDate - >Temporal.PlainDate.from("1900-01-01T12:00") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"1900-01-01T12:00" : "1900-01-01T12:00" - - dt.monthsInYear; // => 12 -@@= skipped -18, +18 lines =@@ - const dt = Temporal.Now.plainDateTimeISO(); - >dt : Temporal.PlainDateTime - >Temporal.Now.plainDateTimeISO() : Temporal.PlainDateTime -->Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime -+>Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime -+>plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime - - dt.inLeapYear; // example output: true - >dt.inLeapYear : boolean -@@= skipped -15, +15 lines =@@ - dt.with({ year: 2100 }).inLeapYear; // => false - >dt.with({ year: 2100 }).inLeapYear : boolean - >dt.with({ year: 2100 }) : Temporal.PlainDateTime -->dt.with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>dt.with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2100 } : { year: number; } - >year : number - >2100 : 2100 -@@= skipped -13, +13 lines =@@ - const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - dt.with({ year: 2015, second: 31 }); // => 2015-12-07T03:24:31.0000035 - >dt.with({ year: 2015, second: 31 }) : Temporal.PlainDateTime -->dt.with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>dt.with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>with : (dateTimeLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2015, second: 31 } : { year: number; second: number; } - >year : number - >2015 : 2015 -@@= skipped -23, +23 lines =@@ - const dt = Temporal.PlainDateTime.from("2015-12-07T03:24:30.000003500"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("2015-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2015-12-07T03:24:30.000003500" : "2015-12-07T03:24:30.000003500" - - dt.withPlainTime({ hour: 10 }); // => 2015-12-07T10:00:00 - >dt.withPlainTime({ hour: 10 }) : Temporal.PlainDateTime -->dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >{ hour: 10 } : { hour: number; } - >hour : number - >10 : 10 -@@= skipped -19, +19 lines =@@ - const time = Temporal.PlainTime.from("11:22"); - >time : Temporal.PlainTime - >Temporal.PlainTime.from("11:22") : Temporal.PlainTime -->Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>Temporal.PlainTime.from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >Temporal.PlainTime : Temporal.PlainTimeConstructor - >Temporal : typeof Temporal - >PlainTime : Temporal.PlainTimeConstructor -->from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainTime -+>from : (item: Temporal.PlainTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainTime - >"11:22" : "11:22" - - dt.withPlainTime(time); // => 2015-12-07T11:22:00 - >dt.withPlainTime(time) : Temporal.PlainDateTime -->dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >time : Temporal.PlainTime - - dt.withPlainTime("12:34"); // => 2015-12-07T12:34:00 - >dt.withPlainTime("12:34") : Temporal.PlainDateTime -->dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>dt.withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >"12:34" : "12:34" - - // easier for chaining - dt.add({ days: 2, hours: 22 }).withPlainTime("00:00"); // => 2015-12-10T00:00:00 - >dt.add({ days: 2, hours: 22 }).withPlainTime("00:00") : Temporal.PlainDateTime -->dt.add({ days: 2, hours: 22 }).withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>dt.add({ days: 2, hours: 22 }).withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >dt.add({ days: 2, hours: 22 }) : Temporal.PlainDateTime -->dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ days: 2, hours: 22 } : { days: number; hours: number; } - >days : number - >2 : 2 - >hours : number - >22 : 22 -->withPlainTime : (plainTime?: Temporal.PlainTimeLike) => Temporal.PlainDateTime -+>withPlainTime : (plainTime?: Temporal.PlainTimeLike | undefined) => Temporal.PlainDateTime - >"00:00" : "00:00" - } - -@@= skipped -42, +42 lines =@@ - const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500[u-ca=japanese]"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500[u-ca=japanese]") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500[u-ca=japanese]" : "1995-12-07T03:24:30.000003500[u-ca=japanese]" - - dt.withCalendar("iso8601"); // => 1995-12-07T03:24:30.0000035 -@@= skipped -24, +24 lines =@@ - >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - dt.add({ years: 20, months: 4, nanoseconds: 500 }); // => 2016-04-07T03:24:30.000004 - >dt.add({ years: 20, months: 4, nanoseconds: 500 }) : Temporal.PlainDateTime -->dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ years: 20, months: 4, nanoseconds: 500 } : { years: number; months: number; nanoseconds: number; } - >years : number - >20 : 20 -@@= skipped -24, +24 lines =@@ - >dt = Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2019-01-31T15:30" : "2019-01-31T15:30" - - dt.add({ months: 1 }); // => 2019-02-28T15:30:00 - >dt.add({ months: 1 }) : Temporal.PlainDateTime -->dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ months: 1 } : { months: number; } - >months : number - >1 : 1 - - dt.add({ months: 1 }, { overflow: "reject" }); // => throws - >dt.add({ months: 1 }, { overflow: "reject" }) : Temporal.PlainDateTime -->dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>dt.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ months: 1 } : { months: number; } - >months : number - >1 : 1 -@@= skipped -38, +38 lines =@@ - >dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - dt.subtract({ years: 20, months: 4, nanoseconds: 500 }); // => 1975-08-07T03:24:30.000003 - >dt.subtract({ years: 20, months: 4, nanoseconds: 500 }) : Temporal.PlainDateTime -->dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ years: 20, months: 4, nanoseconds: 500 } : { years: number; months: number; nanoseconds: number; } - >years : number - >20 : 20 -@@= skipped -24, +24 lines =@@ - >dt = Temporal.PlainDateTime.from("2019-03-31T15:30") : Temporal.PlainDateTime - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("2019-03-31T15:30") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2019-03-31T15:30" : "2019-03-31T15:30" - - dt.subtract({ months: 1 }); // => 2019-02-28T15:30:00 - >dt.subtract({ months: 1 }) : Temporal.PlainDateTime -->dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ months: 1 } : { months: number; } - >months : number - >1 : 1 - - dt.subtract({ months: 1 }, { overflow: "reject" }); // => throws - >dt.subtract({ months: 1 }, { overflow: "reject" }) : Temporal.PlainDateTime -->dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>dt.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >dt : Temporal.PlainDateTime -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ months: 1 } : { months: number; } - >months : number - >1 : 1 -@@= skipped -33, +33 lines =@@ - const dt1 = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt1 : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - const dt2 = Temporal.PlainDateTime.from("2019-01-31T15:30"); - >dt2 : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2019-01-31T15:30" : "2019-01-31T15:30" - - dt1.until(dt2); - >dt1.until(dt2) : Temporal.Duration -->dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt1 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt2 : Temporal.PlainDateTime - - // => P8456DT12H5M29.9999965S - dt1.until(dt2, { largestUnit: "year" }); - >dt1.until(dt2, { largestUnit: "year" }) : Temporal.Duration -->dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt1 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt2 : Temporal.PlainDateTime - >{ largestUnit: "year" } : { largestUnit: "year"; } - >largestUnit : "year" -@@= skipped -38, +38 lines =@@ - // => P23Y1M24DT12H5M29.9999965S - dt2.until(dt1, { largestUnit: "year" }); - >dt2.until(dt1, { largestUnit: "year" }) : Temporal.Duration -->dt2.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>dt2.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt2 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt1 : Temporal.PlainDateTime - >{ largestUnit: "year" } : { largestUnit: "year"; } - >largestUnit : "year" -@@= skipped -11, +11 lines =@@ - // => -P23Y1M24DT12H5M29.9999965S - dt1.until(dt2, { largestUnit: "nanosecond" }); - >dt1.until(dt2, { largestUnit: "nanosecond" }) : Temporal.Duration -->dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt1 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt2 : Temporal.PlainDateTime - >{ largestUnit: "nanosecond" } : { largestUnit: "nanosecond"; } - >largestUnit : "nanosecond" -@@= skipped -14, +14 lines =@@ - // Rounding, for example if you don't care about sub-seconds - dt1.until(dt2, { smallestUnit: "second" }); - >dt1.until(dt2, { smallestUnit: "second" }) : Temporal.Duration -->dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>dt1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt1 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt2 : Temporal.PlainDateTime - >{ smallestUnit: "second" } : { smallestUnit: "second"; } - >smallestUnit : "second" -@@= skipped -25, +25 lines =@@ - >month => Temporal.PlainDateTime.from({ year: 2020, month, day: 1 }) : (month: number) => Temporal.PlainDateTime - >month : number - >Temporal.PlainDateTime.from({ year: 2020, month, day: 1 }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 2020, month, day: 1 } : { year: number; month: number; day: number; } - >year : number - >2020 : 2020 -@@= skipped -14, +14 lines =@@ - - jan1.until(feb1); // => P31D - >jan1.until(feb1) : Temporal.Duration -->jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >jan1 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >feb1 : Temporal.PlainDateTime - - jan1.until(feb1, { largestUnit: "month" }); // => P1M - >jan1.until(feb1, { largestUnit: "month" }) : Temporal.Duration -->jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >jan1 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >feb1 : Temporal.PlainDateTime - >{ largestUnit: "month" } : { largestUnit: "month"; } - >largestUnit : "month" -@@= skipped -17, +17 lines =@@ - - feb1.until(mar1); // => P29D - >feb1.until(mar1) : Temporal.Duration -->feb1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>feb1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >feb1 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >mar1 : Temporal.PlainDateTime - - feb1.until(mar1, { largestUnit: "month" }); // => P1M - >feb1.until(mar1, { largestUnit: "month" }) : Temporal.Duration -->feb1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>feb1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >feb1 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >mar1 : Temporal.PlainDateTime - >{ largestUnit: "month" } : { largestUnit: "month"; } - >largestUnit : "month" -@@= skipped -17, +17 lines =@@ - - jan1.until(mar1); // => P60D - >jan1.until(mar1) : Temporal.Duration -->jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>jan1.until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >jan1 : Temporal.PlainDateTime -->until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >mar1 : Temporal.PlainDateTime - } - -@@= skipped -10, +10 lines =@@ - const dt1 = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt1 : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - const dt2 = Temporal.PlainDateTime.from("2019-01-31T15:30"); - >dt2 : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2019-01-31T15:30" : "2019-01-31T15:30" - - dt2.since(dt1); // => P8456DT12H5M29.9999965S - >dt2.since(dt1) : Temporal.Duration -->dt2.since : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>dt2.since : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt2 : Temporal.PlainDateTime -->since : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.PlainDateTimeLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >dt1 : Temporal.PlainDateTime - } - -@@= skipped -29, +29 lines =@@ - const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - // Round to a particular unit -@@= skipped -51, +51 lines =@@ - const dt1 = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt1 : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - const dt2 = Temporal.PlainDateTime.from("2019-01-31T15:30"); - >dt2 : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("2019-01-31T15:30") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"2019-01-31T15:30" : "2019-01-31T15:30" - - dt1.equals(dt2); // => false -@@= skipped -36, +36 lines =@@ - const dt = Temporal.PlainDateTime.from({ - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from({ year: 1999, month: 12, day: 31, hour: 23, minute: 59, second: 59, millisecond: 999, microsecond: 999, nanosecond: 999, }) : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >{ year: 1999, month: 12, day: 31, hour: 23, minute: 59, second: 59, millisecond: 999, microsecond: 999, nanosecond: 999, } : { year: number; month: number; day: number; hour: number; minute: number; second: number; millisecond: number; microsecond: number; nanosecond: number; } - - year: 1999, -@@= skipped -46, +46 lines =@@ - }); - dt.toString(); // => '1999-12-31T23:59:59.999999999' - >dt.toString() : string -->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - - dt.toString({ smallestUnit: "minute" }); // => '1999-12-31T23:59' - >dt.toString({ smallestUnit: "minute" }) : string -->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - >{ smallestUnit: "minute" } : { smallestUnit: "minute"; } - >smallestUnit : "minute" - >"minute" : "minute" - - dt.toString({ fractionalSecondDigits: 0 }); // => '1999-12-31T23:59:59' - >dt.toString({ fractionalSecondDigits: 0 }) : string -->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - >{ fractionalSecondDigits: 0 } : { fractionalSecondDigits: 0; } - >fractionalSecondDigits : 0 - >0 : 0 - - dt.toString({ fractionalSecondDigits: 4 }); // => '1999-12-31T23:59:59.9999' - >dt.toString({ fractionalSecondDigits: 4 }) : string -->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - >{ fractionalSecondDigits: 4 } : { fractionalSecondDigits: 4; } - >fractionalSecondDigits : 4 - >4 : 4 - - dt.toString({ fractionalSecondDigits: 8, roundingMode: "halfExpand" }); - >dt.toString({ fractionalSecondDigits: 8, roundingMode: "halfExpand" }) : string -->dt.toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>dt.toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toString : (options?: Temporal.PlainDateTimeToStringOptions) => string -+>toString : (options?: Temporal.PlainDateTimeToStringOptions | undefined) => string - >{ fractionalSecondDigits: 8, roundingMode: "halfExpand" } : { fractionalSecondDigits: 8; roundingMode: "halfExpand"; } - >fractionalSecondDigits : 8 - >8 : 8 -@@= skipped -49, +49 lines =@@ - const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - dt.toLocaleString(); // example output: 1995-12-07, 3:24:30 a.m. - >dt.toLocaleString() : string -->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - - dt.toLocaleString("de-DE"); // example output: 7.12.1995, 03:24:30 - >dt.toLocaleString("de-DE") : string -->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - - dt.toLocaleString("de-DE", { timeZone: "Europe/Berlin", weekday: "long" }); // => 'Donnerstag' - >dt.toLocaleString("de-DE", { timeZone: "Europe/Berlin", weekday: "long" }) : string -->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >{ timeZone: "Europe/Berlin", weekday: "long" } : { timeZone: string; weekday: "long"; } - >timeZone : string -@@= skipped -34, +34 lines =@@ - - dt.toLocaleString("en-US-u-nu-fullwide-hc-h12"); // => '12/7/1995, 3:24:30 AM' - >dt.toLocaleString("en-US-u-nu-fullwide-hc-h12") : string -->dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>dt.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >dt : Temporal.PlainDateTime -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en-US-u-nu-fullwide-hc-h12" : "en-US-u-nu-fullwide-hc-h12" - } - -@@= skipped -10, +10 lines =@@ - const dt = Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500"); - >dt : Temporal.PlainDateTime - >Temporal.PlainDateTime.from("1995-12-07T03:24:30.000003500") : Temporal.PlainDateTime -->Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>Temporal.PlainDateTime.from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >Temporal.PlainDateTime : Temporal.PlainDateTimeConstructor - >Temporal : typeof Temporal - >PlainDateTime : Temporal.PlainDateTimeConstructor -->from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions) => Temporal.PlainDateTime -+>from : (item: Temporal.PlainDateTimeLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDateTime - >"1995-12-07T03:24:30.000003500" : "1995-12-07T03:24:30.000003500" - - dt.toPlainDate(); // => 1995-12-07 -@@= skipped -61, +61 lines =@@ - >ym = Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - ym = Temporal.PlainYearMonth.from("2019-06-24"); // => 2019-06 - >ym = Temporal.PlainYearMonth.from("2019-06-24") : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06-24") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06-24" : "2019-06-24" - - ym = Temporal.PlainYearMonth.from("2019-06-24T15:43:27"); // => 2019-06 - >ym = Temporal.PlainYearMonth.from("2019-06-24T15:43:27") : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06-24T15:43:27") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06-24T15:43:27" : "2019-06-24T15:43:27" - - ym = Temporal.PlainYearMonth.from("2019-06-24T15:43:27+01:00[Europe/Brussels]"); - >ym = Temporal.PlainYearMonth.from("2019-06-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06-24T15:43:27+01:00[Europe/Brussels]" : "2019-06-24T15:43:27+01:00[Europe/Brussels]" - - // => 2019-06 -@@= skipped -45, +45 lines =@@ - >ym === Temporal.PlainYearMonth.from(ym) : boolean - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from(ym) : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - - ym = Temporal.PlainYearMonth.from({ year: 2019, month: 6 }); // => 2019-06 - >ym = Temporal.PlainYearMonth.from({ year: 2019, month: 6 }) : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from({ year: 2019, month: 6 }) : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ year: 2019, month: 6 } : { year: number; month: number; } - >year : number - >2019 : 2019 -@@= skipped -26, +26 lines =@@ - >ym = Temporal.PlainYearMonth.from(Temporal.PlainDate.from("2019-06-24")) : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from(Temporal.PlainDate.from("2019-06-24")) : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainDate.from("2019-06-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2019-06-24" : "2019-06-24" - - // => 2019-06 -@@= skipped -21, +21 lines =@@ - >ym = Temporal.PlainYearMonth.from({ year: 2001, month: 13 }, { overflow: "constrain" }) : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from({ year: 2001, month: 13 }, { overflow: "constrain" }) : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ year: 2001, month: 13 } : { year: number; month: number; } - >year : number - >2001 : 2001 -@@= skipped -19, +19 lines =@@ - >ym = Temporal.PlainYearMonth.from({ year: 2001, month: 13 }, { overflow: "reject" }) : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from({ year: 2001, month: 13 }, { overflow: "reject" }) : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ year: 2001, month: 13 } : { year: number; month: number; } - >year : number - >2001 : 2001 -@@= skipped -21, +21 lines =@@ - const one = Temporal.PlainYearMonth.from("2006-08"); - >one : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2006-08") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2006-08" : "2006-08" - - const two = Temporal.PlainYearMonth.from("2015-07"); - >two : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2015-07") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2015-07" : "2015-07" - - const three = Temporal.PlainYearMonth.from("1930-02"); - >three : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("1930-02") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"1930-02" : "1930-02" - - const sorted = [one, two, three].sort(Temporal.PlainYearMonth.compare); -@@= skipped -44, +44 lines =@@ - - sorted.join(" "); // => '1930-02 2006-08 2015-07' - >sorted.join(" ") : string -->sorted.join : (separator?: string) => string -+>sorted.join : (separator?: string | undefined) => string - >sorted : Temporal.PlainYearMonth[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >" " : " " - } - -@@= skipped -15, +15 lines =@@ - >ym = Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - ym.year; // => 2019 -@@= skipped -26, +26 lines =@@ - >ym = Temporal.PlainYearMonth.from("2019-02-23[u-ca=hebrew]") : Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-02-23[u-ca=hebrew]") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-02-23[u-ca=hebrew]" : "2019-02-23[u-ca=hebrew]" - - ym.year; // => 5779 -@@= skipped -27, +27 lines =@@ - const ym = Temporal.PlainYearMonth.from("-000015-01-01[u-ca=gregory]"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("-000015-01-01[u-ca=gregory]") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"-000015-01-01[u-ca=gregory]" : "-000015-01-01[u-ca=gregory]" - - ym.era; -@@= skipped -46, +46 lines =@@ - const ym = Temporal.PlainYearMonth.from({ year: 2020, calendar: "iso8601", month }); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from({ year: 2020, calendar: "iso8601", month }) : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ year: 2020, calendar: "iso8601", month } : { year: number; calendar: string; month: number; } - >year : number - >2020 : 2020 -@@= skipped -44, +44 lines =@@ - >ym => ym.toLocaleString("en", { month: "long", calendar: "iso8601" }) : (ym: Temporal.PlainYearMonth) => string - >ym : Temporal.PlainYearMonth - >ym.toLocaleString("en", { month: "long", calendar: "iso8601" }) : string -->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >ym : Temporal.PlainYearMonth -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en" : "en" - >{ month: "long", calendar: "iso8601" } : { month: "long"; calendar: string; } - >month : "long" -@@= skipped -25, +25 lines =@@ - const format = new Intl.ListFormat("en"); - >format : Intl.ListFormat - >new Intl.ListFormat("en") : Intl.ListFormat -->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >"en" : "en" - - const poem = `Thirty days hath ${format.format(strings)}`; -@@= skipped -26, +26 lines =@@ - const ym = Temporal.PlainYearMonth.from({ year: 2019, month: 6, calendar: "iso8601" }); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from({ year: 2019, month: 6, calendar: "iso8601" }) : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ year: 2019, month: 6, calendar: "iso8601" } : { year: number; month: number; calendar: string; } - >year : number - >2019 : 2019 -@@= skipped -26, +26 lines =@@ - `${ym.toLocaleString("en", { month: "long", year: "numeric", calendar: "iso8601" })} was ${percent.toLocaleString("en", { style: "percent" })} of the year!`; - >`${ym.toLocaleString("en", { month: "long", year: "numeric", calendar: "iso8601" })} was ${percent.toLocaleString("en", { style: "percent" })} of the year!` : string - >ym.toLocaleString("en", { month: "long", year: "numeric", calendar: "iso8601" }) : string -->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >ym : Temporal.PlainYearMonth -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"en" : "en" - >{ month: "long", year: "numeric", calendar: "iso8601" } : { month: "long"; year: "numeric"; calendar: string; } - >month : "long" -@@= skipped -12, +12 lines =@@ - >calendar : string - >"iso8601" : "iso8601" - >percent.toLocaleString("en", { style: "percent" }) : string -->percent.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>percent.toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >percent : number -->toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -+>toLocaleString : (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string - >"en" : "en" - >{ style: "percent" } : { style: "percent"; } - >style : "percent" -@@= skipped -15, +15 lines =@@ - const ym = Temporal.PlainYearMonth.from("1900-01"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("1900-01") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"1900-01" : "1900-01" - - ym.monthsInYear; // => 12 -@@= skipped -18, +18 lines =@@ - const ym = Temporal.PlainYearMonth.from("2019-06"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - ym.inLeapYear; // => false -@@= skipped -16, +16 lines =@@ - ym.with({ year: 2100 }).inLeapYear; // => false - >ym.with({ year: 2100 }).inLeapYear : boolean - >ym.with({ year: 2100 }) : Temporal.PlainYearMonth -->ym.with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>ym.with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth -->with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ year: 2100 } : { year: number; } - >year : number - >2100 : 2100 -@@= skipped -13, +13 lines =@@ - const ym = Temporal.PlainYearMonth.from("2019-06"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - // Get December of that year - ym.with({ month: 12 }); // => 2019-12 - >ym.with({ month: 12 }) : Temporal.PlainYearMonth -->ym.with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>ym.with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth -->with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>with : (yearMonthLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ month: 12 } : { month: number; } - >month : number - >12 : 12 -@@= skipped -22, +22 lines =@@ - const ym = Temporal.PlainYearMonth.from("2019-06"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - ym.add({ years: 20, months: 4 }); // => 2039-10 - >ym.add({ years: 20, months: 4 }) : Temporal.PlainYearMonth -->ym.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>ym.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ years: 20, months: 4 } : { years: number; months: number; } - >years : number - >20 : 20 -@@= skipped -23, +23 lines =@@ - const ym = Temporal.PlainYearMonth.from("2019-06"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - ym.subtract({ years: 20, months: 4 }); // => 1999-02 - >ym.subtract({ years: 20, months: 4 }) : Temporal.PlainYearMonth -->ym.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>ym.subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >ym : Temporal.PlainYearMonth -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ years: 20, months: 4 } : { years: number; months: number; } - >years : number - >20 : 20 -@@= skipped -23, +23 lines =@@ - const ym = Temporal.PlainYearMonth.from("2006-08"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2006-08") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2006-08" : "2006-08" - - const other = Temporal.PlainYearMonth.from("2019-06"); - >other : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - ym.until(other); // => P12Y10M - >ym.until(other) : Temporal.Duration -->ym.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration -+>ym.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration - >ym : Temporal.PlainYearMonth -->until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration -+>until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration - >other : Temporal.PlainYearMonth - - ym.until(other, { largestUnit: "month" }); // => P154M - >ym.until(other, { largestUnit: "month" }) : Temporal.Duration -->ym.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration -+>ym.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration - >ym : Temporal.PlainYearMonth -->until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration -+>until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration - >other : Temporal.PlainYearMonth - >{ largestUnit: "month" } : { largestUnit: "month"; } - >largestUnit : "month" -@@= skipped -36, +36 lines =@@ - - other.until(ym, { largestUnit: "month" }); // => -P154M - >other.until(ym, { largestUnit: "month" }) : Temporal.Duration -->other.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration -+>other.until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration - >other : Temporal.PlainYearMonth -->until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration -+>until : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration - >ym : Temporal.PlainYearMonth - >{ largestUnit: "month" } : { largestUnit: "month"; } - >largestUnit : "month" -@@= skipped -15, +15 lines =@@ - // the month to calculate a number of days: - ym.toPlainDate({ day: 1 }).until(other.toPlainDate({ day: 1 }), { largestUnit: "day" }); // => P4687D - >ym.toPlainDate({ day: 1 }).until(other.toPlainDate({ day: 1 }), { largestUnit: "day" }) : Temporal.Duration -->ym.toPlainDate({ day: 1 }).until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>ym.toPlainDate({ day: 1 }).until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >ym.toPlainDate({ day: 1 }) : Temporal.PlainDate - >ym.toPlainDate : (item: Temporal.PlainYearMonthToPlainDateOptions) => Temporal.PlainDate - >ym : Temporal.PlainYearMonth -@@= skipped -8, +8 lines =@@ - >{ day: 1 } : { day: number; } - >day : number - >1 : 1 -->until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>until : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >other.toPlainDate({ day: 1 }) : Temporal.PlainDate - >other.toPlainDate : (item: Temporal.PlainYearMonthToPlainDateOptions) => Temporal.PlainDate - >other : Temporal.PlainYearMonth -@@= skipped -17, +17 lines =@@ - const ym = Temporal.PlainYearMonth.from("2019-06"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - const other = Temporal.PlainYearMonth.from("2006-08"); - >other : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2006-08") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2006-08" : "2006-08" - - ym.since(other); // => P12Y10M - >ym.since(other) : Temporal.Duration -->ym.since : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration -+>ym.since : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration - >ym : Temporal.PlainYearMonth -->since : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"year" | "month">) => Temporal.Duration -+>since : (other: Temporal.PlainYearMonthLike, options?: Temporal.RoundingOptionsWithLargestUnit<"month" | "year"> | undefined) => Temporal.Duration - >other : Temporal.PlainYearMonth - } - -@@= skipped -29, +29 lines =@@ - const ym = Temporal.PlainYearMonth.from("2019-06"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - const other = Temporal.PlainYearMonth.from("2006-08"); - >other : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2006-08") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2006-08" : "2006-08" - - ym.equals(other); // => false -@@= skipped -36, +36 lines =@@ - const ym = Temporal.PlainYearMonth.from("2019-06"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - ym.toString(); // => '2019-06' - >ym.toString() : string -->ym.toString : (options?: Temporal.PlainDateToStringOptions) => string -+>ym.toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string - >ym : Temporal.PlainYearMonth -->toString : (options?: Temporal.PlainDateToStringOptions) => string -+>toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string - } - - { -@@= skipped -28, +28 lines =@@ - const ym = Temporal.PlainYearMonth.from({ year: 2019, month: 6, calendar }); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from({ year: 2019, month: 6, calendar }) : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >{ year: 2019, month: 6, calendar } : { year: number; month: number; calendar: string; } - >year : number - >2019 : 2019 -@@= skipped -14, +14 lines =@@ - - ym.toLocaleString(); // example output: '6/2019' - >ym.toLocaleString() : string -->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >ym : Temporal.PlainYearMonth -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - - // Same as above, but explicitly specifying the calendar: - ym.toLocaleString(undefined, { calendar }); - >ym.toLocaleString(undefined, { calendar }) : string -->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >ym : Temporal.PlainYearMonth -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >undefined : undefined - >{ calendar } : { calendar: string; } - >calendar : string - - ym.toLocaleString("de-DE", { calendar }); // example output: '6.2019' - >ym.toLocaleString("de-DE", { calendar }) : string -->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >ym : Temporal.PlainYearMonth -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >{ calendar } : { calendar: string; } - >calendar : string - - ym.toLocaleString("de-DE", { month: "long", year: "numeric", calendar }); // => 'Juni 2019' - >ym.toLocaleString("de-DE", { month: "long", year: "numeric", calendar }) : string -->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >ym : Temporal.PlainYearMonth -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >{ month: "long", year: "numeric", calendar } : { month: "long"; year: "numeric"; calendar: string; } - >month : "long" -@@= skipped -38, +38 lines =@@ - - ym.toLocaleString(`en-US-u-nu-fullwide-ca-${calendar}`); // => '6/2019' - >ym.toLocaleString(`en-US-u-nu-fullwide-ca-${calendar}`) : string -->ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>ym.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >ym : Temporal.PlainYearMonth -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >`en-US-u-nu-fullwide-ca-${calendar}` : string - >calendar : string - } -@@= skipped -11, +11 lines =@@ - const ym = Temporal.PlainYearMonth.from("2019-06"); - >ym : Temporal.PlainYearMonth - >Temporal.PlainYearMonth.from("2019-06") : Temporal.PlainYearMonth -->Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>Temporal.PlainYearMonth.from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >Temporal.PlainYearMonth : Temporal.PlainYearMonthConstructor - >Temporal : typeof Temporal - >PlainYearMonth : Temporal.PlainYearMonthConstructor -->from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions) => Temporal.PlainYearMonth -+>from : (item: Temporal.PlainYearMonthLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainYearMonth - >"2019-06" : "2019-06" - - ym.toPlainDate({ day: 24 }); // => 2019-06-24 -@@= skipped -54, +54 lines =@@ - >md = Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"08-24" : "08-24" - - md = Temporal.PlainMonthDay.from("0824"); // => 08-24 - >md = Temporal.PlainMonthDay.from("0824") : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("0824") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"0824" : "0824" - - md = Temporal.PlainMonthDay.from("2006-08-24"); // => 08-24 - >md = Temporal.PlainMonthDay.from("2006-08-24") : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("2006-08-24") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"2006-08-24" : "2006-08-24" - - md = Temporal.PlainMonthDay.from("2006-08-24T15:43:27"); // => 08-24 - >md = Temporal.PlainMonthDay.from("2006-08-24T15:43:27") : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("2006-08-24T15:43:27") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"2006-08-24T15:43:27" : "2006-08-24T15:43:27" - - md = Temporal.PlainMonthDay.from("2006-08-24T15:43:27+01:00[Europe/Brussels]"); - >md = Temporal.PlainMonthDay.from("2006-08-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("2006-08-24T15:43:27+01:00[Europe/Brussels]") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"2006-08-24T15:43:27+01:00[Europe/Brussels]" : "2006-08-24T15:43:27+01:00[Europe/Brussels]" - - // => 08-24 -@@= skipped -56, +56 lines =@@ - >md === Temporal.PlainMonthDay.from(md) : boolean - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from(md) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - - md = Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24 }); // => 08-24 - >md = Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24 }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24 }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ monthCode: "M08", day: 24 } : { monthCode: string; day: number; } - >monthCode : string - >"M08" : "M08" -@@= skipped -26, +26 lines =@@ - >md = Temporal.PlainMonthDay.from(Temporal.PlainDate.from("2006-08-24")) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from(Temporal.PlainDate.from("2006-08-24")) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainDate.from("2006-08-24") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2006-08-24" : "2006-08-24" - - // => 08-24 -@@= skipped -21, +21 lines =@@ - >md = Temporal.PlainMonthDay.from({ month: 13, day: 1, year: 2000 }, { overflow: "constrain" }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ month: 13, day: 1, year: 2000 }, { overflow: "constrain" }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ month: 13, day: 1, year: 2000 } : { month: number; day: number; year: number; } - >month : number - >13 : 13 -@@= skipped -21, +21 lines =@@ - >md = Temporal.PlainMonthDay.from({ month: 1, day: 32, year: 2000 }, { overflow: "constrain" }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ month: 1, day: 32, year: 2000 }, { overflow: "constrain" }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ month: 1, day: 32, year: 2000 } : { month: number; day: number; year: number; } - >month : number - >1 : 1 -@@= skipped -21, +21 lines =@@ - >md = Temporal.PlainMonthDay.from({ month: 13, day: 1, year: 2000 }, { overflow: "reject" }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ month: 13, day: 1, year: 2000 }, { overflow: "reject" }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ month: 13, day: 1, year: 2000 } : { month: number; day: number; year: number; } - >month : number - >13 : 13 -@@= skipped -21, +21 lines =@@ - >md = Temporal.PlainMonthDay.from({ month: 1, day: 32, year: 2000 }, { overflow: "reject" }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ month: 1, day: 32, year: 2000 }, { overflow: "reject" }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ month: 1, day: 32, year: 2000 } : { month: number; day: number; year: number; } - >month : number - >1 : 1 -@@= skipped -21, +21 lines =@@ - >md = Temporal.PlainMonthDay.from({ month: 2, day: 29, year: 2001 }, { overflow: "reject" }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ month: 2, day: 29, year: 2001 }, { overflow: "reject" }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ month: 2, day: 29, year: 2001 } : { month: number; day: number; year: number; } - >month : number - >2 : 2 -@@= skipped -23, +23 lines =@@ - >md = Temporal.PlainMonthDay.from({ monthCode: "M05L", day: 15, calendar: "hebrew" }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ monthCode: "M05L", day: 15, calendar: "hebrew" }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ monthCode: "M05L", day: 15, calendar: "hebrew" } : { monthCode: string; day: number; calendar: string; } - >monthCode : string - >"M05L" : "M05L" -@@= skipped -18, +18 lines =@@ - >md = Temporal.PlainMonthDay.from({ month: 6, day: 15, year: 5779, calendar: "hebrew" }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ month: 6, day: 15, year: 5779, calendar: "hebrew" }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ month: 6, day: 15, year: 5779, calendar: "hebrew" } : { month: number; day: number; year: number; calendar: string; } - >month : number - >6 : 6 -@@= skipped -20, +20 lines =@@ - >md = Temporal.PlainMonthDay.from({ month: 6, day: 15, era: "am", eraYear: 5779, calendar: "hebrew" }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ month: 6, day: 15, era: "am", eraYear: 5779, calendar: "hebrew" }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ month: 6, day: 15, era: "am", eraYear: 5779, calendar: "hebrew" } : { month: number; day: number; era: string; eraYear: number; calendar: string; } - >month : number - >6 : 6 -@@= skipped -22, +22 lines =@@ - >md = Temporal.PlainMonthDay.from({ month: 6, day: 15, calendar: "hebrew" }) : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ month: 6, day: 15, calendar: "hebrew" }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ month: 6, day: 15, calendar: "hebrew" } : { month: number; day: number; calendar: string; } - >month : number - >6 : 6 -@@= skipped -18, +18 lines =@@ - >md = Temporal.PlainMonthDay.from("2019-02-20[u-ca=hebrew]") : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("2019-02-20[u-ca=hebrew]") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"2019-02-20[u-ca=hebrew]" : "2019-02-20[u-ca=hebrew]" - - md.monthCode; // => 'M05L' -@@= skipped -34, +34 lines =@@ - >md = Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"08-24" : "08-24" - - md.monthCode; // => 'M08' -@@= skipped -28, +28 lines =@@ - >md = Temporal.PlainMonthDay.from("2019-02-20[u-ca=hebrew]") : Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("2019-02-20[u-ca=hebrew]") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"2019-02-20[u-ca=hebrew]" : "2019-02-20[u-ca=hebrew]" - - md.monthCode; // => 'M05L' -@@= skipped -29, +29 lines =@@ - const md = Temporal.PlainMonthDay.from("11-15"); - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("11-15") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"11-15" : "11-15" - - // What's the last day of that month? - md.with({ day: 31 }); // => 11-30 - >md.with({ day: 31 }) : Temporal.PlainMonthDay -->md.with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>md.with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >md : Temporal.PlainMonthDay -->with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ day: 31 } : { day: number; } - >day : number - >31 : 31 - - Temporal.PlainMonthDay.from("02-01").with({ day: 31 }); // => 02-29 - >Temporal.PlainMonthDay.from("02-01").with({ day: 31 }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from("02-01").with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from("02-01").with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("02-01") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"02-01" : "02-01" -->with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>with : (monthDayLike: Temporal.PartialTemporalLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ day: 31 } : { day: number; } - >day : number - >31 : 31 -@@= skipped -37, +37 lines =@@ - const md1 = Temporal.PlainMonthDay.from("02-28"); - >md1 : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("02-28") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"02-28" : "02-28" - - const md2 = Temporal.PlainMonthDay.from("02-29"); - >md2 : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("02-29") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"02-29" : "02-29" - - md1.equals(md2); // => false -@@= skipped -72, +72 lines =@@ - const md = Temporal.PlainMonthDay.from("08-24"); - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from("08-24") : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >"08-24" : "08-24" - - md.toString(); // => '08-24' - >md.toString() : string -->md.toString : (options?: Temporal.PlainDateToStringOptions) => string -+>md.toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string - >md : Temporal.PlainMonthDay -->toString : (options?: Temporal.PlainDateToStringOptions) => string -+>toString : (options?: Temporal.PlainDateToStringOptions | undefined) => string - } - - { -@@= skipped -28, +28 lines =@@ - const md = Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24, calendar }); - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ monthCode: "M08", day: 24, calendar }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ monthCode: "M08", day: 24, calendar } : { monthCode: string; day: number; calendar: string; } - >monthCode : string - >"M08" : "M08" -@@= skipped -14, +14 lines =@@ - - md.toLocaleString(); // example output: '8/24' - >md.toLocaleString() : string -->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >md : Temporal.PlainMonthDay -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - - // Same as above, but explicitly specifying the calendar: - md.toLocaleString(undefined, { calendar }); // example output: '8/24' - >md.toLocaleString(undefined, { calendar }) : string -->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >md : Temporal.PlainMonthDay -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >undefined : undefined - >{ calendar } : { calendar: string; } - >calendar : string - - md.toLocaleString("de-DE", { calendar }); // => '24.8.' - >md.toLocaleString("de-DE", { calendar }) : string -->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >md : Temporal.PlainMonthDay -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >{ calendar } : { calendar: string; } - >calendar : string - - md.toLocaleString("de-DE", { month: "long", day: "numeric", calendar }); // => '24. August' - >md.toLocaleString("de-DE", { month: "long", day: "numeric", calendar }) : string -->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >md : Temporal.PlainMonthDay -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >"de-DE" : "de-DE" - >{ month: "long", day: "numeric", calendar } : { month: "long"; day: "numeric"; calendar: string; } - >month : "long" -@@= skipped -38, +38 lines =@@ - - md.toLocaleString(`en-US-u-nu-fullwide-ca-${calendar}`); // => '8/24' - >md.toLocaleString(`en-US-u-nu-fullwide-ca-${calendar}`) : string -->md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>md.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >md : Temporal.PlainMonthDay -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined) => string - >`en-US-u-nu-fullwide-ca-${calendar}` : string - >calendar : string - } -@@= skipped -11, +11 lines =@@ - const md = Temporal.PlainMonthDay.from({ - >md : Temporal.PlainMonthDay - >Temporal.PlainMonthDay.from({ calendar: "japanese", monthCode: "M01", day: 1, }) : Temporal.PlainMonthDay -->Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>Temporal.PlainMonthDay.from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >Temporal.PlainMonthDay : Temporal.PlainMonthDayConstructor - >Temporal : typeof Temporal - >PlainMonthDay : Temporal.PlainMonthDayConstructor -->from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions) => Temporal.PlainMonthDay -+>from : (item: Temporal.PlainMonthDayLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainMonthDay - >{ calendar: "japanese", monthCode: "M01", day: 1, } : { calendar: string; monthCode: string; day: number; } - - calendar: "japanese", -@@= skipped -216, +216 lines =@@ - >two : Temporal.Duration - >three : Temporal.Duration - >sort : (compareFn?: ((a: Temporal.Duration, b: Temporal.Duration) => number) | undefined) => Temporal.Duration[] -->Temporal.Duration.compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions) => number -+>Temporal.Duration.compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions | undefined) => number - >Temporal.Duration : Temporal.DurationConstructor - >Temporal : typeof Temporal - >Duration : Temporal.DurationConstructor -->compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions) => number -+>compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions | undefined) => number - - sorted1.join(" "); - >sorted1.join(" ") : string -->sorted1.join : (separator?: string) => string -+>sorted1.join : (separator?: string | undefined) => string - >sorted1 : Temporal.Duration[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >" " : " " - - // => 'P3DT6H50M PT79H10M P3DT7H630S' -@@= skipped -19, +19 lines =@@ - const relativeTo = Temporal.ZonedDateTime.from("2020-11-01T00:00-07:00[America/Los_Angeles]"); - >relativeTo : Temporal.ZonedDateTime - >Temporal.ZonedDateTime.from("2020-11-01T00:00-07:00[America/Los_Angeles]") : Temporal.ZonedDateTime -->Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>Temporal.ZonedDateTime.from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >Temporal.ZonedDateTime : Temporal.ZonedDateTimeConstructor - >Temporal : typeof Temporal - >ZonedDateTime : Temporal.ZonedDateTimeConstructor -->from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions) => Temporal.ZonedDateTime -+>from : (item: Temporal.ZonedDateTimeLike, options?: Temporal.ZonedDateTimeFromOptions | undefined) => Temporal.ZonedDateTime - >"2020-11-01T00:00-07:00[America/Los_Angeles]" : "2020-11-01T00:00-07:00[America/Los_Angeles]" - - const sorted2 = [one, two, three].sort((one, two) => Temporal.Duration.compare(one, two, { relativeTo })); -@@= skipped -20, +20 lines =@@ - >one : Temporal.Duration - >two : Temporal.Duration - >Temporal.Duration.compare(one, two, { relativeTo }) : number -->Temporal.Duration.compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions) => number -+>Temporal.Duration.compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions | undefined) => number - >Temporal.Duration : Temporal.DurationConstructor - >Temporal : typeof Temporal - >Duration : Temporal.DurationConstructor -->compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions) => number -+>compare : (one: Temporal.DurationLike, two: Temporal.DurationLike, options?: Temporal.DurationRelativeToOptions | undefined) => number - >one : Temporal.Duration - >two : Temporal.Duration - >{ relativeTo } : { relativeTo: Temporal.ZonedDateTime; } -@@= skipped -12, +12 lines =@@ - - sorted2.join(" "); - >sorted2.join(" ") : string -->sorted2.join : (separator?: string) => string -+>sorted2.join : (separator?: string | undefined) => string - >sorted2 : Temporal.Duration[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >" " : " " - - // => 'PT79H10M P3DT6H50M P3DT7H630S' -@@= skipped -250, +250 lines =@@ - const startDate1 = Temporal.PlainDate.from("2000-12-01"); - >startDate1 : Temporal.PlainDate - >Temporal.PlainDate.from("2000-12-01") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2000-12-01" : "2000-12-01" - - startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) - >startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since(startDate1, { largestUnit: "months" }) : Temporal.Duration -->startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startDate1.add(oneAndAHalfMonth).add(oneAndAHalfMonth) : Temporal.PlainDate -->startDate1.add(oneAndAHalfMonth).add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>startDate1.add(oneAndAHalfMonth).add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >startDate1.add(oneAndAHalfMonth) : Temporal.PlainDate -->startDate1.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>startDate1.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >startDate1 : Temporal.PlainDate -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >oneAndAHalfMonth : Temporal.Duration -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >oneAndAHalfMonth : Temporal.Duration - - .since(startDate1, { largestUnit: "months" }); // => P3M4D -->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startDate1 : Temporal.PlainDate - >{ largestUnit: "months" } : { largestUnit: "months"; } - >largestUnit : "months" -@@= skipped -30, +30 lines =@@ - const startDate2 = Temporal.PlainDate.from("2001-01-01"); - >startDate2 : Temporal.PlainDate - >Temporal.PlainDate.from("2001-01-01") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2001-01-01" : "2001-01-01" - - startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) - >startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since(startDate2, { largestUnit: "months" }) : Temporal.Duration -->startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startDate2.add(oneAndAHalfMonth).add(oneAndAHalfMonth) : Temporal.PlainDate -->startDate2.add(oneAndAHalfMonth).add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>startDate2.add(oneAndAHalfMonth).add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >startDate2.add(oneAndAHalfMonth) : Temporal.PlainDate -->startDate2.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>startDate2.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >startDate2 : Temporal.PlainDate -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >oneAndAHalfMonth : Temporal.Duration -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >oneAndAHalfMonth : Temporal.Duration - - .since(startDate2, { largestUnit: "months" }); // => P3M1D -->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startDate2 : Temporal.PlainDate - >{ largestUnit: "months" } : { largestUnit: "months"; } - >largestUnit : "months" -@@= skipped -124, +124 lines =@@ - const startDate1 = Temporal.PlainDate.from("2001-01-01"); - >startDate1 : Temporal.PlainDate - >Temporal.PlainDate.from("2001-01-01") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2001-01-01" : "2001-01-01" - - startDate1.add(threeMonths).subtract(oneAndAHalfMonth) - >startDate1.add(threeMonths).subtract(oneAndAHalfMonth) .since(startDate1, { largestUnit: "months" }) : Temporal.Duration -->startDate1.add(threeMonths).subtract(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>startDate1.add(threeMonths).subtract(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startDate1.add(threeMonths).subtract(oneAndAHalfMonth) : Temporal.PlainDate -->startDate1.add(threeMonths).subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>startDate1.add(threeMonths).subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >startDate1.add(threeMonths) : Temporal.PlainDate -->startDate1.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>startDate1.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >startDate1 : Temporal.PlainDate -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >threeMonths : Temporal.Duration -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >oneAndAHalfMonth : Temporal.Duration - - .since(startDate1, { largestUnit: "months" }); // => P1M13D -->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startDate1 : Temporal.PlainDate - >{ largestUnit: "months" } : { largestUnit: "months"; } - >largestUnit : "months" -@@= skipped -30, +30 lines =@@ - const startDate2 = Temporal.PlainDate.from("2001-02-01"); - >startDate2 : Temporal.PlainDate - >Temporal.PlainDate.from("2001-02-01") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2001-02-01" : "2001-02-01" - - startDate2.add(threeMonths).subtract(oneAndAHalfMonth) - >startDate2.add(threeMonths).subtract(oneAndAHalfMonth) .since(startDate2, { largestUnit: "months" }) : Temporal.Duration -->startDate2.add(threeMonths).subtract(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>startDate2.add(threeMonths).subtract(oneAndAHalfMonth) .since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startDate2.add(threeMonths).subtract(oneAndAHalfMonth) : Temporal.PlainDate -->startDate2.add(threeMonths).subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>startDate2.add(threeMonths).subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >startDate2.add(threeMonths) : Temporal.PlainDate -->startDate2.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>startDate2.add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >startDate2 : Temporal.PlainDate -->add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>add : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >threeMonths : Temporal.Duration -->subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>subtract : (duration: Temporal.DurationLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >oneAndAHalfMonth : Temporal.Duration - - .since(startDate2, { largestUnit: "months" }); // => P1M16D -->since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit) => Temporal.Duration -+>since : (other: Temporal.PlainDateLike, options?: Temporal.RoundingOptionsWithLargestUnit | undefined) => Temporal.Duration - >startDate2 : Temporal.PlainDate - >{ largestUnit: "months" } : { largestUnit: "months"; } - >largestUnit : "months" -@@= skipped -230, +230 lines =@@ - const refDate = Temporal.PlainDate.from("2020-01-01"); - >refDate : Temporal.PlainDate - >Temporal.PlainDate.from("2020-01-01") : Temporal.PlainDate -->Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>Temporal.PlainDate.from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >Temporal.PlainDate : Temporal.PlainDateConstructor - >Temporal : typeof Temporal - >PlainDate : Temporal.PlainDateConstructor -->from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions) => Temporal.PlainDate -+>from : (item: Temporal.PlainDateLike, options?: Temporal.OverflowOptions | undefined) => Temporal.PlainDate - >"2020-01-01" : "2020-01-01" - - d.round({ relativeTo: refDate, largestUnit: "year" }); // => P6M8D -@@= skipped -115, +115 lines =@@ - relativeTo: Temporal.Now.plainDateISO(), - >relativeTo : Temporal.PlainDate - >Temporal.Now.plainDateISO() : Temporal.PlainDate -->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -+>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -+>plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate - - }); - const quarters = d.months / 3; -@@= skipped -140, +140 lines =@@ - - d.toString(); // => P1Y1D - >d.toString() : string -->d.toString : (options?: Temporal.DurationToStringOptions) => string -+>d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >d : Temporal.Duration -->toString : (options?: Temporal.DurationToStringOptions) => string -+>toString : (options?: Temporal.DurationToStringOptions | undefined) => string - - d = Temporal.Duration.from({ years: -1, days: -1 }); - >d = Temporal.Duration.from({ years: -1, days: -1 }) : Temporal.Duration -@@= skipped -23, +23 lines =@@ - - d.toString(); // => -P1Y1D - >d.toString() : string -->d.toString : (options?: Temporal.DurationToStringOptions) => string -+>d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >d : Temporal.Duration -->toString : (options?: Temporal.DurationToStringOptions) => string -+>toString : (options?: Temporal.DurationToStringOptions | undefined) => string - - d = Temporal.Duration.from({ milliseconds: 1000 }); - >d = Temporal.Duration.from({ milliseconds: 1000 }) : Temporal.Duration -@@= skipped -19, +19 lines =@@ - - d.toString(); // => PT1S - >d.toString() : string -->d.toString : (options?: Temporal.DurationToStringOptions) => string -+>d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >d : Temporal.Duration -->toString : (options?: Temporal.DurationToStringOptions) => string -+>toString : (options?: Temporal.DurationToStringOptions | undefined) => string - - // The output format always balances units under 1 s, even if the - // underlying Temporal.Duration object doesn't. -@@= skipped -69, +69 lines =@@ - - d.toString({ smallestUnit: "second" }); // => PT59S - >d.toString({ smallestUnit: "second" }) : string -->d.toString : (options?: Temporal.DurationToStringOptions) => string -+>d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >d : Temporal.Duration -->toString : (options?: Temporal.DurationToStringOptions) => string -+>toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >{ smallestUnit: "second" } : { smallestUnit: "second"; } - >smallestUnit : "second" - >"second" : "second" - - d.toString({ fractionalSecondDigits: 0 }); // => PT59S - >d.toString({ fractionalSecondDigits: 0 }) : string -->d.toString : (options?: Temporal.DurationToStringOptions) => string -+>d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >d : Temporal.Duration -->toString : (options?: Temporal.DurationToStringOptions) => string -+>toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >{ fractionalSecondDigits: 0 } : { fractionalSecondDigits: 0; } - >fractionalSecondDigits : 0 - >0 : 0 - - d.toString({ fractionalSecondDigits: 4 }); // => PT59.9999S - >d.toString({ fractionalSecondDigits: 4 }) : string -->d.toString : (options?: Temporal.DurationToStringOptions) => string -+>d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >d : Temporal.Duration -->toString : (options?: Temporal.DurationToStringOptions) => string -+>toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >{ fractionalSecondDigits: 4 } : { fractionalSecondDigits: 4; } - >fractionalSecondDigits : 4 - >4 : 4 - - d.toString({ fractionalSecondDigits: 8, roundingMode: "halfExpand" }); - >d.toString({ fractionalSecondDigits: 8, roundingMode: "halfExpand" }) : string -->d.toString : (options?: Temporal.DurationToStringOptions) => string -+>d.toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >d : Temporal.Duration -->toString : (options?: Temporal.DurationToStringOptions) => string -+>toString : (options?: Temporal.DurationToStringOptions | undefined) => string - >{ fractionalSecondDigits: 8, roundingMode: "halfExpand" } : { fractionalSecondDigits: 8; roundingMode: "halfExpand"; } - >fractionalSecondDigits : 8 - >8 : 8 -@@= skipped -52, +52 lines =@@ - - d.toLocaleString(); // example output: '1 day 6 hours 30 minutes' - >d.toLocaleString() : string -->d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - >d : Temporal.Duration -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - - d.toLocaleString("de-DE"); // example output: '1 Tag 6 Stunden 30 Minuten' - >d.toLocaleString("de-DE") : string -->d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - >d : Temporal.Duration -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - >"de-DE" : "de-DE" - - d.toLocaleString("en-US", { days: "short", hours: "numeric" }); // example output: '1 day 6 hours' - >d.toLocaleString("en-US", { days: "short", hours: "numeric" }) : string -->d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>d.toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - >d : Temporal.Duration -->toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined) => string - >"en-US" : "en-US" - >{ days: "short", hours: "numeric" } : { days: "short"; hours: "numeric"; } - >days : "short" -@@= skipped -43, +43 lines =@@ - - Temporal.Now.zonedDateTimeISO(); // get the current date and wall-clock time in the system time zone and ISO-8601 calendar - >Temporal.Now.zonedDateTimeISO() : Temporal.ZonedDateTime -->Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -+>Temporal.Now.zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.ZonedDateTime -+>zonedDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.ZonedDateTime - - Temporal.Now.plainDateISO(); // get the current date in the system time zone and ISO-8601 calendar - >Temporal.Now.plainDateISO() : Temporal.PlainDate -->Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -+>Temporal.Now.plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainDateISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDate -+>plainDateISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDate - - Temporal.Now.plainTimeISO(); // get the current wall-clock time in the system time zone and ISO-8601 calendar - >Temporal.Now.plainTimeISO() : Temporal.PlainTime -->Temporal.Now.plainTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainTime -+>Temporal.Now.plainTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainTime -+>plainTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainTime - - Temporal.Now.plainDateTimeISO(); // same as above, but return the DateTime in the ISO-8601 calendar - >Temporal.Now.plainDateTimeISO() : Temporal.PlainDateTime -->Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime -+>Temporal.Now.plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime - >Temporal.Now : typeof Temporal.Now - >Temporal : typeof Temporal - >Now : typeof Temporal.Now -->plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike) => Temporal.PlainDateTime -+>plainDateTimeISO : (timeZone?: Temporal.TimeZoneLike | undefined) => Temporal.PlainDateTime - } diff --git a/testdata/baselines/reference/submodule/compiler/thisBinding2.types b/testdata/baselines/reference/submodule/compiler/thisBinding2.types index a9487e84fc3..e1124c94f94 100644 --- a/testdata/baselines/reference/submodule/compiler/thisBinding2.types +++ b/testdata/baselines/reference/submodule/compiler/thisBinding2.types @@ -48,7 +48,7 @@ class C { } } declare function setTimeout(expression: any, msec?: number, language?: any): number; ->setTimeout : { (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]): number; (expression: any, msec?: number | undefined, language?: any): number; } +>setTimeout : { (handler: TimerHandler, timeout?: number, ...arguments: any[]): number; (expression: any, msec?: number, language?: any): number; } >expression : any >msec : number | undefined >language : any @@ -67,7 +67,7 @@ var messenger = { return setTimeout(() => { var x = this.message; }, 3000); >setTimeout(() => { var x = this.message; }, 3000) : number ->setTimeout : { (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]): number; (expression: any, msec?: number | undefined, language?: any): number; } +>setTimeout : { (handler: TimerHandler, timeout?: number, ...arguments: any[]): number; (expression: any, msec?: number, language?: any): number; } >() => { var x = this.message; } : () => void >x : string >this.message : string diff --git a/testdata/baselines/reference/submodule/compiler/thisBinding2.types.diff b/testdata/baselines/reference/submodule/compiler/thisBinding2.types.diff deleted file mode 100644 index d540254b2b1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/thisBinding2.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.thisBinding2.types -+++ new.thisBinding2.types -@@= skipped -47, +47 lines =@@ - } - } - declare function setTimeout(expression: any, msec?: number, language?: any): number; -->setTimeout : { (handler: TimerHandler, timeout?: number, ...arguments: any[]): number; (expression: any, msec?: number, language?: any): number; } -+>setTimeout : { (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]): number; (expression: any, msec?: number | undefined, language?: any): number; } - >expression : any - >msec : number | undefined - >language : any -@@= skipped -19, +19 lines =@@ - - return setTimeout(() => { var x = this.message; }, 3000); - >setTimeout(() => { var x = this.message; }, 3000) : number -->setTimeout : { (handler: TimerHandler, timeout?: number, ...arguments: any[]): number; (expression: any, msec?: number, language?: any): number; } -+>setTimeout : { (handler: TimerHandler, timeout?: number | undefined, ...arguments: any[]): number; (expression: any, msec?: number | undefined, language?: any): number; } - >() => { var x = this.message; } : () => void - >x : string - >this.message : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/thisConditionalOnMethodReturnOfGenericInstance.types b/testdata/baselines/reference/submodule/compiler/thisConditionalOnMethodReturnOfGenericInstance.types index 9464c0028e2..cad4adc4b40 100644 --- a/testdata/baselines/reference/submodule/compiler/thisConditionalOnMethodReturnOfGenericInstance.types +++ b/testdata/baselines/reference/submodule/compiler/thisConditionalOnMethodReturnOfGenericInstance.types @@ -13,7 +13,7 @@ class B extends A { >A : A method(): string | (this extends C ? undefined : null) { ->method : () => string | (this extends C ? undefined : null) +>method : () => string | (this extends C ? undefined : null) return ""; >"" : "" diff --git a/testdata/baselines/reference/submodule/compiler/thisConditionalOnMethodReturnOfGenericInstance.types.diff b/testdata/baselines/reference/submodule/compiler/thisConditionalOnMethodReturnOfGenericInstance.types.diff deleted file mode 100644 index c1f82ab2a5e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/thisConditionalOnMethodReturnOfGenericInstance.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.thisConditionalOnMethodReturnOfGenericInstance.types -+++ new.thisConditionalOnMethodReturnOfGenericInstance.types -@@= skipped -12, +12 lines =@@ - >A : A - - method(): string | (this extends C ? undefined : null) { -->method : () => string | (this extends C ? undefined : null) -+>method : () => string | (this extends C ? undefined : null) - - return ""; - >"" : "" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/thisInPropertyBoundDeclarations.types b/testdata/baselines/reference/submodule/compiler/thisInPropertyBoundDeclarations.types index cfb60a17647..2c6de8bb657 100644 --- a/testdata/baselines/reference/submodule/compiler/thisInPropertyBoundDeclarations.types +++ b/testdata/baselines/reference/submodule/compiler/thisInPropertyBoundDeclarations.types @@ -81,25 +81,25 @@ class A { prop4 = { >prop4 : { a: () => any; } ->{ a: function() { return this; }, } : { a: () => { a: any; }; } +>{ a: function() { return this; }, } : { a: () => { a: () => any; }; } a: function() { return this; }, ->a : () => { a: any; } ->function() { return this; } : () => { a: any; } +>a : () => { a: () => any; } +>function() { return this; } : () => { a: () => any; } >this : { a: () => any; } }; prop5 = () => { ->prop5 : () => { a: () => any; } ->() => { return { a: function() { return this; }, }; } : () => { a: () => any; } +>prop5 : () => { a: () => { a: () => any; }; } +>() => { return { a: function() { return this; }, }; } : () => { a: () => { a: () => any; }; } return { ->{ a: function() { return this; }, } : { a: () => { a: any; }; } +>{ a: function() { return this; }, } : { a: () => { a: () => any; }; } a: function() { return this; }, ->a : () => { a: any; } ->function() { return this; } : () => { a: any; } +>a : () => { a: () => any; } +>function() { return this; } : () => { a: () => any; } >this : { a: () => any; } }; diff --git a/testdata/baselines/reference/submodule/compiler/thisInPropertyBoundDeclarations.types.diff b/testdata/baselines/reference/submodule/compiler/thisInPropertyBoundDeclarations.types.diff index 1908eff8fdf..87e76c81f0f 100644 --- a/testdata/baselines/reference/submodule/compiler/thisInPropertyBoundDeclarations.types.diff +++ b/testdata/baselines/reference/submodule/compiler/thisInPropertyBoundDeclarations.types.diff @@ -5,7 +5,32 @@ prop4 = { >prop4 : { a: () => any; } ->{ a: function() { return this; }, } : { a: () => any; } -+>{ a: function() { return this; }, } : { a: () => { a: any; }; } ++>{ a: function() { return this; }, } : { a: () => { a: () => any; }; } a: function() { return this; }, - >a : () => { a: any; } \ No newline at end of file +->a : () => { a: any; } +->function() { return this; } : () => { a: any; } ++>a : () => { a: () => any; } ++>function() { return this; } : () => { a: () => any; } + >this : { a: () => any; } + + }; + + prop5 = () => { +->prop5 : () => { a: () => any; } +->() => { return { a: function() { return this; }, }; } : () => { a: () => any; } ++>prop5 : () => { a: () => { a: () => any; }; } ++>() => { return { a: function() { return this; }, }; } : () => { a: () => { a: () => any; }; } + + return { +->{ a: function() { return this; }, } : { a: () => { a: any; }; } ++>{ a: function() { return this; }, } : { a: () => { a: () => any; }; } + + a: function() { return this; }, +->a : () => { a: any; } +->function() { return this; } : () => { a: any; } ++>a : () => { a: () => any; } ++>function() { return this; } : () => { a: () => any; } + >this : { a: () => any; } + + }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive1.types b/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive1.types index d2eb243769f..31041559bda 100644 --- a/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive1.types +++ b/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive1.types @@ -4,7 +4,7 @@ // https://github.com/microsoft/TypeScript/issues/62204 declare function TestConfig( ->TestConfig : (config: TConfig, test: Exclude extends never ? true : false) => void +>TestConfig : (config: TConfig, test: keyof Omit extends never ? true : false) => void >a : any >b : any >c : any @@ -21,7 +21,7 @@ declare function TestConfig TestConfig( >TestConfig( { a: "hello", b: function () { return 123; }, }, true,) : void ->TestConfig : (config: TConfig, test: Exclude extends never ? true : false) => void +>TestConfig : (config: TConfig, test: keyof Omit extends never ? true : false) => void { >{ a: "hello", b: function () { return 123; }, } : { a: "hello"; b: () => 123; } @@ -45,7 +45,7 @@ TestConfig( TestConfig( >TestConfig( { a: "hello", b: function () { return 123; }, }, false, // error) : void ->TestConfig : (config: TConfig, test: Exclude extends never ? true : false) => void +>TestConfig : (config: TConfig, test: keyof Omit extends never ? true : false) => void { >{ a: "hello", b: function () { return 123; }, } : { a: "hello"; b: () => 123; } diff --git a/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive1.types.diff b/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive1.types.diff deleted file mode 100644 index 84aa2bf485e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive1.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.thislessFunctionsNotContextSensitive1.types -+++ new.thislessFunctionsNotContextSensitive1.types -@@= skipped -3, +3 lines =@@ - // https://github.com/microsoft/TypeScript/issues/62204 - - declare function TestConfig( -->TestConfig : (config: TConfig, test: keyof Omit extends never ? true : false) => void -+>TestConfig : (config: TConfig, test: Exclude extends never ? true : false) => void - >a : any - >b : any - >c : any -@@= skipped -17, +17 lines =@@ - - TestConfig( - >TestConfig( { a: "hello", b: function () { return 123; }, }, true,) : void -->TestConfig : (config: TConfig, test: keyof Omit extends never ? true : false) => void -+>TestConfig : (config: TConfig, test: Exclude extends never ? true : false) => void - { - >{ a: "hello", b: function () { return 123; }, } : { a: "hello"; b: () => 123; } - -@@= skipped -24, +24 lines =@@ - - TestConfig( - >TestConfig( { a: "hello", b: function () { return 123; }, }, false, // error) : void -->TestConfig : (config: TConfig, test: keyof Omit extends never ? true : false) => void -+>TestConfig : (config: TConfig, test: Exclude extends never ? true : false) => void - { - >{ a: "hello", b: function () { return 123; }, } : { a: "hello"; b: () => 123; } diff --git a/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive3.types b/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive3.types index 0dd032d4df9..d9701ab0b50 100644 --- a/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive3.types +++ b/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive3.types @@ -37,8 +37,8 @@ interface ExtendableConfig< >name : string addOptions?: (this: { ->addOptions : ((this: { name: string; parent: Partial<{ [P in keyof Config]: Required[P] extends (...args: any) => any ? (...args: Parameters[P]>) => ReturnType[P]> : Config[P]; }>["addOptions"]; }) => Options) | undefined ->this : { name: string; parent: Partial<{ [P in keyof Config]: Required[P] extends (...args: any) => any ? (...args: Parameters[P]>) => ReturnType[P]> : Config[P]; }>["addOptions"]; } +>addOptions : ((this: { name: string; parent: ParentConfig["addOptions"]; }) => Options) | undefined +>this : { name: string; parent: ParentConfig["addOptions"]; } name: string; >name : string @@ -74,7 +74,7 @@ declare class Extension { >config : Partial> configure(options?: Partial): Extension; ->configure : (options?: Partial | undefined) => Extension +>configure : (options?: Partial) => Extension >options : Partial | undefined } @@ -128,7 +128,7 @@ Extension.create({ Suggestion({ >Suggestion({ editor: this.editor, // error ...this.options.suggestion, }) : Plugin >Suggestion : (options: SuggestionOptions) => Plugin ->{ editor: this.editor, // error ...this.options.suggestion, } : { editor: Editor; char?: string | undefined; } +>{ editor: this.editor, // error ...this.options.suggestion, } : { editor: Editor; char?: string; } editor: this.editor, // error >editor : Editor @@ -187,7 +187,7 @@ Extension.create({ Suggestion({ >Suggestion({ editor: this.editor, // error ...this.options.suggestion, }) : Plugin >Suggestion : (options: SuggestionOptions) => Plugin ->{ editor: this.editor, // error ...this.options.suggestion, } : { editor: Editor; char?: string | undefined; } +>{ editor: this.editor, // error ...this.options.suggestion, } : { editor: Editor; char?: string; } editor: this.editor, // error >editor : Editor diff --git a/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive3.types.diff b/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive3.types.diff deleted file mode 100644 index 0833066c99a..00000000000 --- a/testdata/baselines/reference/submodule/compiler/thislessFunctionsNotContextSensitive3.types.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.thislessFunctionsNotContextSensitive3.types -+++ new.thislessFunctionsNotContextSensitive3.types -@@= skipped -36, +36 lines =@@ - >name : string - - addOptions?: (this: { -->addOptions : ((this: { name: string; parent: ParentConfig["addOptions"]; }) => Options) | undefined -->this : { name: string; parent: ParentConfig["addOptions"]; } -+>addOptions : ((this: { name: string; parent: Partial<{ [P in keyof Config]: Required[P] extends (...args: any) => any ? (...args: Parameters[P]>) => ReturnType[P]> : Config[P]; }>["addOptions"]; }) => Options) | undefined -+>this : { name: string; parent: Partial<{ [P in keyof Config]: Required[P] extends (...args: any) => any ? (...args: Parameters[P]>) => ReturnType[P]> : Config[P]; }>["addOptions"]; } - - name: string; - >name : string -@@= skipped -37, +37 lines =@@ - >config : Partial> - - configure(options?: Partial): Extension; -->configure : (options?: Partial) => Extension -+>configure : (options?: Partial | undefined) => Extension - >options : Partial | undefined - } - -@@= skipped -54, +54 lines =@@ - Suggestion({ - >Suggestion({ editor: this.editor, // error ...this.options.suggestion, }) : Plugin - >Suggestion : (options: SuggestionOptions) => Plugin -->{ editor: this.editor, // error ...this.options.suggestion, } : { editor: Editor; char?: string; } -+>{ editor: this.editor, // error ...this.options.suggestion, } : { editor: Editor; char?: string | undefined; } - - editor: this.editor, // error - >editor : Editor -@@= skipped -59, +59 lines =@@ - Suggestion({ - >Suggestion({ editor: this.editor, // error ...this.options.suggestion, }) : Plugin - >Suggestion : (options: SuggestionOptions) => Plugin -->{ editor: this.editor, // error ...this.options.suggestion, } : { editor: Editor; char?: string; } -+>{ editor: this.editor, // error ...this.options.suggestion, } : { editor: Editor; char?: string | undefined; } - - editor: this.editor, // error - >editor : Editor \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/toStringOnPrimitives.types b/testdata/baselines/reference/submodule/compiler/toStringOnPrimitives.types index fa94ae6aa82..6631cc2be8f 100644 --- a/testdata/baselines/reference/submodule/compiler/toStringOnPrimitives.types +++ b/testdata/baselines/reference/submodule/compiler/toStringOnPrimitives.types @@ -19,7 +19,7 @@ aBool.toString(); 1..toString(); >1..toString() : string ->1..toString : (radix?: number | undefined) => string +>1..toString : (radix?: number) => string >1. : 1 ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/toStringOnPrimitives.types.diff b/testdata/baselines/reference/submodule/compiler/toStringOnPrimitives.types.diff deleted file mode 100644 index d16b8456246..00000000000 --- a/testdata/baselines/reference/submodule/compiler/toStringOnPrimitives.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.toStringOnPrimitives.types -+++ new.toStringOnPrimitives.types -@@= skipped -18, +18 lines =@@ - - 1..toString(); - >1..toString() : string -->1..toString : (radix?: number) => string -+>1..toString : (radix?: number | undefined) => string - >1. : 1 -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/tooFewArgumentsInGenericFunctionTypedArgument.types b/testdata/baselines/reference/submodule/compiler/tooFewArgumentsInGenericFunctionTypedArgument.types index 29767fa6062..3ff75d9d1cf 100644 --- a/testdata/baselines/reference/submodule/compiler/tooFewArgumentsInGenericFunctionTypedArgument.types +++ b/testdata/baselines/reference/submodule/compiler/tooFewArgumentsInGenericFunctionTypedArgument.types @@ -46,18 +46,18 @@ var r1a = _.map(c2, (x) => { return x.toFixed() }); >(x) => { return x.toFixed() } : (x: number) => string >x : number >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string var rf1 = (x: number) => { return x.toFixed() }; >rf1 : (x: number) => string >(x: number) => { return x.toFixed() } : (x: number) => string >x : number >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string var r1b = _.map(c2, rf1); >r1b : Collection diff --git a/testdata/baselines/reference/submodule/compiler/tooFewArgumentsInGenericFunctionTypedArgument.types.diff b/testdata/baselines/reference/submodule/compiler/tooFewArgumentsInGenericFunctionTypedArgument.types.diff index d94b4176620..eeeb331169e 100644 --- a/testdata/baselines/reference/submodule/compiler/tooFewArgumentsInGenericFunctionTypedArgument.types.diff +++ b/testdata/baselines/reference/submodule/compiler/tooFewArgumentsInGenericFunctionTypedArgument.types.diff @@ -16,27 +16,4 @@ +>map : { (c: Collection, f: (x: T, y: U) => V): Collection; (c: Collection, f: (x: T, y: U) => any): Collection; } >c : Collection >f : (x: T, y: U) => any - >x : T -@@= skipped -29, +29 lines =@@ - >(x) => { return x.toFixed() } : (x: number) => string - >x : number - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - var rf1 = (x: number) => { return x.toFixed() }; - >rf1 : (x: number) => string - >(x: number) => { return x.toFixed() } : (x: number) => string - >x : number - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - var r1b = _.map(c2, rf1); - >r1b : Collection \ No newline at end of file + >x : T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.js b/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.js index 032f0bafdc9..60c1fb0e559 100644 --- a/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.js +++ b/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.js @@ -732,204 +732,6 @@ export interface Node99 { export type Node = Node0 | Node1 | Node2 | Node3 | Node4 | Node5 | Node6 | Node7 | Node8 | Node9 | Node10 | Node11 | Node12 | Node13 | Node14 | Node15 | Node16 | Node17 | Node18 | Node19 | Node20 | Node21 | Node22 | Node23 | Node24 | Node25 | Node26 | Node27 | Node28 | Node29 | Node30 | Node31 | Node32 | Node33 | Node34 | Node35 | Node36 | Node37 | Node38 | Node39 | Node40 | Node41 | Node42 | Node43 | Node44 | Node45 | Node46 | Node47 | Node48 | Node49 | Node50 | Node51 | Node52 | Node53 | Node54 | Node55 | Node56 | Node57 | Node58 | Node59 | Node60 | Node61 | Node62 | Node63 | Node64 | Node65 | Node66 | Node67 | Node68 | Node69 | Node70 | Node71 | Node72 | Node73 | Node74 | Node75 | Node76 | Node77 | Node78 | Node79 | Node80 | Node81 | Node82 | Node83 | Node84 | Node85 | Node86 | Node87 | Node88 | Node89 | Node90 | Node91 | Node92 | Node93 | Node94 | Node95 | Node96 | Node97 | Node98 | Node99; //// [index.d.ts] import * as ast from "./ast"; -export declare const isNodeOfType: (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract(nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract; diff --git a/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.js.diff b/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.js.diff deleted file mode 100644 index 04226ffec30..00000000000 --- a/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.js.diff +++ /dev/null @@ -1,208 +0,0 @@ ---- old.trackedSymbolsNoCrash.js -+++ new.trackedSymbolsNoCrash.js -@@= skipped -731, +731 lines =@@ - export type Node = Node0 | Node1 | Node2 | Node3 | Node4 | Node5 | Node6 | Node7 | Node8 | Node9 | Node10 | Node11 | Node12 | Node13 | Node14 | Node15 | Node16 | Node17 | Node18 | Node19 | Node20 | Node21 | Node22 | Node23 | Node24 | Node25 | Node26 | Node27 | Node28 | Node29 | Node30 | Node31 | Node32 | Node33 | Node34 | Node35 | Node36 | Node37 | Node38 | Node39 | Node40 | Node41 | Node42 | Node43 | Node44 | Node45 | Node46 | Node47 | Node48 | Node49 | Node50 | Node51 | Node52 | Node53 | Node54 | Node55 | Node56 | Node57 | Node58 | Node59 | Node60 | Node61 | Node62 | Node63 | Node64 | Node65 | Node66 | Node67 | Node68 | Node69 | Node70 | Node71 | Node72 | Node73 | Node74 | Node75 | Node76 | Node77 | Node78 | Node79 | Node80 | Node81 | Node82 | Node83 | Node84 | Node85 | Node86 | Node87 | Node88 | Node89 | Node90 | Node91 | Node92 | Node93 | Node94 | Node95 | Node96 | Node97 | Node98 | Node99; - //// [index.d.ts] - import * as ast from "./ast"; --export declare const isNodeOfType: (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract(nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.types b/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.types index 25458151848..61cfe1940ba 100644 --- a/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.types +++ b/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.types @@ -612,10 +612,10 @@ import * as ast from "./ast"; >ast : typeof ast export const isNodeOfType = ->isNodeOfType : (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract +>isNodeOfType : (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract (nodeType: NodeType) => ->(nodeType: NodeType) => ( node: ast.Node | null | undefined, ): node is Extract => node?.kind === nodeType : (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract +>(nodeType: NodeType) => ( node: ast.Node | null | undefined, ): node is Extract => node?.kind === nodeType : (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract >ast : any >nodeType : NodeType diff --git a/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.types.diff b/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.types.diff index 281d539dfef..bcf26d034a5 100644 --- a/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.types.diff +++ b/testdata/baselines/reference/submodule/compiler/trackedSymbolsNoCrash.types.diff @@ -1,16 +1,6 @@ --- old.trackedSymbolsNoCrash.types +++ new.trackedSymbolsNoCrash.types -@@= skipped -611, +611 lines =@@ - >ast : typeof ast - - export const isNodeOfType = -->isNodeOfType : (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract -+>isNodeOfType : (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract - - (nodeType: NodeType) => -->(nodeType: NodeType) => ( node: ast.Node | null | undefined, ): node is Extract => node?.kind === nodeType : (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract -+>(nodeType: NodeType) => ( node: ast.Node | null | undefined, ): node is Extract => node?.kind === nodeType : (nodeType: NodeType) => (node: ast.Node | null | undefined) => node is Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract | Extract - >ast : any +@@= skipped -619, +619 lines =@@ >nodeType : NodeType ( diff --git a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion.types b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion.types index 12502754512..3dbf9f8d816 100644 --- a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion.types +++ b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion.types @@ -2,7 +2,7 @@ === truthinessCallExpressionCoercion.ts === function onlyErrorsWhenTestingNonNullableFunctionType(required: () => boolean, optional?: () => boolean) { ->onlyErrorsWhenTestingNonNullableFunctionType : (required: () => boolean, optional?: (() => boolean) | undefined) => void +>onlyErrorsWhenTestingNonNullableFunctionType : (required: () => boolean, optional?: () => boolean) => void >required : () => boolean >optional : (() => boolean) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion.types.diff b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion.types.diff deleted file mode 100644 index c7bc881e175..00000000000 --- a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.truthinessCallExpressionCoercion.types -+++ new.truthinessCallExpressionCoercion.types -@@= skipped -1, +1 lines =@@ - - === truthinessCallExpressionCoercion.ts === - function onlyErrorsWhenTestingNonNullableFunctionType(required: () => boolean, optional?: () => boolean) { -->onlyErrorsWhenTestingNonNullableFunctionType : (required: () => boolean, optional?: () => boolean) => void -+>onlyErrorsWhenTestingNonNullableFunctionType : (required: () => boolean, optional?: (() => boolean) | undefined) => void - >required : () => boolean - >optional : (() => boolean) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion1.types b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion1.types index d4ddd6517fb..bc496834fc4 100644 --- a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion1.types +++ b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion1.types @@ -2,7 +2,7 @@ === truthinessCallExpressionCoercion1.ts === function onlyErrorsWhenTestingNonNullableFunctionType(required: () => boolean, optional?: () => boolean) { ->onlyErrorsWhenTestingNonNullableFunctionType : (required: () => boolean, optional?: (() => boolean) | undefined) => void +>onlyErrorsWhenTestingNonNullableFunctionType : (required: () => boolean, optional?: () => boolean) => void >required : () => boolean >optional : (() => boolean) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion1.types.diff b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion1.types.diff deleted file mode 100644 index 6d03760242e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion1.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.truthinessCallExpressionCoercion1.types -+++ new.truthinessCallExpressionCoercion1.types -@@= skipped -1, +1 lines =@@ - - === truthinessCallExpressionCoercion1.ts === - function onlyErrorsWhenTestingNonNullableFunctionType(required: () => boolean, optional?: () => boolean) { -->onlyErrorsWhenTestingNonNullableFunctionType : (required: () => boolean, optional?: () => boolean) => void -+>onlyErrorsWhenTestingNonNullableFunctionType : (required: () => boolean, optional?: (() => boolean) | undefined) => void - >required : () => boolean - >optional : (() => boolean) | undefined diff --git a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion2.types b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion2.types index 7bbdcc16a1e..fffde50040a 100644 --- a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion2.types +++ b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion2.types @@ -16,7 +16,7 @@ declare class B { } function test(required1: () => boolean, required2: () => boolean, b: boolean, optional?: () => boolean) { ->test : (required1: () => boolean, required2: () => boolean, b: boolean, optional?: (() => boolean) | undefined) => void +>test : (required1: () => boolean, required2: () => boolean, b: boolean, optional?: () => boolean) => void >required1 : () => boolean >required2 : () => boolean >b : boolean @@ -322,18 +322,18 @@ function checksConsole() { >window : Window & typeof globalThis >console : Console >firebug : any ->(window.console.error && window.console.table) : (tabularData?: any, properties?: string[] | undefined) => void ->window.console.error && window.console.table : (tabularData?: any, properties?: string[] | undefined) => void +>(window.console.error && window.console.table) : (tabularData?: any, properties?: string[]) => void +>window.console.error && window.console.table : (tabularData?: any, properties?: string[]) => void >window.console.error : (...data: any[]) => void >window.console : Console >window : Window & typeof globalThis >console : Console >error : (...data: any[]) => void ->window.console.table : (tabularData?: any, properties?: string[] | undefined) => void +>window.console.table : (tabularData?: any, properties?: string[]) => void >window.console : Console >window : Window & typeof globalThis >console : Console ->table : (tabularData?: any, properties?: string[] | undefined) => void +>table : (tabularData?: any, properties?: string[]) => void } function checksPropertyAccess() { diff --git a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion2.types.diff b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion2.types.diff deleted file mode 100644 index e355848c627..00000000000 --- a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion2.types.diff +++ /dev/null @@ -1,34 +0,0 @@ ---- old.truthinessCallExpressionCoercion2.types -+++ new.truthinessCallExpressionCoercion2.types -@@= skipped -15, +15 lines =@@ - } - - function test(required1: () => boolean, required2: () => boolean, b: boolean, optional?: () => boolean) { -->test : (required1: () => boolean, required2: () => boolean, b: boolean, optional?: () => boolean) => void -+>test : (required1: () => boolean, required2: () => boolean, b: boolean, optional?: (() => boolean) | undefined) => void - >required1 : () => boolean - >required2 : () => boolean - >b : boolean -@@= skipped -306, +306 lines =@@ - >window : Window & typeof globalThis - >console : Console - >firebug : any -->(window.console.error && window.console.table) : (tabularData?: any, properties?: string[]) => void -->window.console.error && window.console.table : (tabularData?: any, properties?: string[]) => void -+>(window.console.error && window.console.table) : (tabularData?: any, properties?: string[] | undefined) => void -+>window.console.error && window.console.table : (tabularData?: any, properties?: string[] | undefined) => void - >window.console.error : (...data: any[]) => void - >window.console : Console - >window : Window & typeof globalThis - >console : Console - >error : (...data: any[]) => void -->window.console.table : (tabularData?: any, properties?: string[]) => void -+>window.console.table : (tabularData?: any, properties?: string[] | undefined) => void - >window.console : Console - >window : Window & typeof globalThis - >console : Console -->table : (tabularData?: any, properties?: string[]) => void -+>table : (tabularData?: any, properties?: string[] | undefined) => void - } - - function checksPropertyAccess() { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/tryCatchFinallyControlFlow.types b/testdata/baselines/reference/submodule/compiler/tryCatchFinallyControlFlow.types index 7d789737688..e5d02fd1ebe 100644 --- a/testdata/baselines/reference/submodule/compiler/tryCatchFinallyControlFlow.types +++ b/testdata/baselines/reference/submodule/compiler/tryCatchFinallyControlFlow.types @@ -31,9 +31,9 @@ function f1() { >a : number | null >a.toFixed(0) == "123" : boolean >a.toFixed(0) : string ->a.toFixed : (fractionDigits?: number | undefined) => string +>a.toFixed : (fractionDigits?: number) => string >a : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string >0 : 0 >"123" : "123" } diff --git a/testdata/baselines/reference/submodule/compiler/tryCatchFinallyControlFlow.types.diff b/testdata/baselines/reference/submodule/compiler/tryCatchFinallyControlFlow.types.diff deleted file mode 100644 index be405e7f21d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/tryCatchFinallyControlFlow.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.tryCatchFinallyControlFlow.types -+++ new.tryCatchFinallyControlFlow.types -@@= skipped -30, +30 lines =@@ - >a : number | null - >a.toFixed(0) == "123" : boolean - >a.toFixed(0) : string -->a.toFixed : (fractionDigits?: number) => string -+>a.toFixed : (fractionDigits?: number | undefined) => string - >a : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - >0 : 0 - >"123" : "123" - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/tslibReExportHelpers2.types b/testdata/baselines/reference/submodule/compiler/tslibReExportHelpers2.types index f8445563af5..40b310af3a1 100644 --- a/testdata/baselines/reference/submodule/compiler/tslibReExportHelpers2.types +++ b/testdata/baselines/reference/submodule/compiler/tslibReExportHelpers2.types @@ -2,7 +2,7 @@ === /node_modules/tslib/index.d.ts === export declare function __classPrivateFieldGet( ->__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f" | undefined): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } +>__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f"): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } receiver: T, >receiver : T @@ -19,7 +19,7 @@ export declare function __classPrivateFieldGet( ): V; export declare function __classPrivateFieldGet unknown, V>( ->__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f" | undefined): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } +>__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f"): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } >args : any[] receiver: T, @@ -39,7 +39,7 @@ export declare function __classPrivateFieldGet === /node_modules/tslib/index.d.mts === export { __classPrivateFieldGet } from "./index.js"; ->__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f" | undefined): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } +>__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f"): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } === /index.mts === export class Foo { diff --git a/testdata/baselines/reference/submodule/compiler/tslibReExportHelpers2.types.diff b/testdata/baselines/reference/submodule/compiler/tslibReExportHelpers2.types.diff index 23b0024eae3..5490d0efa57 100644 --- a/testdata/baselines/reference/submodule/compiler/tslibReExportHelpers2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/tslibReExportHelpers2.types.diff @@ -5,7 +5,7 @@ === /node_modules/tslib/index.d.ts === export declare function __classPrivateFieldGet( ->__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f"): V; unknown, V_1>(receiver: T_1, state: T_1, kind: "f", f: { value: V_1; }): V_1; } -+>__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f" | undefined): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } ++>__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f"): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } receiver: T, >receiver : T @@ -14,16 +14,7 @@ ): V; export declare function __classPrivateFieldGet unknown, V>( ->__classPrivateFieldGet : { (receiver: T_1, state: { has(o: T_1): boolean; get(o: T_1): V_1 | undefined; }, kind?: "f"): V_1; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } -+>__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f" | undefined): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } ++>__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f"): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } >args : any[] - receiver: T, -@@= skipped -20, +20 lines =@@ - - === /node_modules/tslib/index.d.mts === - export { __classPrivateFieldGet } from "./index.js"; -->__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f"): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } -+>__classPrivateFieldGet : { (receiver: T, state: { has(o: T): boolean; get(o: T): V | undefined; }, kind?: "f" | undefined): V; unknown, V>(receiver: T, state: T, kind: "f", f: { value: V; }): V; } - - === /index.mts === - export class Foo { \ No newline at end of file + receiver: T, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/tsxDiscriminantPropertyInference.types b/testdata/baselines/reference/submodule/compiler/tsxDiscriminantPropertyInference.types index 64ca1fe72ac..5db56e44ef3 100644 --- a/testdata/baselines/reference/submodule/compiler/tsxDiscriminantPropertyInference.types +++ b/testdata/baselines/reference/submodule/compiler/tsxDiscriminantPropertyInference.types @@ -34,7 +34,7 @@ type Props = DiscriminatorTrue | DiscriminatorFalse; >Props : Props declare function Comp(props: DiscriminatorTrue | DiscriminatorFalse): JSX.Element; ->Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element +>Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element >props : DiscriminatorFalse | DiscriminatorTrue >JSX : any @@ -43,13 +43,13 @@ void ( parseInt(s)} />); >void ( parseInt(s)} />) : undefined >( parseInt(s)} />) : JSX.Element > parseInt(s)} /> : JSX.Element ->Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element +>Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element >disc : true >cb : (s: string) => number >s => parseInt(s) : (s: string) => number >s : string >parseInt(s) : number ->parseInt : (string: string, radix?: number | undefined) => number +>parseInt : (string: string, radix?: number) => number >s : string // simple inference @@ -57,44 +57,44 @@ void ( n.toFixed()} />); >void ( n.toFixed()} />) : undefined >( n.toFixed()} />) : JSX.Element > n.toFixed()} /> : JSX.Element ->Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element +>Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element >disc : false >false : false >cb : (n: number) => string >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string // simple inference when strict-null-checks are enabled void ( n.toFixed()} />); >void ( n.toFixed()} />) : undefined >( n.toFixed()} />) : JSX.Element > n.toFixed()} /> : JSX.Element ->Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element +>Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element >disc : undefined >undefined : undefined >cb : (n: number) => string >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string // requires checking type information since discriminator is missing from object void ( n.toFixed()} />); >void ( n.toFixed()} />) : undefined >( n.toFixed()} />) : JSX.Element > n.toFixed()} /> : JSX.Element ->Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element +>Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element >cb : (n: number) => string >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/tsxDiscriminantPropertyInference.types.diff b/testdata/baselines/reference/submodule/compiler/tsxDiscriminantPropertyInference.types.diff deleted file mode 100644 index a3a5adcc1ca..00000000000 --- a/testdata/baselines/reference/submodule/compiler/tsxDiscriminantPropertyInference.types.diff +++ /dev/null @@ -1,80 +0,0 @@ ---- old.tsxDiscriminantPropertyInference.types -+++ new.tsxDiscriminantPropertyInference.types -@@= skipped -33, +33 lines =@@ - >Props : Props - - declare function Comp(props: DiscriminatorTrue | DiscriminatorFalse): JSX.Element; -->Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element -+>Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element - >props : DiscriminatorFalse | DiscriminatorTrue - >JSX : any - -@@= skipped -9, +9 lines =@@ - >void ( parseInt(s)} />) : undefined - >( parseInt(s)} />) : JSX.Element - > parseInt(s)} /> : JSX.Element -->Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element -+>Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element - >disc : true - >cb : (s: string) => number - >s => parseInt(s) : (s: string) => number - >s : string - >parseInt(s) : number -->parseInt : (string: string, radix?: number) => number -+>parseInt : (string: string, radix?: number | undefined) => number - >s : string - - // simple inference -@@= skipped -14, +14 lines =@@ - >void ( n.toFixed()} />) : undefined - >( n.toFixed()} />) : JSX.Element - > n.toFixed()} /> : JSX.Element -->Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element -+>Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element - >disc : false - >false : false - >cb : (n: number) => string - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - // simple inference when strict-null-checks are enabled - void ( n.toFixed()} />); - >void ( n.toFixed()} />) : undefined - >( n.toFixed()} />) : JSX.Element - > n.toFixed()} /> : JSX.Element -->Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element -+>Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element - >disc : undefined - >undefined : undefined - >cb : (n: number) => string - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - // requires checking type information since discriminator is missing from object - void ( n.toFixed()} />); - >void ( n.toFixed()} />) : undefined - >( n.toFixed()} />) : JSX.Element - > n.toFixed()} /> : JSX.Element -->Comp : (props: DiscriminatorTrue | DiscriminatorFalse) => JSX.Element -+>Comp : (props: DiscriminatorFalse | DiscriminatorTrue) => JSX.Element - >cb : (n: number) => string - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/compiler/tsxInvokeComponentType.types b/testdata/baselines/reference/submodule/compiler/tsxInvokeComponentType.types index eba9d983d5c..f555f19425f 100644 --- a/testdata/baselines/reference/submodule/compiler/tsxInvokeComponentType.types +++ b/testdata/baselines/reference/submodule/compiler/tsxInvokeComponentType.types @@ -22,12 +22,12 @@ const good = ; >someKey : string declare const Elem2: ComponentType<{ opt?: number }>; ->Elem2 : ComponentType<{ opt?: number | undefined; }> +>Elem2 : ComponentType<{ opt?: number; }> >opt : number | undefined const alsoOk = text; >alsoOk : JSX.Element >text : JSX.Element ->Elem2 : ComponentType<{ opt?: number | undefined; }> ->Elem2 : ComponentType<{ opt?: number | undefined; }> +>Elem2 : ComponentType<{ opt?: number; }> +>Elem2 : ComponentType<{ opt?: number; }> diff --git a/testdata/baselines/reference/submodule/compiler/tsxInvokeComponentType.types.diff b/testdata/baselines/reference/submodule/compiler/tsxInvokeComponentType.types.diff index 02f2c95932b..3af387d7d2f 100644 --- a/testdata/baselines/reference/submodule/compiler/tsxInvokeComponentType.types.diff +++ b/testdata/baselines/reference/submodule/compiler/tsxInvokeComponentType.types.diff @@ -23,7 +23,7 @@ declare const Elem2: ComponentType<{ opt?: number }>; ->Elem2 : React.ComponentType<{ opt?: number; }> -+>Elem2 : ComponentType<{ opt?: number | undefined; }> ++>Elem2 : ComponentType<{ opt?: number; }> >opt : number | undefined const alsoOk = text; @@ -31,5 +31,5 @@ >text : JSX.Element ->Elem2 : React.ComponentType<{ opt?: number; }> ->Elem2 : React.ComponentType<{ opt?: number; }> -+>Elem2 : ComponentType<{ opt?: number | undefined; }> -+>Elem2 : ComponentType<{ opt?: number | undefined; }> ++>Elem2 : ComponentType<{ opt?: number; }> ++>Elem2 : ComponentType<{ opt?: number; }> diff --git a/testdata/baselines/reference/submodule/compiler/tsxTypeArgumentPartialDefinitionStillErrors.types b/testdata/baselines/reference/submodule/compiler/tsxTypeArgumentPartialDefinitionStillErrors.types index 072f7a095a9..c9f2d7923fd 100644 --- a/testdata/baselines/reference/submodule/compiler/tsxTypeArgumentPartialDefinitionStillErrors.types +++ b/testdata/baselines/reference/submodule/compiler/tsxTypeArgumentPartialDefinitionStillErrors.types @@ -4,7 +4,7 @@ declare namespace JSX { interface Element { render(): Element | string | false; ->render : () => string | false | Element +>render : () => Element | string | false >false : false } } diff --git a/testdata/baselines/reference/submodule/compiler/tsxTypeArgumentPartialDefinitionStillErrors.types.diff b/testdata/baselines/reference/submodule/compiler/tsxTypeArgumentPartialDefinitionStillErrors.types.diff deleted file mode 100644 index 1c8b3df28d0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/tsxTypeArgumentPartialDefinitionStillErrors.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxTypeArgumentPartialDefinitionStillErrors.types -+++ new.tsxTypeArgumentPartialDefinitionStillErrors.types -@@= skipped -3, +3 lines =@@ - declare namespace JSX { - interface Element { - render(): Element | string | false; -->render : () => Element | string | false -+>render : () => string | false | Element - >false : false - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/tsxUnionMemberChecksFilterDataProps.types b/testdata/baselines/reference/submodule/compiler/tsxUnionMemberChecksFilterDataProps.types index 39be20191df..1ca181ae656 100644 --- a/testdata/baselines/reference/submodule/compiler/tsxUnionMemberChecksFilterDataProps.types +++ b/testdata/baselines/reference/submodule/compiler/tsxUnionMemberChecksFilterDataProps.types @@ -7,14 +7,14 @@ import React, { ReactElement } from "react"; >ReactElement : any declare function NotHappy(props: ({ fixed?: boolean } | { value?: number })): ReactElement; ->NotHappy : (props: { fixed?: boolean | undefined; } | { value?: number | undefined; }) => ReactElement ->props : { fixed?: boolean | undefined; } | { value?: number | undefined; } +>NotHappy : (props: ({ fixed?: boolean; } | { value?: number; })) => ReactElement +>props : { fixed?: boolean; } | { value?: number; } >fixed : boolean | undefined >value : number | undefined declare function Happy(props: { fixed?: boolean, value?: number }): ReactElement; ->Happy : (props: { fixed?: boolean | undefined; value?: number | undefined; }) => ReactElement ->props : { fixed?: boolean | undefined; value?: number | undefined; } +>Happy : (props: { fixed?: boolean; value?: number; }) => ReactElement +>props : { fixed?: boolean; value?: number; } >fixed : boolean | undefined >value : number | undefined @@ -23,7 +23,7 @@ const RootNotHappy = () => (); >() => () : () => JSX.Element >() : JSX.Element > : JSX.Element ->NotHappy : (props: { fixed?: boolean | undefined; } | { value?: number | undefined; }) => ReactElement +>NotHappy : (props: ({ fixed?: boolean; } | { value?: number; })) => ReactElement >data-testid : string const RootHappy = () => (); @@ -31,6 +31,6 @@ const RootHappy = () => (); >() => () : () => JSX.Element >() : JSX.Element > : JSX.Element ->Happy : (props: { fixed?: boolean | undefined; value?: number | undefined; }) => ReactElement +>Happy : (props: { fixed?: boolean; value?: number; }) => ReactElement >data-testid : string diff --git a/testdata/baselines/reference/submodule/compiler/tsxUnionMemberChecksFilterDataProps.types.diff b/testdata/baselines/reference/submodule/compiler/tsxUnionMemberChecksFilterDataProps.types.diff deleted file mode 100644 index 391570bcdb3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/tsxUnionMemberChecksFilterDataProps.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.tsxUnionMemberChecksFilterDataProps.types -+++ new.tsxUnionMemberChecksFilterDataProps.types -@@= skipped -6, +6 lines =@@ - >ReactElement : any - - declare function NotHappy(props: ({ fixed?: boolean } | { value?: number })): ReactElement; -->NotHappy : (props: ({ fixed?: boolean; } | { value?: number; })) => ReactElement -->props : { fixed?: boolean; } | { value?: number; } -+>NotHappy : (props: { fixed?: boolean | undefined; } | { value?: number | undefined; }) => ReactElement -+>props : { fixed?: boolean | undefined; } | { value?: number | undefined; } - >fixed : boolean | undefined - >value : number | undefined - - declare function Happy(props: { fixed?: boolean, value?: number }): ReactElement; -->Happy : (props: { fixed?: boolean; value?: number; }) => ReactElement -->props : { fixed?: boolean; value?: number; } -+>Happy : (props: { fixed?: boolean | undefined; value?: number | undefined; }) => ReactElement -+>props : { fixed?: boolean | undefined; value?: number | undefined; } - >fixed : boolean | undefined - >value : number | undefined - -@@= skipped -16, +16 lines =@@ - >() => () : () => JSX.Element - >() : JSX.Element - > : JSX.Element -->NotHappy : (props: ({ fixed?: boolean; } | { value?: number; })) => ReactElement -+>NotHappy : (props: { fixed?: boolean | undefined; } | { value?: number | undefined; }) => ReactElement - >data-testid : string - - const RootHappy = () => (); -@@= skipped -8, +8 lines =@@ - >() => () : () => JSX.Element - >() : JSX.Element - > : JSX.Element -->Happy : (props: { fixed?: boolean; value?: number; }) => ReactElement -+>Happy : (props: { fixed?: boolean | undefined; value?: number | undefined; }) => ReactElement - >data-testid : string diff --git a/testdata/baselines/reference/submodule/compiler/tupleTypeInference.types b/testdata/baselines/reference/submodule/compiler/tupleTypeInference.types index bf69d9e43f7..962ed6a059b 100644 --- a/testdata/baselines/reference/submodule/compiler/tupleTypeInference.types +++ b/testdata/baselines/reference/submodule/compiler/tupleTypeInference.types @@ -18,7 +18,7 @@ interface IQService { >x : [IPromise] when(t?: T): IPromise; ->when : (t?: T | undefined) => IPromise +>when : (t?: T) => IPromise >t : T | undefined } @@ -38,13 +38,13 @@ var a = $q.all([$q.when(), $q.when()]); >all : { (x: [IPromise, IPromise, IPromise]): IPromise<[T1, T2, T3]>; (x: [IPromise, IPromise]): IPromise<[T1, T2]>; (x: [IPromise]): IPromise<[T1]>; } >[$q.when(), $q.when()] : [IPromise, IPromise] >$q.when() : IPromise ->$q.when : (t?: T | undefined) => IPromise +>$q.when : (t?: T) => IPromise >$q : IQService ->when : (t?: T | undefined) => IPromise +>when : (t?: T) => IPromise >$q.when() : IPromise ->$q.when : (t?: T | undefined) => IPromise +>$q.when : (t?: T) => IPromise >$q : IQService ->when : (t?: T | undefined) => IPromise +>when : (t?: T) => IPromise // Explicit different types var b = $q.all([$q.when(), $q.when()]); @@ -55,13 +55,13 @@ var b = $q.all([$q.when(), $q.when()]); >all : { (x: [IPromise, IPromise, IPromise]): IPromise<[T1, T2, T3]>; (x: [IPromise, IPromise]): IPromise<[T1, T2]>; (x: [IPromise]): IPromise<[T1]>; } >[$q.when(), $q.when()] : [IPromise, IPromise] >$q.when() : IPromise ->$q.when : (t?: T | undefined) => IPromise +>$q.when : (t?: T) => IPromise >$q : IQService ->when : (t?: T | undefined) => IPromise +>when : (t?: T) => IPromise >$q.when() : IPromise ->$q.when : (t?: T | undefined) => IPromise +>$q.when : (t?: T) => IPromise >$q : IQService ->when : (t?: T | undefined) => IPromise +>when : (t?: T) => IPromise // Implicit identical types var c = $q.all([$q.when(), $q.when()]); @@ -72,11 +72,11 @@ var c = $q.all([$q.when(), $q.when()]); >all : { (x: [IPromise, IPromise, IPromise]): IPromise<[T1, T2, T3]>; (x: [IPromise, IPromise]): IPromise<[T1, T2]>; (x: [IPromise]): IPromise<[T1]>; } >[$q.when(), $q.when()] : [IPromise, IPromise] >$q.when() : IPromise ->$q.when : (t?: T | undefined) => IPromise +>$q.when : (t?: T) => IPromise >$q : IQService ->when : (t?: T | undefined) => IPromise +>when : (t?: T) => IPromise >$q.when() : IPromise ->$q.when : (t?: T | undefined) => IPromise +>$q.when : (t?: T) => IPromise >$q : IQService ->when : (t?: T | undefined) => IPromise +>when : (t?: T) => IPromise diff --git a/testdata/baselines/reference/submodule/compiler/tupleTypeInference.types.diff b/testdata/baselines/reference/submodule/compiler/tupleTypeInference.types.diff index 5ca2f02430d..8aa9afac755 100644 --- a/testdata/baselines/reference/submodule/compiler/tupleTypeInference.types.diff +++ b/testdata/baselines/reference/submodule/compiler/tupleTypeInference.types.diff @@ -18,60 +18,4 @@ +>all : { (x: [IPromise, IPromise, IPromise]): IPromise<[T1, T2, T3]>; (x: [IPromise, IPromise]): IPromise<[T1, T2]>; (x: [IPromise]): IPromise<[T1]>; } >x : [IPromise] - when(t?: T): IPromise; -->when : (t?: T) => IPromise -+>when : (t?: T | undefined) => IPromise - >t : T | undefined - } - -@@= skipped -32, +32 lines =@@ - >all : { (x: [IPromise, IPromise, IPromise]): IPromise<[T1, T2, T3]>; (x: [IPromise, IPromise]): IPromise<[T1, T2]>; (x: [IPromise]): IPromise<[T1]>; } - >[$q.when(), $q.when()] : [IPromise, IPromise] - >$q.when() : IPromise -->$q.when : (t?: T) => IPromise -+>$q.when : (t?: T | undefined) => IPromise - >$q : IQService -->when : (t?: T) => IPromise -+>when : (t?: T | undefined) => IPromise - >$q.when() : IPromise -->$q.when : (t?: T) => IPromise -+>$q.when : (t?: T | undefined) => IPromise - >$q : IQService -->when : (t?: T) => IPromise -+>when : (t?: T | undefined) => IPromise - - // Explicit different types - var b = $q.all([$q.when(), $q.when()]); -@@= skipped -17, +17 lines =@@ - >all : { (x: [IPromise, IPromise, IPromise]): IPromise<[T1, T2, T3]>; (x: [IPromise, IPromise]): IPromise<[T1, T2]>; (x: [IPromise]): IPromise<[T1]>; } - >[$q.when(), $q.when()] : [IPromise, IPromise] - >$q.when() : IPromise -->$q.when : (t?: T) => IPromise -+>$q.when : (t?: T | undefined) => IPromise - >$q : IQService -->when : (t?: T) => IPromise -+>when : (t?: T | undefined) => IPromise - >$q.when() : IPromise -->$q.when : (t?: T) => IPromise -+>$q.when : (t?: T | undefined) => IPromise - >$q : IQService -->when : (t?: T) => IPromise -+>when : (t?: T | undefined) => IPromise - - // Implicit identical types - var c = $q.all([$q.when(), $q.when()]); -@@= skipped -17, +17 lines =@@ - >all : { (x: [IPromise, IPromise, IPromise]): IPromise<[T1, T2, T3]>; (x: [IPromise, IPromise]): IPromise<[T1, T2]>; (x: [IPromise]): IPromise<[T1]>; } - >[$q.when(), $q.when()] : [IPromise, IPromise] - >$q.when() : IPromise -->$q.when : (t?: T) => IPromise -+>$q.when : (t?: T | undefined) => IPromise - >$q : IQService -->when : (t?: T) => IPromise -+>when : (t?: T | undefined) => IPromise - >$q.when() : IPromise -->$q.when : (t?: T) => IPromise -+>$q.when : (t?: T | undefined) => IPromise - >$q : IQService -->when : (t?: T) => IPromise -+>when : (t?: T | undefined) => IPromise + when(t?: T): IPromise; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeAliasFunctionTypeSharedSymbol.types b/testdata/baselines/reference/submodule/compiler/typeAliasFunctionTypeSharedSymbol.types index d71a76644bc..830f0f921ea 100644 --- a/testdata/baselines/reference/submodule/compiler/typeAliasFunctionTypeSharedSymbol.types +++ b/testdata/baselines/reference/submodule/compiler/typeAliasFunctionTypeSharedSymbol.types @@ -4,7 +4,7 @@ // Repro from comment in #21496 function Mixin(Base: TBase) { ->Mixin : {}>(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >args : any[] >Base : TBase @@ -17,7 +17,7 @@ function Mixin(Base: TBase) { type Mixin = ReturnTypeOf >Mixin : { new (...args: any[]): Mixin.(Anonymous class); prototype: Mixin.(Anonymous class); } & (new (...args: any[]) => {}) ->Mixin : {}>(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase type ReturnTypeOf = V extends (...args: any[])=>infer R ? R : never; >ReturnTypeOf : ReturnTypeOf diff --git a/testdata/baselines/reference/submodule/compiler/typeAliasFunctionTypeSharedSymbol.types.diff b/testdata/baselines/reference/submodule/compiler/typeAliasFunctionTypeSharedSymbol.types.diff index 12e4965cc29..58f756640b5 100644 --- a/testdata/baselines/reference/submodule/compiler/typeAliasFunctionTypeSharedSymbol.types.diff +++ b/testdata/baselines/reference/submodule/compiler/typeAliasFunctionTypeSharedSymbol.types.diff @@ -5,7 +5,7 @@ function Mixin(Base: TBase) { ->Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase -+>Mixin : {}>(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase ++>Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase >args : any[] >Base : TBase @@ -21,7 +21,7 @@ ->Mixin : { new (...args: any[]): Mixin {}>.(Anonymous class); prototype: Mixin.(Anonymous class); } & (new (...args: any[]) => {}) ->Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase +>Mixin : { new (...args: any[]): Mixin.(Anonymous class); prototype: Mixin.(Anonymous class); } & (new (...args: any[]) => {}) -+>Mixin : {}>(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase ++>Mixin : (Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin.(Anonymous class); } & TBase type ReturnTypeOf = V extends (...args: any[])=>infer R ? R : never; >ReturnTypeOf : ReturnTypeOf \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeArgInference2.types b/testdata/baselines/reference/submodule/compiler/typeArgInference2.types index 231cbd042af..fa026a8c8b7 100644 --- a/testdata/baselines/reference/submodule/compiler/typeArgInference2.types +++ b/testdata/baselines/reference/submodule/compiler/typeArgInference2.types @@ -7,31 +7,31 @@ interface Item { } declare function foo(x?: T, y?: T): T; ->foo : (x?: T | undefined, y?: T | undefined) => T +>foo : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined var z1 = foo(null); // any >z1 : Item >foo(null) : Item ->foo : (x?: T | undefined, y?: T | undefined) => T +>foo : (x?: T, y?: T) => T var z2 = foo(); // Item >z2 : Item >foo() : Item ->foo : (x?: T | undefined, y?: T | undefined) => T +>foo : (x?: T, y?: T) => T var z3 = foo({ name: null }); // { name: any } >z3 : Item >foo({ name: null }) : Item ->foo : (x?: T | undefined, y?: T | undefined) => T +>foo : (x?: T, y?: T) => T >{ name: null } : { name: null; } >name : null var z4 = foo({ name: "abc" }); // { name: string } >z4 : { name: string; } >foo({ name: "abc" }) : { name: string; } ->foo : (x?: T | undefined, y?: T | undefined) => T +>foo : (x?: T, y?: T) => T >{ name: "abc" } : { name: string; } >name : string >"abc" : "abc" @@ -39,7 +39,7 @@ var z4 = foo({ name: "abc" }); // { name: string } var z5 = foo({ name: "abc", a: 5 }); // { name: string; a: number } >z5 : { name: string; a: number; } >foo({ name: "abc", a: 5 }) : { name: string; a: number; } ->foo : (x?: T | undefined, y?: T | undefined) => T +>foo : (x?: T, y?: T) => T >{ name: "abc", a: 5 } : { name: string; a: number; } >name : string >"abc" : "abc" @@ -49,7 +49,7 @@ var z5 = foo({ name: "abc", a: 5 }); // { name: string; a: number } var z6 = foo({ name: "abc", a: 5 }, { name: "def", b: 5 }); // error >z6 : { name: string; a: number; b?: undefined; } | { a?: undefined; name: string; b: number; } >foo({ name: "abc", a: 5 }, { name: "def", b: 5 }) : { name: string; a: number; b?: undefined; } | { a?: undefined; name: string; b: number; } ->foo : (x?: T | undefined, y?: T | undefined) => T +>foo : (x?: T, y?: T) => T >{ name: "abc", a: 5 } : { name: string; a: number; } >name : string >"abc" : "abc" diff --git a/testdata/baselines/reference/submodule/compiler/typeArgInference2.types.diff b/testdata/baselines/reference/submodule/compiler/typeArgInference2.types.diff deleted file mode 100644 index 7ea3a63f57e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeArgInference2.types.diff +++ /dev/null @@ -1,57 +0,0 @@ ---- old.typeArgInference2.types -+++ new.typeArgInference2.types -@@= skipped -6, +6 lines =@@ - } - - declare function foo(x?: T, y?: T): T; -->foo : (x?: T, y?: T) => T -+>foo : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - - var z1 = foo(null); // any - >z1 : Item - >foo(null) : Item -->foo : (x?: T, y?: T) => T -+>foo : (x?: T | undefined, y?: T | undefined) => T - - var z2 = foo(); // Item - >z2 : Item - >foo() : Item -->foo : (x?: T, y?: T) => T -+>foo : (x?: T | undefined, y?: T | undefined) => T - - var z3 = foo({ name: null }); // { name: any } - >z3 : Item - >foo({ name: null }) : Item -->foo : (x?: T, y?: T) => T -+>foo : (x?: T | undefined, y?: T | undefined) => T - >{ name: null } : { name: null; } - >name : null - - var z4 = foo({ name: "abc" }); // { name: string } - >z4 : { name: string; } - >foo({ name: "abc" }) : { name: string; } -->foo : (x?: T, y?: T) => T -+>foo : (x?: T | undefined, y?: T | undefined) => T - >{ name: "abc" } : { name: string; } - >name : string - >"abc" : "abc" -@@= skipped -32, +32 lines =@@ - var z5 = foo({ name: "abc", a: 5 }); // { name: string; a: number } - >z5 : { name: string; a: number; } - >foo({ name: "abc", a: 5 }) : { name: string; a: number; } -->foo : (x?: T, y?: T) => T -+>foo : (x?: T | undefined, y?: T | undefined) => T - >{ name: "abc", a: 5 } : { name: string; a: number; } - >name : string - >"abc" : "abc" -@@= skipped -10, +10 lines =@@ - var z6 = foo({ name: "abc", a: 5 }, { name: "def", b: 5 }); // error - >z6 : { name: string; a: number; b?: undefined; } | { a?: undefined; name: string; b: number; } - >foo({ name: "abc", a: 5 }, { name: "def", b: 5 }) : { name: string; a: number; b?: undefined; } | { a?: undefined; name: string; b: number; } -->foo : (x?: T, y?: T) => T -+>foo : (x?: T | undefined, y?: T | undefined) => T - >{ name: "abc", a: 5 } : { name: string; a: number; } - >name : string - >"abc" : "abc" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeArgInference2WithError.types b/testdata/baselines/reference/submodule/compiler/typeArgInference2WithError.types index c12b0ddcd61..4adf13a0fa3 100644 --- a/testdata/baselines/reference/submodule/compiler/typeArgInference2WithError.types +++ b/testdata/baselines/reference/submodule/compiler/typeArgInference2WithError.types @@ -7,14 +7,14 @@ interface Item { } declare function foo(x?: T, y?: T): T; ->foo : (x?: T | undefined, y?: T | undefined) => T +>foo : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined var z7 = foo("abc", 5); // Error >z7 : Item >foo("abc", 5) : Item ->foo : (x?: T | undefined, y?: T | undefined) => T +>foo : (x?: T, y?: T) => T >"abc" : "abc" >5 : 5 diff --git a/testdata/baselines/reference/submodule/compiler/typeArgInference2WithError.types.diff b/testdata/baselines/reference/submodule/compiler/typeArgInference2WithError.types.diff deleted file mode 100644 index f4a45e187ce..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeArgInference2WithError.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.typeArgInference2WithError.types -+++ new.typeArgInference2WithError.types -@@= skipped -6, +6 lines =@@ - } - - declare function foo(x?: T, y?: T): T; -->foo : (x?: T, y?: T) => T -+>foo : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - - var z7 = foo("abc", 5); // Error - >z7 : Item - >foo("abc", 5) : Item -->foo : (x?: T, y?: T) => T -+>foo : (x?: T | undefined, y?: T | undefined) => T - >"abc" : "abc" - >5 : 5 diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardConstructorClassAndNumber.types b/testdata/baselines/reference/submodule/compiler/typeGuardConstructorClassAndNumber.types index a1c7a16487b..cdc1badea64 100644 --- a/testdata/baselines/reference/submodule/compiler/typeGuardConstructorClassAndNumber.types +++ b/testdata/baselines/reference/submodule/compiler/typeGuardConstructorClassAndNumber.types @@ -321,7 +321,7 @@ else { // Repro from #37660 function foo(instance: Function | object) { ->foo : (instance: object | Function) => number | undefined +>foo : (instance: Function | object) => number | undefined >instance : object | Function if (typeof instance === 'function') { diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardConstructorClassAndNumber.types.diff b/testdata/baselines/reference/submodule/compiler/typeGuardConstructorClassAndNumber.types.diff deleted file mode 100644 index 7e97aa85bad..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeGuardConstructorClassAndNumber.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeGuardConstructorClassAndNumber.types -+++ new.typeGuardConstructorClassAndNumber.types -@@= skipped -320, +320 lines =@@ - // Repro from #37660 - - function foo(instance: Function | object) { -->foo : (instance: Function | object) => number | undefined -+>foo : (instance: object | Function) => number | undefined - >instance : object | Function - - if (typeof instance === 'function') { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty1.types b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty1.types index 888503d0192..39cd6425293 100644 --- a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty1.types +++ b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty1.types @@ -291,7 +291,7 @@ function check(z: Z, c: C) { } export function g(pair: [number, string?]): string { ->g : (pair: [number, (string | undefined)?]) => string +>g : (pair: [number, string?]) => string >pair : [number, (string | undefined)?] return pair[1] ? pair[1] : 'nope'; diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty1.types.diff b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty1.types.diff deleted file mode 100644 index d858eb182c8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty1.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeGuardNarrowsIndexedAccessOfKnownProperty1.types -+++ new.typeGuardNarrowsIndexedAccessOfKnownProperty1.types -@@= skipped -290, +290 lines =@@ - } - - export function g(pair: [number, string?]): string { -->g : (pair: [number, string?]) => string -+>g : (pair: [number, (string | undefined)?]) => string - >pair : [number, (string | undefined)?] - - return pair[1] ? pair[1] : 'nope'; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty2.types b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty2.types index 8f3d5528e5f..28d7f190a8a 100644 --- a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty2.types +++ b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty2.types @@ -2,7 +2,7 @@ === typeGuardNarrowsIndexedAccessOfKnownProperty2.ts === const foo: { key?: number } = {}; ->foo : { key?: number | undefined; } +>foo : { key?: number; } >key : number | undefined >{} : {} @@ -13,17 +13,17 @@ const key = 'key' as const; if (foo[key]) { >foo[key] : number | undefined ->foo : { key?: number | undefined; } +>foo : { key?: number; } >key : "key" foo[key]; // number >foo[key] : number ->foo : { key?: number | undefined; } +>foo : { key?: number; } >key : "key" foo.key; // number >foo.key : number ->foo : { key?: number | undefined; } +>foo : { key?: number; } >key : number } diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty2.types.diff b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty2.types.diff deleted file mode 100644 index d276cf4726f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty2.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.typeGuardNarrowsIndexedAccessOfKnownProperty2.types -+++ new.typeGuardNarrowsIndexedAccessOfKnownProperty2.types -@@= skipped -1, +1 lines =@@ - - === typeGuardNarrowsIndexedAccessOfKnownProperty2.ts === - const foo: { key?: number } = {}; -->foo : { key?: number; } -+>foo : { key?: number | undefined; } - >key : number | undefined - >{} : {} - -@@= skipped -11, +11 lines =@@ - - if (foo[key]) { - >foo[key] : number | undefined -->foo : { key?: number; } -+>foo : { key?: number | undefined; } - >key : "key" - - foo[key]; // number - >foo[key] : number -->foo : { key?: number; } -+>foo : { key?: number | undefined; } - >key : "key" - - foo.key; // number - >foo.key : number -->foo : { key?: number; } -+>foo : { key?: number | undefined; } - >key : number - } diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty5.types b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty5.types index aa647534bfc..f0d838418cd 100644 --- a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty5.types +++ b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty5.types @@ -2,8 +2,8 @@ === typeGuardNarrowsIndexedAccessOfKnownProperty5.ts === const a: { key?: { x?: number } } = {}; ->a : { key?: { x?: number | undefined; } | undefined; } ->key : { x?: number | undefined; } | undefined +>a : { key?: { x?: number; }; } +>key : { x?: number; } | undefined >x : number | undefined >{} : {} @@ -13,26 +13,26 @@ const aIndex = "key"; if (a[aIndex] && a[aIndex].x) { >a[aIndex] && a[aIndex].x : number | undefined ->a[aIndex] : { x?: number | undefined; } | undefined ->a : { key?: { x?: number | undefined; } | undefined; } +>a[aIndex] : { x?: number; } | undefined +>a : { key?: { x?: number; }; } >aIndex : "key" >a[aIndex].x : number | undefined ->a[aIndex] : { x?: number | undefined; } ->a : { key?: { x?: number | undefined; } | undefined; } +>a[aIndex] : { x?: number; } +>a : { key?: { x?: number; }; } >aIndex : "key" >x : number | undefined a[aIndex].x // number >a[aIndex].x : number ->a[aIndex] : { x?: number | undefined; } ->a : { key?: { x?: number | undefined; } | undefined; } +>a[aIndex] : { x?: number; } +>a : { key?: { x?: number; }; } >aIndex : "key" >x : number } const b: { key: { x?: number } } = { key: {} }; ->b : { key: { x?: number | undefined; }; } ->key : { x?: number | undefined; } +>b : { key: { x?: number; }; } +>key : { x?: number; } >x : number | undefined >{ key: {} } : { key: {}; } >key : {} @@ -44,15 +44,15 @@ const bIndex = "key"; if (b[bIndex].x) { >b[bIndex].x : number | undefined ->b[bIndex] : { x?: number | undefined; } ->b : { key: { x?: number | undefined; }; } +>b[bIndex] : { x?: number; } +>b : { key: { x?: number; }; } >bIndex : "key" >x : number | undefined b[bIndex].x // number >b[bIndex].x : number ->b[bIndex] : { x?: number | undefined; } ->b : { key: { x?: number | undefined; }; } +>b[bIndex] : { x?: number; } +>b : { key: { x?: number; }; } >bIndex : "key" >x : number } diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty5.types.diff b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty5.types.diff deleted file mode 100644 index a7060e4b9e1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty5.types.diff +++ /dev/null @@ -1,68 +0,0 @@ ---- old.typeGuardNarrowsIndexedAccessOfKnownProperty5.types -+++ new.typeGuardNarrowsIndexedAccessOfKnownProperty5.types -@@= skipped -1, +1 lines =@@ - - === typeGuardNarrowsIndexedAccessOfKnownProperty5.ts === - const a: { key?: { x?: number } } = {}; -->a : { key?: { x?: number; }; } -->key : { x?: number; } | undefined -+>a : { key?: { x?: number | undefined; } | undefined; } -+>key : { x?: number | undefined; } | undefined - >x : number | undefined - >{} : {} - -@@= skipped -11, +11 lines =@@ - - if (a[aIndex] && a[aIndex].x) { - >a[aIndex] && a[aIndex].x : number | undefined -->a[aIndex] : { x?: number; } | undefined -->a : { key?: { x?: number; }; } -+>a[aIndex] : { x?: number | undefined; } | undefined -+>a : { key?: { x?: number | undefined; } | undefined; } - >aIndex : "key" - >a[aIndex].x : number | undefined -->a[aIndex] : { x?: number; } -->a : { key?: { x?: number; }; } -+>a[aIndex] : { x?: number | undefined; } -+>a : { key?: { x?: number | undefined; } | undefined; } - >aIndex : "key" - >x : number | undefined - - a[aIndex].x // number - >a[aIndex].x : number -->a[aIndex] : { x?: number; } -->a : { key?: { x?: number; }; } -+>a[aIndex] : { x?: number | undefined; } -+>a : { key?: { x?: number | undefined; } | undefined; } - >aIndex : "key" - >x : number - } - - const b: { key: { x?: number } } = { key: {} }; -->b : { key: { x?: number; }; } -->key : { x?: number; } -+>b : { key: { x?: number | undefined; }; } -+>key : { x?: number | undefined; } - >x : number | undefined - >{ key: {} } : { key: {}; } - >key : {} -@@= skipped -31, +31 lines =@@ - - if (b[bIndex].x) { - >b[bIndex].x : number | undefined -->b[bIndex] : { x?: number; } -->b : { key: { x?: number; }; } -+>b[bIndex] : { x?: number | undefined; } -+>b : { key: { x?: number | undefined; }; } - >bIndex : "key" - >x : number | undefined - - b[bIndex].x // number - >b[bIndex].x : number -->b[bIndex] : { x?: number; } -->b : { key: { x?: number; }; } -+>b[bIndex] : { x?: number | undefined; } -+>b : { key: { x?: number | undefined; }; } - >bIndex : "key" - >x : number - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty6.types b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty6.types index d29e5bf9a5b..69dcfbcde8f 100644 --- a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty6.types +++ b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty6.types @@ -5,26 +5,26 @@ declare const aIndex: "key"; >aIndex : "key" const a: { key?: { x?: number } } = {}; ->a : { key?: { x?: number | undefined; } | undefined; } ->key : { x?: number | undefined; } | undefined +>a : { key?: { x?: number; }; } +>key : { x?: number; } | undefined >x : number | undefined >{} : {} if (a[aIndex] && a[aIndex].x) { >a[aIndex] && a[aIndex].x : number | undefined ->a[aIndex] : { x?: number | undefined; } | undefined ->a : { key?: { x?: number | undefined; } | undefined; } +>a[aIndex] : { x?: number; } | undefined +>a : { key?: { x?: number; }; } >aIndex : "key" >a[aIndex].x : number | undefined ->a[aIndex] : { x?: number | undefined; } ->a : { key?: { x?: number | undefined; } | undefined; } +>a[aIndex] : { x?: number; } +>a : { key?: { x?: number; }; } >aIndex : "key" >x : number | undefined a[aIndex].x // number >a[aIndex].x : number ->a[aIndex] : { x?: number | undefined; } ->a : { key?: { x?: number | undefined; } | undefined; } +>a[aIndex] : { x?: number; } +>a : { key?: { x?: number; }; } >aIndex : "key" >x : number } @@ -33,8 +33,8 @@ declare const bIndex: "key"; >bIndex : "key" const b: { key: { x?: number } } = { key: {} }; ->b : { key: { x?: number | undefined; }; } ->key : { x?: number | undefined; } +>b : { key: { x?: number; }; } +>key : { x?: number; } >x : number | undefined >{ key: {} } : { key: {}; } >key : {} @@ -42,15 +42,15 @@ const b: { key: { x?: number } } = { key: {} }; if (b[bIndex].x) { >b[bIndex].x : number | undefined ->b[bIndex] : { x?: number | undefined; } ->b : { key: { x?: number | undefined; }; } +>b[bIndex] : { x?: number; } +>b : { key: { x?: number; }; } >bIndex : "key" >x : number | undefined b[bIndex].x // number >b[bIndex].x : number ->b[bIndex] : { x?: number | undefined; } ->b : { key: { x?: number | undefined; }; } +>b[bIndex] : { x?: number; } +>b : { key: { x?: number; }; } >bIndex : "key" >x : number } diff --git a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty6.types.diff b/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty6.types.diff deleted file mode 100644 index 9a3f5be6f7d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty6.types.diff +++ /dev/null @@ -1,68 +0,0 @@ ---- old.typeGuardNarrowsIndexedAccessOfKnownProperty6.types -+++ new.typeGuardNarrowsIndexedAccessOfKnownProperty6.types -@@= skipped -4, +4 lines =@@ - >aIndex : "key" - - const a: { key?: { x?: number } } = {}; -->a : { key?: { x?: number; }; } -->key : { x?: number; } | undefined -+>a : { key?: { x?: number | undefined; } | undefined; } -+>key : { x?: number | undefined; } | undefined - >x : number | undefined - >{} : {} - - if (a[aIndex] && a[aIndex].x) { - >a[aIndex] && a[aIndex].x : number | undefined -->a[aIndex] : { x?: number; } | undefined -->a : { key?: { x?: number; }; } -+>a[aIndex] : { x?: number | undefined; } | undefined -+>a : { key?: { x?: number | undefined; } | undefined; } - >aIndex : "key" - >a[aIndex].x : number | undefined -->a[aIndex] : { x?: number; } -->a : { key?: { x?: number; }; } -+>a[aIndex] : { x?: number | undefined; } -+>a : { key?: { x?: number | undefined; } | undefined; } - >aIndex : "key" - >x : number | undefined - - a[aIndex].x // number - >a[aIndex].x : number -->a[aIndex] : { x?: number; } -->a : { key?: { x?: number; }; } -+>a[aIndex] : { x?: number | undefined; } -+>a : { key?: { x?: number | undefined; } | undefined; } - >aIndex : "key" - >x : number - } -@@= skipped -28, +28 lines =@@ - >bIndex : "key" - - const b: { key: { x?: number } } = { key: {} }; -->b : { key: { x?: number; }; } -->key : { x?: number; } -+>b : { key: { x?: number | undefined; }; } -+>key : { x?: number | undefined; } - >x : number | undefined - >{ key: {} } : { key: {}; } - >key : {} -@@= skipped -9, +9 lines =@@ - - if (b[bIndex].x) { - >b[bIndex].x : number | undefined -->b[bIndex] : { x?: number; } -->b : { key: { x?: number; }; } -+>b[bIndex] : { x?: number | undefined; } -+>b : { key: { x?: number | undefined; }; } - >bIndex : "key" - >x : number | undefined - - b[bIndex].x // number - >b[bIndex].x : number -->b[bIndex] : { x?: number; } -->b : { key: { x?: number; }; } -+>b[bIndex] : { x?: number | undefined; } -+>b : { key: { x?: number | undefined; }; } - >bIndex : "key" - >x : number - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeInferenceLiteralUnion.types b/testdata/baselines/reference/submodule/compiler/typeInferenceLiteralUnion.types index a85306c69c2..26e1c4c8f29 100644 --- a/testdata/baselines/reference/submodule/compiler/typeInferenceLiteralUnion.types +++ b/testdata/baselines/reference/submodule/compiler/typeInferenceLiteralUnion.types @@ -47,7 +47,7 @@ class NumCoercible { * Return the min and max simultaneously. */ export function extent(array: Array): [T | Primitive, T | Primitive] | [undefined, undefined] { ->extent : (array: (T | Primitive)[]) => [undefined, undefined] | [T | Primitive, T | Primitive] +>extent : (array: Array) => [T | Primitive, T | Primitive] | [undefined, undefined] >array : (T | Primitive)[] return [undefined, undefined]; @@ -64,7 +64,7 @@ extentMixed = extent([new NumCoercible(10), 13, '12', true]); >extentMixed = extent([new NumCoercible(10), 13, '12', true]) : [undefined, undefined] | [NumCoercible | Primitive, NumCoercible | Primitive] >extentMixed : [undefined, undefined] | [NumCoercible | Primitive, NumCoercible | Primitive] >extent([new NumCoercible(10), 13, '12', true]) : [undefined, undefined] | [NumCoercible | Primitive, NumCoercible | Primitive] ->extent : (array: (T | Primitive)[]) => [undefined, undefined] | [T | Primitive, T | Primitive] +>extent : (array: Array) => [T | Primitive, T | Primitive] | [undefined, undefined] >[new NumCoercible(10), 13, '12', true] : (string | number | true | NumCoercible)[] >new NumCoercible(10) : NumCoercible >NumCoercible : typeof NumCoercible diff --git a/testdata/baselines/reference/submodule/compiler/typeInferenceLiteralUnion.types.diff b/testdata/baselines/reference/submodule/compiler/typeInferenceLiteralUnion.types.diff deleted file mode 100644 index f6b67b63d40..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeInferenceLiteralUnion.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.typeInferenceLiteralUnion.types -+++ new.typeInferenceLiteralUnion.types -@@= skipped -46, +46 lines =@@ - * Return the min and max simultaneously. - */ - export function extent(array: Array): [T | Primitive, T | Primitive] | [undefined, undefined] { -->extent : (array: Array) => [T | Primitive, T | Primitive] | [undefined, undefined] -+>extent : (array: (T | Primitive)[]) => [undefined, undefined] | [T | Primitive, T | Primitive] - >array : (T | Primitive)[] - - return [undefined, undefined]; -@@= skipped -17, +17 lines =@@ - >extentMixed = extent([new NumCoercible(10), 13, '12', true]) : [undefined, undefined] | [NumCoercible | Primitive, NumCoercible | Primitive] - >extentMixed : [undefined, undefined] | [NumCoercible | Primitive, NumCoercible | Primitive] - >extent([new NumCoercible(10), 13, '12', true]) : [undefined, undefined] | [NumCoercible | Primitive, NumCoercible | Primitive] -->extent : (array: Array) => [T | Primitive, T | Primitive] | [undefined, undefined] -+>extent : (array: (T | Primitive)[]) => [undefined, undefined] | [T | Primitive, T | Primitive] - >[new NumCoercible(10), 13, '12', true] : (string | number | true | NumCoercible)[] - >new NumCoercible(10) : NumCoercible - >NumCoercible : typeof NumCoercible \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeLiteralCallback.types b/testdata/baselines/reference/submodule/compiler/typeLiteralCallback.types index 96ec8f2ee17..346f89a6251 100644 --- a/testdata/baselines/reference/submodule/compiler/typeLiteralCallback.types +++ b/testdata/baselines/reference/submodule/compiler/typeLiteralCallback.types @@ -16,7 +16,7 @@ interface bar { >arg : T fail2(func: { (arg: T): void ; }): void ; ->fail2 : (func: (arg: T) => void) => void +>fail2 : (func: { (arg: T): void; }) => void >func : (arg: T) => void >arg : T } diff --git a/testdata/baselines/reference/submodule/compiler/typeLiteralCallback.types.diff b/testdata/baselines/reference/submodule/compiler/typeLiteralCallback.types.diff deleted file mode 100644 index 61d96073522..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeLiteralCallback.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeLiteralCallback.types -+++ new.typeLiteralCallback.types -@@= skipped -15, +15 lines =@@ - >arg : T - - fail2(func: { (arg: T): void ; }): void ; -->fail2 : (func: { (arg: T): void; }) => void -+>fail2 : (func: (arg: T) => void) => void - >func : (arg: T) => void - >arg : T - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeName1.errors.txt b/testdata/baselines/reference/submodule/compiler/typeName1.errors.txt index cb692268ee8..7dccfb8a80f 100644 --- a/testdata/baselines/reference/submodule/compiler/typeName1.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/typeName1.errors.txt @@ -10,7 +10,7 @@ typeName1.ts(16,10): error TS2411: Property 'z' of type 'I' is not assignable to typeName1.ts(17,5): error TS2322: Type 'number' is not assignable to type 'I'. typeName1.ts(18,5): error TS2322: Type 'number' is not assignable to type 'I[][][][]'. typeName1.ts(19,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; }[][]'. -typeName1.ts(20,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][]'. +typeName1.ts(20,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { z: I; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; (): boolean; }; }[][]'. typeName1.ts(20,50): error TS2411: Property 'z' of type 'I' is not assignable to 'string' index type '{ x: any; y: any; }'. typeName1.ts(21,5): error TS2322: Type 'number' is not assignable to type '{ (): {}; new (): number; new (n: number): number; x: string; w: { y: number; }; }'. typeName1.ts(22,5): error TS2322: Type 'number' is not assignable to type '{ (): string; f(x: number): boolean; p: any; q: any; }'. @@ -63,7 +63,7 @@ typeName1.ts(23,5): error TS2322: Type 'typeof C' is not assignable to type 'num !!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; }[][]'. var x12:{z:I;x:boolean;y:(s:string)=>boolean;w:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; };}[][]=3; ~~~ -!!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][]'. +!!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { z: I; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; (): boolean; }; }[][]'. ~ !!! error TS2411: Property 'z' of type 'I' is not assignable to 'string' index type '{ x: any; y: any; }'. var x13:{ new(): number; new(n:number):number; x: string; w: {y: number;}; (): {}; } = 3; diff --git a/testdata/baselines/reference/submodule/compiler/typeName1.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/typeName1.errors.txt.diff new file mode 100644 index 00000000000..72021dd821c --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/typeName1.errors.txt.diff @@ -0,0 +1,20 @@ +--- old.typeName1.errors.txt ++++ new.typeName1.errors.txt +@@= skipped -9, +9 lines =@@ + typeName1.ts(17,5): error TS2322: Type 'number' is not assignable to type 'I'. + typeName1.ts(18,5): error TS2322: Type 'number' is not assignable to type 'I[][][][]'. + typeName1.ts(19,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; }[][]'. +-typeName1.ts(20,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][]'. ++typeName1.ts(20,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { z: I; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; (): boolean; }; }[][]'. + typeName1.ts(20,50): error TS2411: Property 'z' of type 'I' is not assignable to 'string' index type '{ x: any; y: any; }'. + typeName1.ts(21,5): error TS2322: Type 'number' is not assignable to type '{ (): {}; new (): number; new (n: number): number; x: string; w: { y: number; }; }'. + typeName1.ts(22,5): error TS2322: Type 'number' is not assignable to type '{ (): string; f(x: number): boolean; p: any; q: any; }'. +@@= skipped -53, +53 lines =@@ + !!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; }[][]'. + var x12:{z:I;x:boolean;y:(s:string)=>boolean;w:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; };}[][]=3; + ~~~ +-!!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][]'. ++!!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { z: I; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; (): boolean; }; }[][]'. + ~ + !!! error TS2411: Property 'z' of type 'I' is not assignable to 'string' index type '{ x: any; y: any; }'. + var x13:{ new(): number; new(n:number):number; x: string; w: {y: number;}; (): {}; } = 3; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeName1.types b/testdata/baselines/reference/submodule/compiler/typeName1.types index 581d2b63831..6c9b9f4fdfe 100644 --- a/testdata/baselines/reference/submodule/compiler/typeName1.types +++ b/testdata/baselines/reference/submodule/compiler/typeName1.types @@ -98,7 +98,7 @@ var x11:{z:I;x:boolean;}[][]=3; >3 : 3 var x12:{z:I;x:boolean;y:(s:string)=>boolean;w:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; };}[][]=3; ->x12 : { z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][] +>x12 : { z: I; x: boolean; y: (s: string) => boolean; w: { z: I; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; (): boolean; }; }[][] >z : I >x : boolean >y : (s: string) => boolean diff --git a/testdata/baselines/reference/submodule/compiler/typeName1.types.diff b/testdata/baselines/reference/submodule/compiler/typeName1.types.diff deleted file mode 100644 index 2413cb60932..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeName1.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeName1.types -+++ new.typeName1.types -@@= skipped -97, +97 lines =@@ - >3 : 3 - - var x12:{z:I;x:boolean;y:(s:string)=>boolean;w:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; };}[][]=3; -->x12 : { z: I; x: boolean; y: (s: string) => boolean; w: { z: I; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; (): boolean; }; }[][] -+>x12 : { z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][] - >z : I - >x : boolean - >y : (s: string) => boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeNamedUndefined1.types b/testdata/baselines/reference/submodule/compiler/typeNamedUndefined1.types index f9c687824e4..119236a1414 100644 --- a/testdata/baselines/reference/submodule/compiler/typeNamedUndefined1.types +++ b/testdata/baselines/reference/submodule/compiler/typeNamedUndefined1.types @@ -23,7 +23,7 @@ export namespace ns { } export function x(p: ns.undefined) { // undefined from the namespace ->x : (p: unique symbol) => symbol +>x : (p: ns.undefined) => symbol >p : unique symbol >ns : any diff --git a/testdata/baselines/reference/submodule/compiler/typeNamedUndefined1.types.diff b/testdata/baselines/reference/submodule/compiler/typeNamedUndefined1.types.diff deleted file mode 100644 index 15adb33f005..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeNamedUndefined1.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.typeNamedUndefined1.types -+++ new.typeNamedUndefined1.types -@@= skipped -22, +22 lines =@@ - } - - export function x(p: ns.undefined) { // undefined from the namespace -->x : (p: ns.undefined) => symbol -+>x : (p: unique symbol) => symbol - >p : unique symbol - >ns : any diff --git a/testdata/baselines/reference/submodule/compiler/typeNamedUndefined2.types b/testdata/baselines/reference/submodule/compiler/typeNamedUndefined2.types index 2a471d5305e..4492ad2e6d5 100644 --- a/testdata/baselines/reference/submodule/compiler/typeNamedUndefined2.types +++ b/testdata/baselines/reference/submodule/compiler/typeNamedUndefined2.types @@ -27,7 +27,7 @@ export namespace ns { } export function x(p: ns.undefined.undefined) { ->x : (p: unique symbol) => symbol +>x : (p: ns.undefined.undefined) => symbol >p : unique symbol >ns : any >undefined : any diff --git a/testdata/baselines/reference/submodule/compiler/typeNamedUndefined2.types.diff b/testdata/baselines/reference/submodule/compiler/typeNamedUndefined2.types.diff deleted file mode 100644 index 611945cb17f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeNamedUndefined2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeNamedUndefined2.types -+++ new.typeNamedUndefined2.types -@@= skipped -26, +26 lines =@@ - } - - export function x(p: ns.undefined.undefined) { -->x : (p: ns.undefined.undefined) => symbol -+>x : (p: unique symbol) => symbol - >p : unique symbol - >ns : any - >undefined : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeOfOnTypeArg.types b/testdata/baselines/reference/submodule/compiler/typeOfOnTypeArg.types index fcb9822409a..25c97163021 100644 --- a/testdata/baselines/reference/submodule/compiler/typeOfOnTypeArg.types +++ b/testdata/baselines/reference/submodule/compiler/typeOfOnTypeArg.types @@ -8,7 +8,7 @@ var A = { '': 3 }; >3 : 3 function fill(f: B) { ->fill : (f: B) => void +>fill : (f: B) => void >A : { '': number; } >f : B @@ -16,6 +16,6 @@ function fill(f: B) { fill(32); >fill(32) : void ->fill : (f: B) => void +>fill : (f: B) => void >32 : 32 diff --git a/testdata/baselines/reference/submodule/compiler/typeOfOnTypeArg.types.diff b/testdata/baselines/reference/submodule/compiler/typeOfOnTypeArg.types.diff deleted file mode 100644 index 5a332bbb12e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeOfOnTypeArg.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.typeOfOnTypeArg.types -+++ new.typeOfOnTypeArg.types -@@= skipped -7, +7 lines =@@ - >3 : 3 - - function fill(f: B) { -->fill : (f: B) => void -+>fill : (f: B) => void - >A : { '': number; } - >f : B - -@@= skipped -8, +8 lines =@@ - - fill(32); - >fill(32) : void -->fill : (f: B) => void -+>fill : (f: B) => void - >32 : 32 diff --git a/testdata/baselines/reference/submodule/compiler/typeParameterAndArgumentOfSameName1.types b/testdata/baselines/reference/submodule/compiler/typeParameterAndArgumentOfSameName1.types index 424e4afa845..ce9153b364e 100644 --- a/testdata/baselines/reference/submodule/compiler/typeParameterAndArgumentOfSameName1.types +++ b/testdata/baselines/reference/submodule/compiler/typeParameterAndArgumentOfSameName1.types @@ -8,9 +8,9 @@ function f(A: A): A { var r = A.toExponential(123); >r : string >A.toExponential(123) : string ->A.toExponential : (fractionDigits?: number | undefined) => string +>A.toExponential : (fractionDigits?: number) => string >A : A ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string >123 : 123 return null; diff --git a/testdata/baselines/reference/submodule/compiler/typeParameterAndArgumentOfSameName1.types.diff b/testdata/baselines/reference/submodule/compiler/typeParameterAndArgumentOfSameName1.types.diff deleted file mode 100644 index 356f693c4c7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeParameterAndArgumentOfSameName1.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.typeParameterAndArgumentOfSameName1.types -+++ new.typeParameterAndArgumentOfSameName1.types -@@= skipped -7, +7 lines =@@ - var r = A.toExponential(123); - >r : string - >A.toExponential(123) : string -->A.toExponential : (fractionDigits?: number) => string -+>A.toExponential : (fractionDigits?: number | undefined) => string - >A : A -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - >123 : 123 - - return null; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeParameterConstraints1.types b/testdata/baselines/reference/submodule/compiler/typeParameterConstraints1.types index d125bcbb217..6888ffb36fc 100644 --- a/testdata/baselines/reference/submodule/compiler/typeParameterConstraints1.types +++ b/testdata/baselines/reference/submodule/compiler/typeParameterConstraints1.types @@ -38,7 +38,7 @@ function foo9 (test: T) { } >test : T function foo10 (test: T) { } ->foo10 : (test: T) => void +>foo10 : (test: T) => void >test : T function foo11 (test: T) { } diff --git a/testdata/baselines/reference/submodule/compiler/typeParameterConstraints1.types.diff b/testdata/baselines/reference/submodule/compiler/typeParameterConstraints1.types.diff deleted file mode 100644 index 91fac40e25d..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeParameterConstraints1.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeParameterConstraints1.types -+++ new.typeParameterConstraints1.types -@@= skipped -37, +37 lines =@@ - >test : T - - function foo10 (test: T) { } -->foo10 : (test: T) => void -+>foo10 : (test: T) => void - >test : T - - function foo11 (test: T) { } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeParameterDiamond3.types b/testdata/baselines/reference/submodule/compiler/typeParameterDiamond3.types index 10672449566..f34dc8c69cb 100644 --- a/testdata/baselines/reference/submodule/compiler/typeParameterDiamond3.types +++ b/testdata/baselines/reference/submodule/compiler/typeParameterDiamond3.types @@ -8,7 +8,7 @@ function diamondTop() { >diamondMiddle : () => void function diamondBottom() { ->diamondBottom : () => void +>diamondBottom : () => void var top!: Top; >top : Top diff --git a/testdata/baselines/reference/submodule/compiler/typeParameterDiamond3.types.diff b/testdata/baselines/reference/submodule/compiler/typeParameterDiamond3.types.diff deleted file mode 100644 index a0850ddd583..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeParameterDiamond3.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeParameterDiamond3.types -+++ new.typeParameterDiamond3.types -@@= skipped -7, +7 lines =@@ - >diamondMiddle : () => void - - function diamondBottom() { -->diamondBottom : () => void -+>diamondBottom : () => void - - var top!: Top; - >top : Top \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeParameterDiamond4.types b/testdata/baselines/reference/submodule/compiler/typeParameterDiamond4.types index 62f89469e21..d12a46c370b 100644 --- a/testdata/baselines/reference/submodule/compiler/typeParameterDiamond4.types +++ b/testdata/baselines/reference/submodule/compiler/typeParameterDiamond4.types @@ -8,7 +8,7 @@ function diamondTop() { >diamondMiddle : () => void function diamondBottom() { ->diamondBottom : () => void +>diamondBottom : () => void var top!: Top; >top : Top diff --git a/testdata/baselines/reference/submodule/compiler/typeParameterDiamond4.types.diff b/testdata/baselines/reference/submodule/compiler/typeParameterDiamond4.types.diff deleted file mode 100644 index 82926082445..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeParameterDiamond4.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeParameterDiamond4.types -+++ new.typeParameterDiamond4.types -@@= skipped -7, +7 lines =@@ - >diamondMiddle : () => void - - function diamondBottom() { -->diamondBottom : () => void -+>diamondBottom : () => void - - var top!: Top; - >top : Top \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesCanNarrowByDiscriminant.types b/testdata/baselines/reference/submodule/compiler/typePredicatesCanNarrowByDiscriminant.types index 34b85c90d2b..735d17b2b0a 100644 --- a/testdata/baselines/reference/submodule/compiler/typePredicatesCanNarrowByDiscriminant.types +++ b/testdata/baselines/reference/submodule/compiler/typePredicatesCanNarrowByDiscriminant.types @@ -3,7 +3,7 @@ === typePredicatesCanNarrowByDiscriminant.ts === // #45770 declare const fruit: { kind: 'apple'} | { kind: 'banana' } | { kind: 'cherry' } ->fruit : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } +>fruit : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } >kind : "apple" >kind : "banana" >kind : "cherry" @@ -17,7 +17,7 @@ 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 >fruit.kind : "apple" | "banana" | "cherry" ->fruit : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } +>fruit : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } >kind : "apple" | "banana" | "cherry" >['apple', 'banana'] as const : readonly ["apple", "banana"] >['apple', 'banana'] : readonly ["apple", "banana"] @@ -26,15 +26,15 @@ if (isOneOf(fruit.kind, ['apple', 'banana'] as const)) { fruit.kind >fruit.kind : "apple" | "banana" ->fruit : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } +>fruit : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } >kind : "apple" | "banana" fruit ->fruit : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } +>fruit : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } } declare const fruit2: { kind: 'apple'} | { kind: 'banana' } | { kind: 'cherry' } ->fruit2 : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } +>fruit2 : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } >kind : "apple" >kind : "banana" >kind : "cherry" @@ -42,7 +42,7 @@ declare const fruit2: { kind: 'apple'} | { kind: 'banana' } | { kind: 'cherry' } const kind = fruit2.kind; >kind : "apple" | "banana" | "cherry" >fruit2.kind : "apple" | "banana" | "cherry" ->fruit2 : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } +>fruit2 : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } >kind : "apple" | "banana" | "cherry" if (isOneOf(kind, ['apple', 'banana'] as const)) { @@ -56,9 +56,9 @@ if (isOneOf(kind, ['apple', 'banana'] as const)) { fruit2.kind >fruit2.kind : "apple" | "banana" | "cherry" ->fruit2 : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } +>fruit2 : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } >kind : "apple" | "banana" | "cherry" fruit2 ->fruit2 : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } +>fruit2 : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } } diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesCanNarrowByDiscriminant.types.diff b/testdata/baselines/reference/submodule/compiler/typePredicatesCanNarrowByDiscriminant.types.diff new file mode 100644 index 00000000000..bfd152c22d2 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/typePredicatesCanNarrowByDiscriminant.types.diff @@ -0,0 +1,60 @@ +--- old.typePredicatesCanNarrowByDiscriminant.types ++++ new.typePredicatesCanNarrowByDiscriminant.types +@@= skipped -2, +2 lines =@@ + === typePredicatesCanNarrowByDiscriminant.ts === + // #45770 + declare const fruit: { kind: 'apple'} | { kind: 'banana' } | { kind: 'cherry' } +->fruit : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } ++>fruit : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } + >kind : "apple" + >kind : "banana" + >kind : "cherry" +@@= skipped -14, +14 lines =@@ + >isOneOf(fruit.kind, ['apple', 'banana'] as const) : boolean + >isOneOf : (item: T, array: readonly U[]) => item is U + >fruit.kind : "apple" | "banana" | "cherry" +->fruit : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } ++>fruit : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } + >kind : "apple" | "banana" | "cherry" + >['apple', 'banana'] as const : readonly ["apple", "banana"] + >['apple', 'banana'] : readonly ["apple", "banana"] +@@= skipped -9, +9 lines =@@ + + fruit.kind + >fruit.kind : "apple" | "banana" +->fruit : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } ++>fruit : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } + >kind : "apple" | "banana" + + fruit +->fruit : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } ++>fruit : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } + } + + declare const fruit2: { kind: 'apple'} | { kind: 'banana' } | { kind: 'cherry' } +->fruit2 : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } ++>fruit2 : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } + >kind : "apple" + >kind : "banana" + >kind : "cherry" +@@= skipped -16, +16 lines =@@ + const kind = fruit2.kind; + >kind : "apple" | "banana" | "cherry" + >fruit2.kind : "apple" | "banana" | "cherry" +->fruit2 : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } ++>fruit2 : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } + >kind : "apple" | "banana" | "cherry" + + if (isOneOf(kind, ['apple', 'banana'] as const)) { +@@= skipped -14, +14 lines =@@ + + fruit2.kind + >fruit2.kind : "apple" | "banana" | "cherry" +->fruit2 : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } ++>fruit2 : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } + >kind : "apple" | "banana" | "cherry" + + fruit2 +->fruit2 : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } ++>fruit2 : { kind: 'apple'; } | { kind: 'banana'; } | { kind: 'cherry'; } + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion2.types b/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion2.types index 8623771dfa0..e627923e663 100644 --- a/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion2.types +++ b/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion2.types @@ -10,18 +10,18 @@ declare function isNumber(x: any): x is number; >x : any declare function f(p: typeof isString | typeof isNumber): void; ->f : (p: ((x: any) => x is string) | ((x: any) => x is number)) => void +>f : (p: typeof isString | typeof isNumber) => void >p : ((x: any) => x is string) | ((x: any) => x is number) >isString : (x: any) => x is string >isNumber : (x: any) => x is number f(isString); >f(isString) : void ->f : (p: ((x: any) => x is string) | ((x: any) => x is number)) => void +>f : (p: typeof isString | typeof isNumber) => void >isString : (x: any) => x is string f(isNumber); >f(isNumber) : void ->f : (p: ((x: any) => x is string) | ((x: any) => x is number)) => void +>f : (p: typeof isString | typeof isNumber) => void >isNumber : (x: any) => x is number diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion2.types.diff b/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion2.types.diff deleted file mode 100644 index dda57183ecd..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion2.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.typePredicatesInUnion2.types -+++ new.typePredicatesInUnion2.types -@@= skipped -9, +9 lines =@@ - >x : any - - declare function f(p: typeof isString | typeof isNumber): void; -->f : (p: typeof isString | typeof isNumber) => void -+>f : (p: ((x: any) => x is string) | ((x: any) => x is number)) => void - >p : ((x: any) => x is string) | ((x: any) => x is number) - >isString : (x: any) => x is string - >isNumber : (x: any) => x is number - - f(isString); - >f(isString) : void -->f : (p: typeof isString | typeof isNumber) => void -+>f : (p: ((x: any) => x is string) | ((x: any) => x is number)) => void - >isString : (x: any) => x is string - - f(isNumber); - >f(isNumber) : void -->f : (p: typeof isString | typeof isNumber) => void -+>f : (p: ((x: any) => x is string) | ((x: any) => x is number)) => void - >isNumber : (x: any) => x is number diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion3.types b/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion3.types index 3d5bd5abc45..0bfee4cb71f 100644 --- a/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion3.types +++ b/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion3.types @@ -41,7 +41,7 @@ function f1(x: unknown, p: P1 | P2) { } function f2(x: unknown, p: P1 | P2 | F1) { ->f2 : (x: unknown, p: F1 | P1 | P2) => void +>f2 : (x: unknown, p: P1 | P2 | F1) => void >x : unknown >p : F1 | P1 | P2 @@ -56,7 +56,7 @@ function f2(x: unknown, p: P1 | P2 | F1) { } function f3(x: unknown, p: P1 | P2 | F2) { ->f3 : (x: unknown, p: F2 | P1 | P2) => void +>f3 : (x: unknown, p: P1 | P2 | F2) => void >x : unknown >p : F2 | P1 | P2 @@ -71,7 +71,7 @@ function f3(x: unknown, p: P1 | P2 | F2) { } function f4(x: unknown, p: P1 | P2 | F3) { ->f4 : (x: unknown, p: F3 | P1 | P2) => void +>f4 : (x: unknown, p: P1 | P2 | F3) => void >x : unknown >p : F3 | P1 | P2 diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion3.types.diff b/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion3.types.diff deleted file mode 100644 index 8a90f2e99f3..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typePredicatesInUnion3.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.typePredicatesInUnion3.types -+++ new.typePredicatesInUnion3.types -@@= skipped -40, +40 lines =@@ - } - - function f2(x: unknown, p: P1 | P2 | F1) { -->f2 : (x: unknown, p: P1 | P2 | F1) => void -+>f2 : (x: unknown, p: F1 | P1 | P2) => void - >x : unknown - >p : F1 | P1 | P2 - -@@= skipped -15, +15 lines =@@ - } - - function f3(x: unknown, p: P1 | P2 | F2) { -->f3 : (x: unknown, p: P1 | P2 | F2) => void -+>f3 : (x: unknown, p: F2 | P1 | P2) => void - >x : unknown - >p : F2 | P1 | P2 - -@@= skipped -15, +15 lines =@@ - } - - function f4(x: unknown, p: P1 | P2 | F3) { -->f4 : (x: unknown, p: P1 | P2 | F3) => void -+>f4 : (x: unknown, p: F3 | P1 | P2) => void - >x : unknown - >p : F3 | P1 | P2 diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining1.types b/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining1.types index d16e781d337..9e8aafaa325 100644 --- a/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining1.types +++ b/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining1.types @@ -5,7 +5,7 @@ type X = { >X : X y?: { ->y : { z?: string | undefined; } | undefined +>y : { z?: string; } | undefined z?: string; >z : string | undefined @@ -57,15 +57,15 @@ isNotNull(x?.y?.z) ? title(x.y.z) : null; // should not error >isNotNull(x?.y?.z) : boolean >isNotNull : (x: A) => x is NonNullable >x?.y?.z : string | undefined ->x?.y : { z?: string | undefined; } | undefined +>x?.y : { z?: string; } | undefined >x : X ->y : { z?: string | undefined; } | undefined +>y : { z?: string; } | undefined >z : string | undefined >title(x.y.z) : string >title : (str: string) => string >x.y.z : string ->x.y : { z?: string | undefined; } +>x.y : { z?: string; } >x : X ->y : { z?: string | undefined; } +>y : { z?: string; } >z : string diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining1.types.diff b/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining1.types.diff deleted file mode 100644 index e2831381ffd..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining1.types.diff +++ /dev/null @@ -1,30 +0,0 @@ ---- old.typePredicatesOptionalChaining1.types -+++ new.typePredicatesOptionalChaining1.types -@@= skipped -4, +4 lines =@@ - >X : X - - y?: { -->y : { z?: string; } | undefined -+>y : { z?: string | undefined; } | undefined - - z?: string; - >z : string | undefined -@@= skipped -52, +52 lines =@@ - >isNotNull(x?.y?.z) : boolean - >isNotNull : (x: A) => x is NonNullable - >x?.y?.z : string | undefined -->x?.y : { z?: string; } | undefined -+>x?.y : { z?: string | undefined; } | undefined - >x : X -->y : { z?: string; } | undefined -+>y : { z?: string | undefined; } | undefined - >z : string | undefined - >title(x.y.z) : string - >title : (str: string) => string - >x.y.z : string -->x.y : { z?: string; } -+>x.y : { z?: string | undefined; } - >x : X -->y : { z?: string; } -+>y : { z?: string | undefined; } - >z : string diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining2.types b/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining2.types index 42ef597b91b..68faa113499 100644 --- a/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining2.types +++ b/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining2.types @@ -6,8 +6,8 @@ type Person = { name: string; } >name : string const getName1 = (person?: Person): string => { ->getName1 : (person?: Person | undefined) => string ->(person?: Person): string => { return typeof person?.name === 'string' ? person?.name : '';} : (person?: Person | undefined) => string +>getName1 : (person?: Person) => string +>(person?: Person): string => { return typeof person?.name === 'string' ? person?.name : '';} : (person?: Person) => string >person : Person | undefined return typeof person?.name === 'string' ? person?.name : ''; @@ -39,8 +39,8 @@ const isString = (value: any): value is string => { }; const getName2 = (person?: Person): string => { ->getName2 : (person?: Person | undefined) => string ->(person?: Person): string => { return isString(person?.name) ? person?.name : '';} : (person?: Person | undefined) => string +>getName2 : (person?: Person) => string +>(person?: Person): string => { return isString(person?.name) ? person?.name : '';} : (person?: Person) => string >person : Person | undefined return isString(person?.name) ? person?.name : ''; diff --git a/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining2.types.diff b/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining2.types.diff deleted file mode 100644 index 1f37f5d366e..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typePredicatesOptionalChaining2.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.typePredicatesOptionalChaining2.types -+++ new.typePredicatesOptionalChaining2.types -@@= skipped -5, +5 lines =@@ - >name : string - - const getName1 = (person?: Person): string => { -->getName1 : (person?: Person) => string -->(person?: Person): string => { return typeof person?.name === 'string' ? person?.name : '';} : (person?: Person) => string -+>getName1 : (person?: Person | undefined) => string -+>(person?: Person): string => { return typeof person?.name === 'string' ? person?.name : '';} : (person?: Person | undefined) => string - >person : Person | undefined - - return typeof person?.name === 'string' ? person?.name : ''; -@@= skipped -33, +33 lines =@@ - }; - - const getName2 = (person?: Person): string => { -->getName2 : (person?: Person) => string -->(person?: Person): string => { return isString(person?.name) ? person?.name : '';} : (person?: Person) => string -+>getName2 : (person?: Person | undefined) => string -+>(person?: Person): string => { return isString(person?.name) ? person?.name : '';} : (person?: Person | undefined) => string - >person : Person | undefined - - return isString(person?.name) ? person?.name : ''; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeReferenceDirectives13.types b/testdata/baselines/reference/submodule/compiler/typeReferenceDirectives13.types index f9ec9756a41..046a251f424 100644 --- a/testdata/baselines/reference/submodule/compiler/typeReferenceDirectives13.types +++ b/testdata/baselines/reference/submodule/compiler/typeReferenceDirectives13.types @@ -7,7 +7,7 @@ import {$} from "./ref"; export interface A { x: () => typeof $ ->x : () => { x: number; } +>x : () => typeof $ >$ : { x: number; } } diff --git a/testdata/baselines/reference/submodule/compiler/typeReferenceDirectives13.types.diff b/testdata/baselines/reference/submodule/compiler/typeReferenceDirectives13.types.diff deleted file mode 100644 index d42d51fc5ba..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeReferenceDirectives13.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.typeReferenceDirectives13.types -+++ new.typeReferenceDirectives13.types -@@= skipped -6, +6 lines =@@ - - export interface A { - x: () => typeof $ -->x : () => typeof $ -+>x : () => { x: number; } - >$ : { x: number; } - } diff --git a/testdata/baselines/reference/submodule/compiler/typeVariableConstraintIntersections.types b/testdata/baselines/reference/submodule/compiler/typeVariableConstraintIntersections.types index 13af8310e21..9236b544a3c 100644 --- a/testdata/baselines/reference/submodule/compiler/typeVariableConstraintIntersections.types +++ b/testdata/baselines/reference/submodule/compiler/typeVariableConstraintIntersections.types @@ -233,7 +233,7 @@ const optionHandlers: OptionHandlers = { }; function handleOption(option: Options & { kind: K }): string { ->handleOption : (option: Options & { kind: K; }) => string +>handleOption : (option: Options & { kind: K; }) => string >option : Options & { kind: K; } >kind : K diff --git a/testdata/baselines/reference/submodule/compiler/typeVariableConstraintIntersections.types.diff b/testdata/baselines/reference/submodule/compiler/typeVariableConstraintIntersections.types.diff index fea1bc08c01..3cf32a39b10 100644 --- a/testdata/baselines/reference/submodule/compiler/typeVariableConstraintIntersections.types.diff +++ b/testdata/baselines/reference/submodule/compiler/typeVariableConstraintIntersections.types.diff @@ -5,6 +5,6 @@ function handleOption(option: Options & { kind: K }): string { ->handleOption : (option: Options & { kind: K; }) => string -+>handleOption : (option: Options & { kind: K; }) => string ++>handleOption : (option: Options & { kind: K; }) => string >option : Options & { kind: K; } >kind : K diff --git a/testdata/baselines/reference/submodule/compiler/typeVariableConstraintedToAliasNotAssignableToUnion.types b/testdata/baselines/reference/submodule/compiler/typeVariableConstraintedToAliasNotAssignableToUnion.types index 06c5087b53b..1df58a7afcf 100644 --- a/testdata/baselines/reference/submodule/compiler/typeVariableConstraintedToAliasNotAssignableToUnion.types +++ b/testdata/baselines/reference/submodule/compiler/typeVariableConstraintedToAliasNotAssignableToUnion.types @@ -59,7 +59,7 @@ function fn(o: T) { } function fn2(o: T) { ->fn2 : >(o: T) => void +>fn2 : (o: T) => void >o : T aBoolean = o; diff --git a/testdata/baselines/reference/submodule/compiler/typeVariableConstraintedToAliasNotAssignableToUnion.types.diff b/testdata/baselines/reference/submodule/compiler/typeVariableConstraintedToAliasNotAssignableToUnion.types.diff deleted file mode 100644 index 3e17d6749f1..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeVariableConstraintedToAliasNotAssignableToUnion.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeVariableConstraintedToAliasNotAssignableToUnion.types -+++ new.typeVariableConstraintedToAliasNotAssignableToUnion.types -@@= skipped -58, +58 lines =@@ - } - - function fn2(o: T) { -->fn2 : (o: T) => void -+>fn2 : >(o: T) => void - >o : T - - aBoolean = o; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeofImportInstantiationExpression.types b/testdata/baselines/reference/submodule/compiler/typeofImportInstantiationExpression.types index 2ee43133bc8..123b2b8f419 100644 --- a/testdata/baselines/reference/submodule/compiler/typeofImportInstantiationExpression.types +++ b/testdata/baselines/reference/submodule/compiler/typeofImportInstantiationExpression.types @@ -30,7 +30,7 @@ type T1 = typeof import('./input.js').myFunction; >myFunction : error type T2 = typeof import('./input.js').myFunction; ->T2 : (arg: Arg) => { slug: "hello"; } +>T2 : (arg: Arg) => { slug: 'hello'; } >myFunction : error >slug : "hello" diff --git a/testdata/baselines/reference/submodule/compiler/typeofImportInstantiationExpression.types.diff b/testdata/baselines/reference/submodule/compiler/typeofImportInstantiationExpression.types.diff new file mode 100644 index 00000000000..fdc77f94a02 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/typeofImportInstantiationExpression.types.diff @@ -0,0 +1,10 @@ +--- old.typeofImportInstantiationExpression.types ++++ new.typeofImportInstantiationExpression.types +@@= skipped -29, +29 lines =@@ + >myFunction : error + + type T2 = typeof import('./input.js').myFunction; +->T2 : (arg: Arg) => { slug: "hello"; } ++>T2 : (arg: Arg) => { slug: 'hello'; } + >myFunction : error + >slug : "hello" diff --git a/testdata/baselines/reference/submodule/compiler/typeofInObjectLiteralType.types b/testdata/baselines/reference/submodule/compiler/typeofInObjectLiteralType.types index be980589a78..869d746fdbc 100644 --- a/testdata/baselines/reference/submodule/compiler/typeofInObjectLiteralType.types +++ b/testdata/baselines/reference/submodule/compiler/typeofInObjectLiteralType.types @@ -2,7 +2,7 @@ === typeofInObjectLiteralType.ts === var a: { b: number; c: typeof b }; // Should give error for attempting to use type query on b. ->a : { b: number; c: any; } +>a : { b: number; c: typeof b; } >b : number >c : any >b : any diff --git a/testdata/baselines/reference/submodule/compiler/typeofInObjectLiteralType.types.diff b/testdata/baselines/reference/submodule/compiler/typeofInObjectLiteralType.types.diff deleted file mode 100644 index de4305b1df4..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeofInObjectLiteralType.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeofInObjectLiteralType.types -+++ new.typeofInObjectLiteralType.types -@@= skipped -1, +1 lines =@@ - - === typeofInObjectLiteralType.ts === - var a: { b: number; c: typeof b }; // Should give error for attempting to use type query on b. -->a : { b: number; c: typeof b; } -+>a : { b: number; c: any; } - >b : number - >c : any - >b : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeofObjectInference.types b/testdata/baselines/reference/submodule/compiler/typeofObjectInference.types index 059f4da9d63..1c53d5b1df2 100644 --- a/testdata/baselines/reference/submodule/compiler/typeofObjectInference.types +++ b/testdata/baselines/reference/submodule/compiler/typeofObjectInference.types @@ -6,16 +6,16 @@ let val = 1 >1 : 1 function decorateA(fn: (first: {value: typeof val}) => O) { ->decorateA : (fn: (first: { value: number; }) => O) => () => O ->fn : (first: { value: number; }) => O ->first : { value: number; } +>decorateA : (fn: (first: { value: typeof val; }) => O) => () => O +>fn : (first: { value: typeof val; }) => O +>first : { value: typeof val; } >value : number >val : number return (): O => fn({value: val}) >(): O => fn({value: val}) : () => O >fn({value: val}) : O ->fn : (first: { value: number; }) => O +>fn : (first: { value: typeof val; }) => O >{value: val} : { value: number; } >value : number >val : number @@ -23,27 +23,27 @@ function decorateA(fn: (first: {value: typeof val}) => O) { let a = decorateA(({value}) => 5) >a : () => number >decorateA(({value}) => 5) : () => number ->decorateA : (fn: (first: { value: number; }) => O) => () => O ->({value}) => 5 : ({ value }: { value: number; }) => number +>decorateA : (fn: (first: { value: typeof val; }) => O) => () => O +>({value}) => 5 : ({ value }: { value: typeof val; }) => number >value : number >5 : 5 function decorateB(fn: (first: typeof val) => O) { ->decorateB : (fn: (first: number) => O) => () => O ->fn : (first: number) => O +>decorateB : (fn: (first: typeof val) => O) => () => O +>fn : (first: typeof val) => O >first : number >val : number return (): O => fn(val) >(): O => fn(val) : () => O >fn(val) : O ->fn : (first: number) => O +>fn : (first: typeof val) => O >val : number } let b = decorateB((value) => 5) >b : () => number >decorateB((value) => 5) : () => number ->decorateB : (fn: (first: number) => O) => () => O +>decorateB : (fn: (first: typeof val) => O) => () => O >(value) => 5 : (value: number) => number >value : number >5 : 5 diff --git a/testdata/baselines/reference/submodule/compiler/typeofObjectInference.types.diff b/testdata/baselines/reference/submodule/compiler/typeofObjectInference.types.diff deleted file mode 100644 index ae48c4d4ac9..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeofObjectInference.types.diff +++ /dev/null @@ -1,57 +0,0 @@ ---- old.typeofObjectInference.types -+++ new.typeofObjectInference.types -@@= skipped -5, +5 lines =@@ - >1 : 1 - - function decorateA(fn: (first: {value: typeof val}) => O) { -->decorateA : (fn: (first: { value: typeof val; }) => O) => () => O -->fn : (first: { value: typeof val; }) => O -->first : { value: typeof val; } -+>decorateA : (fn: (first: { value: number; }) => O) => () => O -+>fn : (first: { value: number; }) => O -+>first : { value: number; } - >value : number - >val : number - - return (): O => fn({value: val}) - >(): O => fn({value: val}) : () => O - >fn({value: val}) : O -->fn : (first: { value: typeof val; }) => O -+>fn : (first: { value: number; }) => O - >{value: val} : { value: number; } - >value : number - >val : number -@@= skipped -17, +17 lines =@@ - let a = decorateA(({value}) => 5) - >a : () => number - >decorateA(({value}) => 5) : () => number -->decorateA : (fn: (first: { value: typeof val; }) => O) => () => O -->({value}) => 5 : ({ value }: { value: typeof val; }) => number -+>decorateA : (fn: (first: { value: number; }) => O) => () => O -+>({value}) => 5 : ({ value }: { value: number; }) => number - >value : number - >5 : 5 - - function decorateB(fn: (first: typeof val) => O) { -->decorateB : (fn: (first: typeof val) => O) => () => O -->fn : (first: typeof val) => O -+>decorateB : (fn: (first: number) => O) => () => O -+>fn : (first: number) => O - >first : number - >val : number - - return (): O => fn(val) - >(): O => fn(val) : () => O - >fn(val) : O -->fn : (first: typeof val) => O -+>fn : (first: number) => O - >val : number - } - let b = decorateB((value) => 5) - >b : () => number - >decorateB((value) => 5) : () => number -->decorateB : (fn: (first: typeof val) => O) => () => O -+>decorateB : (fn: (first: number) => O) => () => O - >(value) => 5 : (value: number) => number - >value : number - >5 : 5 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/typeofThisInMethodSignature.types b/testdata/baselines/reference/submodule/compiler/typeofThisInMethodSignature.types index fc1103e6848..b9f74ec693d 100644 --- a/testdata/baselines/reference/submodule/compiler/typeofThisInMethodSignature.types +++ b/testdata/baselines/reference/submodule/compiler/typeofThisInMethodSignature.types @@ -11,7 +11,7 @@ export class A { >1 : 1 a(x: typeof this.x): void {} ->a : (x: number) => void +>a : (x: typeof this.x) => void >x : number >this.x : number >this : this @@ -21,9 +21,9 @@ export class A { const a = new A().a(1); >a : void >new A().a(1) : void ->new A().a : (x: number) => void +>new A().a : (x: typeof this.x) => void >new A() : A >A : typeof A ->a : (x: number) => void +>a : (x: typeof this.x) => void >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/typeofThisInMethodSignature.types.diff b/testdata/baselines/reference/submodule/compiler/typeofThisInMethodSignature.types.diff deleted file mode 100644 index 95174712869..00000000000 --- a/testdata/baselines/reference/submodule/compiler/typeofThisInMethodSignature.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.typeofThisInMethodSignature.types -+++ new.typeofThisInMethodSignature.types -@@= skipped -10, +10 lines =@@ - >1 : 1 - - a(x: typeof this.x): void {} -->a : (x: typeof this.x) => void -+>a : (x: number) => void - >x : number - >this.x : number - >this : this -@@= skipped -10, +10 lines =@@ - const a = new A().a(1); - >a : void - >new A().a(1) : void -->new A().a : (x: typeof this.x) => void -+>new A().a : (x: number) => void - >new A() : A - >A : typeof A -->a : (x: typeof this.x) => void -+>a : (x: number) => void - >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/uncalledFunctionChecksInConditional2.types b/testdata/baselines/reference/submodule/compiler/uncalledFunctionChecksInConditional2.types index 9bce59101ce..554e059ca8f 100644 --- a/testdata/baselines/reference/submodule/compiler/uncalledFunctionChecksInConditional2.types +++ b/testdata/baselines/reference/submodule/compiler/uncalledFunctionChecksInConditional2.types @@ -11,66 +11,66 @@ // Simplified if ( perf && ->perf && perf.measure && perf.clearMarks && perf.clearMeasures : (measureName?: string | undefined) => void ->perf && perf.measure && perf.clearMarks : (markName?: string | undefined) => void ->perf && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>perf && perf.measure && perf.clearMarks && perf.clearMeasures : (measureName?: string) => void +>perf && perf.measure && perf.clearMarks : (markName?: string) => void +>perf && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >perf : Performance perf.measure && ->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >perf : Performance ->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure perf.clearMarks && ->perf.clearMarks : (markName?: string | undefined) => void +>perf.clearMarks : (markName?: string) => void >perf : Performance ->clearMarks : (markName?: string | undefined) => void +>clearMarks : (markName?: string) => void perf.clearMeasures ->perf.clearMeasures : (measureName?: string | undefined) => void +>perf.clearMeasures : (measureName?: string) => void >perf : Performance ->clearMeasures : (measureName?: string | undefined) => void +>clearMeasures : (measureName?: string) => void ) { perf.measure(""); >perf.measure("") : PerformanceMeasure ->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >perf : Performance ->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >"" : "" perf.clearMarks("") >perf.clearMarks("") : void ->perf.clearMarks : (markName?: string | undefined) => void +>perf.clearMarks : (markName?: string) => void >perf : Performance ->clearMarks : (markName?: string | undefined) => void +>clearMarks : (markName?: string) => void >"" : "" perf.clearMeasures("") >perf.clearMeasures("") : void ->perf.clearMeasures : (measureName?: string | undefined) => void +>perf.clearMeasures : (measureName?: string) => void >perf : Performance ->clearMeasures : (measureName?: string | undefined) => void +>clearMeasures : (measureName?: string) => void >"" : "" } // With || if ( perf && ->perf && perf.mark && perf.measure || !!true : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure ->perf && perf.mark && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure ->perf && perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>perf && perf.mark && perf.measure || !!true : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure +>perf && perf.mark && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure +>perf && perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >perf : Performance perf.mark && ->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >perf : Performance ->mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark perf.measure || !!true ->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >perf : Performance ->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >!!true : true >!true : false >true : true @@ -78,32 +78,32 @@ ) { perf.mark(""); >perf.mark("") : PerformanceMark ->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >perf : Performance ->mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >"" : "" } // With ?? if ( ( ->( perf && perf.mark && perf.measure ) ?? !!true : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure ->( perf && perf.mark && perf.measure ) : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>( perf && perf.mark && perf.measure ) ?? !!true : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure +>( perf && perf.mark && perf.measure ) : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure perf && ->perf && perf.mark && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure ->perf && perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>perf && perf.mark && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure +>perf && perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >perf : Performance perf.mark && ->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >perf : Performance ->mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark perf.measure ->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >perf : Performance ->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure ) ?? !!true >!!true : true @@ -113,9 +113,9 @@ ) { perf.mark(""); >perf.mark("") : PerformanceMark ->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >perf : Performance ->mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >"" : "" } }; @@ -141,31 +141,31 @@ declare let inBrowser: boolean; /* istanbul ignore if */ if ( perf && ->perf && perf.mark && perf.measure && perf.clearMarks && perf.clearMeasures : false | ((measureName?: string | undefined) => void) ->perf && perf.mark && perf.measure && perf.clearMarks : false | ((markName?: string | undefined) => void) ->perf && perf.mark && perf.measure : false | ((measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure) ->perf && perf.mark : false | ((markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark) +>perf && perf.mark && perf.measure && perf.clearMarks && perf.clearMeasures : false | ((measureName?: string) => void) +>perf && perf.mark && perf.measure && perf.clearMarks : false | ((markName?: string) => void) +>perf && perf.mark && perf.measure : false | ((measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure) +>perf && perf.mark : false | ((markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark) >perf : false | Performance perf.mark && ->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >perf : Performance ->mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark perf.measure && ->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >perf : Performance ->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure perf.clearMarks && ->perf.clearMarks : (markName?: string | undefined) => void +>perf.clearMarks : (markName?: string) => void >perf : Performance ->clearMarks : (markName?: string | undefined) => void +>clearMarks : (markName?: string) => void perf.clearMeasures ->perf.clearMeasures : (measureName?: string | undefined) => void +>perf.clearMeasures : (measureName?: string) => void >perf : Performance ->clearMeasures : (measureName?: string | undefined) => void +>clearMeasures : (measureName?: string) => void ) { mark = (tag) => perf.mark(tag) @@ -174,9 +174,9 @@ declare let inBrowser: boolean; >(tag) => perf.mark(tag) : (tag: any) => PerformanceMark >tag : any >perf.mark(tag) : PerformanceMark ->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >perf : Performance ->mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark +>mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark >tag : any measure = (name, startTag, endTag) => { @@ -189,25 +189,25 @@ declare let inBrowser: boolean; perf.measure(name, startTag, endTag) >perf.measure(name, startTag, endTag) : PerformanceMeasure ->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >perf : Performance ->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure +>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure >name : any >startTag : any >endTag : any perf.clearMarks(startTag) >perf.clearMarks(startTag) : void ->perf.clearMarks : (markName?: string | undefined) => void +>perf.clearMarks : (markName?: string) => void >perf : Performance ->clearMarks : (markName?: string | undefined) => void +>clearMarks : (markName?: string) => void >startTag : any perf.clearMarks(endTag) >perf.clearMarks(endTag) : void ->perf.clearMarks : (markName?: string | undefined) => void +>perf.clearMarks : (markName?: string) => void >perf : Performance ->clearMarks : (markName?: string | undefined) => void +>clearMarks : (markName?: string) => void >endTag : any // perf.clearMeasures(name) diff --git a/testdata/baselines/reference/submodule/compiler/uncalledFunctionChecksInConditional2.types.diff b/testdata/baselines/reference/submodule/compiler/uncalledFunctionChecksInConditional2.types.diff deleted file mode 100644 index 39c4e72feb5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/uncalledFunctionChecksInConditional2.types.diff +++ /dev/null @@ -1,234 +0,0 @@ ---- old.uncalledFunctionChecksInConditional2.types -+++ new.uncalledFunctionChecksInConditional2.types -@@= skipped -10, +10 lines =@@ - // Simplified - if ( - perf && -->perf && perf.measure && perf.clearMarks && perf.clearMeasures : (measureName?: string) => void -->perf && perf.measure && perf.clearMarks : (markName?: string) => void -->perf && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>perf && perf.measure && perf.clearMarks && perf.clearMeasures : (measureName?: string | undefined) => void -+>perf && perf.measure && perf.clearMarks : (markName?: string | undefined) => void -+>perf && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >perf : Performance - - perf.measure && -->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >perf : Performance -->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - - perf.clearMarks && -->perf.clearMarks : (markName?: string) => void -+>perf.clearMarks : (markName?: string | undefined) => void - >perf : Performance -->clearMarks : (markName?: string) => void -+>clearMarks : (markName?: string | undefined) => void - - perf.clearMeasures -->perf.clearMeasures : (measureName?: string) => void -+>perf.clearMeasures : (measureName?: string | undefined) => void - >perf : Performance -->clearMeasures : (measureName?: string) => void -+>clearMeasures : (measureName?: string | undefined) => void - - ) { - perf.measure(""); - >perf.measure("") : PerformanceMeasure -->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >perf : Performance -->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >"" : "" - - perf.clearMarks("") - >perf.clearMarks("") : void -->perf.clearMarks : (markName?: string) => void -+>perf.clearMarks : (markName?: string | undefined) => void - >perf : Performance -->clearMarks : (markName?: string) => void -+>clearMarks : (markName?: string | undefined) => void - >"" : "" - - perf.clearMeasures("") - >perf.clearMeasures("") : void -->perf.clearMeasures : (measureName?: string) => void -+>perf.clearMeasures : (measureName?: string | undefined) => void - >perf : Performance -->clearMeasures : (measureName?: string) => void -+>clearMeasures : (measureName?: string | undefined) => void - >"" : "" - } - - // With || - if ( - perf && -->perf && perf.mark && perf.measure || !!true : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -->perf && perf.mark && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -->perf && perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>perf && perf.mark && perf.measure || !!true : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure -+>perf && perf.mark && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure -+>perf && perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >perf : Performance - - perf.mark && -->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >perf : Performance -->mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - - perf.measure || !!true -->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >perf : Performance -->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >!!true : true - >!true : false - >true : true -@@= skipped -67, +67 lines =@@ - ) { - perf.mark(""); - >perf.mark("") : PerformanceMark -->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >perf : Performance -->mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >"" : "" - } - - // With ?? - if ( - ( -->( perf && perf.mark && perf.measure ) ?? !!true : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -->( perf && perf.mark && perf.measure ) : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>( perf && perf.mark && perf.measure ) ?? !!true : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure -+>( perf && perf.mark && perf.measure ) : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - - perf && -->perf && perf.mark && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -->perf && perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>perf && perf.mark && perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure -+>perf && perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >perf : Performance - - perf.mark && -->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >perf : Performance -->mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - - perf.measure -->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >perf : Performance -->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - - ) ?? !!true - >!!true : true -@@= skipped -35, +35 lines =@@ - ) { - perf.mark(""); - >perf.mark("") : PerformanceMark -->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >perf : Performance -->mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >"" : "" - } - }; -@@= skipped -28, +28 lines =@@ - /* istanbul ignore if */ - if ( - perf && -->perf && perf.mark && perf.measure && perf.clearMarks && perf.clearMeasures : false | ((measureName?: string) => void) -->perf && perf.mark && perf.measure && perf.clearMarks : false | ((markName?: string) => void) -->perf && perf.mark && perf.measure : false | ((measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure) -->perf && perf.mark : false | ((markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark) -+>perf && perf.mark && perf.measure && perf.clearMarks && perf.clearMeasures : false | ((measureName?: string | undefined) => void) -+>perf && perf.mark && perf.measure && perf.clearMarks : false | ((markName?: string | undefined) => void) -+>perf && perf.mark && perf.measure : false | ((measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure) -+>perf && perf.mark : false | ((markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark) - >perf : false | Performance - - perf.mark && -->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >perf : Performance -->mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - - perf.measure && -->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >perf : Performance -->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - - perf.clearMarks && -->perf.clearMarks : (markName?: string) => void -+>perf.clearMarks : (markName?: string | undefined) => void - >perf : Performance -->clearMarks : (markName?: string) => void -+>clearMarks : (markName?: string | undefined) => void - - perf.clearMeasures -->perf.clearMeasures : (measureName?: string) => void -+>perf.clearMeasures : (measureName?: string | undefined) => void - >perf : Performance -->clearMeasures : (measureName?: string) => void -+>clearMeasures : (measureName?: string | undefined) => void - - ) { - mark = (tag) => perf.mark(tag) -@@= skipped -33, +33 lines =@@ - >(tag) => perf.mark(tag) : (tag: any) => PerformanceMark - >tag : any - >perf.mark(tag) : PerformanceMark -->perf.mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>perf.mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >perf : Performance -->mark : (markName: string, markOptions?: PerformanceMarkOptions) => PerformanceMark -+>mark : (markName: string, markOptions?: PerformanceMarkOptions | undefined) => PerformanceMark - >tag : any - - measure = (name, startTag, endTag) => { -@@= skipped -15, +15 lines =@@ - - perf.measure(name, startTag, endTag) - >perf.measure(name, startTag, endTag) : PerformanceMeasure -->perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>perf.measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >perf : Performance -->measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string) => PerformanceMeasure -+>measure : (measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions | undefined, endMark?: string | undefined) => PerformanceMeasure - >name : any - >startTag : any - >endTag : any - - perf.clearMarks(startTag) - >perf.clearMarks(startTag) : void -->perf.clearMarks : (markName?: string) => void -+>perf.clearMarks : (markName?: string | undefined) => void - >perf : Performance -->clearMarks : (markName?: string) => void -+>clearMarks : (markName?: string | undefined) => void - >startTag : any - - perf.clearMarks(endTag) - >perf.clearMarks(endTag) : void -->perf.clearMarks : (markName?: string) => void -+>perf.clearMarks : (markName?: string | undefined) => void - >perf : Performance -->clearMarks : (markName?: string) => void -+>clearMarks : (markName?: string | undefined) => void - >endTag : any - - // perf.clearMeasures(name) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types b/testdata/baselines/reference/submodule/compiler/undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types index dfbe41a5ce6..dbc56a92258 100644 --- a/testdata/baselines/reference/submodule/compiler/undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types +++ b/testdata/baselines/reference/submodule/compiler/undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types @@ -30,9 +30,9 @@ if (s.value !== undefined) { >undefined : undefined s; ->s : { type: "string"; value: string; } | { type: "number"; value: number; } | { type: "unknown"; value: unknown; } +>s : { type: 'string'; value: string; } | { type: 'number'; value: number; } | { type: 'unknown'; value: unknown; } } else { s; ->s : { type: "unknown"; value: unknown; } | { value: undefined; } +>s : { type: 'unknown'; value: unknown; } | { value: undefined; } } diff --git a/testdata/baselines/reference/submodule/compiler/undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types.diff b/testdata/baselines/reference/submodule/compiler/undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types.diff new file mode 100644 index 00000000000..6392c9ca525 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types.diff @@ -0,0 +1,14 @@ +--- old.undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types ++++ new.undefinedAsDiscriminantWithUnknown(strictnullchecks=true).types +@@= skipped -29, +29 lines =@@ + >undefined : undefined + + s; +->s : { type: "string"; value: string; } | { type: "number"; value: number; } | { type: "unknown"; value: unknown; } ++>s : { type: 'string'; value: string; } | { type: 'number'; value: number; } | { type: 'unknown'; value: unknown; } + } + else { + s; +->s : { type: "unknown"; value: unknown; } | { value: undefined; } ++>s : { type: 'unknown'; value: unknown; } | { value: undefined; } + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types b/testdata/baselines/reference/submodule/compiler/unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types index 70995b88d00..427f3946cc6 100644 --- a/testdata/baselines/reference/submodule/compiler/unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types +++ b/testdata/baselines/reference/submodule/compiler/unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types @@ -11,7 +11,7 @@ interface INumberDictionary { } declare function forEach(from: IStringDictionary | INumberDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any); ->forEach : (from: INumberDictionary | IStringDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any) => any +>forEach : (from: IStringDictionary | INumberDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any) => any >from : INumberDictionary | IStringDictionary >callback : (entry: { key: any; value: T; }, remove: () => void) => any >entry : { key: any; value: T; } @@ -25,7 +25,7 @@ let count = 0; forEach({ toString: 123 }, () => count++); >forEach({ toString: 123 }, () => count++) : any ->forEach : (from: INumberDictionary | IStringDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any) => any +>forEach : (from: IStringDictionary | INumberDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any) => any >{ toString: 123 } : { toString: number; } >toString : number >123 : 123 diff --git a/testdata/baselines/reference/submodule/compiler/unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types.diff b/testdata/baselines/reference/submodule/compiler/unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types.diff deleted file mode 100644 index e83ace5510b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types -+++ new.unionExcessPropertyCheckNoApparentPropTypeMismatchErrors.types -@@= skipped -10, +10 lines =@@ - } - - declare function forEach(from: IStringDictionary | INumberDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any); -->forEach : (from: IStringDictionary | INumberDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any) => any -+>forEach : (from: INumberDictionary | IStringDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any) => any - >from : INumberDictionary | IStringDictionary - >callback : (entry: { key: any; value: T; }, remove: () => void) => any - >entry : { key: any; value: T; } -@@= skipped -14, +14 lines =@@ - - forEach({ toString: 123 }, () => count++); - >forEach({ toString: 123 }, () => count++) : any -->forEach : (from: IStringDictionary | INumberDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any) => any -+>forEach : (from: INumberDictionary | IStringDictionary, callback: (entry: { key: any; value: T; }, remove: () => void) => any) => any - >{ toString: 123 } : { toString: number; } - >toString : number - >123 : 123 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unionExcessPropsWithPartialMember.types b/testdata/baselines/reference/submodule/compiler/unionExcessPropsWithPartialMember.types index fc9bf2a719c..5101d8fd209 100644 --- a/testdata/baselines/reference/submodule/compiler/unionExcessPropsWithPartialMember.types +++ b/testdata/baselines/reference/submodule/compiler/unionExcessPropsWithPartialMember.types @@ -24,9 +24,9 @@ declare var a: A; >a : A ab = {...a, y: (null as any as string | undefined)}; // Should be allowed, since `y` is missing on `A` ->ab = {...a, y: (null as any as string | undefined)} : { unused?: string | undefined; x: string; y: string | undefined; } +>ab = {...a, y: (null as any as string | undefined)} : { unused?: string; x: string; y: string | undefined; } >ab : A | B ->{...a, y: (null as any as string | undefined)} : { unused?: string | undefined; x: string; y: string | undefined; } +>{...a, y: (null as any as string | undefined)} : { unused?: string; x: string; y: string | undefined; } >a : A >y : string | undefined >(null as any as string | undefined) : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/unionExcessPropsWithPartialMember.types.diff b/testdata/baselines/reference/submodule/compiler/unionExcessPropsWithPartialMember.types.diff deleted file mode 100644 index 9f24b327845..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unionExcessPropsWithPartialMember.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.unionExcessPropsWithPartialMember.types -+++ new.unionExcessPropsWithPartialMember.types -@@= skipped -23, +23 lines =@@ - >a : A - - ab = {...a, y: (null as any as string | undefined)}; // Should be allowed, since `y` is missing on `A` -->ab = {...a, y: (null as any as string | undefined)} : { unused?: string; x: string; y: string | undefined; } -+>ab = {...a, y: (null as any as string | undefined)} : { unused?: string | undefined; x: string; y: string | undefined; } - >ab : A | B -->{...a, y: (null as any as string | undefined)} : { unused?: string; x: string; y: string | undefined; } -+>{...a, y: (null as any as string | undefined)} : { unused?: string | undefined; x: string; y: string | undefined; } - >a : A - >y : string | undefined - >(null as any as string | undefined) : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unionOfClassCalls.types b/testdata/baselines/reference/submodule/compiler/unionOfClassCalls.types index 3ca9e597bb2..e441134a878 100644 --- a/testdata/baselines/reference/submodule/compiler/unionOfClassCalls.types +++ b/testdata/baselines/reference/submodule/compiler/unionOfClassCalls.types @@ -55,7 +55,7 @@ arr.map((a: number | string, index: number) => { >arr.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]) >arr : 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[]) ->(a: number | string, index: number) => { return index} : (a: string | number, index: number) => number +>(a: number | string, index: number) => { return index} : (a: number | string, index: number) => number >a : string | number >index : number @@ -70,7 +70,7 @@ arr.reduce((acc: Array, a: number | string, index: number) => { >arr.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; } | { (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; } >arr : string[] | number[] >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; } | { (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: Array, a: number | string, index: number) => { return []} : (acc: string[], a: string | number, index: number) => never[] +>(acc: Array, a: number | string, index: number) => { return []} : (acc: Array, a: number | string, index: number) => never[] >acc : string[] >a : string | number >index : number @@ -86,7 +86,7 @@ arr.forEach((a: number | string, index: number) => { >arr.forEach : ((callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void) | ((callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void) >arr : string[] | number[] >forEach : ((callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void) | ((callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void) ->(a: number | string, index: number) => { return index} : (a: string | number, index: number) => number +>(a: number | string, index: number) => { return index} : (a: number | string, index: number) => number >a : string | number >index : number diff --git a/testdata/baselines/reference/submodule/compiler/unionOfClassCalls.types.diff b/testdata/baselines/reference/submodule/compiler/unionOfClassCalls.types.diff deleted file mode 100644 index 4a515ef11f8..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unionOfClassCalls.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.unionOfClassCalls.types -+++ new.unionOfClassCalls.types -@@= skipped -54, +54 lines =@@ - >arr.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]) - >arr : 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[]) -->(a: number | string, index: number) => { return index} : (a: number | string, index: number) => number -+>(a: number | string, index: number) => { return index} : (a: string | number, index: number) => number - >a : string | number - >index : number - -@@= skipped -15, +15 lines =@@ - >arr.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; } | { (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; } - >arr : string[] | number[] - >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; } | { (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: Array, a: number | string, index: number) => { return []} : (acc: Array, a: number | string, index: number) => never[] -+>(acc: Array, a: number | string, index: number) => { return []} : (acc: string[], a: string | number, index: number) => never[] - >acc : string[] - >a : string | number - >index : number -@@= skipped -16, +16 lines =@@ - >arr.forEach : ((callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void) | ((callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void) - >arr : string[] | number[] - >forEach : ((callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void) | ((callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void) -->(a: number | string, index: number) => { return index} : (a: number | string, index: number) => number -+>(a: number | string, index: number) => { return index} : (a: string | number, index: number) => number - >a : string | number - >index : number diff --git a/testdata/baselines/reference/submodule/compiler/unionOfEnumInference.types b/testdata/baselines/reference/submodule/compiler/unionOfEnumInference.types index dbe044f49be..2c7aca216ac 100644 --- a/testdata/baselines/reference/submodule/compiler/unionOfEnumInference.types +++ b/testdata/baselines/reference/submodule/compiler/unionOfEnumInference.types @@ -19,7 +19,7 @@ function foo(x: Interface) { } >x : Interface function bar(x: Interface | Interface) { ->bar : (x: Interface | Interface) => void +>bar : (x: Interface | Interface) => void >x : Interface | Interface >Enum : any >Enum : any diff --git a/testdata/baselines/reference/submodule/compiler/unionOfEnumInference.types.diff b/testdata/baselines/reference/submodule/compiler/unionOfEnumInference.types.diff deleted file mode 100644 index 01a6d48f7a2..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unionOfEnumInference.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.unionOfEnumInference.types -+++ new.unionOfEnumInference.types -@@= skipped -18, +18 lines =@@ - >x : Interface - - function bar(x: Interface | Interface) { -->bar : (x: Interface | Interface) => void -+>bar : (x: Interface | Interface) => void - >x : Interface | Interface - >Enum : any - >Enum : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unionOfFunctionAndSignatureIsCallable.types b/testdata/baselines/reference/submodule/compiler/unionOfFunctionAndSignatureIsCallable.types index ecd4059df70..c0c27b089c9 100644 --- a/testdata/baselines/reference/submodule/compiler/unionOfFunctionAndSignatureIsCallable.types +++ b/testdata/baselines/reference/submodule/compiler/unionOfFunctionAndSignatureIsCallable.types @@ -2,7 +2,7 @@ === unionOfFunctionAndSignatureIsCallable.ts === function f1(c1: Function, c2: () => object, callable: typeof c1 | typeof c2) { ->f1 : (c1: Function, c2: () => object, callable: Function | (() => object)) => void +>f1 : (c1: Function, c2: () => object, callable: typeof c1 | typeof c2) => void >c1 : Function >c2 : () => object >callable : Function | (() => object) diff --git a/testdata/baselines/reference/submodule/compiler/unionOfFunctionAndSignatureIsCallable.types.diff b/testdata/baselines/reference/submodule/compiler/unionOfFunctionAndSignatureIsCallable.types.diff deleted file mode 100644 index 3f9f3ac6a96..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unionOfFunctionAndSignatureIsCallable.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.unionOfFunctionAndSignatureIsCallable.types -+++ new.unionOfFunctionAndSignatureIsCallable.types -@@= skipped -1, +1 lines =@@ - - === unionOfFunctionAndSignatureIsCallable.ts === - function f1(c1: Function, c2: () => object, callable: typeof c1 | typeof c2) { -->f1 : (c1: Function, c2: () => object, callable: typeof c1 | typeof c2) => void -+>f1 : (c1: Function, c2: () => object, callable: Function | (() => object)) => void - >c1 : Function - >c2 : () => object - >callable : Function | (() => object) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unionReductionMutualSubtypes.types b/testdata/baselines/reference/submodule/compiler/unionReductionMutualSubtypes.types index b72bf32aef1..92143c9c9ec 100644 --- a/testdata/baselines/reference/submodule/compiler/unionReductionMutualSubtypes.types +++ b/testdata/baselines/reference/submodule/compiler/unionReductionMutualSubtypes.types @@ -17,24 +17,24 @@ declare const val: ReturnVal; >val : ReturnVal function run(options: { something?(b?: string): void }) { ->run : (options: { something?(b?: string | undefined): void; }) => void ->options : { something?(b?: string | undefined): void; } ->something : ((b?: string | undefined) => void) | undefined +>run : (options: { something?(b?: string): void; }) => void +>options : { something?(b?: string): void; } +>something : ((b?: string) => void) | undefined >b : string | undefined const something = options.something ?? val.something; ->something : (b?: string | undefined) => void ->options.something ?? val.something : (b?: string | undefined) => void ->options.something : ((b?: string | undefined) => void) | undefined ->options : { something?(b?: string | undefined): void; } ->something : ((b?: string | undefined) => void) | undefined +>something : (b?: string) => void +>options.something ?? val.something : (b?: string) => void +>options.something : ((b?: string) => void) | undefined +>options : { something?(b?: string): void; } +>something : ((b?: string) => void) | undefined >val.something : () => void >val : ReturnVal >something : () => void something(''); >something('') : void ->something : (b?: string | undefined) => void +>something : (b?: string) => void >'' : "" } diff --git a/testdata/baselines/reference/submodule/compiler/unionReductionMutualSubtypes.types.diff b/testdata/baselines/reference/submodule/compiler/unionReductionMutualSubtypes.types.diff deleted file mode 100644 index bba7a836106..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unionReductionMutualSubtypes.types.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- old.unionReductionMutualSubtypes.types -+++ new.unionReductionMutualSubtypes.types -@@= skipped -16, +16 lines =@@ - >val : ReturnVal - - function run(options: { something?(b?: string): void }) { -->run : (options: { something?(b?: string): void; }) => void -->options : { something?(b?: string): void; } -->something : ((b?: string) => void) | undefined -+>run : (options: { something?(b?: string | undefined): void; }) => void -+>options : { something?(b?: string | undefined): void; } -+>something : ((b?: string | undefined) => void) | undefined - >b : string | undefined - - const something = options.something ?? val.something; -->something : (b?: string) => void -->options.something ?? val.something : (b?: string) => void -->options.something : ((b?: string) => void) | undefined -->options : { something?(b?: string): void; } -->something : ((b?: string) => void) | undefined -+>something : (b?: string | undefined) => void -+>options.something ?? val.something : (b?: string | undefined) => void -+>options.something : ((b?: string | undefined) => void) | undefined -+>options : { something?(b?: string | undefined): void; } -+>something : ((b?: string | undefined) => void) | undefined - >val.something : () => void - >val : ReturnVal - >something : () => void - - something(''); - >something('') : void -->something : (b?: string) => void -+>something : (b?: string | undefined) => void - >'' : "" - } diff --git a/testdata/baselines/reference/submodule/compiler/unionTypeWithIndexAndTuple.types b/testdata/baselines/reference/submodule/compiler/unionTypeWithIndexAndTuple.types index c345ab0696d..ed85d2cb6cd 100644 --- a/testdata/baselines/reference/submodule/compiler/unionTypeWithIndexAndTuple.types +++ b/testdata/baselines/reference/submodule/compiler/unionTypeWithIndexAndTuple.types @@ -9,12 +9,12 @@ interface I { >someOtherProperty : number } function f(args: ["a"] | I) { } ->f : (args: I | ["a"]) => void +>f : (args: ["a"] | I) => void >args : I | ["a"] f(["a"]); >f(["a"]) : void ->f : (args: I | ["a"]) => void +>f : (args: ["a"] | I) => void >["a"] : ["a"] >"a" : "a" diff --git a/testdata/baselines/reference/submodule/compiler/unionTypeWithIndexAndTuple.types.diff b/testdata/baselines/reference/submodule/compiler/unionTypeWithIndexAndTuple.types.diff deleted file mode 100644 index cfb8f036974..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unionTypeWithIndexAndTuple.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.unionTypeWithIndexAndTuple.types -+++ new.unionTypeWithIndexAndTuple.types -@@= skipped -8, +8 lines =@@ - >someOtherProperty : number - } - function f(args: ["a"] | I) { } -->f : (args: ["a"] | I) => void -+>f : (args: I | ["a"]) => void - >args : I | ["a"] - - f(["a"]); - >f(["a"]) : void -->f : (args: ["a"] | I) => void -+>f : (args: I | ["a"]) => void - >["a"] : ["a"] - >"a" : "a" diff --git a/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.errors.txt b/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.errors.txt index b5b1605b40d..4708c0a617d 100644 --- a/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.errors.txt @@ -1,4 +1,4 @@ -unionTypeWithRecursiveSubtypeReduction3.ts(5,5): error TS2322: Type '{ prop: number; } | { prop: { prop: number; } | any; }' is not assignable to type 'string'. +unionTypeWithRecursiveSubtypeReduction3.ts(5,5): error TS2322: Type '{ prop: number; } | { prop: T27; }' is not assignable to type 'string'. Type '{ prop: number; }' is not assignable to type 'string'. @@ -9,6 +9,6 @@ unionTypeWithRecursiveSubtypeReduction3.ts(5,5): error TS2322: Type '{ prop: num declare var b: T27; var s: string = b; ~ -!!! error TS2322: Type '{ prop: number; } | { prop: { prop: number; } | any; }' is not assignable to type 'string'. +!!! error TS2322: Type '{ prop: number; } | { prop: T27; }' is not assignable to type 'string'. !!! error TS2322: Type '{ prop: number; }' is not assignable to type 'string'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.errors.txt.diff new file mode 100644 index 00000000000..b3750be6c31 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.errors.txt.diff @@ -0,0 +1,16 @@ +--- old.unionTypeWithRecursiveSubtypeReduction3.errors.txt ++++ new.unionTypeWithRecursiveSubtypeReduction3.errors.txt +@@= skipped -0, +0 lines =@@ +-unionTypeWithRecursiveSubtypeReduction3.ts(5,5): error TS2322: Type '{ prop: number; } | { prop: { prop: number; } | any; }' is not assignable to type 'string'. ++unionTypeWithRecursiveSubtypeReduction3.ts(5,5): error TS2322: Type '{ prop: number; } | { prop: T27; }' is not assignable to type 'string'. + Type '{ prop: number; }' is not assignable to type 'string'. + + +@@= skipped -8, +8 lines =@@ + declare var b: T27; + var s: string = b; + ~ +-!!! error TS2322: Type '{ prop: number; } | { prop: { prop: number; } | any; }' is not assignable to type 'string'. ++!!! error TS2322: Type '{ prop: number; } | { prop: T27; }' is not assignable to type 'string'. + !!! error TS2322: Type '{ prop: number; }' is not assignable to type 'string'. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.types b/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.types index dcd8d95e2cd..964ef09d1fa 100644 --- a/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.types +++ b/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.types @@ -2,18 +2,18 @@ === unionTypeWithRecursiveSubtypeReduction3.ts === declare var a27: { prop: number } | { prop: T27 }; ->a27 : { prop: number; } | { prop: { prop: number; } | any; } +>a27 : { prop: number; } | { prop: T27; } >prop : number ->prop : { prop: number; } | { prop: { prop: number; } | any; } +>prop : { prop: number; } | { prop: T27; } type T27 = typeof a27; ->T27 : { prop: number; } | { prop: { prop: number; } | any; } ->a27 : { prop: number; } | { prop: { prop: number; } | any; } +>T27 : { prop: number; } | { prop: T27; } +>a27 : { prop: number; } | { prop: T27; } declare var b: T27; ->b : { prop: number; } | { prop: { prop: number; } | any; } +>b : { prop: number; } | { prop: T27; } var s: string = b; >s : string ->b : { prop: number; } | { prop: { prop: number; } | any; } +>b : { prop: number; } | { prop: T27; } diff --git a/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.types.diff b/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.types.diff deleted file mode 100644 index 2e021ffa9ee..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unionTypeWithRecursiveSubtypeReduction3.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.unionTypeWithRecursiveSubtypeReduction3.types -+++ new.unionTypeWithRecursiveSubtypeReduction3.types -@@= skipped -1, +1 lines =@@ - - === unionTypeWithRecursiveSubtypeReduction3.ts === - declare var a27: { prop: number } | { prop: T27 }; -->a27 : { prop: number; } | { prop: T27; } -+>a27 : { prop: number; } | { prop: { prop: number; } | any; } - >prop : number -->prop : { prop: number; } | { prop: T27; } -+>prop : { prop: number; } | { prop: { prop: number; } | any; } - - type T27 = typeof a27; -->T27 : { prop: number; } | { prop: T27; } -->a27 : { prop: number; } | { prop: T27; } -+>T27 : { prop: number; } | { prop: { prop: number; } | any; } -+>a27 : { prop: number; } | { prop: { prop: number; } | any; } - - declare var b: T27; -->b : { prop: number; } | { prop: T27; } -+>b : { prop: number; } | { prop: { prop: number; } | any; } - - var s: string = b; - >s : string -->b : { prop: number; } | { prop: T27; } -+>b : { prop: number; } | { prop: { prop: number; } | any; } diff --git a/testdata/baselines/reference/submodule/compiler/unparenthesizedConstructorTypeInUnionOrIntersection.types b/testdata/baselines/reference/submodule/compiler/unparenthesizedConstructorTypeInUnionOrIntersection.types index 7ab1b373f7e..cb118522986 100644 --- a/testdata/baselines/reference/submodule/compiler/unparenthesizedConstructorTypeInUnionOrIntersection.types +++ b/testdata/baselines/reference/submodule/compiler/unparenthesizedConstructorTypeInUnionOrIntersection.types @@ -12,7 +12,7 @@ type U3 = | new () => number >U3 : new () => number type U4 = | new (foo?: number) => void; ->U4 : new (foo?: number | undefined) => void +>U4 : new (foo?: number) => void >foo : number | undefined type U5 = string | new (number: number, foo?: string) => void | number; @@ -40,7 +40,7 @@ type I3 = & new () => boolean >I3 : new () => boolean type I4 = & new () => boolean & null; ->I4 : new () => never +>I4 : new () => boolean & null type I5 = string & new (any: any, any2: any) => any & any; >I5 : I5 diff --git a/testdata/baselines/reference/submodule/compiler/unparenthesizedConstructorTypeInUnionOrIntersection.types.diff b/testdata/baselines/reference/submodule/compiler/unparenthesizedConstructorTypeInUnionOrIntersection.types.diff deleted file mode 100644 index af75c5b903b..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unparenthesizedConstructorTypeInUnionOrIntersection.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.unparenthesizedConstructorTypeInUnionOrIntersection.types -+++ new.unparenthesizedConstructorTypeInUnionOrIntersection.types -@@= skipped -11, +11 lines =@@ - >U3 : new () => number - - type U4 = | new (foo?: number) => void; -->U4 : new (foo?: number) => void -+>U4 : new (foo?: number | undefined) => void - >foo : number | undefined - - type U5 = string | new (number: number, foo?: string) => void | number; -@@= skipped -28, +28 lines =@@ - >I3 : new () => boolean - - type I4 = & new () => boolean & null; -->I4 : new () => boolean & null -+>I4 : new () => never - - type I5 = string & new (any: any, any2: any) => any & any; - >I5 : I5 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unparenthesizedFunctionTypeInUnionOrIntersection.types b/testdata/baselines/reference/submodule/compiler/unparenthesizedFunctionTypeInUnionOrIntersection.types index 199a32fa1d7..537f6cc4588 100644 --- a/testdata/baselines/reference/submodule/compiler/unparenthesizedFunctionTypeInUnionOrIntersection.types +++ b/testdata/baselines/reference/submodule/compiler/unparenthesizedFunctionTypeInUnionOrIntersection.types @@ -12,7 +12,7 @@ type U3 = | () => number >U3 : () => number type U4 = | (foo?: number) => void; ->U4 : (foo?: number | undefined) => void +>U4 : (foo?: number) => void >foo : number | undefined type U5 = string | (number: number, foo?: string) => void | number; @@ -40,7 +40,7 @@ type I3 = & () => boolean >I3 : () => boolean type I4 = & () => boolean & null; ->I4 : () => never +>I4 : () => boolean & null type I5 = string & (any: any, any2: any) => any & any; >I5 : I5 diff --git a/testdata/baselines/reference/submodule/compiler/unparenthesizedFunctionTypeInUnionOrIntersection.types.diff b/testdata/baselines/reference/submodule/compiler/unparenthesizedFunctionTypeInUnionOrIntersection.types.diff deleted file mode 100644 index 609729d5d65..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unparenthesizedFunctionTypeInUnionOrIntersection.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.unparenthesizedFunctionTypeInUnionOrIntersection.types -+++ new.unparenthesizedFunctionTypeInUnionOrIntersection.types -@@= skipped -11, +11 lines =@@ - >U3 : () => number - - type U4 = | (foo?: number) => void; -->U4 : (foo?: number) => void -+>U4 : (foo?: number | undefined) => void - >foo : number | undefined - - type U5 = string | (number: number, foo?: string) => void | number; -@@= skipped -28, +28 lines =@@ - >I3 : () => boolean - - type I4 = & () => boolean & null; -->I4 : () => boolean & null -+>I4 : () => never - - type I5 = string & (any: any, any2: any) => any & any; - >I5 : I5 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unusedLocalsInMethod4.types b/testdata/baselines/reference/submodule/compiler/unusedLocalsInMethod4.types index ab9091a49b3..1d9d93c4d3e 100644 --- a/testdata/baselines/reference/submodule/compiler/unusedLocalsInMethod4.types +++ b/testdata/baselines/reference/submodule/compiler/unusedLocalsInMethod4.types @@ -259,9 +259,9 @@ function f4() { return x.toString(); >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } }; } @@ -274,9 +274,9 @@ function f5() { x.toString(); >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } export default {}; >{} : {} @@ -445,8 +445,8 @@ function transformClassFields() { enabledSubstitutions.toString(); >enabledSubstitutions.toString() : string ->enabledSubstitutions.toString : (radix?: number | undefined) => string +>enabledSubstitutions.toString : (radix?: number) => string >enabledSubstitutions : ClassPropertySubstitutionFlags ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } } diff --git a/testdata/baselines/reference/submodule/compiler/unusedLocalsInMethod4.types.diff b/testdata/baselines/reference/submodule/compiler/unusedLocalsInMethod4.types.diff deleted file mode 100644 index ad44c9e0e0c..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unusedLocalsInMethod4.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.unusedLocalsInMethod4.types -+++ new.unusedLocalsInMethod4.types -@@= skipped -258, +258 lines =@@ - - return x.toString(); - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - }; - } -@@= skipped -15, +15 lines =@@ - - x.toString(); - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - export default {}; - >{} : {} -@@= skipped -171, +171 lines =@@ - - enabledSubstitutions.toString(); - >enabledSubstitutions.toString() : string -->enabledSubstitutions.toString : (radix?: number) => string -+>enabledSubstitutions.toString : (radix?: number | undefined) => string - >enabledSubstitutions : ClassPropertySubstitutionFlags -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/unusedParameterUsedInTypeOf(target=es2015).types b/testdata/baselines/reference/submodule/compiler/unusedParameterUsedInTypeOf(target=es2015).types index f4c725d2056..d2b82575e7d 100644 --- a/testdata/baselines/reference/submodule/compiler/unusedParameterUsedInTypeOf(target=es2015).types +++ b/testdata/baselines/reference/submodule/compiler/unusedParameterUsedInTypeOf(target=es2015).types @@ -2,7 +2,7 @@ === unusedParameterUsedInTypeOf.ts === function f1 (a: number, b: typeof a) { ->f1 : (a: number, b: number) => number +>f1 : (a: number, b: typeof a) => number >a : number >b : number >a : number diff --git a/testdata/baselines/reference/submodule/compiler/unusedParameterUsedInTypeOf(target=es2015).types.diff b/testdata/baselines/reference/submodule/compiler/unusedParameterUsedInTypeOf(target=es2015).types.diff deleted file mode 100644 index ce44ebf67f0..00000000000 --- a/testdata/baselines/reference/submodule/compiler/unusedParameterUsedInTypeOf(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.unusedParameterUsedInTypeOf(target=es2015).types -+++ new.unusedParameterUsedInTypeOf(target=es2015).types -@@= skipped -1, +1 lines =@@ - - === unusedParameterUsedInTypeOf.ts === - function f1 (a: number, b: typeof a) { -->f1 : (a: number, b: typeof a) => number -+>f1 : (a: number, b: number) => number - >a : number - >b : number - >a : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/useUnknownInCatchVariables01.types b/testdata/baselines/reference/submodule/compiler/useUnknownInCatchVariables01.types index 3fd92347bd8..aebbbd516ea 100644 --- a/testdata/baselines/reference/submodule/compiler/useUnknownInCatchVariables01.types +++ b/testdata/baselines/reference/submodule/compiler/useUnknownInCatchVariables01.types @@ -64,9 +64,9 @@ catch (e) { e.toExponential(); >e.toExponential() : string ->e.toExponential : (fractionDigits?: number | undefined) => string +>e.toExponential : (fractionDigits?: number) => string >e : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string e++; >e++ : number diff --git a/testdata/baselines/reference/submodule/compiler/useUnknownInCatchVariables01.types.diff b/testdata/baselines/reference/submodule/compiler/useUnknownInCatchVariables01.types.diff deleted file mode 100644 index 325ebe6c005..00000000000 --- a/testdata/baselines/reference/submodule/compiler/useUnknownInCatchVariables01.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.useUnknownInCatchVariables01.types -+++ new.useUnknownInCatchVariables01.types -@@= skipped -63, +63 lines =@@ - - e.toExponential(); - >e.toExponential() : string -->e.toExponential : (fractionDigits?: number) => string -+>e.toExponential : (fractionDigits?: number | undefined) => string - >e : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - e++; - >e++ : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/varArgParamTypeCheck.types b/testdata/baselines/reference/submodule/compiler/varArgParamTypeCheck.types index 44822ff22b8..164b19710f2 100644 --- a/testdata/baselines/reference/submodule/compiler/varArgParamTypeCheck.types +++ b/testdata/baselines/reference/submodule/compiler/varArgParamTypeCheck.types @@ -2,7 +2,7 @@ === varArgParamTypeCheck.ts === function sequence(...sequences:{():void;}[]) { ->sequence : (...sequences: (() => void)[]) => void +>sequence : (...sequences: { (): void; }[]) => void >sequences : (() => void)[] } @@ -13,7 +13,7 @@ function callback(clb:()=>void) { sequence( >sequence( function bar() { }, function foo() { callback(()=>{ this(); }); }, function baz() { callback(()=>{ this(); }); }) : void ->sequence : (...sequences: (() => void)[]) => void +>sequence : (...sequences: { (): void; }[]) => void function bar() { >function bar() { } : () => void diff --git a/testdata/baselines/reference/submodule/compiler/varArgParamTypeCheck.types.diff b/testdata/baselines/reference/submodule/compiler/varArgParamTypeCheck.types.diff deleted file mode 100644 index 8168a8754a6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/varArgParamTypeCheck.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.varArgParamTypeCheck.types -+++ new.varArgParamTypeCheck.types -@@= skipped -1, +1 lines =@@ - - === varArgParamTypeCheck.ts === - function sequence(...sequences:{():void;}[]) { -->sequence : (...sequences: { (): void; }[]) => void -+>sequence : (...sequences: (() => void)[]) => void - >sequences : (() => void)[] - } - -@@= skipped -11, +11 lines =@@ - - sequence( - >sequence( function bar() { }, function foo() { callback(()=>{ this(); }); }, function baz() { callback(()=>{ this(); }); }) : void -->sequence : (...sequences: { (): void; }[]) => void -+>sequence : (...sequences: (() => void)[]) => void - - function bar() { - >function bar() { } : () => void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types b/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types index bd96f36a6f8..dd8afcfa913 100644 --- a/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types +++ b/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types @@ -149,12 +149,12 @@ const tmp1: MyInfo = null!; >null! : never function tmp2(n: N) {} ->tmp2 : >(n: N) => void +>tmp2 : (n: N) => void >n : N tmp2(tmp1); // uncommenting this line removes a type error from a completely unrelated line ?? >tmp2(tmp1) : void ->tmp2 : >(n: N) => void +>tmp2 : (n: N) => void >tmp1 : MyInfo class Server {} diff --git a/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types.diff b/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types.diff deleted file mode 100644 index 5522ecc8933..00000000000 --- a/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types -+++ new.varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types -@@= skipped -148, +148 lines =@@ - >null! : never - - function tmp2(n: N) {} -->tmp2 : (n: N) => void -+>tmp2 : >(n: N) => void - >n : N - - tmp2(tmp1); // uncommenting this line removes a type error from a completely unrelated line ?? - >tmp2(tmp1) : void -->tmp2 : (n: N) => void -+>tmp2 : >(n: N) => void - >tmp1 : MyInfo - - class Server {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types b/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types index 0234cfbd7d5..cdd110c9d8e 100644 --- a/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types +++ b/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types @@ -149,7 +149,7 @@ const tmp1: MyInfo = null!; >null! : never function tmp2(n: N) {} ->tmp2 : >(n: N) => void +>tmp2 : (n: N) => void >n : N // tmp2(tmp1); // uncommenting this line removes a type error from a completely unrelated line ?? (see test 1, needs to behave the same) diff --git a/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types.diff b/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types.diff deleted file mode 100644 index c2b0968750f..00000000000 --- a/testdata/baselines/reference/submodule/compiler/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types -+++ new.varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types -@@= skipped -148, +148 lines =@@ - >null! : never - - function tmp2(n: N) {} -->tmp2 : (n: N) => void -+>tmp2 : >(n: N) => void - >n : N - - // tmp2(tmp1); // uncommenting this line removes a type error from a completely unrelated line ?? (see test 1, needs to behave the same) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.js b/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.js index 252f5260b54..e7b8ae9e05f 100644 --- a/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.js +++ b/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.js @@ -52,14 +52,8 @@ type MapOrUndefined = Map | undefined | "dummy"; export declare class Foo { reuseTypeNode?: Map | undefined; reuseTypeNode2?: Exclude; - resolveType?: { - [x: string]: any; - } | undefined; - constructor(reuseTypeNode?: Map | undefined, reuseTypeNode2?: Exclude, resolveType?: { - [x: string]: any; - } | undefined); + resolveType?: Map | undefined; + constructor(reuseTypeNode?: Map | undefined, reuseTypeNode2?: Exclude, resolveType?: Map | undefined); } -export declare function foo1(reuseTypeNode: Map | undefined, reuseTypeNode2: Exclude, resolveType: { - [x: string]: any; -} | undefined, requiredParam: number): void; +export declare function foo1(reuseTypeNode: Map | undefined, reuseTypeNode2: Exclude, resolveType: Map | undefined, requiredParam: number): void; export {}; diff --git a/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.js.diff b/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.js.diff deleted file mode 100644 index 339f0234d54..00000000000 --- a/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.js.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.verbatim-declarations-parameters.js -+++ new.verbatim-declarations-parameters.js -@@= skipped -51, +51 lines =@@ - export declare class Foo { - reuseTypeNode?: Map | undefined; - reuseTypeNode2?: Exclude; -- resolveType?: Map | undefined; -- constructor(reuseTypeNode?: Map | undefined, reuseTypeNode2?: Exclude, resolveType?: Map | undefined); -+ resolveType?: { -+ [x: string]: any; -+ } | undefined; -+ constructor(reuseTypeNode?: Map | undefined, reuseTypeNode2?: Exclude, resolveType?: { -+ [x: string]: any; -+ } | undefined); - } --export declare function foo1(reuseTypeNode: Map | undefined, reuseTypeNode2: Exclude, resolveType: Map | undefined, requiredParam: number): void; -+export declare function foo1(reuseTypeNode: Map | undefined, reuseTypeNode2: Exclude, resolveType: { -+ [x: string]: any; -+} | undefined, requiredParam: number): void; - export {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.types b/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.types index 207e0576de9..1036d0f1b1c 100644 --- a/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.types +++ b/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.types @@ -26,7 +26,7 @@ export class Foo { } export function foo1( ->foo1 : (reuseTypeNode: { [x: string]: any; } | undefined, reuseTypeNode2: { [x: string]: any; } | undefined, resolveType: { [x: string]: any; } | undefined, requiredParam: number) => void +>foo1 : (reuseTypeNode: Map | undefined, reuseTypeNode2: Exclude, resolveType: Map | undefined, requiredParam: number) => void // Type node is accurate, preserve reuseTypeNode: Map | undefined = {}, diff --git a/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.types.diff b/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.types.diff deleted file mode 100644 index 8e5d0cc0b78..00000000000 --- a/testdata/baselines/reference/submodule/compiler/verbatim-declarations-parameters.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.verbatim-declarations-parameters.types -+++ new.verbatim-declarations-parameters.types -@@= skipped -25, +25 lines =@@ - } - - export function foo1( -->foo1 : (reuseTypeNode: Map | undefined, reuseTypeNode2: Exclude, resolveType: Map | undefined, requiredParam: number) => void -+>foo1 : (reuseTypeNode: { [x: string]: any; } | undefined, reuseTypeNode2: { [x: string]: any; } | undefined, resolveType: { [x: string]: any; } | undefined, requiredParam: number) => void - - // Type node is accurate, preserve - reuseTypeNode: Map | undefined = {}, \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/visibilityOfCrossModuleTypeUsage.types b/testdata/baselines/reference/submodule/compiler/visibilityOfCrossModuleTypeUsage.types index acae10f0e3b..59aa802d38f 100644 --- a/testdata/baselines/reference/submodule/compiler/visibilityOfCrossModuleTypeUsage.types +++ b/testdata/baselines/reference/submodule/compiler/visibilityOfCrossModuleTypeUsage.types @@ -12,11 +12,11 @@ function run(configuration: commands.IConfiguration) { var absoluteWorkspacePath = configuration.workspace.toAbsolutePath(configuration.server); >absoluteWorkspacePath : string >configuration.workspace.toAbsolutePath(configuration.server) : string ->configuration.workspace.toAbsolutePath : (server: import("./visibilityOfCrossModuleTypeUsage_server").IServer, workspaceRelativePath?: string | undefined) => string +>configuration.workspace.toAbsolutePath : (server: import("./visibilityOfCrossModuleTypeUsage_server").IServer, workspaceRelativePath?: string) => string >configuration.workspace : import("./visibilityOfCrossModuleTypeUsage_server").IWorkspace >configuration : commands.IConfiguration >workspace : import("./visibilityOfCrossModuleTypeUsage_server").IWorkspace ->toAbsolutePath : (server: import("./visibilityOfCrossModuleTypeUsage_server").IServer, workspaceRelativePath?: string | undefined) => string +>toAbsolutePath : (server: import("./visibilityOfCrossModuleTypeUsage_server").IServer, workspaceRelativePath?: string) => string >configuration.server : import("./visibilityOfCrossModuleTypeUsage_server").IServer | undefined >configuration : commands.IConfiguration >server : import("./visibilityOfCrossModuleTypeUsage_server").IServer | undefined @@ -44,7 +44,7 @@ export interface IServer { export interface IWorkspace { toAbsolutePath(server: IServer, workspaceRelativePath?: string): string; ->toAbsolutePath : (server: IServer, workspaceRelativePath?: string | undefined) => string +>toAbsolutePath : (server: IServer, workspaceRelativePath?: string) => string >server : IServer >workspaceRelativePath : string | undefined } diff --git a/testdata/baselines/reference/submodule/compiler/visibilityOfCrossModuleTypeUsage.types.diff b/testdata/baselines/reference/submodule/compiler/visibilityOfCrossModuleTypeUsage.types.diff deleted file mode 100644 index e7d32c49d38..00000000000 --- a/testdata/baselines/reference/submodule/compiler/visibilityOfCrossModuleTypeUsage.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.visibilityOfCrossModuleTypeUsage.types -+++ new.visibilityOfCrossModuleTypeUsage.types -@@= skipped -11, +11 lines =@@ - var absoluteWorkspacePath = configuration.workspace.toAbsolutePath(configuration.server); - >absoluteWorkspacePath : string - >configuration.workspace.toAbsolutePath(configuration.server) : string -->configuration.workspace.toAbsolutePath : (server: import("./visibilityOfCrossModuleTypeUsage_server").IServer, workspaceRelativePath?: string) => string -+>configuration.workspace.toAbsolutePath : (server: import("./visibilityOfCrossModuleTypeUsage_server").IServer, workspaceRelativePath?: string | undefined) => string - >configuration.workspace : import("./visibilityOfCrossModuleTypeUsage_server").IWorkspace - >configuration : commands.IConfiguration - >workspace : import("./visibilityOfCrossModuleTypeUsage_server").IWorkspace -->toAbsolutePath : (server: import("./visibilityOfCrossModuleTypeUsage_server").IServer, workspaceRelativePath?: string) => string -+>toAbsolutePath : (server: import("./visibilityOfCrossModuleTypeUsage_server").IServer, workspaceRelativePath?: string | undefined) => string - >configuration.server : import("./visibilityOfCrossModuleTypeUsage_server").IServer | undefined - >configuration : commands.IConfiguration - >server : import("./visibilityOfCrossModuleTypeUsage_server").IServer | undefined -@@= skipped -32, +32 lines =@@ - - export interface IWorkspace { - toAbsolutePath(server: IServer, workspaceRelativePath?: string): string; -->toAbsolutePath : (server: IServer, workspaceRelativePath?: string) => string -+>toAbsolutePath : (server: IServer, workspaceRelativePath?: string | undefined) => string - >server : IServer - >workspaceRelativePath : string | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/voidAsNonAmbiguousReturnType.types b/testdata/baselines/reference/submodule/compiler/voidAsNonAmbiguousReturnType.types index 8a9a96ae8cb..ed419de0ba1 100644 --- a/testdata/baselines/reference/submodule/compiler/voidAsNonAmbiguousReturnType.types +++ b/testdata/baselines/reference/submodule/compiler/voidAsNonAmbiguousReturnType.types @@ -10,20 +10,20 @@ function main() { fs.mkdirSync('test'); // should not error - return types are the same >fs.mkdirSync('test') : void ->fs.mkdirSync : (path: string, mode?: number | undefined) => void +>fs.mkdirSync : (path: string, mode?: number) => void >fs : typeof fs ->mkdirSync : (path: string, mode?: number | undefined) => void +>mkdirSync : (path: string, mode?: number) => void >'test' : "test" } === voidAsNonAmbiguousReturnType_0.ts === export function mkdirSync(path: string, mode?: number): void; ->mkdirSync : (path: string, mode?: number | undefined) => void +>mkdirSync : (path: string, mode?: number) => void >path : string >mode : number | undefined export function mkdirSync(path: string, mode?: string): void {} ->mkdirSync : (path: string, mode?: number | undefined) => void +>mkdirSync : (path: string, mode?: number) => void >path : string >mode : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/voidAsNonAmbiguousReturnType.types.diff b/testdata/baselines/reference/submodule/compiler/voidAsNonAmbiguousReturnType.types.diff deleted file mode 100644 index 99d2b78e2ec..00000000000 --- a/testdata/baselines/reference/submodule/compiler/voidAsNonAmbiguousReturnType.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.voidAsNonAmbiguousReturnType.types -+++ new.voidAsNonAmbiguousReturnType.types -@@= skipped -9, +9 lines =@@ - - fs.mkdirSync('test'); // should not error - return types are the same - >fs.mkdirSync('test') : void -->fs.mkdirSync : (path: string, mode?: number) => void -+>fs.mkdirSync : (path: string, mode?: number | undefined) => void - >fs : typeof fs -->mkdirSync : (path: string, mode?: number) => void -+>mkdirSync : (path: string, mode?: number | undefined) => void - >'test' : "test" - } - - === voidAsNonAmbiguousReturnType_0.ts === - export function mkdirSync(path: string, mode?: number): void; -->mkdirSync : (path: string, mode?: number) => void -+>mkdirSync : (path: string, mode?: number | undefined) => void - >path : string - >mode : number | undefined - - export function mkdirSync(path: string, mode?: string): void {} -->mkdirSync : (path: string, mode?: number) => void -+>mkdirSync : (path: string, mode?: number | undefined) => void - >path : string - >mode : string | undefined diff --git a/testdata/baselines/reference/submodule/compiler/voidUndefinedReduction.types b/testdata/baselines/reference/submodule/compiler/voidUndefinedReduction.types index aad8f30f07b..232299b2590 100644 --- a/testdata/baselines/reference/submodule/compiler/voidUndefinedReduction.types +++ b/testdata/baselines/reference/submodule/compiler/voidUndefinedReduction.types @@ -4,7 +4,7 @@ // Repro from #42786 function isDefined(value: T | undefined | null | void): value is T { ->isDefined : (value: void | T | null | undefined) => value is T +>isDefined : (value: T | undefined | null | void) => value is T >value : void | T | null | undefined return value !== undefined && value !== null; @@ -21,7 +21,7 @@ declare const foo: string | undefined; if (isDefined(foo)) { >isDefined(foo) : boolean ->isDefined : (value: void | T | null | undefined) => value is T +>isDefined : (value: T | undefined | null | void) => value is T >foo : string | undefined console.log(foo.toUpperCase()); diff --git a/testdata/baselines/reference/submodule/compiler/voidUndefinedReduction.types.diff b/testdata/baselines/reference/submodule/compiler/voidUndefinedReduction.types.diff deleted file mode 100644 index f17c32a1b23..00000000000 --- a/testdata/baselines/reference/submodule/compiler/voidUndefinedReduction.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.voidUndefinedReduction.types -+++ new.voidUndefinedReduction.types -@@= skipped -3, +3 lines =@@ - // Repro from #42786 - - function isDefined(value: T | undefined | null | void): value is T { -->isDefined : (value: T | undefined | null | void) => value is T -+>isDefined : (value: void | T | null | undefined) => value is T - >value : void | T | null | undefined - - return value !== undefined && value !== null; -@@= skipped -17, +17 lines =@@ - - if (isDefined(foo)) { - >isDefined(foo) : boolean -->isDefined : (value: T | undefined | null | void) => value is T -+>isDefined : (value: void | T | null | undefined) => value is T - >foo : string | undefined - - console.log(foo.toUpperCase()); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference.types b/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference.types index 3ff1c467d5e..1405fe54718 100644 --- a/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference.types +++ b/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference.types @@ -44,16 +44,16 @@ type ThisTypedOptions = ThisType & Instance> declare function test(fn: ThisTypedOptions): void; ->test : { (fn: ThisTypedOptions): void; (fn: Options<(this: Instance) => object, {}>): void; } +>test : { (fn: ThisTypedOptions): void; (fn: Options): void; } >fn : ThisTypedOptions declare function test(fn: Options): void; ->test : { (fn: ThisTypedOptions): void; (fn: Options<(this: Instance) => object, {}>): void; } +>test : { (fn: ThisTypedOptions): void; (fn: Options): void; } >fn : Options<(this: Instance) => object, {}> test({ >test({ props: { foo: '' }, data(): { bar: boolean } { return { bar: true } }, watch: { foo(newVal: string, oldVal: string): void { this.bar = false } }}) : void ->test : { (fn: ThisTypedOptions): void; (fn: Options<(this: Instance) => object, {}>): void; } +>test : { (fn: ThisTypedOptions): void; (fn: Options): void; } >{ props: { foo: '' }, data(): { bar: boolean } { return { bar: true } }, watch: { foo(newVal: string, oldVal: string): void { this.bar = false } }} : { props: { foo: string; }; data(): { bar: boolean; }; watch: { foo(newVal: string, oldVal: string): void; }; } props: { diff --git a/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference.types.diff b/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference.types.diff deleted file mode 100644 index aa6630506f5..00000000000 --- a/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.vueLikeDataAndPropsInference.types -+++ new.vueLikeDataAndPropsInference.types -@@= skipped -43, +43 lines =@@ - ThisType & Instance> - - declare function test(fn: ThisTypedOptions): void; -->test : { (fn: ThisTypedOptions): void; (fn: Options): void; } -+>test : { (fn: ThisTypedOptions): void; (fn: Options<(this: Instance) => object, {}>): void; } - >fn : ThisTypedOptions - - declare function test(fn: Options): void; -->test : { (fn: ThisTypedOptions): void; (fn: Options): void; } -+>test : { (fn: ThisTypedOptions): void; (fn: Options<(this: Instance) => object, {}>): void; } - >fn : Options<(this: Instance) => object, {}> - - test({ - >test({ props: { foo: '' }, data(): { bar: boolean } { return { bar: true } }, watch: { foo(newVal: string, oldVal: string): void { this.bar = false } }}) : void -->test : { (fn: ThisTypedOptions): void; (fn: Options): void; } -+>test : { (fn: ThisTypedOptions): void; (fn: Options<(this: Instance) => object, {}>): void; } - >{ props: { foo: '' }, data(): { bar: boolean } { return { bar: true } }, watch: { foo(newVal: string, oldVal: string): void { this.bar = false } }} : { props: { foo: string; }; data(): { bar: boolean; }; watch: { foo(newVal: string, oldVal: string): void; }; } - - props: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference2.types b/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference2.types index 8f5db6a5436..6fd2138c63c 100644 --- a/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference2.types +++ b/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference2.types @@ -45,16 +45,16 @@ type ThisTypedOptions = ThisType & Instance> declare function test(fn: ThisTypedOptions): void; ->test : { (fn: ThisTypedOptions): void; (fn: Options object), PropsDefinition>>): void; } +>test : { (fn: ThisTypedOptions): void; (fn: Options): void; } >fn : ThisTypedOptions declare function test(fn: Options): void; ->test : { (fn: ThisTypedOptions): void; (fn: Options object), PropsDefinition>>): void; } +>test : { (fn: ThisTypedOptions): void; (fn: Options): void; } >fn : Options object), PropsDefinition>> test({ >test({ props: { foo: '' }, data(): { bar: boolean } { return { bar: true } }, watch: { foo(newVal: string, oldVal: string): void { this.bar = false } }}) : void ->test : { (fn: ThisTypedOptions): void; (fn: Options object), PropsDefinition>>): void; } +>test : { (fn: ThisTypedOptions): void; (fn: Options): void; } >{ props: { foo: '' }, data(): { bar: boolean } { return { bar: true } }, watch: { foo(newVal: string, oldVal: string): void { this.bar = false } }} : { props: { foo: string; }; data(): { bar: boolean; }; watch: { foo(newVal: string, oldVal: string): void; }; } props: { diff --git a/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference2.types.diff b/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference2.types.diff deleted file mode 100644 index dab48643754..00000000000 --- a/testdata/baselines/reference/submodule/compiler/vueLikeDataAndPropsInference2.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.vueLikeDataAndPropsInference2.types -+++ new.vueLikeDataAndPropsInference2.types -@@= skipped -44, +44 lines =@@ - ThisType & Instance> - - declare function test(fn: ThisTypedOptions): void; -->test : { (fn: ThisTypedOptions): void; (fn: Options): void; } -+>test : { (fn: ThisTypedOptions): void; (fn: Options object), PropsDefinition>>): void; } - >fn : ThisTypedOptions - - declare function test(fn: Options): void; -->test : { (fn: ThisTypedOptions): void; (fn: Options): void; } -+>test : { (fn: ThisTypedOptions): void; (fn: Options object), PropsDefinition>>): void; } - >fn : Options object), PropsDefinition>> - - test({ - >test({ props: { foo: '' }, data(): { bar: boolean } { return { bar: true } }, watch: { foo(newVal: string, oldVal: string): void { this.bar = false } }}) : void -->test : { (fn: ThisTypedOptions): void; (fn: Options): void; } -+>test : { (fn: ThisTypedOptions): void; (fn: Options object), PropsDefinition>>): void; } - >{ props: { foo: '' }, data(): { bar: boolean } { return { bar: true } }, watch: { foo(newVal: string, oldVal: string): void { this.bar = false } }} : { props: { foo: string; }; data(): { bar: boolean; }; watch: { foo(newVal: string, oldVal: string): void; }; } - - props: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/weakType.errors.txt b/testdata/baselines/reference/submodule/compiler/weakType.errors.txt index 391fc09dd0d..83819283220 100644 --- a/testdata/baselines/reference/submodule/compiler/weakType.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/weakType.errors.txt @@ -5,10 +5,10 @@ weakType.ts(17,13): error TS2560: Value of type 'CtorOnly' has no properties in weakType.ts(18,13): error TS2559: Type '12' has no properties in common with type 'Settings'. weakType.ts(19,13): error TS2559: Type '"completely wrong"' has no properties in common with type 'Settings'. weakType.ts(20,13): error TS2559: Type 'false' has no properties in common with type 'Settings'. -weakType.ts(37,18): error TS2559: Type '{ error?: number | undefined; }' has no properties in common with type 'ChangeOptions'. +weakType.ts(37,18): error TS2559: Type '{ error?: number; }' has no properties in common with type 'ChangeOptions'. weakType.ts(62,5): error TS2322: Type '{ properties: { wrong: string; }; }' is not assignable to type 'Weak & Spoiler'. Types of property 'properties' are incompatible. - Type '{ wrong: string; }' has no properties in common with type '{ b?: number | undefined; }'. + Type '{ wrong: string; }' has no properties in common with type '{ b?: number; }'. ==== weakType.ts (9 errors) ==== @@ -67,7 +67,7 @@ weakType.ts(62,5): error TS2322: Type '{ properties: { wrong: string; }; }' is n changes.push(options); changes.push(error); ~~~~~ -!!! error TS2559: Type '{ error?: number | undefined; }' has no properties in common with type 'ChangeOptions'. +!!! error TS2559: Type '{ error?: number; }' has no properties in common with type 'ChangeOptions'. } class K { @@ -96,6 +96,6 @@ weakType.ts(62,5): error TS2322: Type '{ properties: { wrong: string; }; }' is n ~~~~ !!! error TS2322: Type '{ properties: { wrong: string; }; }' is not assignable to type 'Weak & Spoiler'. !!! error TS2322: Types of property 'properties' are incompatible. -!!! error TS2322: Type '{ wrong: string; }' has no properties in common with type '{ b?: number | undefined; }'. +!!! error TS2322: Type '{ wrong: string; }' has no properties in common with type '{ b?: number; }'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/weakType.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/weakType.errors.txt.diff new file mode 100644 index 00000000000..dddc714d3ad --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/weakType.errors.txt.diff @@ -0,0 +1,32 @@ +--- old.weakType.errors.txt ++++ new.weakType.errors.txt +@@= skipped -4, +4 lines =@@ + weakType.ts(18,13): error TS2559: Type '12' has no properties in common with type 'Settings'. + weakType.ts(19,13): error TS2559: Type '"completely wrong"' has no properties in common with type 'Settings'. + weakType.ts(20,13): error TS2559: Type 'false' has no properties in common with type 'Settings'. +-weakType.ts(37,18): error TS2559: Type '{ error?: number | undefined; }' has no properties in common with type 'ChangeOptions'. ++weakType.ts(37,18): error TS2559: Type '{ error?: number; }' has no properties in common with type 'ChangeOptions'. + weakType.ts(62,5): error TS2322: Type '{ properties: { wrong: string; }; }' is not assignable to type 'Weak & Spoiler'. + Types of property 'properties' are incompatible. +- Type '{ wrong: string; }' has no properties in common with type '{ b?: number | undefined; }'. ++ Type '{ wrong: string; }' has no properties in common with type '{ b?: number; }'. + + + ==== weakType.ts (9 errors) ==== +@@= skipped -62, +62 lines =@@ + changes.push(options); + changes.push(error); + ~~~~~ +-!!! error TS2559: Type '{ error?: number | undefined; }' has no properties in common with type 'ChangeOptions'. ++!!! error TS2559: Type '{ error?: number; }' has no properties in common with type 'ChangeOptions'. + } + + class K { +@@= skipped -29, +29 lines =@@ + ~~~~ + !!! error TS2322: Type '{ properties: { wrong: string; }; }' is not assignable to type 'Weak & Spoiler'. + !!! error TS2322: Types of property 'properties' are incompatible. +-!!! error TS2322: Type '{ wrong: string; }' has no properties in common with type '{ b?: number | undefined; }'. ++!!! error TS2322: Type '{ wrong: string; }' has no properties in common with type '{ b?: number; }'. + + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/weakType.types b/testdata/baselines/reference/submodule/compiler/weakType.types index d34b5f0cca1..3804b93a26f 100644 --- a/testdata/baselines/reference/submodule/compiler/weakType.types +++ b/testdata/baselines/reference/submodule/compiler/weakType.types @@ -86,12 +86,12 @@ type ChangeOptions = ConfigurableStartEnd & InsertOptions; >ChangeOptions : ChangeOptions function del(options: ConfigurableStartEnd = {}, ->del : (options?: ConfigurableStartEnd, error?: { error?: number | undefined; }) => void +>del : (options?: ConfigurableStartEnd, error?: { error?: number; }) => void >options : ConfigurableStartEnd >{} : {} error: { error?: number } = {}) { ->error : { error?: number | undefined; } +>error : { error?: number; } >error : number | undefined >{} : {} @@ -111,7 +111,7 @@ function del(options: ConfigurableStartEnd = {}, >changes.push : (...items: ChangeOptions[]) => number >changes : ChangeOptions[] >push : (...items: ChangeOptions[]) => number ->error : { error?: number | undefined; } +>error : { error?: number; } } class K { @@ -143,7 +143,7 @@ type Weak = { >a : number | undefined properties?: { ->properties : { b?: number | undefined; } | undefined +>properties : { b?: number; } | undefined b?: number >b : number | undefined diff --git a/testdata/baselines/reference/submodule/compiler/weakType.types.diff b/testdata/baselines/reference/submodule/compiler/weakType.types.diff deleted file mode 100644 index 0b532ac37f7..00000000000 --- a/testdata/baselines/reference/submodule/compiler/weakType.types.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- old.weakType.types -+++ new.weakType.types -@@= skipped -85, +85 lines =@@ - >ChangeOptions : ChangeOptions - - function del(options: ConfigurableStartEnd = {}, -->del : (options?: ConfigurableStartEnd, error?: { error?: number; }) => void -+>del : (options?: ConfigurableStartEnd, error?: { error?: number | undefined; }) => void - >options : ConfigurableStartEnd - >{} : {} - - error: { error?: number } = {}) { -->error : { error?: number; } -+>error : { error?: number | undefined; } - >error : number | undefined - >{} : {} - -@@= skipped -25, +25 lines =@@ - >changes.push : (...items: ChangeOptions[]) => number - >changes : ChangeOptions[] - >push : (...items: ChangeOptions[]) => number -->error : { error?: number; } -+>error : { error?: number | undefined; } - } - - class K { -@@= skipped -32, +32 lines =@@ - >a : number | undefined - - properties?: { -->properties : { b?: number; } | undefined -+>properties : { b?: number | undefined; } | undefined - - b?: number - >b : number | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/weakTypeAndPrimitiveNarrowing.types b/testdata/baselines/reference/submodule/compiler/weakTypeAndPrimitiveNarrowing.types index 19d44ce65a6..73be78dbed2 100644 --- a/testdata/baselines/reference/submodule/compiler/weakTypeAndPrimitiveNarrowing.types +++ b/testdata/baselines/reference/submodule/compiler/weakTypeAndPrimitiveNarrowing.types @@ -28,11 +28,11 @@ const g = (arg: LiteralsAndWeakTypes) => { >'A' : "A" arg; ->arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } +>arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } } else { arg; ->arg : "B" | { optional?: true | undefined; } | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } +>arg : "B" | { optional?: true; } | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } } } @@ -63,7 +63,7 @@ const h = (arg: PrimitivesAndWeakTypes) => { >'A' : "A" arg; ->arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } +>arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } } else { arg; diff --git a/testdata/baselines/reference/submodule/compiler/weakTypeAndPrimitiveNarrowing.types.diff b/testdata/baselines/reference/submodule/compiler/weakTypeAndPrimitiveNarrowing.types.diff deleted file mode 100644 index 31cd8919ce6..00000000000 --- a/testdata/baselines/reference/submodule/compiler/weakTypeAndPrimitiveNarrowing.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.weakTypeAndPrimitiveNarrowing.types -+++ new.weakTypeAndPrimitiveNarrowing.types -@@= skipped -27, +27 lines =@@ - >'A' : "A" - - arg; -->arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } -+>arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } - - } else { - arg; -->arg : "B" | { optional?: true; } | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } -+>arg : "B" | { optional?: true | undefined; } | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } - } - } - -@@= skipped -35, +35 lines =@@ - >'A' : "A" - - arg; -->arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } -+>arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } - - } else { - arg; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/widenedTypes.types b/testdata/baselines/reference/submodule/compiler/widenedTypes.types index d8771a573d9..ffd0cffdde1 100644 --- a/testdata/baselines/reference/submodule/compiler/widenedTypes.types +++ b/testdata/baselines/reference/submodule/compiler/widenedTypes.types @@ -66,7 +66,7 @@ u[3] = ""; >"" : "" var ob: { x: typeof undefined } = { x: "" }; ->ob : { x: any; } +>ob : { x: typeof undefined; } >x : any >undefined : undefined >{ x: "" } : { x: string; } diff --git a/testdata/baselines/reference/submodule/compiler/widenedTypes.types.diff b/testdata/baselines/reference/submodule/compiler/widenedTypes.types.diff deleted file mode 100644 index 87fc63f0eba..00000000000 --- a/testdata/baselines/reference/submodule/compiler/widenedTypes.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.widenedTypes.types -+++ new.widenedTypes.types -@@= skipped -65, +65 lines =@@ - >"" : "" - - var ob: { x: typeof undefined } = { x: "" }; -->ob : { x: typeof undefined; } -+>ob : { x: any; } - >x : any - >undefined : undefined - >{ x: "" } : { x: string; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/TypeGuardWithArrayUnion.types b/testdata/baselines/reference/submodule/conformance/TypeGuardWithArrayUnion.types index 96e51032079..f756a7aa44a 100644 --- a/testdata/baselines/reference/submodule/conformance/TypeGuardWithArrayUnion.types +++ b/testdata/baselines/reference/submodule/conformance/TypeGuardWithArrayUnion.types @@ -9,7 +9,7 @@ class Message { } function saySize(message: Message | Message[]) { ->saySize : (message: Message[] | Message) => number | undefined +>saySize : (message: Message | Message[]) => number | undefined >message : Message[] | Message if (message instanceof Array) { diff --git a/testdata/baselines/reference/submodule/conformance/TypeGuardWithArrayUnion.types.diff b/testdata/baselines/reference/submodule/conformance/TypeGuardWithArrayUnion.types.diff deleted file mode 100644 index ca57980f56b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/TypeGuardWithArrayUnion.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.TypeGuardWithArrayUnion.types -+++ new.TypeGuardWithArrayUnion.types -@@= skipped -8, +8 lines =@@ - } - - function saySize(message: Message | Message[]) { -->saySize : (message: Message | Message[]) => number | undefined -+>saySize : (message: Message[] | Message) => number | undefined - >message : Message[] | Message - - if (message instanceof Array) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/TypeGuardWithEnumUnion.types b/testdata/baselines/reference/submodule/conformance/TypeGuardWithEnumUnion.types index 322426df311..fddfa9db658 100644 --- a/testdata/baselines/reference/submodule/conformance/TypeGuardWithEnumUnion.types +++ b/testdata/baselines/reference/submodule/conformance/TypeGuardWithEnumUnion.types @@ -8,7 +8,7 @@ enum Color { R, G, B } >B : Color.B function f1(x: Color | string) { ->f1 : (x: string | Color) => void +>f1 : (x: Color | string) => void >x : string | Color if (typeof x === "number") { @@ -35,7 +35,7 @@ function f1(x: Color | string) { } function f2(x: Color | string | string[]) { ->f2 : (x: string | string[] | Color) => void +>f2 : (x: Color | string | string[]) => void >x : string | string[] | Color if (typeof x === "object") { diff --git a/testdata/baselines/reference/submodule/conformance/TypeGuardWithEnumUnion.types.diff b/testdata/baselines/reference/submodule/conformance/TypeGuardWithEnumUnion.types.diff deleted file mode 100644 index a2632b694c0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/TypeGuardWithEnumUnion.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.TypeGuardWithEnumUnion.types -+++ new.TypeGuardWithEnumUnion.types -@@= skipped -7, +7 lines =@@ - >B : Color.B - - function f1(x: Color | string) { -->f1 : (x: Color | string) => void -+>f1 : (x: string | Color) => void - >x : string | Color - - if (typeof x === "number") { -@@= skipped -27, +27 lines =@@ - } - - function f2(x: Color | string | string[]) { -->f2 : (x: Color | string | string[]) => void -+>f2 : (x: string | string[] | Color) => void - >x : string | string[] | Color - - if (typeof x === "object") { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/ambientErrors.types b/testdata/baselines/reference/submodule/conformance/ambientErrors.types index 16cbec9dc2d..46be719277b 100644 --- a/testdata/baselines/reference/submodule/conformance/ambientErrors.types +++ b/testdata/baselines/reference/submodule/conformance/ambientErrors.types @@ -8,11 +8,11 @@ declare var x = 4; // Ambient functions with invalid overloads declare function fn(x: number): string; ->fn : { (x: number): string; (x: "foo"): number; } +>fn : { (x: number): string; (x: 'foo'): number; } >x : number declare function fn(x: 'foo'): number; ->fn : { (x: number): string; (x: "foo"): number; } +>fn : { (x: number): string; (x: 'foo'): number; } >x : "foo" // Ambient functions with duplicate signatures diff --git a/testdata/baselines/reference/submodule/conformance/ambientErrors.types.diff b/testdata/baselines/reference/submodule/conformance/ambientErrors.types.diff new file mode 100644 index 00000000000..b49f0dc9e15 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/ambientErrors.types.diff @@ -0,0 +1,16 @@ +--- old.ambientErrors.types ++++ new.ambientErrors.types +@@= skipped -7, +7 lines =@@ + + // Ambient functions with invalid overloads + declare function fn(x: number): string; +->fn : { (x: number): string; (x: "foo"): number; } ++>fn : { (x: number): string; (x: 'foo'): number; } + >x : number + + declare function fn(x: 'foo'): number; +->fn : { (x: number): string; (x: "foo"): number; } ++>fn : { (x: number): string; (x: 'foo'): number; } + >x : "foo" + + // Ambient functions with duplicate signatures \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/arrayLiteralWithMultipleBestCommonTypes.types b/testdata/baselines/reference/submodule/conformance/arrayLiteralWithMultipleBestCommonTypes.types index bf6a3b6285c..a07aef6d898 100644 --- a/testdata/baselines/reference/submodule/conformance/arrayLiteralWithMultipleBestCommonTypes.types +++ b/testdata/baselines/reference/submodule/conformance/arrayLiteralWithMultipleBestCommonTypes.types @@ -4,38 +4,38 @@ // when multiple best common types exist we will choose the first candidate var a: { x: number; y?: number }; ->a : { x: number; y?: number | undefined; } +>a : { x: number; y?: number; } >x : number >y : number | undefined var b: { x: number; z?: number }; ->b : { x: number; z?: number | undefined; } +>b : { x: number; z?: number; } >x : number >z : number | undefined var c: { x: number; a?: number }; ->c : { x: number; a?: number | undefined; } +>c : { x: number; a?: number; } >x : number >a : number | undefined var as = [a, b]; // { x: number; y?: number };[] ->as : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; })[] ->[a, b] : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; })[] ->a : { x: number; y?: number | undefined; } ->b : { x: number; z?: number | undefined; } +>as : ({ x: number; y?: number; } | { x: number; z?: number; })[] +>[a, b] : ({ x: number; y?: number; } | { x: number; z?: number; })[] +>a : { x: number; y?: number; } +>b : { x: number; z?: number; } var bs = [b, a]; // { x: number; z?: number };[] ->bs : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; })[] ->[b, a] : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; })[] ->b : { x: number; z?: number | undefined; } ->a : { x: number; y?: number | undefined; } +>bs : ({ x: number; y?: number; } | { x: number; z?: number; })[] +>[b, a] : ({ x: number; y?: number; } | { x: number; z?: number; })[] +>b : { x: number; z?: number; } +>a : { x: number; y?: number; } var cs = [a, b, c]; // { x: number; y?: number };[] ->cs : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } | { x: number; a?: number | undefined; })[] ->[a, b, c] : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } | { x: number; a?: number | undefined; })[] ->a : { x: number; y?: number | undefined; } ->b : { x: number; z?: number | undefined; } ->c : { x: number; a?: number | undefined; } +>cs : ({ x: number; y?: number; } | { x: number; z?: number; } | { x: number; a?: number; })[] +>[a, b, c] : ({ x: number; y?: number; } | { x: number; z?: number; } | { x: number; a?: number; })[] +>a : { x: number; y?: number; } +>b : { x: number; z?: number; } +>c : { x: number; a?: number; } var ds = [(x: Object) => 1, (x: string) => 2]; // { (x:Object) => number }[] >ds : ((x: string) => number)[] @@ -58,29 +58,29 @@ var es = [(x: string) => 2, (x: Object) => 1]; // { (x:string) => number }[] >1 : 1 var fs = [(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => 2]; // (a: { x: number; y?: number }) => number[] ->fs : (((a: { x: number; y?: number | undefined; }) => number) | ((b: { x: number; z?: number | undefined; }) => number))[] ->[(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => 2] : (((a: { x: number; y?: number | undefined; }) => number) | ((b: { x: number; z?: number | undefined; }) => number))[] ->(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number | undefined; }) => number ->a : { x: number; y?: number | undefined; } +>fs : (((a: { x: number; y?: number; }) => number) | ((b: { x: number; z?: number; }) => number))[] +>[(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => 2] : (((a: { x: number; y?: number; }) => number) | ((b: { x: number; z?: number; }) => number))[] +>(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number; }) => number +>a : { x: number; y?: number; } >x : number >y : number | undefined >1 : 1 ->(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number | undefined; }) => number ->b : { x: number; z?: number | undefined; } +>(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number; }) => number +>b : { x: number; z?: number; } >x : number >z : number | undefined >2 : 2 var gs = [(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => 1]; // (b: { x: number; z?: number }) => number[] ->gs : (((b: { x: number; z?: number | undefined; }) => number) | ((a: { x: number; y?: number | undefined; }) => number))[] ->[(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => 1] : (((b: { x: number; z?: number | undefined; }) => number) | ((a: { x: number; y?: number | undefined; }) => number))[] ->(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number | undefined; }) => number ->b : { x: number; z?: number | undefined; } +>gs : (((b: { x: number; z?: number; }) => number) | ((a: { x: number; y?: number; }) => number))[] +>[(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => 1] : (((b: { x: number; z?: number; }) => number) | ((a: { x: number; y?: number; }) => number))[] +>(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number; }) => number +>b : { x: number; z?: number; } >x : number >z : number | undefined >2 : 2 ->(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number | undefined; }) => number ->a : { x: number; y?: number | undefined; } +>(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number; }) => number +>a : { x: number; y?: number; } >x : number >y : number | undefined >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/arrayLiteralWithMultipleBestCommonTypes.types.diff b/testdata/baselines/reference/submodule/conformance/arrayLiteralWithMultipleBestCommonTypes.types.diff deleted file mode 100644 index 65023af84fd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/arrayLiteralWithMultipleBestCommonTypes.types.diff +++ /dev/null @@ -1,99 +0,0 @@ ---- old.arrayLiteralWithMultipleBestCommonTypes.types -+++ new.arrayLiteralWithMultipleBestCommonTypes.types -@@= skipped -3, +3 lines =@@ - // when multiple best common types exist we will choose the first candidate - - var a: { x: number; y?: number }; -->a : { x: number; y?: number; } -+>a : { x: number; y?: number | undefined; } - >x : number - >y : number | undefined - - var b: { x: number; z?: number }; -->b : { x: number; z?: number; } -+>b : { x: number; z?: number | undefined; } - >x : number - >z : number | undefined - - var c: { x: number; a?: number }; -->c : { x: number; a?: number; } -+>c : { x: number; a?: number | undefined; } - >x : number - >a : number | undefined - - var as = [a, b]; // { x: number; y?: number };[] -->as : ({ x: number; y?: number; } | { x: number; z?: number; })[] -->[a, b] : ({ x: number; y?: number; } | { x: number; z?: number; })[] -->a : { x: number; y?: number; } -->b : { x: number; z?: number; } -+>as : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; })[] -+>[a, b] : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; })[] -+>a : { x: number; y?: number | undefined; } -+>b : { x: number; z?: number | undefined; } - - var bs = [b, a]; // { x: number; z?: number };[] -->bs : ({ x: number; y?: number; } | { x: number; z?: number; })[] -->[b, a] : ({ x: number; y?: number; } | { x: number; z?: number; })[] -->b : { x: number; z?: number; } -->a : { x: number; y?: number; } -+>bs : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; })[] -+>[b, a] : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; })[] -+>b : { x: number; z?: number | undefined; } -+>a : { x: number; y?: number | undefined; } - - var cs = [a, b, c]; // { x: number; y?: number };[] -->cs : ({ x: number; y?: number; } | { x: number; z?: number; } | { x: number; a?: number; })[] -->[a, b, c] : ({ x: number; y?: number; } | { x: number; z?: number; } | { x: number; a?: number; })[] -->a : { x: number; y?: number; } -->b : { x: number; z?: number; } -->c : { x: number; a?: number; } -+>cs : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } | { x: number; a?: number | undefined; })[] -+>[a, b, c] : ({ x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } | { x: number; a?: number | undefined; })[] -+>a : { x: number; y?: number | undefined; } -+>b : { x: number; z?: number | undefined; } -+>c : { x: number; a?: number | undefined; } - - var ds = [(x: Object) => 1, (x: string) => 2]; // { (x:Object) => number }[] - >ds : ((x: string) => number)[] -@@= skipped -54, +54 lines =@@ - >1 : 1 - - var fs = [(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => 2]; // (a: { x: number; y?: number }) => number[] -->fs : (((a: { x: number; y?: number; }) => number) | ((b: { x: number; z?: number; }) => number))[] -->[(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => 2] : (((a: { x: number; y?: number; }) => number) | ((b: { x: number; z?: number; }) => number))[] -->(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number; }) => number -->a : { x: number; y?: number; } -+>fs : (((a: { x: number; y?: number | undefined; }) => number) | ((b: { x: number; z?: number | undefined; }) => number))[] -+>[(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => 2] : (((a: { x: number; y?: number | undefined; }) => number) | ((b: { x: number; z?: number | undefined; }) => number))[] -+>(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number | undefined; }) => number -+>a : { x: number; y?: number | undefined; } - >x : number - >y : number | undefined - >1 : 1 -->(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number; }) => number -->b : { x: number; z?: number; } -+>(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number | undefined; }) => number -+>b : { x: number; z?: number | undefined; } - >x : number - >z : number | undefined - >2 : 2 - - var gs = [(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => 1]; // (b: { x: number; z?: number }) => number[] -->gs : (((b: { x: number; z?: number; }) => number) | ((a: { x: number; y?: number; }) => number))[] -->[(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => 1] : (((b: { x: number; z?: number; }) => number) | ((a: { x: number; y?: number; }) => number))[] -->(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number; }) => number -->b : { x: number; z?: number; } -+>gs : (((b: { x: number; z?: number | undefined; }) => number) | ((a: { x: number; y?: number | undefined; }) => number))[] -+>[(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => 1] : (((b: { x: number; z?: number | undefined; }) => number) | ((a: { x: number; y?: number | undefined; }) => number))[] -+>(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number | undefined; }) => number -+>b : { x: number; z?: number | undefined; } - >x : number - >z : number | undefined - >2 : 2 -->(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number; }) => number -->a : { x: number; y?: number; } -+>(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number | undefined; }) => number -+>a : { x: number; y?: number | undefined; } - >x : number - >y : number | undefined - >1 : 1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/arrayTypeOfTypeOf.types b/testdata/baselines/reference/submodule/conformance/arrayTypeOfTypeOf.types index 15f3a457f15..b2dd94fad1d 100644 --- a/testdata/baselines/reference/submodule/conformance/arrayTypeOfTypeOf.types +++ b/testdata/baselines/reference/submodule/conformance/arrayTypeOfTypeOf.types @@ -16,11 +16,11 @@ var xs2: typeof Array; >Array : ArrayConstructor var xs3: typeof Array; ->xs3 : { (arrayLength: number): number[]; (...items: number[]): number[]; new (arrayLength: number): number[]; new (...items: number[]): number[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>xs3 : typeof Array >Array : ArrayConstructor var xs4: typeof Array; ->xs4 : { (arrayLength: number): number[]; (...items: number[]): number[]; new (arrayLength: number): number[]; new (...items: number[]): number[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>xs4 : typeof Array >Array : ArrayConstructor >x : number diff --git a/testdata/baselines/reference/submodule/conformance/arrayTypeOfTypeOf.types.diff b/testdata/baselines/reference/submodule/conformance/arrayTypeOfTypeOf.types.diff deleted file mode 100644 index 5d57908b9f5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/arrayTypeOfTypeOf.types.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- old.arrayTypeOfTypeOf.types -+++ new.arrayTypeOfTypeOf.types -@@= skipped -15, +15 lines =@@ - >Array : ArrayConstructor - - var xs3: typeof Array; -->xs3 : typeof Array -+>xs3 : { (arrayLength: number): number[]; (...items: number[]): number[]; new (arrayLength: number): number[]; new (...items: number[]): number[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } - >Array : ArrayConstructor - - var xs4: typeof Array; -->xs4 : typeof Array -+>xs4 : { (arrayLength: number): number[]; (...items: number[]): number[]; new (arrayLength: number): number[]; new (...items: number[]): number[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } - >Array : ArrayConstructor - >x : number diff --git a/testdata/baselines/reference/submodule/conformance/assertionTypePredicates1.types b/testdata/baselines/reference/submodule/conformance/assertionTypePredicates1.types index 508636e6050..2295fc2e063 100644 --- a/testdata/baselines/reference/submodule/conformance/assertionTypePredicates1.types +++ b/testdata/baselines/reference/submodule/conformance/assertionTypePredicates1.types @@ -85,9 +85,9 @@ function f01(x: unknown) { >"number" : "number" x.toLocaleString; ->x.toLocaleString : (() => string) | ((locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string) +>x.toLocaleString : (() => string) | ((locales?: string | string[], options?: Intl.NumberFormatOptions) => string) >x : number | boolean ->toLocaleString : (() => string) | ((locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string) +>toLocaleString : (() => string) | ((locales?: string | string[], options?: Intl.NumberFormatOptions) => string) } if (!!true) { >!!true : true @@ -272,7 +272,7 @@ namespace Debug { >Debug : typeof Debug export declare function assert(value: unknown, message?: string): asserts value; ->assert : (value: unknown, message?: string | undefined) => asserts value +>assert : (value: unknown, message?: string) => asserts value >value : unknown >message : string | undefined @@ -292,9 +292,9 @@ function f10(x: string | undefined) { Debug.assert(x); >Debug.assert(x) : void ->Debug.assert : (value: unknown, message?: string | undefined) => asserts value +>Debug.assert : (value: unknown, message?: string) => asserts value >Debug : typeof Debug ->assert : (value: unknown, message?: string | undefined) => asserts value +>assert : (value: unknown, message?: string) => asserts value >x : string | undefined x.length; @@ -309,9 +309,9 @@ function f10(x: string | undefined) { Debug.assert(x !== undefined); >Debug.assert(x !== undefined) : void ->Debug.assert : (value: unknown, message?: string | undefined) => asserts value +>Debug.assert : (value: unknown, message?: string) => asserts value >Debug : typeof Debug ->assert : (value: unknown, message?: string | undefined) => asserts value +>assert : (value: unknown, message?: string) => asserts value >x !== undefined : boolean >x : string | undefined >undefined : undefined @@ -345,9 +345,9 @@ function f10(x: string | undefined) { Debug.assert(false); >Debug.assert(false) : void ->Debug.assert : (value: unknown, message?: string | undefined) => asserts value +>Debug.assert : (value: unknown, message?: string) => asserts value >Debug : typeof Debug ->assert : (value: unknown, message?: string | undefined) => asserts value +>assert : (value: unknown, message?: string) => asserts value >false : false x; // Unreachable diff --git a/testdata/baselines/reference/submodule/conformance/assertionTypePredicates1.types.diff b/testdata/baselines/reference/submodule/conformance/assertionTypePredicates1.types.diff deleted file mode 100644 index 51c96d4caf6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assertionTypePredicates1.types.diff +++ /dev/null @@ -1,59 +0,0 @@ ---- old.assertionTypePredicates1.types -+++ new.assertionTypePredicates1.types -@@= skipped -84, +84 lines =@@ - >"number" : "number" - - x.toLocaleString; -->x.toLocaleString : (() => string) | ((locales?: string | string[], options?: Intl.NumberFormatOptions) => string) -+>x.toLocaleString : (() => string) | ((locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string) - >x : number | boolean -->toLocaleString : (() => string) | ((locales?: string | string[], options?: Intl.NumberFormatOptions) => string) -+>toLocaleString : (() => string) | ((locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string) - } - if (!!true) { - >!!true : true -@@= skipped -187, +187 lines =@@ - >Debug : typeof Debug - - export declare function assert(value: unknown, message?: string): asserts value; -->assert : (value: unknown, message?: string) => asserts value -+>assert : (value: unknown, message?: string | undefined) => asserts value - >value : unknown - >message : string | undefined - -@@= skipped -20, +20 lines =@@ - - Debug.assert(x); - >Debug.assert(x) : void -->Debug.assert : (value: unknown, message?: string) => asserts value -+>Debug.assert : (value: unknown, message?: string | undefined) => asserts value - >Debug : typeof Debug -->assert : (value: unknown, message?: string) => asserts value -+>assert : (value: unknown, message?: string | undefined) => asserts value - >x : string | undefined - - x.length; -@@= skipped -17, +17 lines =@@ - - Debug.assert(x !== undefined); - >Debug.assert(x !== undefined) : void -->Debug.assert : (value: unknown, message?: string) => asserts value -+>Debug.assert : (value: unknown, message?: string | undefined) => asserts value - >Debug : typeof Debug -->assert : (value: unknown, message?: string) => asserts value -+>assert : (value: unknown, message?: string | undefined) => asserts value - >x !== undefined : boolean - >x : string | undefined - >undefined : undefined -@@= skipped -36, +36 lines =@@ - - Debug.assert(false); - >Debug.assert(false) : void -->Debug.assert : (value: unknown, message?: string) => asserts value -+>Debug.assert : (value: unknown, message?: string | undefined) => asserts value - >Debug : typeof Debug -->assert : (value: unknown, message?: string) => asserts value -+>assert : (value: unknown, message?: string | undefined) => asserts value - >false : false - - x; // Unreachable \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignFromNumberInterface2.types b/testdata/baselines/reference/submodule/conformance/assignFromNumberInterface2.types index 467e470edb5..b92ba76d7d6 100644 --- a/testdata/baselines/reference/submodule/conformance/assignFromNumberInterface2.types +++ b/testdata/baselines/reference/submodule/conformance/assignFromNumberInterface2.types @@ -8,19 +8,19 @@ interface Number { interface NotNumber { toString(radix?: number): string; ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >radix : number | undefined toFixed(fractionDigits?: number): string; ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string >fractionDigits : number | undefined toExponential(fractionDigits?: number): string; ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string >fractionDigits : number | undefined toPrecision(precision?: number): string; ->toPrecision : (precision?: number | undefined) => string +>toPrecision : (precision?: number) => string >precision : number | undefined valueOf(): number; diff --git a/testdata/baselines/reference/submodule/conformance/assignFromNumberInterface2.types.diff b/testdata/baselines/reference/submodule/conformance/assignFromNumberInterface2.types.diff deleted file mode 100644 index bf2573c67f4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignFromNumberInterface2.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.assignFromNumberInterface2.types -+++ new.assignFromNumberInterface2.types -@@= skipped -7, +7 lines =@@ - - interface NotNumber { - toString(radix?: number): string; -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >radix : number | undefined - - toFixed(fractionDigits?: number): string; -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - >fractionDigits : number | undefined - - toExponential(fractionDigits?: number): string; -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - >fractionDigits : number | undefined - - toPrecision(precision?: number): string; -->toPrecision : (precision?: number) => string -+>toPrecision : (precision?: number | undefined) => string - >precision : number | undefined - - valueOf(): number; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignFromStringInterface2.types b/testdata/baselines/reference/submodule/conformance/assignFromStringInterface2.types index 4ea57d57866..e17d0ba593e 100644 --- a/testdata/baselines/reference/submodule/conformance/assignFromStringInterface2.types +++ b/testdata/baselines/reference/submodule/conformance/assignFromStringInterface2.types @@ -26,12 +26,12 @@ interface NotString { >strings : string[] indexOf(searchString: string, position?: number): number; ->indexOf : (searchString: string, position?: number | undefined) => number +>indexOf : (searchString: string, position?: number) => number >searchString : string >position : number | undefined lastIndexOf(searchString: string, position?: number): number; ->lastIndexOf : (searchString: string, position?: number | undefined) => number +>lastIndexOf : (searchString: string, position?: number) => number >searchString : string >position : number | undefined @@ -80,22 +80,22 @@ interface NotString { >regexp : RegExp slice(start?: number, end?: number): string; ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string >start : number | undefined >end : number | undefined split(separator: string, limit?: number): string[]; ->split : { (separator: string, limit?: number | undefined): string[]; (separator: RegExp, limit?: number | undefined): string[]; } +>split : { (separator: string, limit?: number): string[]; (separator: RegExp, limit?: number): string[]; } >separator : string >limit : number | undefined split(separator: RegExp, limit?: number): string[]; ->split : { (separator: string, limit?: number | undefined): string[]; (separator: RegExp, limit?: number | undefined): string[]; } +>split : { (separator: string, limit?: number): string[]; (separator: RegExp, limit?: number): string[]; } >separator : RegExp >limit : number | undefined substring(start: number, end?: number): string; ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >start : number >end : number | undefined @@ -118,7 +118,7 @@ interface NotString { >length : number substr(from: number, length?: number): string; ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >from : number >length : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/assignFromStringInterface2.types.diff b/testdata/baselines/reference/submodule/conformance/assignFromStringInterface2.types.diff deleted file mode 100644 index bcb9b33e25c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignFromStringInterface2.types.diff +++ /dev/null @@ -1,52 +0,0 @@ ---- old.assignFromStringInterface2.types -+++ new.assignFromStringInterface2.types -@@= skipped -25, +25 lines =@@ - >strings : string[] - - indexOf(searchString: string, position?: number): number; -->indexOf : (searchString: string, position?: number) => number -+>indexOf : (searchString: string, position?: number | undefined) => number - >searchString : string - >position : number | undefined - - lastIndexOf(searchString: string, position?: number): number; -->lastIndexOf : (searchString: string, position?: number) => number -+>lastIndexOf : (searchString: string, position?: number | undefined) => number - >searchString : string - >position : number | undefined - -@@= skipped -54, +54 lines =@@ - >regexp : RegExp - - slice(start?: number, end?: number): string; -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - >start : number | undefined - >end : number | undefined - - split(separator: string, limit?: number): string[]; -->split : { (separator: string, limit?: number): string[]; (separator: RegExp, limit?: number): string[]; } -+>split : { (separator: string, limit?: number | undefined): string[]; (separator: RegExp, limit?: number | undefined): string[]; } - >separator : string - >limit : number | undefined - - split(separator: RegExp, limit?: number): string[]; -->split : { (separator: string, limit?: number): string[]; (separator: RegExp, limit?: number): string[]; } -+>split : { (separator: string, limit?: number | undefined): string[]; (separator: RegExp, limit?: number | undefined): string[]; } - >separator : RegExp - >limit : number | undefined - - substring(start: number, end?: number): string; -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >start : number - >end : number | undefined - -@@= skipped -38, +38 lines =@@ - >length : number - - substr(from: number, length?: number): string; -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >from : number - >length : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.errors.txt b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.errors.txt index a2f7bd6676e..f8cde9faa44 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.errors.txt @@ -46,12 +46,12 @@ assignmentCompatWithCallSignatures3.ts(77,1): error TS2322: Type '(x: { foo: str Types of parameters 'y' and 'y' are incompatible. Type 'T' is not assignable to type '{ foo: string; bar: string; }'. Property 'bar' is missing in type 'Base' but required in type '{ foo: string; bar: string; }'. -assignmentCompatWithCallSignatures3.ts(80,1): error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '(x: Base[], y: T) => Derived[]'. +assignmentCompatWithCallSignatures3.ts(80,1): error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: T) => Array'. Types of parameters 'y' and 'y' are incompatible. Type 'T' is not assignable to type 'Derived2[]'. Type 'Base[]' is not assignable to type 'Derived2[]'. Type 'Base' is missing the following properties from type 'Derived2': baz, bar -assignmentCompatWithCallSignatures3.ts(83,1): error TS2322: Type '(x: Base[], y: Derived[]) => Derived[]' is not assignable to type '(x: Base[], y: T) => T'. +assignmentCompatWithCallSignatures3.ts(83,1): error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: T) => T'. Type 'Derived[]' is not assignable to type 'T'. 'Derived[]' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived[]'. assignmentCompatWithCallSignatures3.ts(85,1): error TS2322: Type '(x: { a: T; b: T; }) => T' is not assignable to type '(x: { a: string; b: number; }) => Object'. @@ -216,7 +216,7 @@ assignmentCompatWithCallSignatures3.ts(86,1): error TS2322: Type '(x: { a: strin a12 = b12; // ok b12 = a12; // ok ~~~ -!!! error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '(x: Base[], y: T) => Derived[]'. +!!! error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: T) => Array'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'T' is not assignable to type 'Derived2[]'. !!! error TS2322: Type 'Base[]' is not assignable to type 'Derived2[]'. @@ -225,7 +225,7 @@ assignmentCompatWithCallSignatures3.ts(86,1): error TS2322: Type '(x: { a: strin a13 = b13; // ok b13 = a13; // ok ~~~ -!!! error TS2322: Type '(x: Base[], y: Derived[]) => Derived[]' is not assignable to type '(x: Base[], y: T) => T'. +!!! error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: T) => T'. !!! error TS2322: Type 'Derived[]' is not assignable to type 'T'. !!! error TS2322: 'Derived[]' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived[]'. declare var b14: (x: { a: T; b: T }) => T; diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.errors.txt.diff index 1800d9266dd..db5f98922e5 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.errors.txt.diff @@ -5,13 +5,13 @@ Type 'T' is not assignable to type '{ foo: string; bar: string; }'. Property 'bar' is missing in type 'Base' but required in type '{ foo: string; bar: string; }'. -assignmentCompatWithCallSignatures3.ts(80,1): error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '>(x: Base[], y: T) => Derived[]'. -+assignmentCompatWithCallSignatures3.ts(80,1): error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '(x: Base[], y: T) => Derived[]'. ++assignmentCompatWithCallSignatures3.ts(80,1): error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: T) => Array'. Types of parameters 'y' and 'y' are incompatible. Type 'T' is not assignable to type 'Derived2[]'. Type 'Base[]' is not assignable to type 'Derived2[]'. Type 'Base' is missing the following properties from type 'Derived2': baz, bar -assignmentCompatWithCallSignatures3.ts(83,1): error TS2322: Type '(x: Base[], y: Derived[]) => Derived[]' is not assignable to type '>(x: Base[], y: T) => T'. -+assignmentCompatWithCallSignatures3.ts(83,1): error TS2322: Type '(x: Base[], y: Derived[]) => Derived[]' is not assignable to type '(x: Base[], y: T) => T'. ++assignmentCompatWithCallSignatures3.ts(83,1): error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: T) => T'. Type 'Derived[]' is not assignable to type 'T'. 'Derived[]' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived[]'. assignmentCompatWithCallSignatures3.ts(85,1): error TS2322: Type '(x: { a: T; b: T; }) => T' is not assignable to type '(x: { a: string; b: number; }) => Object'. @@ -20,7 +20,7 @@ b12 = a12; // ok ~~~ -!!! error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '>(x: Base[], y: T) => Derived[]'. -+!!! error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '(x: Base[], y: T) => Derived[]'. ++!!! error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: T) => Array'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'T' is not assignable to type 'Derived2[]'. !!! error TS2322: Type 'Base[]' is not assignable to type 'Derived2[]'. @@ -29,7 +29,7 @@ b13 = a13; // ok ~~~ -!!! error TS2322: Type '(x: Base[], y: Derived[]) => Derived[]' is not assignable to type '>(x: Base[], y: T) => T'. -+!!! error TS2322: Type '(x: Base[], y: Derived[]) => Derived[]' is not assignable to type '(x: Base[], y: T) => T'. ++!!! error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: T) => T'. !!! error TS2322: Type 'Derived[]' is not assignable to type 'T'. !!! error TS2322: 'Derived[]' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived[]'. declare var b14: (x: { a: T; b: T }) => T; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.types index f97d776802f..2b297c0b68d 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.types @@ -84,12 +84,12 @@ declare var a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base; >bar : string declare var a12: (x: Array, y: Array) => Array; ->a12 : (x: Base[], y: Derived2[]) => Derived[] +>a12 : (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] declare var a13: (x: Array, y: Array) => Array; ->a13 : (x: Base[], y: Derived[]) => Derived[] +>a13 : (x: Array, y: Array) => Array >x : Base[] >y : Derived[] @@ -325,34 +325,34 @@ b11 = a11; // ok >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base declare var b12: >(x: Array, y: T) => Array; ->b12 : (x: Base[], y: T) => Derived[] +>b12 : >(x: Array, y: T) => Array >x : Base[] >y : T a12 = b12; // ok ->a12 = b12 : (x: Base[], y: T) => Derived[] ->a12 : (x: Base[], y: Derived2[]) => Derived[] ->b12 : (x: Base[], y: T) => Derived[] +>a12 = b12 : >(x: Array, y: T) => Array +>a12 : (x: Array, y: Array) => Array +>b12 : >(x: Array, y: T) => Array b12 = a12; // ok ->b12 = a12 : (x: Base[], y: Derived2[]) => Derived[] ->b12 : (x: Base[], y: T) => Derived[] ->a12 : (x: Base[], y: Derived2[]) => Derived[] +>b12 = a12 : (x: Array, y: Array) => Array +>b12 : >(x: Array, y: T) => Array +>a12 : (x: Array, y: Array) => Array declare var b13: >(x: Array, y: T) => T; ->b13 : (x: Base[], y: T) => T +>b13 : >(x: Array, y: T) => T >x : Base[] >y : T a13 = b13; // ok ->a13 = b13 : (x: Base[], y: T) => T ->a13 : (x: Base[], y: Derived[]) => Derived[] ->b13 : (x: Base[], y: T) => T +>a13 = b13 : >(x: Array, y: T) => T +>a13 : (x: Array, y: Array) => Array +>b13 : >(x: Array, y: T) => T b13 = a13; // ok ->b13 = a13 : (x: Base[], y: Derived[]) => Derived[] ->b13 : (x: Base[], y: T) => T ->a13 : (x: Base[], y: Derived[]) => Derived[] +>b13 = a13 : (x: Array, y: Array) => Array +>b13 : >(x: Array, y: T) => T +>a13 : (x: Array, y: Array) => Array declare var b14: (x: { a: T; b: T }) => T; >b14 : (x: { a: T; b: T; }) => T diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.types.diff deleted file mode 100644 index 2ff214050d5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures3.types.diff +++ /dev/null @@ -1,66 +0,0 @@ ---- old.assignmentCompatWithCallSignatures3.types -+++ new.assignmentCompatWithCallSignatures3.types -@@= skipped -83, +83 lines =@@ - >bar : string - - declare var a12: (x: Array, y: Array) => Array; -->a12 : (x: Array, y: Array) => Array -+>a12 : (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - - declare var a13: (x: Array, y: Array) => Array; -->a13 : (x: Array, y: Array) => Array -+>a13 : (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] - -@@= skipped -241, +241 lines =@@ - >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - declare var b12: >(x: Array, y: T) => Array; -->b12 : >(x: Array, y: T) => Array -+>b12 : (x: Base[], y: T) => Derived[] - >x : Base[] - >y : T - - a12 = b12; // ok -->a12 = b12 : >(x: Array, y: T) => Array -->a12 : (x: Array, y: Array) => Array -->b12 : >(x: Array, y: T) => Array -+>a12 = b12 : (x: Base[], y: T) => Derived[] -+>a12 : (x: Base[], y: Derived2[]) => Derived[] -+>b12 : (x: Base[], y: T) => Derived[] - - b12 = a12; // ok -->b12 = a12 : (x: Array, y: Array) => Array -->b12 : >(x: Array, y: T) => Array -->a12 : (x: Array, y: Array) => Array -+>b12 = a12 : (x: Base[], y: Derived2[]) => Derived[] -+>b12 : (x: Base[], y: T) => Derived[] -+>a12 : (x: Base[], y: Derived2[]) => Derived[] - - declare var b13: >(x: Array, y: T) => T; -->b13 : >(x: Array, y: T) => T -+>b13 : (x: Base[], y: T) => T - >x : Base[] - >y : T - - a13 = b13; // ok -->a13 = b13 : >(x: Array, y: T) => T -->a13 : (x: Array, y: Array) => Array -->b13 : >(x: Array, y: T) => T -+>a13 = b13 : (x: Base[], y: T) => T -+>a13 : (x: Base[], y: Derived[]) => Derived[] -+>b13 : (x: Base[], y: T) => T - - b13 = a13; // ok -->b13 = a13 : (x: Array, y: Array) => Array -->b13 : >(x: Array, y: T) => T -->a13 : (x: Array, y: Array) => Array -+>b13 = a13 : (x: Base[], y: Derived[]) => Derived[] -+>b13 : (x: Base[], y: T) => T -+>a13 : (x: Base[], y: Derived[]) => Derived[] - - declare var b14: (x: { a: T; b: T }) => T; - >b14 : (x: { a: T; b: T; }) => T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.errors.txt b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.errors.txt index 5ab9eb33df9..30355e82676 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.errors.txt @@ -33,7 +33,7 @@ assignmentCompatWithCallSignatures4.ts(61,9): error TS2322: Type ' Base' is not assignable to type '(x: T, y: T) => T'. Type 'Base' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'Base'. -assignmentCompatWithCallSignatures4.ts(66,9): error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '(x: Base[], y: Base[]) => T'. +assignmentCompatWithCallSignatures4.ts(66,9): error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: Array) => T'. Types of parameters 'y' and 'y' are incompatible. Type 'Base[]' is not assignable to type 'Derived2[]'. Type 'Base' is missing the following properties from type 'Derived2': baz, bar @@ -192,7 +192,7 @@ assignmentCompatWithCallSignatures4.ts(96,9): error TS2322: Type '(x: T) => s a12 = b12; b12 = a12; ~~~ -!!! error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '(x: Base[], y: Base[]) => T'. +!!! error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: Array) => T'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'Base[]' is not assignable to type 'Derived2[]'. !!! error TS2322: Type 'Base' is missing the following properties from type 'Derived2': baz, bar diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.errors.txt.diff index 897c52cc3fa..0219b9f6087 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.errors.txt.diff @@ -5,7 +5,7 @@ Type 'Base' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'Base'. -assignmentCompatWithCallSignatures4.ts(66,9): error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '>(x: Base[], y: Base[]) => T'. -+assignmentCompatWithCallSignatures4.ts(66,9): error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '(x: Base[], y: Base[]) => T'. ++assignmentCompatWithCallSignatures4.ts(66,9): error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: Array) => T'. Types of parameters 'y' and 'y' are incompatible. Type 'Base[]' is not assignable to type 'Derived2[]'. Type 'Base' is missing the following properties from type 'Derived2': baz, bar @@ -14,7 +14,7 @@ b12 = a12; ~~~ -!!! error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '>(x: Base[], y: Base[]) => T'. -+!!! error TS2322: Type '(x: Base[], y: Derived2[]) => Derived[]' is not assignable to type '(x: Base[], y: Base[]) => T'. ++!!! error TS2322: Type '(x: Array, y: Array) => Array' is not assignable to type '>(x: Array, y: Array) => T'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'Base[]' is not assignable to type 'Derived2[]'. !!! error TS2322: Type 'Base' is missing the following properties from type 'Derived2': baz, bar \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.types index e798364c3a3..d451427f778 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.types @@ -60,7 +60,7 @@ namespace Errors { >bar : string declare var a12: (x: Array, y: Array) => Array; ->a12 : (x: Base[], y: Derived2[]) => Derived[] +>a12 : (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] @@ -81,10 +81,10 @@ namespace Errors { >b : number declare var a16: { ->a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } +>a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } (x: { ->x : { (a: number): number; (a?: number | undefined): number; } +>x : { (a: number): number; (a?: number): number; } (a: number): number; >a : number @@ -94,7 +94,7 @@ namespace Errors { }): number[]; (x: { ->x : { (a: boolean): boolean; (a?: boolean | undefined): boolean; } +>x : { (a: boolean): boolean; (a?: boolean): boolean; } (a: boolean): boolean; >a : boolean @@ -209,19 +209,19 @@ namespace Errors { >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base declare var b12: >(x: Array, y: Array) => T; ->b12 : (x: Base[], y: Base[]) => T +>b12 : >(x: Array, y: Array) => T >x : Base[] >y : Base[] a12 = b12; ->a12 = b12 : (x: Base[], y: Base[]) => T ->a12 : (x: Base[], y: Derived2[]) => Derived[] ->b12 : (x: Base[], y: Base[]) => T +>a12 = b12 : >(x: Array, y: Array) => T +>a12 : (x: Array, y: Array) => Array +>b12 : >(x: Array, y: Array) => T b12 = a12; ->b12 = a12 : (x: Base[], y: Derived2[]) => Derived[] ->b12 : (x: Base[], y: Base[]) => T ->a12 : (x: Base[], y: Derived2[]) => Derived[] +>b12 = a12 : (x: Array, y: Array) => Array +>b12 : >(x: Array, y: Array) => T +>a12 : (x: Array, y: Array) => Array declare var b15: (x: { a: T; b: T }) => T; >b15 : (x: { a: T; b: T; }) => T @@ -262,13 +262,13 @@ namespace Errors { a16 = b16; >a16 = b16 : (x: (a: T) => T) => T[] ->a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } +>a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } >b16 : (x: (a: T) => T) => T[] b16 = a16; ->b16 = a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } +>b16 = a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } >b16 : (x: (a: T) => T) => T[] ->a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } +>a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } declare var b17: (x: (a: T) => T) => any[]; >b17 : (x: (a: T) => T) => any[] diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.types.diff deleted file mode 100644 index c555daf64fd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignatures4.types.diff +++ /dev/null @@ -1,77 +0,0 @@ ---- old.assignmentCompatWithCallSignatures4.types -+++ new.assignmentCompatWithCallSignatures4.types -@@= skipped -59, +59 lines =@@ - >bar : string - - declare var a12: (x: Array, y: Array) => Array; -->a12 : (x: Array, y: Array) => Array -+>a12 : (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - -@@= skipped -21, +21 lines =@@ - >b : number - - declare var a16: { -->a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -+>a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } - - (x: { -->x : { (a: number): number; (a?: number): number; } -+>x : { (a: number): number; (a?: number | undefined): number; } - - (a: number): number; - >a : number -@@= skipped -13, +13 lines =@@ - - }): number[]; - (x: { -->x : { (a: boolean): boolean; (a?: boolean): boolean; } -+>x : { (a: boolean): boolean; (a?: boolean | undefined): boolean; } - - (a: boolean): boolean; - >a : boolean -@@= skipped -115, +115 lines =@@ - >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - declare var b12: >(x: Array, y: Array) => T; -->b12 : >(x: Array, y: Array) => T -+>b12 : (x: Base[], y: Base[]) => T - >x : Base[] - >y : Base[] - - a12 = b12; -->a12 = b12 : >(x: Array, y: Array) => T -->a12 : (x: Array, y: Array) => Array -->b12 : >(x: Array, y: Array) => T -+>a12 = b12 : (x: Base[], y: Base[]) => T -+>a12 : (x: Base[], y: Derived2[]) => Derived[] -+>b12 : (x: Base[], y: Base[]) => T - - b12 = a12; -->b12 = a12 : (x: Array, y: Array) => Array -->b12 : >(x: Array, y: Array) => T -->a12 : (x: Array, y: Array) => Array -+>b12 = a12 : (x: Base[], y: Derived2[]) => Derived[] -+>b12 : (x: Base[], y: Base[]) => T -+>a12 : (x: Base[], y: Derived2[]) => Derived[] - - declare var b15: (x: { a: T; b: T }) => T; - >b15 : (x: { a: T; b: T; }) => T -@@= skipped -53, +53 lines =@@ - - a16 = b16; - >a16 = b16 : (x: (a: T) => T) => T[] -->a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -+>a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } - >b16 : (x: (a: T) => T) => T[] - - b16 = a16; -->b16 = a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -+>b16 = a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } - >b16 : (x: (a: T) => T) => T[] -->a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -+>a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } - - declare var b17: (x: (a: T) => T) => any[]; - >b17 : (x: (a: T) => T) => any[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt index fe6b9a514c8..aa6cfb523b5 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt @@ -2,53 +2,53 @@ assignmentCompatWithCallSignaturesWithOptionalParameters.ts(16,5): error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. assignmentCompatWithCallSignaturesWithOptionalParameters.ts(19,5): error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. Target signature provides too few arguments. Expected 1 or more, but got 0. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(20,5): error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '() => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(20,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '() => number'. Target signature provides too few arguments. Expected 1 or more, but got 0. assignmentCompatWithCallSignaturesWithOptionalParameters.ts(22,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '() => number'. Target signature provides too few arguments. Expected 2 or more, but got 0. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(30,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(30,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(31,5): error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(31,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(33,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(33,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number) => number'. Target signature provides too few arguments. Expected 2 or more, but got 1. assignmentCompatWithCallSignaturesWithOptionalParameters.ts(39,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. Target signature provides too few arguments. Expected 2 or more, but got 1. assignmentCompatWithCallSignaturesWithOptionalParameters.ts(45,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. Target signature provides too few arguments. Expected 2 or more, but got 1. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(51,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(51,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(57,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(57,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(62,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(62,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(63,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(63,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(66,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(66,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(67,5): error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(67,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. @@ -82,7 +82,7 @@ assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: !!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. a = b.a4; // error ~ -!!! error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '() => number'. +!!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '() => number'. !!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. a = b.a5; // ok a = b.a6; // error @@ -95,7 +95,7 @@ assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: a2 = (x?: number) => 1; // ok, same number of required params a2 = (x: number) => 1; // ok, same number of params ~~ -!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. +!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. @@ -103,20 +103,20 @@ assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: a2 = b.a2; // ok a2 = b.a3; // ok, same number of params ~~ -!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. +!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a2 = b.a4; // ok, excess params are optional in b.a3 ~~ -!!! error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined) => number'. +!!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a2 = b.a5; // ok a2 = b.a6; // error ~~ -!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined) => number'. +!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number) => number'. !!! error TS2322: Target signature provides too few arguments. Expected 2 or more, but got 1. declare var a3: (x: number) => number; @@ -143,7 +143,7 @@ assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: a4 = (x: number) => 1; // ok, same number of required params a4 = (x: number, y: number) => 1; // ok, same number of params ~~ -!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. +!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. @@ -154,7 +154,7 @@ assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: a4 = b.a5; // ok a4 = b.a6; // ok, same number of params ~~ -!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. +!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. @@ -164,13 +164,13 @@ assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: a5 = (x?: number, y?: number) => 1; // ok, fewer required params a5 = (x: number) => 1; // ok, fewer params in lambda ~~ -!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a5 = (x: number, y: number) => 1; // ok, same number of params ~~ -!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. @@ -178,20 +178,20 @@ assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: a5 = b.a2; // ok a5 = b.a3; // ok, fewer params in b.a3 ~~ -!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a5 = b.a4; // ok, same number of params ~~ -!!! error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a5 = b.a5; // ok a5 = b.a6; // ok, same number of params ~~ -!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt.diff new file mode 100644 index 00000000000..b687e04a5b9 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt.diff @@ -0,0 +1,195 @@ +--- old.assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt ++++ new.assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt +@@= skipped -1, +1 lines =@@ + Target signature provides too few arguments. Expected 1 or more, but got 0. + assignmentCompatWithCallSignaturesWithOptionalParameters.ts(19,5): error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. + Target signature provides too few arguments. Expected 1 or more, but got 0. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(20,5): error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '() => number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(20,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '() => number'. + Target signature provides too few arguments. Expected 1 or more, but got 0. + assignmentCompatWithCallSignaturesWithOptionalParameters.ts(22,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '() => number'. + Target signature provides too few arguments. Expected 2 or more, but got 0. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(30,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(31,5): error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(33,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined) => number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(30,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(31,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(33,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number) => number'. + Target signature provides too few arguments. Expected 2 or more, but got 1. + assignmentCompatWithCallSignaturesWithOptionalParameters.ts(39,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. + Target signature provides too few arguments. Expected 2 or more, but got 1. + assignmentCompatWithCallSignaturesWithOptionalParameters.ts(45,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. + Target signature provides too few arguments. Expected 2 or more, but got 1. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(51,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. +- Types of parameters 'y' and 'y' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(57,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. +- Types of parameters 'y' and 'y' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(62,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(63,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(66,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(67,5): error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(51,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. ++ Types of parameters 'y' and 'y' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(57,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. ++ Types of parameters 'y' and 'y' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(62,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(63,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(66,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(67,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithOptionalParameters.ts(69,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. +@@= skipped -80, +80 lines =@@ + !!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. + a = b.a4; // error + ~ +-!!! error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '() => number'. ++!!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '() => number'. + !!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. + a = b.a5; // ok + a = b.a6; // error +@@= skipped -13, +13 lines =@@ + a2 = (x?: number) => 1; // ok, same number of required params + a2 = (x: number) => 1; // ok, same number of params + ~~ +-!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. +@@= skipped -8, +8 lines =@@ + a2 = b.a2; // ok + a2 = b.a3; // ok, same number of params + ~~ +-!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a2 = b.a4; // ok, excess params are optional in b.a3 + ~~ +-!!! error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a2 = b.a5; // ok + a2 = b.a6; // error + ~~ +-!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number) => number'. + !!! error TS2322: Target signature provides too few arguments. Expected 2 or more, but got 1. + + declare var a3: (x: number) => number; +@@= skipped -40, +40 lines =@@ + a4 = (x: number) => 1; // ok, same number of required params + a4 = (x: number, y: number) => 1; // ok, same number of params + ~~ +-!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. +@@= skipped -11, +11 lines =@@ + a4 = b.a5; // ok + a4 = b.a6; // ok, same number of params + ~~ +-!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. +@@= skipped -10, +10 lines =@@ + a5 = (x?: number, y?: number) => 1; // ok, fewer required params + a5 = (x: number) => 1; // ok, fewer params in lambda + ~~ +-!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a5 = (x: number, y: number) => 1; // ok, same number of params + ~~ +-!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. +@@= skipped -14, +14 lines =@@ + a5 = b.a2; // ok + a5 = b.a3; // ok, fewer params in b.a3 + ~~ +-!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a5 = b.a4; // ok, same number of params + ~~ +-!!! error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a5 = b.a5; // ok + a5 = b.a6; // ok, same number of params + ~~ +-!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.types index c317b33d65b..fac24593d75 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.types @@ -8,7 +8,7 @@ interface Base { >a : () => number a2: (x?: number) => number; ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >x : number | undefined a3: (x: number) => number; @@ -16,12 +16,12 @@ interface Base { >x : number a4: (x: number, y?: number) => number; ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >x : number >y : number | undefined a5: (x?: number, y?: number) => number; ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >x : number | undefined >y : number | undefined @@ -43,9 +43,9 @@ declare var a: () => number; >1 : 1 a = (x?: number) => 1; // ok, same number of required params ->a = (x?: number) => 1 : (x?: number | undefined) => number +>a = (x?: number) => 1 : (x?: number) => number >a : () => number ->(x?: number) => 1 : (x?: number | undefined) => number +>(x?: number) => 1 : (x?: number) => number >x : number | undefined >1 : 1 @@ -64,11 +64,11 @@ declare var a: () => number; >a : () => number a = b.a2; // ok ->a = b.a2 : (x?: number | undefined) => number +>a = b.a2 : (x?: number) => number >a : () => number ->b.a2 : (x?: number | undefined) => number +>b.a2 : (x?: number) => number >b : Base ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number a = b.a3; // error >a = b.a3 : (x: number) => number @@ -78,18 +78,18 @@ declare var a: () => number; >a3 : (x: number) => number a = b.a4; // error ->a = b.a4 : (x: number, y?: number | undefined) => number +>a = b.a4 : (x: number, y?: number) => number >a : () => number ->b.a4 : (x: number, y?: number | undefined) => number +>b.a4 : (x: number, y?: number) => number >b : Base ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number a = b.a5; // ok ->a = b.a5 : (x?: number | undefined, y?: number | undefined) => number +>a = b.a5 : (x?: number, y?: number) => number >a : () => number ->b.a5 : (x?: number | undefined, y?: number | undefined) => number +>b.a5 : (x?: number, y?: number) => number >b : Base ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number a = b.a6; // error >a = b.a6 : (x: number, y: number) => number @@ -99,67 +99,67 @@ declare var a: () => number; >a6 : (x: number, y: number) => number declare var a2: (x?: number) => number; ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >x : number | undefined a2 = () => 1; // ok, same number of required params >a2 = () => 1 : () => number ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >() => 1 : () => number >1 : 1 a2 = (x?: number) => 1; // ok, same number of required params ->a2 = (x?: number) => 1 : (x?: number | undefined) => number ->a2 : (x?: number | undefined) => number ->(x?: number) => 1 : (x?: number | undefined) => number +>a2 = (x?: number) => 1 : (x?: number) => number +>a2 : (x?: number) => number +>(x?: number) => 1 : (x?: number) => number >x : number | undefined >1 : 1 a2 = (x: number) => 1; // ok, same number of params >a2 = (x: number) => 1 : (x: number) => number ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >(x: number) => 1 : (x: number) => number >x : number >1 : 1 a2 = b.a; // ok >a2 = b.a : () => number ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >b.a : () => number >b : Base >a : () => number a2 = b.a2; // ok ->a2 = b.a2 : (x?: number | undefined) => number ->a2 : (x?: number | undefined) => number ->b.a2 : (x?: number | undefined) => number +>a2 = b.a2 : (x?: number) => number +>a2 : (x?: number) => number +>b.a2 : (x?: number) => number >b : Base ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number a2 = b.a3; // ok, same number of params >a2 = b.a3 : (x: number) => number ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >b.a3 : (x: number) => number >b : Base >a3 : (x: number) => number a2 = b.a4; // ok, excess params are optional in b.a3 ->a2 = b.a4 : (x: number, y?: number | undefined) => number ->a2 : (x?: number | undefined) => number ->b.a4 : (x: number, y?: number | undefined) => number +>a2 = b.a4 : (x: number, y?: number) => number +>a2 : (x?: number) => number +>b.a4 : (x: number, y?: number) => number >b : Base ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number a2 = b.a5; // ok ->a2 = b.a5 : (x?: number | undefined, y?: number | undefined) => number ->a2 : (x?: number | undefined) => number ->b.a5 : (x?: number | undefined, y?: number | undefined) => number +>a2 = b.a5 : (x?: number, y?: number) => number +>a2 : (x?: number) => number +>b.a5 : (x?: number, y?: number) => number >b : Base ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number a2 = b.a6; // error >a2 = b.a6 : (x: number, y: number) => number ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >b.a6 : (x: number, y: number) => number >b : Base >a6 : (x: number, y: number) => number @@ -175,9 +175,9 @@ declare var a3: (x: number) => number; >1 : 1 a3 = (x?: number) => 1; // ok, fewer required params ->a3 = (x?: number) => 1 : (x?: number | undefined) => number +>a3 = (x?: number) => 1 : (x?: number) => number >a3 : (x: number) => number ->(x?: number) => 1 : (x?: number | undefined) => number +>(x?: number) => 1 : (x?: number) => number >x : number | undefined >1 : 1 @@ -204,11 +204,11 @@ declare var a3: (x: number) => number; >a : () => number a3 = b.a2; // ok ->a3 = b.a2 : (x?: number | undefined) => number +>a3 = b.a2 : (x?: number) => number >a3 : (x: number) => number ->b.a2 : (x?: number | undefined) => number +>b.a2 : (x?: number) => number >b : Base ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number a3 = b.a3; // ok >a3 = b.a3 : (x: number) => number @@ -218,18 +218,18 @@ declare var a3: (x: number) => number; >a3 : (x: number) => number a3 = b.a4; // ok ->a3 = b.a4 : (x: number, y?: number | undefined) => number +>a3 = b.a4 : (x: number, y?: number) => number >a3 : (x: number) => number ->b.a4 : (x: number, y?: number | undefined) => number +>b.a4 : (x: number, y?: number) => number >b : Base ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number a3 = b.a5; // ok ->a3 = b.a5 : (x?: number | undefined, y?: number | undefined) => number +>a3 = b.a5 : (x?: number, y?: number) => number >a3 : (x: number) => number ->b.a5 : (x?: number | undefined, y?: number | undefined) => number +>b.a5 : (x?: number, y?: number) => number >b : Base ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number a3 = b.a6; // error >a3 = b.a6 : (x: number, y: number) => number @@ -239,34 +239,34 @@ declare var a3: (x: number) => number; >a6 : (x: number, y: number) => number declare var a4: (x: number, y?: number) => number; ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >x : number >y : number | undefined a4 = () => 1; // ok, fewer required params >a4 = () => 1 : () => number ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >() => 1 : () => number >1 : 1 a4 = (x?: number, y?: number) => 1; // ok, fewer required params ->a4 = (x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number ->a4 : (x: number, y?: number | undefined) => number ->(x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number +>a4 = (x?: number, y?: number) => 1 : (x?: number, y?: number) => number +>a4 : (x: number, y?: number) => number +>(x?: number, y?: number) => 1 : (x?: number, y?: number) => number >x : number | undefined >y : number | undefined >1 : 1 a4 = (x: number) => 1; // ok, same number of required params >a4 = (x: number) => 1 : (x: number) => number ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >(x: number) => 1 : (x: number) => number >x : number >1 : 1 a4 = (x: number, y: number) => 1; // ok, same number of params >a4 = (x: number, y: number) => 1 : (x: number, y: number) => number ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >(x: number, y: number) => 1 : (x: number, y: number) => number >x : number >y : number @@ -274,75 +274,75 @@ declare var a4: (x: number, y?: number) => number; a4 = b.a; // ok >a4 = b.a : () => number ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >b.a : () => number >b : Base >a : () => number a4 = b.a2; // ok ->a4 = b.a2 : (x?: number | undefined) => number ->a4 : (x: number, y?: number | undefined) => number ->b.a2 : (x?: number | undefined) => number +>a4 = b.a2 : (x?: number) => number +>a4 : (x: number, y?: number) => number +>b.a2 : (x?: number) => number >b : Base ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number a4 = b.a3; // ok >a4 = b.a3 : (x: number) => number ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >b.a3 : (x: number) => number >b : Base >a3 : (x: number) => number a4 = b.a4; // ok ->a4 = b.a4 : (x: number, y?: number | undefined) => number ->a4 : (x: number, y?: number | undefined) => number ->b.a4 : (x: number, y?: number | undefined) => number +>a4 = b.a4 : (x: number, y?: number) => number +>a4 : (x: number, y?: number) => number +>b.a4 : (x: number, y?: number) => number >b : Base ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number a4 = b.a5; // ok ->a4 = b.a5 : (x?: number | undefined, y?: number | undefined) => number ->a4 : (x: number, y?: number | undefined) => number ->b.a5 : (x?: number | undefined, y?: number | undefined) => number +>a4 = b.a5 : (x?: number, y?: number) => number +>a4 : (x: number, y?: number) => number +>b.a5 : (x?: number, y?: number) => number >b : Base ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number a4 = b.a6; // ok, same number of params >a4 = b.a6 : (x: number, y: number) => number ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >b.a6 : (x: number, y: number) => number >b : Base >a6 : (x: number, y: number) => number declare var a5: (x?: number, y?: number) => number; ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >x : number | undefined >y : number | undefined a5 = () => 1; // ok, fewer required params >a5 = () => 1 : () => number ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >() => 1 : () => number >1 : 1 a5 = (x?: number, y?: number) => 1; // ok, fewer required params ->a5 = (x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number ->a5 : (x?: number | undefined, y?: number | undefined) => number ->(x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number +>a5 = (x?: number, y?: number) => 1 : (x?: number, y?: number) => number +>a5 : (x?: number, y?: number) => number +>(x?: number, y?: number) => 1 : (x?: number, y?: number) => number >x : number | undefined >y : number | undefined >1 : 1 a5 = (x: number) => 1; // ok, fewer params in lambda >a5 = (x: number) => 1 : (x: number) => number ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >(x: number) => 1 : (x: number) => number >x : number >1 : 1 a5 = (x: number, y: number) => 1; // ok, same number of params >a5 = (x: number, y: number) => 1 : (x: number, y: number) => number ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >(x: number, y: number) => 1 : (x: number, y: number) => number >x : number >y : number @@ -350,42 +350,42 @@ declare var a5: (x?: number, y?: number) => number; a5 = b.a; // ok >a5 = b.a : () => number ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >b.a : () => number >b : Base >a : () => number a5 = b.a2; // ok ->a5 = b.a2 : (x?: number | undefined) => number ->a5 : (x?: number | undefined, y?: number | undefined) => number ->b.a2 : (x?: number | undefined) => number +>a5 = b.a2 : (x?: number) => number +>a5 : (x?: number, y?: number) => number +>b.a2 : (x?: number) => number >b : Base ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number a5 = b.a3; // ok, fewer params in b.a3 >a5 = b.a3 : (x: number) => number ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >b.a3 : (x: number) => number >b : Base >a3 : (x: number) => number a5 = b.a4; // ok, same number of params ->a5 = b.a4 : (x: number, y?: number | undefined) => number ->a5 : (x?: number | undefined, y?: number | undefined) => number ->b.a4 : (x: number, y?: number | undefined) => number +>a5 = b.a4 : (x: number, y?: number) => number +>a5 : (x?: number, y?: number) => number +>b.a4 : (x: number, y?: number) => number >b : Base ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number a5 = b.a5; // ok ->a5 = b.a5 : (x?: number | undefined, y?: number | undefined) => number ->a5 : (x?: number | undefined, y?: number | undefined) => number ->b.a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 = b.a5 : (x?: number, y?: number) => number +>a5 : (x?: number, y?: number) => number +>b.a5 : (x?: number, y?: number) => number >b : Base ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number a5 = b.a6; // ok, same number of params >a5 = b.a6 : (x: number, y: number) => number ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >b.a6 : (x: number, y: number) => number >b : Base >a6 : (x: number, y: number) => number diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.types.diff deleted file mode 100644 index 812976702a2..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithOptionalParameters.types.diff +++ /dev/null @@ -1,417 +0,0 @@ ---- old.assignmentCompatWithCallSignaturesWithOptionalParameters.types -+++ new.assignmentCompatWithCallSignaturesWithOptionalParameters.types -@@= skipped -7, +7 lines =@@ - >a : () => number - - a2: (x?: number) => number; -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >x : number | undefined - - a3: (x: number) => number; -@@= skipped -8, +8 lines =@@ - >x : number - - a4: (x: number, y?: number) => number; -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - - a5: (x?: number, y?: number) => number; -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - -@@= skipped -27, +27 lines =@@ - >1 : 1 - - a = (x?: number) => 1; // ok, same number of required params -->a = (x?: number) => 1 : (x?: number) => number -+>a = (x?: number) => 1 : (x?: number | undefined) => number - >a : () => number -->(x?: number) => 1 : (x?: number) => number -+>(x?: number) => 1 : (x?: number | undefined) => number - >x : number | undefined - >1 : 1 - -@@= skipped -21, +21 lines =@@ - >a : () => number - - a = b.a2; // ok -->a = b.a2 : (x?: number) => number -+>a = b.a2 : (x?: number | undefined) => number - >a : () => number -->b.a2 : (x?: number) => number -+>b.a2 : (x?: number | undefined) => number - >b : Base -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - - a = b.a3; // error - >a = b.a3 : (x: number) => number -@@= skipped -14, +14 lines =@@ - >a3 : (x: number) => number - - a = b.a4; // error -->a = b.a4 : (x: number, y?: number) => number -+>a = b.a4 : (x: number, y?: number | undefined) => number - >a : () => number -->b.a4 : (x: number, y?: number) => number -+>b.a4 : (x: number, y?: number | undefined) => number - >b : Base -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - - a = b.a5; // ok -->a = b.a5 : (x?: number, y?: number) => number -+>a = b.a5 : (x?: number | undefined, y?: number | undefined) => number - >a : () => number -->b.a5 : (x?: number, y?: number) => number -+>b.a5 : (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - - a = b.a6; // error - >a = b.a6 : (x: number, y: number) => number -@@= skipped -21, +21 lines =@@ - >a6 : (x: number, y: number) => number - - declare var a2: (x?: number) => number; -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >x : number | undefined - - a2 = () => 1; // ok, same number of required params - >a2 = () => 1 : () => number -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >() => 1 : () => number - >1 : 1 - - a2 = (x?: number) => 1; // ok, same number of required params -->a2 = (x?: number) => 1 : (x?: number) => number -->a2 : (x?: number) => number -->(x?: number) => 1 : (x?: number) => number -+>a2 = (x?: number) => 1 : (x?: number | undefined) => number -+>a2 : (x?: number | undefined) => number -+>(x?: number) => 1 : (x?: number | undefined) => number - >x : number | undefined - >1 : 1 - - a2 = (x: number) => 1; // ok, same number of params - >a2 = (x: number) => 1 : (x: number) => number -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >(x: number) => 1 : (x: number) => number - >x : number - >1 : 1 - - a2 = b.a; // ok - >a2 = b.a : () => number -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >b.a : () => number - >b : Base - >a : () => number - - a2 = b.a2; // ok -->a2 = b.a2 : (x?: number) => number -->a2 : (x?: number) => number -->b.a2 : (x?: number) => number -+>a2 = b.a2 : (x?: number | undefined) => number -+>a2 : (x?: number | undefined) => number -+>b.a2 : (x?: number | undefined) => number - >b : Base -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - - a2 = b.a3; // ok, same number of params - >a2 = b.a3 : (x: number) => number -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >b.a3 : (x: number) => number - >b : Base - >a3 : (x: number) => number - - a2 = b.a4; // ok, excess params are optional in b.a3 -->a2 = b.a4 : (x: number, y?: number) => number -->a2 : (x?: number) => number -->b.a4 : (x: number, y?: number) => number -+>a2 = b.a4 : (x: number, y?: number | undefined) => number -+>a2 : (x?: number | undefined) => number -+>b.a4 : (x: number, y?: number | undefined) => number - >b : Base -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - - a2 = b.a5; // ok -->a2 = b.a5 : (x?: number, y?: number) => number -->a2 : (x?: number) => number -->b.a5 : (x?: number, y?: number) => number -+>a2 = b.a5 : (x?: number | undefined, y?: number | undefined) => number -+>a2 : (x?: number | undefined) => number -+>b.a5 : (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - - a2 = b.a6; // error - >a2 = b.a6 : (x: number, y: number) => number -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >b.a6 : (x: number, y: number) => number - >b : Base - >a6 : (x: number, y: number) => number -@@= skipped -76, +76 lines =@@ - >1 : 1 - - a3 = (x?: number) => 1; // ok, fewer required params -->a3 = (x?: number) => 1 : (x?: number) => number -+>a3 = (x?: number) => 1 : (x?: number | undefined) => number - >a3 : (x: number) => number -->(x?: number) => 1 : (x?: number) => number -+>(x?: number) => 1 : (x?: number | undefined) => number - >x : number | undefined - >1 : 1 - -@@= skipped -29, +29 lines =@@ - >a : () => number - - a3 = b.a2; // ok -->a3 = b.a2 : (x?: number) => number -+>a3 = b.a2 : (x?: number | undefined) => number - >a3 : (x: number) => number -->b.a2 : (x?: number) => number -+>b.a2 : (x?: number | undefined) => number - >b : Base -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - - a3 = b.a3; // ok - >a3 = b.a3 : (x: number) => number -@@= skipped -14, +14 lines =@@ - >a3 : (x: number) => number - - a3 = b.a4; // ok -->a3 = b.a4 : (x: number, y?: number) => number -+>a3 = b.a4 : (x: number, y?: number | undefined) => number - >a3 : (x: number) => number -->b.a4 : (x: number, y?: number) => number -+>b.a4 : (x: number, y?: number | undefined) => number - >b : Base -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - - a3 = b.a5; // ok -->a3 = b.a5 : (x?: number, y?: number) => number -+>a3 = b.a5 : (x?: number | undefined, y?: number | undefined) => number - >a3 : (x: number) => number -->b.a5 : (x?: number, y?: number) => number -+>b.a5 : (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - - a3 = b.a6; // error - >a3 = b.a6 : (x: number, y: number) => number -@@= skipped -21, +21 lines =@@ - >a6 : (x: number, y: number) => number - - declare var a4: (x: number, y?: number) => number; -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - - a4 = () => 1; // ok, fewer required params - >a4 = () => 1 : () => number -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >() => 1 : () => number - >1 : 1 - - a4 = (x?: number, y?: number) => 1; // ok, fewer required params -->a4 = (x?: number, y?: number) => 1 : (x?: number, y?: number) => number -->a4 : (x: number, y?: number) => number -->(x?: number, y?: number) => 1 : (x?: number, y?: number) => number -+>a4 = (x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number -+>a4 : (x: number, y?: number | undefined) => number -+>(x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - >1 : 1 - - a4 = (x: number) => 1; // ok, same number of required params - >a4 = (x: number) => 1 : (x: number) => number -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >(x: number) => 1 : (x: number) => number - >x : number - >1 : 1 - - a4 = (x: number, y: number) => 1; // ok, same number of params - >a4 = (x: number, y: number) => 1 : (x: number, y: number) => number -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >(x: number, y: number) => 1 : (x: number, y: number) => number - >x : number - >y : number -@@= skipped -35, +35 lines =@@ - - a4 = b.a; // ok - >a4 = b.a : () => number -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >b.a : () => number - >b : Base - >a : () => number - - a4 = b.a2; // ok -->a4 = b.a2 : (x?: number) => number -->a4 : (x: number, y?: number) => number -->b.a2 : (x?: number) => number -+>a4 = b.a2 : (x?: number | undefined) => number -+>a4 : (x: number, y?: number | undefined) => number -+>b.a2 : (x?: number | undefined) => number - >b : Base -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - - a4 = b.a3; // ok - >a4 = b.a3 : (x: number) => number -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >b.a3 : (x: number) => number - >b : Base - >a3 : (x: number) => number - - a4 = b.a4; // ok -->a4 = b.a4 : (x: number, y?: number) => number -->a4 : (x: number, y?: number) => number -->b.a4 : (x: number, y?: number) => number -+>a4 = b.a4 : (x: number, y?: number | undefined) => number -+>a4 : (x: number, y?: number | undefined) => number -+>b.a4 : (x: number, y?: number | undefined) => number - >b : Base -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - - a4 = b.a5; // ok -->a4 = b.a5 : (x?: number, y?: number) => number -->a4 : (x: number, y?: number) => number -->b.a5 : (x?: number, y?: number) => number -+>a4 = b.a5 : (x?: number | undefined, y?: number | undefined) => number -+>a4 : (x: number, y?: number | undefined) => number -+>b.a5 : (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - - a4 = b.a6; // ok, same number of params - >a4 = b.a6 : (x: number, y: number) => number -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >b.a6 : (x: number, y: number) => number - >b : Base - >a6 : (x: number, y: number) => number - - declare var a5: (x?: number, y?: number) => number; -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - - a5 = () => 1; // ok, fewer required params - >a5 = () => 1 : () => number -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >() => 1 : () => number - >1 : 1 - - a5 = (x?: number, y?: number) => 1; // ok, fewer required params -->a5 = (x?: number, y?: number) => 1 : (x?: number, y?: number) => number -->a5 : (x?: number, y?: number) => number -->(x?: number, y?: number) => 1 : (x?: number, y?: number) => number -+>a5 = (x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number -+>(x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - >1 : 1 - - a5 = (x: number) => 1; // ok, fewer params in lambda - >a5 = (x: number) => 1 : (x: number) => number -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >(x: number) => 1 : (x: number) => number - >x : number - >1 : 1 - - a5 = (x: number, y: number) => 1; // ok, same number of params - >a5 = (x: number, y: number) => 1 : (x: number, y: number) => number -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >(x: number, y: number) => 1 : (x: number, y: number) => number - >x : number - >y : number -@@= skipped -76, +76 lines =@@ - - a5 = b.a; // ok - >a5 = b.a : () => number -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >b.a : () => number - >b : Base - >a : () => number - - a5 = b.a2; // ok -->a5 = b.a2 : (x?: number) => number -->a5 : (x?: number, y?: number) => number -->b.a2 : (x?: number) => number -+>a5 = b.a2 : (x?: number | undefined) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number -+>b.a2 : (x?: number | undefined) => number - >b : Base -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - - a5 = b.a3; // ok, fewer params in b.a3 - >a5 = b.a3 : (x: number) => number -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >b.a3 : (x: number) => number - >b : Base - >a3 : (x: number) => number - - a5 = b.a4; // ok, same number of params -->a5 = b.a4 : (x: number, y?: number) => number -->a5 : (x?: number, y?: number) => number -->b.a4 : (x: number, y?: number) => number -+>a5 = b.a4 : (x: number, y?: number | undefined) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number -+>b.a4 : (x: number, y?: number | undefined) => number - >b : Base -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - - a5 = b.a5; // ok -->a5 = b.a5 : (x?: number, y?: number) => number -->a5 : (x?: number, y?: number) => number -->b.a5 : (x?: number, y?: number) => number -+>a5 = b.a5 : (x?: number | undefined, y?: number | undefined) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number -+>b.a5 : (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - - a5 = b.a6; // ok, same number of params - >a5 = b.a6 : (x: number, y: number) => number -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >b.a6 : (x: number, y: number) => number - >b : Base - >a6 : (x: number, y: number) => number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt index 0c9f5bcdbd0..0911726a97a 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt @@ -1,40 +1,40 @@ assignmentCompatWithCallSignaturesWithRestParameters.ts(13,5): error TS2322: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. Types of parameters 'args' and 'args' are incompatible. Type 'number' is not assignable to type 'string'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(17,5): error TS2322: Type '(x?: string | undefined) => number' is not assignable to type '(...args: number[]) => number'. +assignmentCompatWithCallSignaturesWithRestParameters.ts(17,5): error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. Types of parameters 'x' and 'args' are incompatible. Type 'number' is not assignable to type 'string'. assignmentCompatWithCallSignaturesWithRestParameters.ts(26,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. Types of parameters 'args' and 'z' are incompatible. Type 'number' is not assignable to type 'string'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(34,5): error TS2322: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +assignmentCompatWithCallSignaturesWithRestParameters.ts(34,5): error TS2322: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(35,5): error TS2322: Type '(x: number, y?: number | undefined, z?: number | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +assignmentCompatWithCallSignaturesWithRestParameters.ts(35,5): error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'number | undefined'. Type 'string' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(36,5): error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +assignmentCompatWithCallSignaturesWithRestParameters.ts(36,5): error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'z' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(37,5): error TS2322: Type '(x: string, y?: string | undefined, z?: string | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +assignmentCompatWithCallSignaturesWithRestParameters.ts(37,5): error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number' is not assignable to type 'string'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(41,5): error TS2322: Type '(x?: number | undefined, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +assignmentCompatWithCallSignaturesWithRestParameters.ts(41,5): error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'number | undefined'. Type 'string' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(42,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +assignmentCompatWithCallSignaturesWithRestParameters.ts(42,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(43,5): error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +assignmentCompatWithCallSignaturesWithRestParameters.ts(43,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. @@ -63,7 +63,7 @@ assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Typ a = (x: number) => 1; // ok, rest param corresponds to infinite number of params a = (x?: string) => 1; // error, incompatible type ~ -!!! error TS2322: Type '(x?: string | undefined) => number' is not assignable to type '(...args: number[]) => number'. +!!! error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. !!! error TS2322: Types of parameters 'x' and 'args' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. @@ -88,25 +88,25 @@ assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Typ a3 = (x: number) => 1; // ok, same number of required params a3 = (x: number, y: string) => 1; // ok, all present params match ~~ -!!! error TS2322: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2322: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'string | undefined' is not assignable to type 'string'. !!! error TS2322: Type 'undefined' is not assignable to type 'string'. a3 = (x: number, y?: number, z?: number) => 1; // error ~~ -!!! error TS2322: Type '(x: number, y?: number | undefined, z?: number | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'string | undefined' is not assignable to type 'number | undefined'. !!! error TS2322: Type 'string' is not assignable to type 'number'. a3 = (x: number, ...z: number[]) => 1; // error ~~ -!!! error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'z' and 'y' are incompatible. !!! error TS2322: Type 'string | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a3 = (x: string, y?: string, z?: string) => 1; // error ~~ -!!! error TS2322: Type '(x: string, y?: string | undefined, z?: string | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. @@ -114,26 +114,26 @@ assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Typ a4 = () => 1; // ok, fewer required params a4 = (x?: number, y?: number) => 1; // error, type mismatch ~~ -!!! error TS2322: Type '(x?: number | undefined, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'string | undefined' is not assignable to type 'number | undefined'. !!! error TS2322: Type 'string' is not assignable to type 'number'. a4 = (x: number) => 1; // ok, all present params match ~~ -!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a4 = (x: number, y?: number) => 1; // error, second param has type mismatch ~~ -!!! error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a4 = (x?: number, y?: string) => 1; // ok, same number of required params with matching types a4 = (x: number, ...args: string[]) => 1; // error, rest params have type mismatch ~~ -!!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt.diff index a2f864c3c94..4774b77b41b 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt.diff @@ -1,87 +1,112 @@ --- old.assignmentCompatWithCallSignaturesWithRestParameters.errors.txt +++ new.assignmentCompatWithCallSignaturesWithRestParameters.errors.txt -@@= skipped -0, +0 lines =@@ - assignmentCompatWithCallSignaturesWithRestParameters.ts(13,5): error TS2322: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. - Types of parameters 'args' and 'args' are incompatible. - Type 'number' is not assignable to type 'string'. --assignmentCompatWithCallSignaturesWithRestParameters.ts(17,5): error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. -+assignmentCompatWithCallSignaturesWithRestParameters.ts(17,5): error TS2322: Type '(x?: string | undefined) => number' is not assignable to type '(...args: number[]) => number'. - Types of parameters 'x' and 'args' are incompatible. - Type 'number' is not assignable to type 'string'. +@@= skipped -6, +6 lines =@@ assignmentCompatWithCallSignaturesWithRestParameters.ts(26,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. -@@= skipped -10, +10 lines =@@ + Types of parameters 'args' and 'z' are incompatible. + Type 'number' is not assignable to type 'string'. +-assignmentCompatWithCallSignaturesWithRestParameters.ts(34,5): error TS2322: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++assignmentCompatWithCallSignaturesWithRestParameters.ts(34,5): error TS2322: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(35,5): error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. -+assignmentCompatWithCallSignaturesWithRestParameters.ts(35,5): error TS2322: Type '(x: number, y?: number | undefined, z?: number | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++assignmentCompatWithCallSignaturesWithRestParameters.ts(35,5): error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'number | undefined'. Type 'string' is not assignable to type 'number'. -@@= skipped -8, +8 lines =@@ +-assignmentCompatWithCallSignaturesWithRestParameters.ts(36,5): error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++assignmentCompatWithCallSignaturesWithRestParameters.ts(36,5): error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'z' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(37,5): error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. -+assignmentCompatWithCallSignaturesWithRestParameters.ts(37,5): error TS2322: Type '(x: string, y?: string | undefined, z?: string | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++assignmentCompatWithCallSignaturesWithRestParameters.ts(37,5): error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number' is not assignable to type 'string'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(41,5): error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. -+assignmentCompatWithCallSignaturesWithRestParameters.ts(41,5): error TS2322: Type '(x?: number | undefined, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++assignmentCompatWithCallSignaturesWithRestParameters.ts(41,5): error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'number | undefined'. Type 'string' is not assignable to type 'number'. -@@= skipped -11, +11 lines =@@ - Types of parameters 'x' and 'x' are incompatible. - Type 'number | undefined' is not assignable to type 'number'. - Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithRestParameters.ts(42,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithCallSignaturesWithRestParameters.ts(43,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. -+assignmentCompatWithCallSignaturesWithRestParameters.ts(43,5): error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++assignmentCompatWithCallSignaturesWithRestParameters.ts(42,5): error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithRestParameters.ts(43,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -@@= skipped -33, +33 lines =@@ - a = (x: number) => 1; // ok, rest param corresponds to infinite number of params - a = (x?: string) => 1; // error, incompatible type - ~ --!!! error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. -+!!! error TS2322: Type '(x?: string | undefined) => number' is not assignable to type '(...args: number[]) => number'. - !!! error TS2322: Types of parameters 'x' and 'args' are incompatible. - !!! error TS2322: Type 'number' is not assignable to type 'string'. - -@@= skipped -31, +31 lines =@@ +@@= skipped -81, +81 lines =@@ + a3 = (x: number) => 1; // ok, same number of required params + a3 = (x: number, y: string) => 1; // ok, all present params match + ~~ +-!!! error TS2322: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2322: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2322: Type 'string | undefined' is not assignable to type 'string'. !!! error TS2322: Type 'undefined' is not assignable to type 'string'. a3 = (x: number, y?: number, z?: number) => 1; // error ~~ -!!! error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. -+!!! error TS2322: Type '(x: number, y?: number | undefined, z?: number | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'string | undefined' is not assignable to type 'number | undefined'. !!! error TS2322: Type 'string' is not assignable to type 'number'. -@@= skipped -12, +12 lines =@@ + a3 = (x: number, ...z: number[]) => 1; // error + ~~ +-!!! error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + !!! error TS2322: Types of parameters 'z' and 'y' are incompatible. + !!! error TS2322: Type 'string | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a3 = (x: string, y?: string, z?: string) => 1; // error ~~ -!!! error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. -+!!! error TS2322: Type '(x: string, y?: string | undefined, z?: string | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. -@@= skipped -8, +8 lines =@@ +@@= skipped -26, +26 lines =@@ a4 = () => 1; // ok, fewer required params a4 = (x?: number, y?: number) => 1; // error, type mismatch ~~ -!!! error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. -+!!! error TS2322: Type '(x?: number | undefined, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'string | undefined' is not assignable to type 'number | undefined'. !!! error TS2322: Type 'string' is not assignable to type 'number'. -@@= skipped -12, +12 lines =@@ + a4 = (x: number) => 1; // ok, all present params match + ~~ +-!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2322: Type '(x: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a4 = (x: number, y?: number) => 1; // error, second param has type mismatch ~~ -!!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. -+!!! error TS2322: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a4 = (x?: number, y?: string) => 1; // ok, same number of required params with matching types + a4 = (x: number, ...args: string[]) => 1; // error, rest params have type mismatch + ~~ +-!!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.types index 7035ab5714a..0af663a331d 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.types @@ -14,13 +14,13 @@ interface Base { >z : number[] a3: (x: number, y?: string, ...z: number[]) => number; ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number +>a3 : (x: number, y?: string, ...z: number[]) => number >x : number >y : string | undefined >z : number[] a4: (x?: number, y?: string, ...z: number[]) => number; ->a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number +>a4 : (x?: number, y?: string, ...z: number[]) => number >x : number | undefined >y : string | undefined >z : number[] @@ -51,16 +51,16 @@ var a: (...args: number[]) => number; // ok, same number of required params >1 : 1 a = (x?: number) => 1; // ok, same number of required params ->a = (x?: number) => 1 : (x?: number | undefined) => number +>a = (x?: number) => 1 : (x?: number) => number >a : (...args: number[]) => number ->(x?: number) => 1 : (x?: number | undefined) => number +>(x?: number) => 1 : (x?: number) => number >x : number | undefined >1 : 1 a = (x?: number, y?: number, z?: number) => 1; // ok, same number of required params ->a = (x?: number, y?: number, z?: number) => 1 : (x?: number | undefined, y?: number | undefined, z?: number | undefined) => number +>a = (x?: number, y?: number, z?: number) => 1 : (x?: number, y?: number, z?: number) => number >a : (...args: number[]) => number ->(x?: number, y?: number, z?: number) => 1 : (x?: number | undefined, y?: number | undefined, z?: number | undefined) => number +>(x?: number, y?: number, z?: number) => 1 : (x?: number, y?: number, z?: number) => number >x : number | undefined >y : number | undefined >z : number | undefined @@ -74,9 +74,9 @@ var a: (...args: number[]) => number; // ok, same number of required params >1 : 1 a = (x?: string) => 1; // error, incompatible type ->a = (x?: string) => 1 : (x?: string | undefined) => number +>a = (x?: string) => 1 : (x?: string) => number >a : (...args: number[]) => number ->(x?: string) => 1 : (x?: string | undefined) => number +>(x?: string) => 1 : (x?: string) => number >x : string | undefined >1 : 1 @@ -100,9 +100,9 @@ var a2: (x: number, ...z: number[]) => number; >1 : 1 a2 = (x?: number) => 1; // ok, fewer required params ->a2 = (x?: number) => 1 : (x?: number | undefined) => number +>a2 = (x?: number) => 1 : (x?: number) => number >a2 : (x: number, ...z: number[]) => number ->(x?: number) => 1 : (x?: number | undefined) => number +>(x?: number) => 1 : (x?: number) => number >x : number | undefined >1 : 1 @@ -138,51 +138,51 @@ var a2: (x: number, ...z: number[]) => number; >1 : 1 a2 = (x: number, y?: number) => 1; // ok, same number of required params ->a2 = (x: number, y?: number) => 1 : (x: number, y?: number | undefined) => number +>a2 = (x: number, y?: number) => 1 : (x: number, y?: number) => number >a2 : (x: number, ...z: number[]) => number ->(x: number, y?: number) => 1 : (x: number, y?: number | undefined) => number +>(x: number, y?: number) => 1 : (x: number, y?: number) => number >x : number >y : number | undefined >1 : 1 var a3: (x: number, y?: string, ...z: number[]) => number; ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number +>a3 : (x: number, y?: string, ...z: number[]) => number >x : number >y : string | undefined >z : number[] a3 = () => 1; // ok, fewer required params >a3 = () => 1 : () => number ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number +>a3 : (x: number, y?: string, ...z: number[]) => number >() => 1 : () => number >1 : 1 a3 = (x?: number) => 1; // ok, fewer required params ->a3 = (x?: number) => 1 : (x?: number | undefined) => number ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number ->(x?: number) => 1 : (x?: number | undefined) => number +>a3 = (x?: number) => 1 : (x?: number) => number +>a3 : (x: number, y?: string, ...z: number[]) => number +>(x?: number) => 1 : (x?: number) => number >x : number | undefined >1 : 1 a3 = (x: number) => 1; // ok, same number of required params >a3 = (x: number) => 1 : (x: number) => number ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number +>a3 : (x: number, y?: string, ...z: number[]) => number >(x: number) => 1 : (x: number) => number >x : number >1 : 1 a3 = (x: number, y: string) => 1; // ok, all present params match >a3 = (x: number, y: string) => 1 : (x: number, y: string) => number ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number +>a3 : (x: number, y?: string, ...z: number[]) => number >(x: number, y: string) => 1 : (x: number, y: string) => number >x : number >y : string >1 : 1 a3 = (x: number, y?: number, z?: number) => 1; // error ->a3 = (x: number, y?: number, z?: number) => 1 : (x: number, y?: number | undefined, z?: number | undefined) => number ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number ->(x: number, y?: number, z?: number) => 1 : (x: number, y?: number | undefined, z?: number | undefined) => number +>a3 = (x: number, y?: number, z?: number) => 1 : (x: number, y?: number, z?: number) => number +>a3 : (x: number, y?: string, ...z: number[]) => number +>(x: number, y?: number, z?: number) => 1 : (x: number, y?: number, z?: number) => number >x : number >y : number | undefined >z : number | undefined @@ -190,67 +190,67 @@ var a3: (x: number, y?: string, ...z: number[]) => number; a3 = (x: number, ...z: number[]) => 1; // error >a3 = (x: number, ...z: number[]) => 1 : (x: number, ...z: number[]) => number ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number +>a3 : (x: number, y?: string, ...z: number[]) => number >(x: number, ...z: number[]) => 1 : (x: number, ...z: number[]) => number >x : number >z : number[] >1 : 1 a3 = (x: string, y?: string, z?: string) => 1; // error ->a3 = (x: string, y?: string, z?: string) => 1 : (x: string, y?: string | undefined, z?: string | undefined) => number ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number ->(x: string, y?: string, z?: string) => 1 : (x: string, y?: string | undefined, z?: string | undefined) => number +>a3 = (x: string, y?: string, z?: string) => 1 : (x: string, y?: string, z?: string) => number +>a3 : (x: number, y?: string, ...z: number[]) => number +>(x: string, y?: string, z?: string) => 1 : (x: string, y?: string, z?: string) => number >x : string >y : string | undefined >z : string | undefined >1 : 1 var a4: (x?: number, y?: string, ...z: number[]) => number; ->a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number +>a4 : (x?: number, y?: string, ...z: number[]) => number >x : number | undefined >y : string | undefined >z : number[] a4 = () => 1; // ok, fewer required params >a4 = () => 1 : () => number ->a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number +>a4 : (x?: number, y?: string, ...z: number[]) => number >() => 1 : () => number >1 : 1 a4 = (x?: number, y?: number) => 1; // error, type mismatch ->a4 = (x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number ->a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number ->(x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number +>a4 = (x?: number, y?: number) => 1 : (x?: number, y?: number) => number +>a4 : (x?: number, y?: string, ...z: number[]) => number +>(x?: number, y?: number) => 1 : (x?: number, y?: number) => number >x : number | undefined >y : number | undefined >1 : 1 a4 = (x: number) => 1; // ok, all present params match >a4 = (x: number) => 1 : (x: number) => number ->a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number +>a4 : (x?: number, y?: string, ...z: number[]) => number >(x: number) => 1 : (x: number) => number >x : number >1 : 1 a4 = (x: number, y?: number) => 1; // error, second param has type mismatch ->a4 = (x: number, y?: number) => 1 : (x: number, y?: number | undefined) => number ->a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number ->(x: number, y?: number) => 1 : (x: number, y?: number | undefined) => number +>a4 = (x: number, y?: number) => 1 : (x: number, y?: number) => number +>a4 : (x?: number, y?: string, ...z: number[]) => number +>(x: number, y?: number) => 1 : (x: number, y?: number) => number >x : number >y : number | undefined >1 : 1 a4 = (x?: number, y?: string) => 1; // ok, same number of required params with matching types ->a4 = (x?: number, y?: string) => 1 : (x?: number | undefined, y?: string | undefined) => number ->a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number ->(x?: number, y?: string) => 1 : (x?: number | undefined, y?: string | undefined) => number +>a4 = (x?: number, y?: string) => 1 : (x?: number, y?: string) => number +>a4 : (x?: number, y?: string, ...z: number[]) => number +>(x?: number, y?: string) => 1 : (x?: number, y?: string) => number >x : number | undefined >y : string | undefined >1 : 1 a4 = (x: number, ...args: string[]) => 1; // error, rest params have type mismatch >a4 = (x: number, ...args: string[]) => 1 : (x: number, ...args: string[]) => number ->a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number +>a4 : (x?: number, y?: string, ...z: number[]) => number >(x: number, ...args: string[]) => 1 : (x: number, ...args: string[]) => number >x : number >args : string[] diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.types.diff deleted file mode 100644 index e70f6d3fcb7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithCallSignaturesWithRestParameters.types.diff +++ /dev/null @@ -1,212 +0,0 @@ ---- old.assignmentCompatWithCallSignaturesWithRestParameters.types -+++ new.assignmentCompatWithCallSignaturesWithRestParameters.types -@@= skipped -13, +13 lines =@@ - >z : number[] - - a3: (x: number, y?: string, ...z: number[]) => number; -->a3 : (x: number, y?: string, ...z: number[]) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number - >x : number - >y : string | undefined - >z : number[] - - a4: (x?: number, y?: string, ...z: number[]) => number; -->a4 : (x?: number, y?: string, ...z: number[]) => number -+>a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number - >x : number | undefined - >y : string | undefined - >z : number[] -@@= skipped -37, +37 lines =@@ - >1 : 1 - - a = (x?: number) => 1; // ok, same number of required params -->a = (x?: number) => 1 : (x?: number) => number -+>a = (x?: number) => 1 : (x?: number | undefined) => number - >a : (...args: number[]) => number -->(x?: number) => 1 : (x?: number) => number -+>(x?: number) => 1 : (x?: number | undefined) => number - >x : number | undefined - >1 : 1 - - a = (x?: number, y?: number, z?: number) => 1; // ok, same number of required params -->a = (x?: number, y?: number, z?: number) => 1 : (x?: number, y?: number, z?: number) => number -+>a = (x?: number, y?: number, z?: number) => 1 : (x?: number | undefined, y?: number | undefined, z?: number | undefined) => number - >a : (...args: number[]) => number -->(x?: number, y?: number, z?: number) => 1 : (x?: number, y?: number, z?: number) => number -+>(x?: number, y?: number, z?: number) => 1 : (x?: number | undefined, y?: number | undefined, z?: number | undefined) => number - >x : number | undefined - >y : number | undefined - >z : number | undefined -@@= skipped -23, +23 lines =@@ - >1 : 1 - - a = (x?: string) => 1; // error, incompatible type -->a = (x?: string) => 1 : (x?: string) => number -+>a = (x?: string) => 1 : (x?: string | undefined) => number - >a : (...args: number[]) => number -->(x?: string) => 1 : (x?: string) => number -+>(x?: string) => 1 : (x?: string | undefined) => number - >x : string | undefined - >1 : 1 - -@@= skipped -26, +26 lines =@@ - >1 : 1 - - a2 = (x?: number) => 1; // ok, fewer required params -->a2 = (x?: number) => 1 : (x?: number) => number -+>a2 = (x?: number) => 1 : (x?: number | undefined) => number - >a2 : (x: number, ...z: number[]) => number -->(x?: number) => 1 : (x?: number) => number -+>(x?: number) => 1 : (x?: number | undefined) => number - >x : number | undefined - >1 : 1 - -@@= skipped -38, +38 lines =@@ - >1 : 1 - - a2 = (x: number, y?: number) => 1; // ok, same number of required params -->a2 = (x: number, y?: number) => 1 : (x: number, y?: number) => number -+>a2 = (x: number, y?: number) => 1 : (x: number, y?: number | undefined) => number - >a2 : (x: number, ...z: number[]) => number -->(x: number, y?: number) => 1 : (x: number, y?: number) => number -+>(x: number, y?: number) => 1 : (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - >1 : 1 - - var a3: (x: number, y?: string, ...z: number[]) => number; -->a3 : (x: number, y?: string, ...z: number[]) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number - >x : number - >y : string | undefined - >z : number[] - - a3 = () => 1; // ok, fewer required params - >a3 = () => 1 : () => number -->a3 : (x: number, y?: string, ...z: number[]) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number - >() => 1 : () => number - >1 : 1 - - a3 = (x?: number) => 1; // ok, fewer required params -->a3 = (x?: number) => 1 : (x?: number) => number -->a3 : (x: number, y?: string, ...z: number[]) => number -->(x?: number) => 1 : (x?: number) => number -+>a3 = (x?: number) => 1 : (x?: number | undefined) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number -+>(x?: number) => 1 : (x?: number | undefined) => number - >x : number | undefined - >1 : 1 - - a3 = (x: number) => 1; // ok, same number of required params - >a3 = (x: number) => 1 : (x: number) => number -->a3 : (x: number, y?: string, ...z: number[]) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number - >(x: number) => 1 : (x: number) => number - >x : number - >1 : 1 - - a3 = (x: number, y: string) => 1; // ok, all present params match - >a3 = (x: number, y: string) => 1 : (x: number, y: string) => number -->a3 : (x: number, y?: string, ...z: number[]) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number - >(x: number, y: string) => 1 : (x: number, y: string) => number - >x : number - >y : string - >1 : 1 - - a3 = (x: number, y?: number, z?: number) => 1; // error -->a3 = (x: number, y?: number, z?: number) => 1 : (x: number, y?: number, z?: number) => number -->a3 : (x: number, y?: string, ...z: number[]) => number -->(x: number, y?: number, z?: number) => 1 : (x: number, y?: number, z?: number) => number -+>a3 = (x: number, y?: number, z?: number) => 1 : (x: number, y?: number | undefined, z?: number | undefined) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number -+>(x: number, y?: number, z?: number) => 1 : (x: number, y?: number | undefined, z?: number | undefined) => number - >x : number - >y : number | undefined - >z : number | undefined -@@= skipped -52, +52 lines =@@ - - a3 = (x: number, ...z: number[]) => 1; // error - >a3 = (x: number, ...z: number[]) => 1 : (x: number, ...z: number[]) => number -->a3 : (x: number, y?: string, ...z: number[]) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number - >(x: number, ...z: number[]) => 1 : (x: number, ...z: number[]) => number - >x : number - >z : number[] - >1 : 1 - - a3 = (x: string, y?: string, z?: string) => 1; // error -->a3 = (x: string, y?: string, z?: string) => 1 : (x: string, y?: string, z?: string) => number -->a3 : (x: number, y?: string, ...z: number[]) => number -->(x: string, y?: string, z?: string) => 1 : (x: string, y?: string, z?: string) => number -+>a3 = (x: string, y?: string, z?: string) => 1 : (x: string, y?: string | undefined, z?: string | undefined) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number -+>(x: string, y?: string, z?: string) => 1 : (x: string, y?: string | undefined, z?: string | undefined) => number - >x : string - >y : string | undefined - >z : string | undefined - >1 : 1 - - var a4: (x?: number, y?: string, ...z: number[]) => number; -->a4 : (x?: number, y?: string, ...z: number[]) => number -+>a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number - >x : number | undefined - >y : string | undefined - >z : number[] - - a4 = () => 1; // ok, fewer required params - >a4 = () => 1 : () => number -->a4 : (x?: number, y?: string, ...z: number[]) => number -+>a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number - >() => 1 : () => number - >1 : 1 - - a4 = (x?: number, y?: number) => 1; // error, type mismatch -->a4 = (x?: number, y?: number) => 1 : (x?: number, y?: number) => number -->a4 : (x?: number, y?: string, ...z: number[]) => number -->(x?: number, y?: number) => 1 : (x?: number, y?: number) => number -+>a4 = (x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number -+>a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number -+>(x?: number, y?: number) => 1 : (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - >1 : 1 - - a4 = (x: number) => 1; // ok, all present params match - >a4 = (x: number) => 1 : (x: number) => number -->a4 : (x?: number, y?: string, ...z: number[]) => number -+>a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number - >(x: number) => 1 : (x: number) => number - >x : number - >1 : 1 - - a4 = (x: number, y?: number) => 1; // error, second param has type mismatch -->a4 = (x: number, y?: number) => 1 : (x: number, y?: number) => number -->a4 : (x?: number, y?: string, ...z: number[]) => number -->(x: number, y?: number) => 1 : (x: number, y?: number) => number -+>a4 = (x: number, y?: number) => 1 : (x: number, y?: number | undefined) => number -+>a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number -+>(x: number, y?: number) => 1 : (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - >1 : 1 - - a4 = (x?: number, y?: string) => 1; // ok, same number of required params with matching types -->a4 = (x?: number, y?: string) => 1 : (x?: number, y?: string) => number -->a4 : (x?: number, y?: string, ...z: number[]) => number -->(x?: number, y?: string) => 1 : (x?: number, y?: string) => number -+>a4 = (x?: number, y?: string) => 1 : (x?: number | undefined, y?: string | undefined) => number -+>a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number -+>(x?: number, y?: string) => 1 : (x?: number | undefined, y?: string | undefined) => number - >x : number | undefined - >y : string | undefined - >1 : 1 - - a4 = (x: number, ...args: string[]) => 1; // error, rest params have type mismatch - >a4 = (x: number, ...args: string[]) => 1 : (x: number, ...args: string[]) => number -->a4 : (x?: number, y?: string, ...z: number[]) => number -+>a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number - >(x: number, ...args: string[]) => 1 : (x: number, ...args: string[]) => number - >x : number - >args : string[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.errors.txt b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.errors.txt index 5d4523d8333..59d5d546eeb 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.errors.txt @@ -46,12 +46,12 @@ assignmentCompatWithConstructSignatures3.ts(77,1): error TS2322: Type 'new (x: { Types of parameters 'y' and 'y' are incompatible. Type 'T' is not assignable to type '{ foo: string; bar: string; }'. Property 'bar' is missing in type 'Base' but required in type '{ foo: string; bar: string; }'. -assignmentCompatWithConstructSignatures3.ts(80,1): error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new (x: Base[], y: T) => Derived[]'. +assignmentCompatWithConstructSignatures3.ts(80,1): error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: T) => Array'. Types of parameters 'y' and 'y' are incompatible. Type 'T' is not assignable to type 'Derived2[]'. Type 'Base[]' is not assignable to type 'Derived2[]'. Type 'Base' is missing the following properties from type 'Derived2': baz, bar -assignmentCompatWithConstructSignatures3.ts(83,1): error TS2322: Type 'new (x: Base[], y: Derived[]) => Derived[]' is not assignable to type 'new (x: Base[], y: T) => T'. +assignmentCompatWithConstructSignatures3.ts(83,1): error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: T) => T'. Type 'Derived[]' is not assignable to type 'T'. 'Derived[]' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived[]'. assignmentCompatWithConstructSignatures3.ts(85,1): error TS2322: Type 'new (x: { a: T; b: T; }) => T' is not assignable to type 'new (x: { a: string; b: number; }) => Object'. @@ -216,7 +216,7 @@ assignmentCompatWithConstructSignatures3.ts(86,1): error TS2322: Type 'new (x: { a12 = b12; // ok b12 = a12; // ok ~~~ -!!! error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new (x: Base[], y: T) => Derived[]'. +!!! error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: T) => Array'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'T' is not assignable to type 'Derived2[]'. !!! error TS2322: Type 'Base[]' is not assignable to type 'Derived2[]'. @@ -225,7 +225,7 @@ assignmentCompatWithConstructSignatures3.ts(86,1): error TS2322: Type 'new (x: { a13 = b13; // ok b13 = a13; // ok ~~~ -!!! error TS2322: Type 'new (x: Base[], y: Derived[]) => Derived[]' is not assignable to type 'new (x: Base[], y: T) => T'. +!!! error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: T) => T'. !!! error TS2322: Type 'Derived[]' is not assignable to type 'T'. !!! error TS2322: 'Derived[]' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived[]'. declare var b14: new (x: { a: T; b: T }) => T; diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.errors.txt.diff index f646e88a5cc..83527d7cbff 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.errors.txt.diff @@ -5,13 +5,13 @@ Type 'T' is not assignable to type '{ foo: string; bar: string; }'. Property 'bar' is missing in type 'Base' but required in type '{ foo: string; bar: string; }'. -assignmentCompatWithConstructSignatures3.ts(80,1): error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new >(x: Base[], y: T) => Derived[]'. -+assignmentCompatWithConstructSignatures3.ts(80,1): error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new (x: Base[], y: T) => Derived[]'. ++assignmentCompatWithConstructSignatures3.ts(80,1): error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: T) => Array'. Types of parameters 'y' and 'y' are incompatible. Type 'T' is not assignable to type 'Derived2[]'. Type 'Base[]' is not assignable to type 'Derived2[]'. Type 'Base' is missing the following properties from type 'Derived2': baz, bar -assignmentCompatWithConstructSignatures3.ts(83,1): error TS2322: Type 'new (x: Base[], y: Derived[]) => Derived[]' is not assignable to type 'new >(x: Base[], y: T) => T'. -+assignmentCompatWithConstructSignatures3.ts(83,1): error TS2322: Type 'new (x: Base[], y: Derived[]) => Derived[]' is not assignable to type 'new (x: Base[], y: T) => T'. ++assignmentCompatWithConstructSignatures3.ts(83,1): error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: T) => T'. Type 'Derived[]' is not assignable to type 'T'. 'Derived[]' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived[]'. assignmentCompatWithConstructSignatures3.ts(85,1): error TS2322: Type 'new (x: { a: T; b: T; }) => T' is not assignable to type 'new (x: { a: string; b: number; }) => Object'. @@ -20,7 +20,7 @@ b12 = a12; // ok ~~~ -!!! error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new >(x: Base[], y: T) => Derived[]'. -+!!! error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new (x: Base[], y: T) => Derived[]'. ++!!! error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: T) => Array'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'T' is not assignable to type 'Derived2[]'. !!! error TS2322: Type 'Base[]' is not assignable to type 'Derived2[]'. @@ -29,7 +29,7 @@ b13 = a13; // ok ~~~ -!!! error TS2322: Type 'new (x: Base[], y: Derived[]) => Derived[]' is not assignable to type 'new >(x: Base[], y: T) => T'. -+!!! error TS2322: Type 'new (x: Base[], y: Derived[]) => Derived[]' is not assignable to type 'new (x: Base[], y: T) => T'. ++!!! error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: T) => T'. !!! error TS2322: Type 'Derived[]' is not assignable to type 'T'. !!! error TS2322: 'Derived[]' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived[]'. declare var b14: new (x: { a: T; b: T }) => T; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.types index be93c273e3d..8032959987c 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.types @@ -84,12 +84,12 @@ declare var a11: new (x: { foo: string }, y: { foo: string; bar: string }) => Ba >bar : string declare var a12: new (x: Array, y: Array) => Array; ->a12 : new (x: Base[], y: Derived2[]) => Derived[] +>a12 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] declare var a13: new (x: Array, y: Array) => Array; ->a13 : new (x: Base[], y: Derived[]) => Derived[] +>a13 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived[] @@ -325,34 +325,34 @@ b11 = a11; // ok >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base declare var b12: new >(x: Array, y: T) => Array; ->b12 : new (x: Base[], y: T) => Derived[] +>b12 : new >(x: Array, y: T) => Array >x : Base[] >y : T a12 = b12; // ok ->a12 = b12 : new (x: Base[], y: T) => Derived[] ->a12 : new (x: Base[], y: Derived2[]) => Derived[] ->b12 : new (x: Base[], y: T) => Derived[] +>a12 = b12 : new >(x: Array, y: T) => Array +>a12 : new (x: Array, y: Array) => Array +>b12 : new >(x: Array, y: T) => Array b12 = a12; // ok ->b12 = a12 : new (x: Base[], y: Derived2[]) => Derived[] ->b12 : new (x: Base[], y: T) => Derived[] ->a12 : new (x: Base[], y: Derived2[]) => Derived[] +>b12 = a12 : new (x: Array, y: Array) => Array +>b12 : new >(x: Array, y: T) => Array +>a12 : new (x: Array, y: Array) => Array declare var b13: new >(x: Array, y: T) => T; ->b13 : new (x: Base[], y: T) => T +>b13 : new >(x: Array, y: T) => T >x : Base[] >y : T a13 = b13; // ok ->a13 = b13 : new (x: Base[], y: T) => T ->a13 : new (x: Base[], y: Derived[]) => Derived[] ->b13 : new (x: Base[], y: T) => T +>a13 = b13 : new >(x: Array, y: T) => T +>a13 : new (x: Array, y: Array) => Array +>b13 : new >(x: Array, y: T) => T b13 = a13; // ok ->b13 = a13 : new (x: Base[], y: Derived[]) => Derived[] ->b13 : new (x: Base[], y: T) => T ->a13 : new (x: Base[], y: Derived[]) => Derived[] +>b13 = a13 : new (x: Array, y: Array) => Array +>b13 : new >(x: Array, y: T) => T +>a13 : new (x: Array, y: Array) => Array declare var b14: new (x: { a: T; b: T }) => T; >b14 : new (x: { a: T; b: T; }) => T diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.types.diff deleted file mode 100644 index 7d844d9629d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures3.types.diff +++ /dev/null @@ -1,66 +0,0 @@ ---- old.assignmentCompatWithConstructSignatures3.types -+++ new.assignmentCompatWithConstructSignatures3.types -@@= skipped -83, +83 lines =@@ - >bar : string - - declare var a12: new (x: Array, y: Array) => Array; -->a12 : new (x: Array, y: Array) => Array -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - - declare var a13: new (x: Array, y: Array) => Array; -->a13 : new (x: Array, y: Array) => Array -+>a13 : new (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] - -@@= skipped -241, +241 lines =@@ - >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - declare var b12: new >(x: Array, y: T) => Array; -->b12 : new >(x: Array, y: T) => Array -+>b12 : new (x: Base[], y: T) => Derived[] - >x : Base[] - >y : T - - a12 = b12; // ok -->a12 = b12 : new >(x: Array, y: T) => Array -->a12 : new (x: Array, y: Array) => Array -->b12 : new >(x: Array, y: T) => Array -+>a12 = b12 : new (x: Base[], y: T) => Derived[] -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] -+>b12 : new (x: Base[], y: T) => Derived[] - - b12 = a12; // ok -->b12 = a12 : new (x: Array, y: Array) => Array -->b12 : new >(x: Array, y: T) => Array -->a12 : new (x: Array, y: Array) => Array -+>b12 = a12 : new (x: Base[], y: Derived2[]) => Derived[] -+>b12 : new (x: Base[], y: T) => Derived[] -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] - - declare var b13: new >(x: Array, y: T) => T; -->b13 : new >(x: Array, y: T) => T -+>b13 : new (x: Base[], y: T) => T - >x : Base[] - >y : T - - a13 = b13; // ok -->a13 = b13 : new >(x: Array, y: T) => T -->a13 : new (x: Array, y: Array) => Array -->b13 : new >(x: Array, y: T) => T -+>a13 = b13 : new (x: Base[], y: T) => T -+>a13 : new (x: Base[], y: Derived[]) => Derived[] -+>b13 : new (x: Base[], y: T) => T - - b13 = a13; // ok -->b13 = a13 : new (x: Array, y: Array) => Array -->b13 : new >(x: Array, y: T) => T -->a13 : new (x: Array, y: Array) => Array -+>b13 = a13 : new (x: Base[], y: Derived[]) => Derived[] -+>b13 : new (x: Base[], y: T) => T -+>a13 : new (x: Base[], y: Derived[]) => Derived[] - - declare var b14: new (x: { a: T; b: T }) => T; - >b14 : new (x: { a: T; b: T; }) => T \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.errors.txt b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.errors.txt index e01f0db70b3..f2c4f9b32f5 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.errors.txt @@ -33,7 +33,7 @@ assignmentCompatWithConstructSignatures4.ts(61,9): error TS2322: Type 'new Base' is not assignable to type 'new (x: T, y: T) => T'. Type 'Base' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'Base'. -assignmentCompatWithConstructSignatures4.ts(66,9): error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new (x: Base[], y: Base[]) => T'. +assignmentCompatWithConstructSignatures4.ts(66,9): error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: Array) => T'. Types of parameters 'y' and 'y' are incompatible. Type 'Base[]' is not assignable to type 'Derived2[]'. Type 'Base' is missing the following properties from type 'Derived2': baz, bar @@ -58,13 +58,13 @@ assignmentCompatWithConstructSignatures4.ts(74,9): error TS2322: Type 'new (x: { Types of property 'a' are incompatible. Type 'T' is not assignable to type 'string'. Type 'Base' is not assignable to type 'string'. -assignmentCompatWithConstructSignatures4.ts(77,9): error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }'. +assignmentCompatWithConstructSignatures4.ts(77,9): error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. Types of parameters 'x' and 'x' are incompatible. - Type '{ new (a: number): number; new (a?: number | undefined): number; }' is not assignable to type '(a: any) => any'. - Type '{ new (a: number): number; new (a?: number | undefined): number; }' provides no match for the signature '(a: any): any'. -assignmentCompatWithConstructSignatures4.ts(78,9): error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. + Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. + Type '{ new (a: number): number; new (a?: number): number; }' provides no match for the signature '(a: any): any'. +assignmentCompatWithConstructSignatures4.ts(78,9): error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. Types of parameters 'x' and 'x' are incompatible. - Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number | undefined): number; }'. + Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. Type '(a: any) => any' provides no match for the signature 'new (a: number): number'. assignmentCompatWithConstructSignatures4.ts(81,9): error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. Types of parameters 'x' and 'x' are incompatible. @@ -208,7 +208,7 @@ assignmentCompatWithConstructSignatures4.ts(96,9): error TS2322: Type 'new (x a12 = b12; // ok b12 = a12; // ok ~~~ -!!! error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new (x: Base[], y: Base[]) => T'. +!!! error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: Array) => T'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'Base[]' is not assignable to type 'Derived2[]'. !!! error TS2322: Type 'Base' is missing the following properties from type 'Derived2': baz, bar @@ -250,15 +250,15 @@ assignmentCompatWithConstructSignatures4.ts(96,9): error TS2322: Type 'new (x declare var b16: new (x: (a: T) => T) => T[]; a16 = b16; // error ~~~ -!!! error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }'. +!!! error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '{ new (a: number): number; new (a?: number | undefined): number; }' is not assignable to type '(a: any) => any'. -!!! error TS2322: Type '{ new (a: number): number; new (a?: number | undefined): number; }' provides no match for the signature '(a: any): any'. +!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. +!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' provides no match for the signature '(a: any): any'. b16 = a16; // error ~~~ -!!! error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. +!!! error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number | undefined): number; }'. +!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. !!! error TS2322: Type '(a: any) => any' provides no match for the signature 'new (a: number): number'. declare var b17: new (x: (a: T) => T) => any[]; diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.errors.txt.diff index 76b3a7ddf76..92e78d4f0a6 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.errors.txt.diff @@ -5,16 +5,58 @@ Type 'Base' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'Base'. -assignmentCompatWithConstructSignatures4.ts(66,9): error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new >(x: Base[], y: Base[]) => T'. -+assignmentCompatWithConstructSignatures4.ts(66,9): error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new (x: Base[], y: Base[]) => T'. ++assignmentCompatWithConstructSignatures4.ts(66,9): error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: Array) => T'. Types of parameters 'y' and 'y' are incompatible. Type 'Base[]' is not assignable to type 'Derived2[]'. Type 'Base' is missing the following properties from type 'Derived2': baz, bar -@@= skipped -175, +175 lines =@@ +@@= skipped -25, +25 lines =@@ + Types of property 'a' are incompatible. + Type 'T' is not assignable to type 'string'. + Type 'Base' is not assignable to type 'string'. +-assignmentCompatWithConstructSignatures4.ts(77,9): error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }'. +- Types of parameters 'x' and 'x' are incompatible. +- Type '{ new (a: number): number; new (a?: number | undefined): number; }' is not assignable to type '(a: any) => any'. +- Type '{ new (a: number): number; new (a?: number | undefined): number; }' provides no match for the signature '(a: any): any'. +-assignmentCompatWithConstructSignatures4.ts(78,9): error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. +- Types of parameters 'x' and 'x' are incompatible. +- Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number | undefined): number; }'. ++assignmentCompatWithConstructSignatures4.ts(77,9): error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. ++ Type '{ new (a: number): number; new (a?: number): number; }' provides no match for the signature '(a: any): any'. ++assignmentCompatWithConstructSignatures4.ts(78,9): error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. + Type '(a: any) => any' provides no match for the signature 'new (a: number): number'. + assignmentCompatWithConstructSignatures4.ts(81,9): error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. + Types of parameters 'x' and 'x' are incompatible. +@@= skipped -150, +150 lines =@@ a12 = b12; // ok b12 = a12; // ok ~~~ -!!! error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new >(x: Base[], y: Base[]) => T'. -+!!! error TS2322: Type 'new (x: Base[], y: Derived2[]) => Derived[]' is not assignable to type 'new (x: Base[], y: Base[]) => T'. ++!!! error TS2322: Type 'new (x: Array, y: Array) => Array' is not assignable to type 'new >(x: Array, y: Array) => T'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'Base[]' is not assignable to type 'Derived2[]'. - !!! error TS2322: Type 'Base' is missing the following properties from type 'Derived2': baz, bar \ No newline at end of file + !!! error TS2322: Type 'Base' is missing the following properties from type 'Derived2': baz, bar +@@= skipped -42, +42 lines =@@ + declare var b16: new (x: (a: T) => T) => T[]; + a16 = b16; // error + ~~~ +-!!! error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }'. ++!!! error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +-!!! error TS2322: Type '{ new (a: number): number; new (a?: number | undefined): number; }' is not assignable to type '(a: any) => any'. +-!!! error TS2322: Type '{ new (a: number): number; new (a?: number | undefined): number; }' provides no match for the signature '(a: any): any'. ++!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. ++!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' provides no match for the signature '(a: any): any'. + b16 = a16; // error + ~~~ +-!!! error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. ++!!! error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +-!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number | undefined): number; }'. ++!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. + !!! error TS2322: Type '(a: any) => any' provides no match for the signature 'new (a: number): number'. + + declare var b17: new (x: (a: T) => T) => any[]; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.types index 329cb1c050d..e591c9c8d26 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.types @@ -60,7 +60,7 @@ namespace Errors { >bar : string declare var a12: new (x: Array, y: Array) => Array; ->a12 : new (x: Base[], y: Derived2[]) => Derived[] +>a12 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] @@ -81,10 +81,10 @@ namespace Errors { >b : number declare var a16: { ->a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } +>a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } new (x: { ->x : { new (a: number): number; new (a?: number | undefined): number; } +>x : { new (a: number): number; new (a?: number): number; } new (a: number): number; >a : number @@ -94,7 +94,7 @@ namespace Errors { }): number[]; new (x: { ->x : { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; } +>x : { new (a: boolean): boolean; new (a?: boolean): boolean; } new (a: boolean): boolean; >a : boolean @@ -209,19 +209,19 @@ namespace Errors { >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base declare var b12: new >(x: Array, y: Array) => T; ->b12 : new (x: Base[], y: Base[]) => T +>b12 : new >(x: Array, y: Array) => T >x : Base[] >y : Base[] a12 = b12; // ok ->a12 = b12 : new (x: Base[], y: Base[]) => T ->a12 : new (x: Base[], y: Derived2[]) => Derived[] ->b12 : new (x: Base[], y: Base[]) => T +>a12 = b12 : new >(x: Array, y: Array) => T +>a12 : new (x: Array, y: Array) => Array +>b12 : new >(x: Array, y: Array) => T b12 = a12; // ok ->b12 = a12 : new (x: Base[], y: Derived2[]) => Derived[] ->b12 : new (x: Base[], y: Base[]) => T ->a12 : new (x: Base[], y: Derived2[]) => Derived[] +>b12 = a12 : new (x: Array, y: Array) => Array +>b12 : new >(x: Array, y: Array) => T +>a12 : new (x: Array, y: Array) => Array declare var b15: new (x: { a: T; b: T }) => T; >b15 : new (x: { a: T; b: T; }) => T @@ -262,13 +262,13 @@ namespace Errors { a16 = b16; // error >a16 = b16 : new (x: (a: T) => T) => T[] ->a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } +>a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } >b16 : new (x: (a: T) => T) => T[] b16 = a16; // error ->b16 = a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } +>b16 = a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } >b16 : new (x: (a: T) => T) => T[] ->a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } +>a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } declare var b17: new (x: (a: T) => T) => any[]; >b17 : new (x: (a: T) => T) => any[] diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.types.diff deleted file mode 100644 index 25df29cd38d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignatures4.types.diff +++ /dev/null @@ -1,77 +0,0 @@ ---- old.assignmentCompatWithConstructSignatures4.types -+++ new.assignmentCompatWithConstructSignatures4.types -@@= skipped -59, +59 lines =@@ - >bar : string - - declare var a12: new (x: Array, y: Array) => Array; -->a12 : new (x: Array, y: Array) => Array -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - -@@= skipped -21, +21 lines =@@ - >b : number - - declare var a16: { -->a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -+>a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } - - new (x: { -->x : { new (a: number): number; new (a?: number): number; } -+>x : { new (a: number): number; new (a?: number | undefined): number; } - - new (a: number): number; - >a : number -@@= skipped -13, +13 lines =@@ - - }): number[]; - new (x: { -->x : { new (a: boolean): boolean; new (a?: boolean): boolean; } -+>x : { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; } - - new (a: boolean): boolean; - >a : boolean -@@= skipped -115, +115 lines =@@ - >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - declare var b12: new >(x: Array, y: Array) => T; -->b12 : new >(x: Array, y: Array) => T -+>b12 : new (x: Base[], y: Base[]) => T - >x : Base[] - >y : Base[] - - a12 = b12; // ok -->a12 = b12 : new >(x: Array, y: Array) => T -->a12 : new (x: Array, y: Array) => Array -->b12 : new >(x: Array, y: Array) => T -+>a12 = b12 : new (x: Base[], y: Base[]) => T -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] -+>b12 : new (x: Base[], y: Base[]) => T - - b12 = a12; // ok -->b12 = a12 : new (x: Array, y: Array) => Array -->b12 : new >(x: Array, y: Array) => T -->a12 : new (x: Array, y: Array) => Array -+>b12 = a12 : new (x: Base[], y: Derived2[]) => Derived[] -+>b12 : new (x: Base[], y: Base[]) => T -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] - - declare var b15: new (x: { a: T; b: T }) => T; - >b15 : new (x: { a: T; b: T; }) => T -@@= skipped -53, +53 lines =@@ - - a16 = b16; // error - >a16 = b16 : new (x: (a: T) => T) => T[] -->a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -+>a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } - >b16 : new (x: (a: T) => T) => T[] - - b16 = a16; // error -->b16 = a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -+>b16 = a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } - >b16 : new (x: (a: T) => T) => T[] -->a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -+>a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } - - declare var b17: new (x: (a: T) => T) => any[]; - >b17 : new (x: (a: T) => T) => any[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt index 5b20ad5ae21..14f72d03b60 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt @@ -1,34 +1,34 @@ assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(16,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new () => number'. Target signature provides too few arguments. Expected 1 or more, but got 0. -assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(17,5): error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new () => number'. +assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(17,5): error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'. Target signature provides too few arguments. Expected 1 or more, but got 0. assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(19,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new () => number'. Target signature provides too few arguments. Expected 2 or more, but got 0. -assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(24,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. +assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(24,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(25,5): error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new (x?: number | undefined) => number'. +assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(25,5): error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new (x?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. +assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'. Target signature provides too few arguments. Expected 2 or more, but got 1. assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(35,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. Target signature provides too few arguments. Expected 2 or more, but got 1. -assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(43,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number | undefined) => number'. +assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(43,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(48,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(48,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(49,5): error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(49,5): error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(51,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(51,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. @@ -56,7 +56,7 @@ assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(51,5): error TS !!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. a = b.a4; // error ~ -!!! error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new () => number'. +!!! error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'. !!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. a = b.a5; // ok a = b.a6; // error @@ -69,20 +69,20 @@ assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(51,5): error TS a2 = b.a2; // ok a2 = b.a3; // ok ~~ -!!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. +!!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a2 = b.a4; // ok ~~ -!!! error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new (x?: number | undefined) => number'. +!!! error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new (x?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a2 = b.a5; // ok a2 = b.a6; // error ~~ -!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. +!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'. !!! error TS2322: Target signature provides too few arguments. Expected 2 or more, but got 1. declare var a3: new (x: number) => number; @@ -104,7 +104,7 @@ assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(51,5): error TS a4 = b.a5; // ok a4 = b.a6; // ok ~~ -!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number | undefined) => number'. +!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. @@ -114,20 +114,20 @@ assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(51,5): error TS a5 = b.a2; // ok a5 = b.a3; // ok ~~ -!!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a5 = b.a4; // ok ~~ -!!! error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. a5 = b.a5; // ok a5 = b.a6; // ok ~~ -!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2322: Type 'undefined' is not assignable to type 'number'. diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt.diff new file mode 100644 index 00000000000..747588c3d66 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt.diff @@ -0,0 +1,123 @@ +--- old.assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt ++++ new.assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt +@@= skipped -0, +0 lines =@@ + assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(16,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new () => number'. + Target signature provides too few arguments. Expected 1 or more, but got 0. +-assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(17,5): error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new () => number'. ++assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(17,5): error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'. + Target signature provides too few arguments. Expected 1 or more, but got 0. + assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(19,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new () => number'. + Target signature provides too few arguments. Expected 2 or more, but got 0. +-assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(24,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(25,5): error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new (x?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. ++assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(24,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(25,5): error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new (x?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'. + Target signature provides too few arguments. Expected 2 or more, but got 1. + assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(35,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. + Target signature provides too few arguments. Expected 2 or more, but got 1. +-assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(43,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number | undefined) => number'. ++assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(43,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number) => number'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(48,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(49,5): error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +- Types of parameters 'x' and 'x' are incompatible. +- Type 'number | undefined' is not assignable to type 'number'. +- Type 'undefined' is not assignable to type 'number'. +-assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(51,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. ++assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(48,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(49,5): error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. ++ Types of parameters 'x' and 'x' are incompatible. ++ Type 'number | undefined' is not assignable to type 'number'. ++ Type 'undefined' is not assignable to type 'number'. ++assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(51,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. +@@= skipped -55, +55 lines =@@ + !!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. + a = b.a4; // error + ~ +-!!! error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new () => number'. ++!!! error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'. + !!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. + a = b.a5; // ok + a = b.a6; // error +@@= skipped -13, +13 lines =@@ + a2 = b.a2; // ok + a2 = b.a3; // ok + ~~ +-!!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. ++!!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a2 = b.a4; // ok + ~~ +-!!! error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new (x?: number | undefined) => number'. ++!!! error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new (x?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a2 = b.a5; // ok + a2 = b.a6; // error + ~~ +-!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. ++!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'. + !!! error TS2322: Target signature provides too few arguments. Expected 2 or more, but got 1. + + declare var a3: new (x: number) => number; +@@= skipped -35, +35 lines =@@ + a4 = b.a5; // ok + a4 = b.a6; // ok + ~~ +-!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number | undefined) => number'. ++!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. +@@= skipped -10, +10 lines =@@ + a5 = b.a2; // ok + a5 = b.a3; // ok + ~~ +-!!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a5 = b.a4; // ok + ~~ +-!!! error TS2322: Type 'new (x: number, y?: number | undefined) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. + a5 = b.a5; // ok + a5 = b.a6; // ok + ~~ +-!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2322: Type 'undefined' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.types index 95723c53d10..b10c9867b54 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.types @@ -8,7 +8,7 @@ interface Base { >a : new () => number a2: new (x?: number) => number; ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number >x : number | undefined a3: new (x: number) => number; @@ -16,12 +16,12 @@ interface Base { >x : number a4: new (x: number, y?: number) => number; ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number >x : number >y : number | undefined a5: new (x?: number, y?: number) => number; ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number >x : number | undefined >y : number | undefined @@ -44,11 +44,11 @@ declare var a: new () => number; >a : new () => number a = b.a2; // ok ->a = b.a2 : new (x?: number | undefined) => number +>a = b.a2 : new (x?: number) => number >a : new () => number ->b.a2 : new (x?: number | undefined) => number +>b.a2 : new (x?: number) => number >b : Base ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number a = b.a3; // error >a = b.a3 : new (x: number) => number @@ -58,18 +58,18 @@ declare var a: new () => number; >a3 : new (x: number) => number a = b.a4; // error ->a = b.a4 : new (x: number, y?: number | undefined) => number +>a = b.a4 : new (x: number, y?: number) => number >a : new () => number ->b.a4 : new (x: number, y?: number | undefined) => number +>b.a4 : new (x: number, y?: number) => number >b : Base ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number a = b.a5; // ok ->a = b.a5 : new (x?: number | undefined, y?: number | undefined) => number +>a = b.a5 : new (x?: number, y?: number) => number >a : new () => number ->b.a5 : new (x?: number | undefined, y?: number | undefined) => number +>b.a5 : new (x?: number, y?: number) => number >b : Base ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number a = b.a6; // error >a = b.a6 : new (x: number, y: number) => number @@ -79,47 +79,47 @@ declare var a: new () => number; >a6 : new (x: number, y: number) => number declare var a2: new (x?: number) => number; ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number >x : number | undefined a2 = b.a; // ok >a2 = b.a : new () => number ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number >b.a : new () => number >b : Base >a : new () => number a2 = b.a2; // ok ->a2 = b.a2 : new (x?: number | undefined) => number ->a2 : new (x?: number | undefined) => number ->b.a2 : new (x?: number | undefined) => number +>a2 = b.a2 : new (x?: number) => number +>a2 : new (x?: number) => number +>b.a2 : new (x?: number) => number >b : Base ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number a2 = b.a3; // ok >a2 = b.a3 : new (x: number) => number ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number >b.a3 : new (x: number) => number >b : Base >a3 : new (x: number) => number a2 = b.a4; // ok ->a2 = b.a4 : new (x: number, y?: number | undefined) => number ->a2 : new (x?: number | undefined) => number ->b.a4 : new (x: number, y?: number | undefined) => number +>a2 = b.a4 : new (x: number, y?: number) => number +>a2 : new (x?: number) => number +>b.a4 : new (x: number, y?: number) => number >b : Base ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number a2 = b.a5; // ok ->a2 = b.a5 : new (x?: number | undefined, y?: number | undefined) => number ->a2 : new (x?: number | undefined) => number ->b.a5 : new (x?: number | undefined, y?: number | undefined) => number +>a2 = b.a5 : new (x?: number, y?: number) => number +>a2 : new (x?: number) => number +>b.a5 : new (x?: number, y?: number) => number >b : Base ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number a2 = b.a6; // error >a2 = b.a6 : new (x: number, y: number) => number ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number >b.a6 : new (x: number, y: number) => number >b : Base >a6 : new (x: number, y: number) => number @@ -136,11 +136,11 @@ declare var a3: new (x: number) => number; >a : new () => number a3 = b.a2; // ok ->a3 = b.a2 : new (x?: number | undefined) => number +>a3 = b.a2 : new (x?: number) => number >a3 : new (x: number) => number ->b.a2 : new (x?: number | undefined) => number +>b.a2 : new (x?: number) => number >b : Base ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number a3 = b.a3; // ok >a3 = b.a3 : new (x: number) => number @@ -150,18 +150,18 @@ declare var a3: new (x: number) => number; >a3 : new (x: number) => number a3 = b.a4; // ok ->a3 = b.a4 : new (x: number, y?: number | undefined) => number +>a3 = b.a4 : new (x: number, y?: number) => number >a3 : new (x: number) => number ->b.a4 : new (x: number, y?: number | undefined) => number +>b.a4 : new (x: number, y?: number) => number >b : Base ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number a3 = b.a5; // ok ->a3 = b.a5 : new (x?: number | undefined, y?: number | undefined) => number +>a3 = b.a5 : new (x?: number, y?: number) => number >a3 : new (x: number) => number ->b.a5 : new (x?: number | undefined, y?: number | undefined) => number +>b.a5 : new (x?: number, y?: number) => number >b : Base ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number a3 = b.a6; // error >a3 = b.a6 : new (x: number, y: number) => number @@ -171,95 +171,95 @@ declare var a3: new (x: number) => number; >a6 : new (x: number, y: number) => number declare var a4: new (x: number, y?: number) => number; ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number >x : number >y : number | undefined a4 = b.a; // ok >a4 = b.a : new () => number ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number >b.a : new () => number >b : Base >a : new () => number a4 = b.a2; // ok ->a4 = b.a2 : new (x?: number | undefined) => number ->a4 : new (x: number, y?: number | undefined) => number ->b.a2 : new (x?: number | undefined) => number +>a4 = b.a2 : new (x?: number) => number +>a4 : new (x: number, y?: number) => number +>b.a2 : new (x?: number) => number >b : Base ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number a4 = b.a3; // ok >a4 = b.a3 : new (x: number) => number ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number >b.a3 : new (x: number) => number >b : Base >a3 : new (x: number) => number a4 = b.a4; // ok ->a4 = b.a4 : new (x: number, y?: number | undefined) => number ->a4 : new (x: number, y?: number | undefined) => number ->b.a4 : new (x: number, y?: number | undefined) => number +>a4 = b.a4 : new (x: number, y?: number) => number +>a4 : new (x: number, y?: number) => number +>b.a4 : new (x: number, y?: number) => number >b : Base ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number a4 = b.a5; // ok ->a4 = b.a5 : new (x?: number | undefined, y?: number | undefined) => number ->a4 : new (x: number, y?: number | undefined) => number ->b.a5 : new (x?: number | undefined, y?: number | undefined) => number +>a4 = b.a5 : new (x?: number, y?: number) => number +>a4 : new (x: number, y?: number) => number +>b.a5 : new (x?: number, y?: number) => number >b : Base ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number a4 = b.a6; // ok >a4 = b.a6 : new (x: number, y: number) => number ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number >b.a6 : new (x: number, y: number) => number >b : Base >a6 : new (x: number, y: number) => number declare var a5: new (x?: number, y?: number) => number; ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number >x : number | undefined >y : number | undefined a5 = b.a; // ok >a5 = b.a : new () => number ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number >b.a : new () => number >b : Base >a : new () => number a5 = b.a2; // ok ->a5 = b.a2 : new (x?: number | undefined) => number ->a5 : new (x?: number | undefined, y?: number | undefined) => number ->b.a2 : new (x?: number | undefined) => number +>a5 = b.a2 : new (x?: number) => number +>a5 : new (x?: number, y?: number) => number +>b.a2 : new (x?: number) => number >b : Base ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number a5 = b.a3; // ok >a5 = b.a3 : new (x: number) => number ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number >b.a3 : new (x: number) => number >b : Base >a3 : new (x: number) => number a5 = b.a4; // ok ->a5 = b.a4 : new (x: number, y?: number | undefined) => number ->a5 : new (x?: number | undefined, y?: number | undefined) => number ->b.a4 : new (x: number, y?: number | undefined) => number +>a5 = b.a4 : new (x: number, y?: number) => number +>a5 : new (x?: number, y?: number) => number +>b.a4 : new (x: number, y?: number) => number >b : Base ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number a5 = b.a5; // ok ->a5 = b.a5 : new (x?: number | undefined, y?: number | undefined) => number ->a5 : new (x?: number | undefined, y?: number | undefined) => number ->b.a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 = b.a5 : new (x?: number, y?: number) => number +>a5 : new (x?: number, y?: number) => number +>b.a5 : new (x?: number, y?: number) => number >b : Base ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number a5 = b.a6; // ok >a5 = b.a6 : new (x: number, y: number) => number ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number >b.a6 : new (x: number, y: number) => number >b : Base >a6 : new (x: number, y: number) => number diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.types.diff deleted file mode 100644 index e65670897c2..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithConstructSignaturesWithOptionalParameters.types.diff +++ /dev/null @@ -1,298 +0,0 @@ ---- old.assignmentCompatWithConstructSignaturesWithOptionalParameters.types -+++ new.assignmentCompatWithConstructSignaturesWithOptionalParameters.types -@@= skipped -7, +7 lines =@@ - >a : new () => number - - a2: new (x?: number) => number; -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - >x : number | undefined - - a3: new (x: number) => number; -@@= skipped -8, +8 lines =@@ - >x : number - - a4: new (x: number, y?: number) => number; -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - - a5: new (x?: number, y?: number) => number; -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - -@@= skipped -28, +28 lines =@@ - >a : new () => number - - a = b.a2; // ok -->a = b.a2 : new (x?: number) => number -+>a = b.a2 : new (x?: number | undefined) => number - >a : new () => number -->b.a2 : new (x?: number) => number -+>b.a2 : new (x?: number | undefined) => number - >b : Base -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - - a = b.a3; // error - >a = b.a3 : new (x: number) => number -@@= skipped -14, +14 lines =@@ - >a3 : new (x: number) => number - - a = b.a4; // error -->a = b.a4 : new (x: number, y?: number) => number -+>a = b.a4 : new (x: number, y?: number | undefined) => number - >a : new () => number -->b.a4 : new (x: number, y?: number) => number -+>b.a4 : new (x: number, y?: number | undefined) => number - >b : Base -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - - a = b.a5; // ok -->a = b.a5 : new (x?: number, y?: number) => number -+>a = b.a5 : new (x?: number | undefined, y?: number | undefined) => number - >a : new () => number -->b.a5 : new (x?: number, y?: number) => number -+>b.a5 : new (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - - a = b.a6; // error - >a = b.a6 : new (x: number, y: number) => number -@@= skipped -21, +21 lines =@@ - >a6 : new (x: number, y: number) => number - - declare var a2: new (x?: number) => number; -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - >x : number | undefined - - a2 = b.a; // ok - >a2 = b.a : new () => number -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - >b.a : new () => number - >b : Base - >a : new () => number - - a2 = b.a2; // ok -->a2 = b.a2 : new (x?: number) => number -->a2 : new (x?: number) => number -->b.a2 : new (x?: number) => number -+>a2 = b.a2 : new (x?: number | undefined) => number -+>a2 : new (x?: number | undefined) => number -+>b.a2 : new (x?: number | undefined) => number - >b : Base -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - - a2 = b.a3; // ok - >a2 = b.a3 : new (x: number) => number -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - >b.a3 : new (x: number) => number - >b : Base - >a3 : new (x: number) => number - - a2 = b.a4; // ok -->a2 = b.a4 : new (x: number, y?: number) => number -->a2 : new (x?: number) => number -->b.a4 : new (x: number, y?: number) => number -+>a2 = b.a4 : new (x: number, y?: number | undefined) => number -+>a2 : new (x?: number | undefined) => number -+>b.a4 : new (x: number, y?: number | undefined) => number - >b : Base -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - - a2 = b.a5; // ok -->a2 = b.a5 : new (x?: number, y?: number) => number -->a2 : new (x?: number) => number -->b.a5 : new (x?: number, y?: number) => number -+>a2 = b.a5 : new (x?: number | undefined, y?: number | undefined) => number -+>a2 : new (x?: number | undefined) => number -+>b.a5 : new (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - - a2 = b.a6; // error - >a2 = b.a6 : new (x: number, y: number) => number -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - >b.a6 : new (x: number, y: number) => number - >b : Base - >a6 : new (x: number, y: number) => number -@@= skipped -57, +57 lines =@@ - >a : new () => number - - a3 = b.a2; // ok -->a3 = b.a2 : new (x?: number) => number -+>a3 = b.a2 : new (x?: number | undefined) => number - >a3 : new (x: number) => number -->b.a2 : new (x?: number) => number -+>b.a2 : new (x?: number | undefined) => number - >b : Base -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - - a3 = b.a3; // ok - >a3 = b.a3 : new (x: number) => number -@@= skipped -14, +14 lines =@@ - >a3 : new (x: number) => number - - a3 = b.a4; // ok -->a3 = b.a4 : new (x: number, y?: number) => number -+>a3 = b.a4 : new (x: number, y?: number | undefined) => number - >a3 : new (x: number) => number -->b.a4 : new (x: number, y?: number) => number -+>b.a4 : new (x: number, y?: number | undefined) => number - >b : Base -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - - a3 = b.a5; // ok -->a3 = b.a5 : new (x?: number, y?: number) => number -+>a3 = b.a5 : new (x?: number | undefined, y?: number | undefined) => number - >a3 : new (x: number) => number -->b.a5 : new (x?: number, y?: number) => number -+>b.a5 : new (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - - a3 = b.a6; // error - >a3 = b.a6 : new (x: number, y: number) => number -@@= skipped -21, +21 lines =@@ - >a6 : new (x: number, y: number) => number - - declare var a4: new (x: number, y?: number) => number; -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - - a4 = b.a; // ok - >a4 = b.a : new () => number -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - >b.a : new () => number - >b : Base - >a : new () => number - - a4 = b.a2; // ok -->a4 = b.a2 : new (x?: number) => number -->a4 : new (x: number, y?: number) => number -->b.a2 : new (x?: number) => number -+>a4 = b.a2 : new (x?: number | undefined) => number -+>a4 : new (x: number, y?: number | undefined) => number -+>b.a2 : new (x?: number | undefined) => number - >b : Base -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - - a4 = b.a3; // ok - >a4 = b.a3 : new (x: number) => number -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - >b.a3 : new (x: number) => number - >b : Base - >a3 : new (x: number) => number - - a4 = b.a4; // ok -->a4 = b.a4 : new (x: number, y?: number) => number -->a4 : new (x: number, y?: number) => number -->b.a4 : new (x: number, y?: number) => number -+>a4 = b.a4 : new (x: number, y?: number | undefined) => number -+>a4 : new (x: number, y?: number | undefined) => number -+>b.a4 : new (x: number, y?: number | undefined) => number - >b : Base -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - - a4 = b.a5; // ok -->a4 = b.a5 : new (x?: number, y?: number) => number -->a4 : new (x: number, y?: number) => number -->b.a5 : new (x?: number, y?: number) => number -+>a4 = b.a5 : new (x?: number | undefined, y?: number | undefined) => number -+>a4 : new (x: number, y?: number | undefined) => number -+>b.a5 : new (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - - a4 = b.a6; // ok - >a4 = b.a6 : new (x: number, y: number) => number -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - >b.a6 : new (x: number, y: number) => number - >b : Base - >a6 : new (x: number, y: number) => number - - declare var a5: new (x?: number, y?: number) => number; -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - - a5 = b.a; // ok - >a5 = b.a : new () => number -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - >b.a : new () => number - >b : Base - >a : new () => number - - a5 = b.a2; // ok -->a5 = b.a2 : new (x?: number) => number -->a5 : new (x?: number, y?: number) => number -->b.a2 : new (x?: number) => number -+>a5 = b.a2 : new (x?: number | undefined) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number -+>b.a2 : new (x?: number | undefined) => number - >b : Base -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - - a5 = b.a3; // ok - >a5 = b.a3 : new (x: number) => number -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - >b.a3 : new (x: number) => number - >b : Base - >a3 : new (x: number) => number - - a5 = b.a4; // ok -->a5 = b.a4 : new (x: number, y?: number) => number -->a5 : new (x?: number, y?: number) => number -->b.a4 : new (x: number, y?: number) => number -+>a5 = b.a4 : new (x: number, y?: number | undefined) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number -+>b.a4 : new (x: number, y?: number | undefined) => number - >b : Base -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - - a5 = b.a5; // ok -->a5 = b.a5 : new (x?: number, y?: number) => number -->a5 : new (x?: number, y?: number) => number -->b.a5 : new (x?: number, y?: number) => number -+>a5 = b.a5 : new (x?: number | undefined, y?: number | undefined) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number -+>b.a5 : new (x?: number | undefined, y?: number | undefined) => number - >b : Base -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - - a5 = b.a6; // ok - >a5 = b.a6 : new (x: number, y: number) => number -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - >b.a6 : new (x: number, y: number) => number - >b : Base - >a6 : new (x: number, y: number) => number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithDiscriminatedUnion.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithDiscriminatedUnion.types index ca54dccd641..87e3d118dab 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithDiscriminatedUnion.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithDiscriminatedUnion.types @@ -301,7 +301,7 @@ namespace GH30170 { >val : Blue | Yellow function drawWithColor(currentColor: 'blue' | 'yellow' | undefined) { ->drawWithColor : (currentColor: "blue" | "yellow" | undefined) => void +>drawWithColor : (currentColor: 'blue' | 'yellow' | undefined) => void >currentColor : "blue" | "yellow" | undefined return draw({ color: currentColor }); @@ -530,7 +530,7 @@ namespace GH58603 { >a : MyType function indirect(kind: MyEnum, id?: number): void { ->indirect : (kind: MyEnum, id?: number | undefined) => void +>indirect : (kind: MyEnum, id?: number) => void >kind : MyEnum >id : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithDiscriminatedUnion.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithDiscriminatedUnion.types.diff index fa115e19e38..a01f46a7bbe 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithDiscriminatedUnion.types.diff +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithDiscriminatedUnion.types.diff @@ -1,10 +1,11 @@ --- old.assignmentCompatWithDiscriminatedUnion.types +++ new.assignmentCompatWithDiscriminatedUnion.types -@@= skipped -529, +529 lines =@@ - >a : MyType - - function indirect(kind: MyEnum, id?: number): void { -->indirect : (kind: MyEnum, id?: number) => void -+>indirect : (kind: MyEnum, id?: number | undefined) => void - >kind : MyEnum - >id : number | undefined +@@= skipped -300, +300 lines =@@ + >val : Blue | Yellow + + function drawWithColor(currentColor: 'blue' | 'yellow' | undefined) { +->drawWithColor : (currentColor: "blue" | "yellow" | undefined) => void ++>drawWithColor : (currentColor: 'blue' | 'yellow' | undefined) => void + >currentColor : "blue" | "yellow" | undefined + + return draw({ color: currentColor }); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithGenericCallSignatures3.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithGenericCallSignatures3.types index 7c12a6b2448..0a2501a1ca0 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithGenericCallSignatures3.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithGenericCallSignatures3.types @@ -16,7 +16,7 @@ var g: (x: T) => (y: S) => I >y : S var h: (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U } ->h : (x: T) => (y: S) => (f: (x: T) => (y: S) => U) => U +>h : (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U; } >x : T >y : S >f : (x: T) => (y: S) => U @@ -24,7 +24,7 @@ var h: (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U } >y : S g = h // ok ->g = h : (x: T) => (y: S) => (f: (x: T) => (y: S) => U) => U +>g = h : (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U; } >g : (x: T) => (y: S) => I ->h : (x: T) => (y: S) => (f: (x: T) => (y: S) => U) => U +>h : (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U; } diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithGenericCallSignatures3.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithGenericCallSignatures3.types.diff deleted file mode 100644 index 39ac48844d0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithGenericCallSignatures3.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.assignmentCompatWithGenericCallSignatures3.types -+++ new.assignmentCompatWithGenericCallSignatures3.types -@@= skipped -15, +15 lines =@@ - >y : S - - var h: (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U } -->h : (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U; } -+>h : (x: T) => (y: S) => (f: (x: T) => (y: S) => U) => U - >x : T - >y : S - >f : (x: T) => (y: S) => U -@@= skipped -8, +8 lines =@@ - >y : S - - g = h // ok -->g = h : (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U; } -+>g = h : (x: T) => (y: S) => (f: (x: T) => (y: S) => U) => U - >g : (x: T) => (y: S) => I -->h : (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U; } -+>h : (x: T) => (y: S) => (f: (x: T) => (y: S) => U) => U diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithObjectMembers.types b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithObjectMembers.types index 27f999e5b52..39926639639 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithObjectMembers.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithObjectMembers.types @@ -179,14 +179,14 @@ namespace ObjectTypes { >t2 : T2 var a: { foo: typeof a; } ->a : { foo: any; } ->foo : { foo: any; } ->a : { foo: any; } +>a : { foo: typeof a; } +>foo : { foo: typeof a; } +>a : { foo: typeof a; } var b: { foo: typeof b; } ->b : { foo: any; } ->foo : { foo: any; } ->b : { foo: any; } +>b : { foo: typeof b; } +>foo : { foo: typeof b; } +>b : { foo: typeof b; } var a2 = { foo: a2 }; >a2 : any @@ -236,9 +236,9 @@ namespace ObjectTypes { >t : T s2 = b; ->s2 = b : { foo: any; } +>s2 = b : { foo: typeof b; } >s2 : S2 ->b : { foo: any; } +>b : { foo: typeof b; } s2 = a2; >s2 = a2 : any @@ -246,28 +246,28 @@ namespace ObjectTypes { >a2 : any a = b; ->a = b : { foo: any; } ->a : { foo: any; } ->b : { foo: any; } +>a = b : { foo: typeof b; } +>a : { foo: typeof a; } +>b : { foo: typeof b; } b = a; ->b = a : { foo: any; } ->b : { foo: any; } ->a : { foo: any; } +>b = a : { foo: typeof a; } +>b : { foo: typeof b; } +>a : { foo: typeof a; } a = s; >a = s : S ->a : { foo: any; } +>a : { foo: typeof a; } >s : S a = s2; >a = s2 : S2 ->a : { foo: any; } +>a : { foo: typeof a; } >s2 : S2 a = a2; >a = a2 : any ->a : { foo: any; } +>a : { foo: typeof a; } >a2 : any a2 = b2; @@ -281,9 +281,9 @@ namespace ObjectTypes { >a2 : any a2 = b; ->a2 = b : { foo: any; } +>a2 = b : { foo: typeof b; } >a2 : any ->b : { foo: any; } +>b : { foo: typeof b; } a2 = t2; >a2 = t2 : T2 diff --git a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithObjectMembers.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentCompatWithObjectMembers.types.diff deleted file mode 100644 index 83c80310489..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentCompatWithObjectMembers.types.diff +++ /dev/null @@ -1,85 +0,0 @@ ---- old.assignmentCompatWithObjectMembers.types -+++ new.assignmentCompatWithObjectMembers.types -@@= skipped -178, +178 lines =@@ - >t2 : T2 - - var a: { foo: typeof a; } -->a : { foo: typeof a; } -->foo : { foo: typeof a; } -->a : { foo: typeof a; } -+>a : { foo: any; } -+>foo : { foo: any; } -+>a : { foo: any; } - - var b: { foo: typeof b; } -->b : { foo: typeof b; } -->foo : { foo: typeof b; } -->b : { foo: typeof b; } -+>b : { foo: any; } -+>foo : { foo: any; } -+>b : { foo: any; } - - var a2 = { foo: a2 }; - >a2 : any -@@= skipped -57, +57 lines =@@ - >t : T - - s2 = b; -->s2 = b : { foo: typeof b; } -+>s2 = b : { foo: any; } - >s2 : S2 -->b : { foo: typeof b; } -+>b : { foo: any; } - - s2 = a2; - >s2 = a2 : any -@@= skipped -10, +10 lines =@@ - >a2 : any - - a = b; -->a = b : { foo: typeof b; } -->a : { foo: typeof a; } -->b : { foo: typeof b; } -+>a = b : { foo: any; } -+>a : { foo: any; } -+>b : { foo: any; } - - b = a; -->b = a : { foo: typeof a; } -->b : { foo: typeof b; } -->a : { foo: typeof a; } -+>b = a : { foo: any; } -+>b : { foo: any; } -+>a : { foo: any; } - - a = s; - >a = s : S -->a : { foo: typeof a; } -+>a : { foo: any; } - >s : S - - a = s2; - >a = s2 : S2 -->a : { foo: typeof a; } -+>a : { foo: any; } - >s2 : S2 - - a = a2; - >a = a2 : any -->a : { foo: typeof a; } -+>a : { foo: any; } - >a2 : any - - a2 = b2; -@@= skipped -35, +35 lines =@@ - >a2 : any - - a2 = b; -->a2 = b : { foo: typeof b; } -+>a2 = b : { foo: any; } - >a2 : any -->b : { foo: typeof b; } -+>b : { foo: any; } - - a2 = t2; - >a2 = t2 : T2 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentGenericLookupTypeNarrowing.types b/testdata/baselines/reference/submodule/conformance/assignmentGenericLookupTypeNarrowing.types index 997f1ee7527..f6d7350f7df 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentGenericLookupTypeNarrowing.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentGenericLookupTypeNarrowing.types @@ -13,7 +13,7 @@ let mappedObject: {[K in "foo"]: null | {x: string}} = {foo: {x: "hello"}}; >"hello" : "hello" declare function foo(x: T): null | T; ->foo : (x: T) => T | null +>foo : (x: T) => null | T >x : T function bar(key: K) { @@ -23,7 +23,7 @@ function bar(key: K) { const element = foo(mappedObject[key]); >element : { foo: { x: string; } | null; }[K] | null >foo(mappedObject[key]) : { foo: { x: string; } | null; }[K] | null ->foo : (x: T) => T | null +>foo : (x: T) => null | T >mappedObject[key] : { foo: { x: string; } | null; }[K] >mappedObject : { foo: { x: string; } | null; } >key : K diff --git a/testdata/baselines/reference/submodule/conformance/assignmentGenericLookupTypeNarrowing.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentGenericLookupTypeNarrowing.types.diff deleted file mode 100644 index bed75b53455..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentGenericLookupTypeNarrowing.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.assignmentGenericLookupTypeNarrowing.types -+++ new.assignmentGenericLookupTypeNarrowing.types -@@= skipped -12, +12 lines =@@ - >"hello" : "hello" - - declare function foo(x: T): null | T; -->foo : (x: T) => null | T -+>foo : (x: T) => T | null - >x : T - - function bar(key: K) { -@@= skipped -10, +10 lines =@@ - const element = foo(mappedObject[key]); - >element : { foo: { x: string; } | null; }[K] | null - >foo(mappedObject[key]) : { foo: { x: string; } | null; }[K] | null -->foo : (x: T) => null | T -+>foo : (x: T) => T | null - >mappedObject[key] : { foo: { x: string; } | null; }[K] - >mappedObject : { foo: { x: string; } | null; } - >key : K \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assignmentTypeNarrowing.types b/testdata/baselines/reference/submodule/conformance/assignmentTypeNarrowing.types index 5ad1ed51cbd..779e0dd8ac8 100644 --- a/testdata/baselines/reference/submodule/conformance/assignmentTypeNarrowing.types +++ b/testdata/baselines/reference/submodule/conformance/assignmentTypeNarrowing.types @@ -104,7 +104,7 @@ type AOrArrA = T | T[]; >AOrArrA : AOrArrA const arr: AOrArrA<{x?: "ok"}> = [{ x: "ok" }]; // weak type ->arr : AOrArrA<{ x?: "ok" | undefined; }> +>arr : AOrArrA<{ x?: "ok"; }> >x : "ok" | undefined >[{ x: "ok" }] : { x: "ok"; }[] >{ x: "ok" } : { x: "ok"; } @@ -113,9 +113,9 @@ const arr: AOrArrA<{x?: "ok"}> = [{ x: "ok" }]; // weak type arr.push({ x: "ok" }); >arr.push({ x: "ok" }) : number ->arr.push : (...items: { x?: "ok" | undefined; }[]) => number ->arr : { x?: "ok" | undefined; }[] ->push : (...items: { x?: "ok" | undefined; }[]) => number +>arr.push : (...items: { x?: "ok"; }[]) => number +>arr : { x?: "ok"; }[] +>push : (...items: { x?: "ok"; }[]) => number >{ x: "ok" } : { x: "ok"; } >x : "ok" >"ok" : "ok" diff --git a/testdata/baselines/reference/submodule/conformance/assignmentTypeNarrowing.types.diff b/testdata/baselines/reference/submodule/conformance/assignmentTypeNarrowing.types.diff deleted file mode 100644 index 9c2f1f84da8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/assignmentTypeNarrowing.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.assignmentTypeNarrowing.types -+++ new.assignmentTypeNarrowing.types -@@= skipped -103, +103 lines =@@ - >AOrArrA : AOrArrA - - const arr: AOrArrA<{x?: "ok"}> = [{ x: "ok" }]; // weak type -->arr : AOrArrA<{ x?: "ok"; }> -+>arr : AOrArrA<{ x?: "ok" | undefined; }> - >x : "ok" | undefined - >[{ x: "ok" }] : { x: "ok"; }[] - >{ x: "ok" } : { x: "ok"; } -@@= skipped -9, +9 lines =@@ - - arr.push({ x: "ok" }); - >arr.push({ x: "ok" }) : number -->arr.push : (...items: { x?: "ok"; }[]) => number -->arr : { x?: "ok"; }[] -->push : (...items: { x?: "ok"; }[]) => number -+>arr.push : (...items: { x?: "ok" | undefined; }[]) => number -+>arr : { x?: "ok" | undefined; }[] -+>push : (...items: { x?: "ok" | undefined; }[]) => number - >{ x: "ok" } : { x: "ok"; } - >x : "ok" - >"ok" : "ok" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/awaitUsingDeclarationsWithIteratorObject.types b/testdata/baselines/reference/submodule/conformance/awaitUsingDeclarationsWithIteratorObject.types index c0f8f32e550..dbc6941c863 100644 --- a/testdata/baselines/reference/submodule/conformance/awaitUsingDeclarationsWithIteratorObject.types +++ b/testdata/baselines/reference/submodule/conformance/awaitUsingDeclarationsWithIteratorObject.types @@ -38,9 +38,9 @@ async function f() { await using it2 = Iterator.from(i) >it2 : IteratorObject >Iterator.from(i) : IteratorObject ->Iterator.from : (value: Iterable | Iterator) => IteratorObject +>Iterator.from : (value: Iterator | Iterable) => IteratorObject >Iterator : IteratorConstructor ->from : (value: Iterable | Iterator) => IteratorObject +>from : (value: Iterator | Iterable) => IteratorObject >i : Iterator await using it3 = new MyIterator(); diff --git a/testdata/baselines/reference/submodule/conformance/awaitUsingDeclarationsWithIteratorObject.types.diff b/testdata/baselines/reference/submodule/conformance/awaitUsingDeclarationsWithIteratorObject.types.diff deleted file mode 100644 index 38b48c5920e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/awaitUsingDeclarationsWithIteratorObject.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.awaitUsingDeclarationsWithIteratorObject.types -+++ new.awaitUsingDeclarationsWithIteratorObject.types -@@= skipped -37, +37 lines =@@ - await using it2 = Iterator.from(i) - >it2 : IteratorObject - >Iterator.from(i) : IteratorObject -->Iterator.from : (value: Iterator | Iterable) => IteratorObject -+>Iterator.from : (value: Iterable | Iterator) => IteratorObject - >Iterator : IteratorConstructor -->from : (value: Iterator | Iterable) => IteratorObject -+>from : (value: Iterable | Iterator) => IteratorObject - >i : Iterator - - await using it3 = new MyIterator(); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/bestCommonTypeOfConditionalExpressions.types b/testdata/baselines/reference/submodule/conformance/bestCommonTypeOfConditionalExpressions.types index 9ae690555fb..d42cc3c4af4 100644 --- a/testdata/baselines/reference/submodule/conformance/bestCommonTypeOfConditionalExpressions.types +++ b/testdata/baselines/reference/submodule/conformance/bestCommonTypeOfConditionalExpressions.types @@ -5,12 +5,12 @@ // no errors expected here var a: { x: number; y?: number }; ->a : { x: number; y?: number | undefined; } +>a : { x: number; y?: number; } >x : number >y : number | undefined var b: { x: number; z?: number }; ->b : { x: number; z?: number | undefined; } +>b : { x: number; z?: number; } >x : number >z : number | undefined @@ -52,18 +52,18 @@ var r3 = true ? 1 : {}; >{} : {} var r4 = true ? a : b; // typeof a ->r4 : { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } ->true ? a : b : { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } +>r4 : { x: number; y?: number; } | { x: number; z?: number; } +>true ? a : b : { x: number; y?: number; } | { x: number; z?: number; } >true : true ->a : { x: number; y?: number | undefined; } ->b : { x: number; z?: number | undefined; } +>a : { x: number; y?: number; } +>b : { x: number; z?: number; } var r5 = true ? b : a; // typeof b ->r5 : { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } ->true ? b : a : { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } +>r5 : { x: number; y?: number; } | { x: number; z?: number; } +>true ? b : a : { x: number; y?: number; } | { x: number; z?: number; } >true : true ->b : { x: number; z?: number | undefined; } ->a : { x: number; y?: number | undefined; } +>b : { x: number; z?: number; } +>a : { x: number; y?: number; } var r6 = true ? (x: number) => { } : (x: Object) => { }; // returns number => void >r6 : ((x: number) => void) | ((x: Object) => void) diff --git a/testdata/baselines/reference/submodule/conformance/bestCommonTypeOfConditionalExpressions.types.diff b/testdata/baselines/reference/submodule/conformance/bestCommonTypeOfConditionalExpressions.types.diff deleted file mode 100644 index d769ee226c1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/bestCommonTypeOfConditionalExpressions.types.diff +++ /dev/null @@ -1,44 +0,0 @@ ---- old.bestCommonTypeOfConditionalExpressions.types -+++ new.bestCommonTypeOfConditionalExpressions.types -@@= skipped -4, +4 lines =@@ - // no errors expected here - - var a: { x: number; y?: number }; -->a : { x: number; y?: number; } -+>a : { x: number; y?: number | undefined; } - >x : number - >y : number | undefined - - var b: { x: number; z?: number }; -->b : { x: number; z?: number; } -+>b : { x: number; z?: number | undefined; } - >x : number - >z : number | undefined - -@@= skipped -47, +47 lines =@@ - >{} : {} - - var r4 = true ? a : b; // typeof a -->r4 : { x: number; y?: number; } | { x: number; z?: number; } -->true ? a : b : { x: number; y?: number; } | { x: number; z?: number; } -+>r4 : { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } -+>true ? a : b : { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } - >true : true -->a : { x: number; y?: number; } -->b : { x: number; z?: number; } -+>a : { x: number; y?: number | undefined; } -+>b : { x: number; z?: number | undefined; } - - var r5 = true ? b : a; // typeof b -->r5 : { x: number; y?: number; } | { x: number; z?: number; } -->true ? b : a : { x: number; y?: number; } | { x: number; z?: number; } -+>r5 : { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } -+>true ? b : a : { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } - >true : true -->b : { x: number; z?: number; } -->a : { x: number; y?: number; } -+>b : { x: number; z?: number | undefined; } -+>a : { x: number; y?: number | undefined; } - - var r6 = true ? (x: number) => { } : (x: Object) => { }; // returns number => void - >r6 : ((x: number) => void) | ((x: Object) => void) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/bivariantInferences.types b/testdata/baselines/reference/submodule/conformance/bivariantInferences.types index 0e000531b0f..0f175328d6f 100644 --- a/testdata/baselines/reference/submodule/conformance/bivariantInferences.types +++ b/testdata/baselines/reference/submodule/conformance/bivariantInferences.types @@ -5,7 +5,7 @@ interface Array { equalsShallow(this: ReadonlyArray, other: ReadonlyArray): boolean; ->equalsShallow : (this: readonly T_1[], other: readonly T_1[]) => boolean +>equalsShallow : (this: ReadonlyArray, other: ReadonlyArray) => boolean >this : readonly T[] >other : readonly T[] } diff --git a/testdata/baselines/reference/submodule/conformance/bivariantInferences.types.diff b/testdata/baselines/reference/submodule/conformance/bivariantInferences.types.diff index 2fffe31a039..1fd761ac270 100644 --- a/testdata/baselines/reference/submodule/conformance/bivariantInferences.types.diff +++ b/testdata/baselines/reference/submodule/conformance/bivariantInferences.types.diff @@ -5,7 +5,7 @@ interface Array { equalsShallow(this: ReadonlyArray, other: ReadonlyArray): boolean; ->equalsShallow : (this: ReadonlyArray, other: ReadonlyArray) => boolean -+>equalsShallow : (this: readonly T_1[], other: readonly T_1[]) => boolean ++>equalsShallow : (this: ReadonlyArray, other: ReadonlyArray) => boolean >this : readonly T[] >other : readonly T[] } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes1.types b/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes1.types index 82d6c2bbcae..20b2646e000 100644 --- a/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes1.types +++ b/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes1.types @@ -32,7 +32,7 @@ function f1() { } function f2(a: true | false, b: boolean) { ->f2 : (a: boolean, b: boolean) => void +>f2 : (a: true | false, b: boolean) => void >a : boolean >true : true >false : false @@ -50,7 +50,7 @@ function f2(a: true | false, b: boolean) { } function f3(a: true | false, b: true | false) { ->f3 : (a: boolean, b: boolean) => void +>f3 : (a: true | false, b: true | false) => void >a : boolean >true : true >false : false @@ -166,7 +166,7 @@ function assertNever(x: never): never { } function f10(x: true | false) { ->f10 : (x: boolean) => "false" | "true" +>f10 : (x: true | false) => "false" | "true" >x : boolean >true : true >false : false @@ -185,7 +185,7 @@ function f10(x: true | false) { } function f11(x: true | false) { ->f11 : (x: boolean) => "false" | "true" +>f11 : (x: true | false) => "false" | "true" >x : boolean >true : true >false : false @@ -208,7 +208,7 @@ function f11(x: true | false) { } function f12(x: true | false) { ->f12 : (x: boolean) => void +>f12 : (x: true | false) => void >x : boolean >true : true >false : false @@ -226,7 +226,7 @@ function f12(x: true | false) { } function f13(x: true | false) { ->f13 : (x: boolean) => void +>f13 : (x: true | false) => void >x : boolean >true : true >false : false diff --git a/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes1.types.diff b/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes1.types.diff deleted file mode 100644 index 6f853593df5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes1.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.booleanLiteralTypes1.types -+++ new.booleanLiteralTypes1.types -@@= skipped -31, +31 lines =@@ - } - - function f2(a: true | false, b: boolean) { -->f2 : (a: true | false, b: boolean) => void -+>f2 : (a: boolean, b: boolean) => void - >a : boolean - >true : true - >false : false -@@= skipped -18, +18 lines =@@ - } - - function f3(a: true | false, b: true | false) { -->f3 : (a: true | false, b: true | false) => void -+>f3 : (a: boolean, b: boolean) => void - >a : boolean - >true : true - >false : false -@@= skipped -116, +116 lines =@@ - } - - function f10(x: true | false) { -->f10 : (x: true | false) => "false" | "true" -+>f10 : (x: boolean) => "false" | "true" - >x : boolean - >true : true - >false : false -@@= skipped -19, +19 lines =@@ - } - - function f11(x: true | false) { -->f11 : (x: true | false) => "false" | "true" -+>f11 : (x: boolean) => "false" | "true" - >x : boolean - >true : true - >false : false -@@= skipped -23, +23 lines =@@ - } - - function f12(x: true | false) { -->f12 : (x: true | false) => void -+>f12 : (x: boolean) => void - >x : boolean - >true : true - >false : false -@@= skipped -18, +18 lines =@@ - } - - function f13(x: true | false) { -->f13 : (x: true | false) => void -+>f13 : (x: boolean) => void - >x : boolean - >true : true - >false : false \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes2.types b/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes2.types index 55dbf39ec06..0b9eb33922f 100644 --- a/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes2.types +++ b/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes2.types @@ -32,7 +32,7 @@ function f1() { } function f2(a: true | false, b: boolean) { ->f2 : (a: boolean, b: boolean) => void +>f2 : (a: true | false, b: boolean) => void >a : boolean >true : true >false : false @@ -50,7 +50,7 @@ function f2(a: true | false, b: boolean) { } function f3(a: true | false, b: true | false) { ->f3 : (a: boolean, b: boolean) => void +>f3 : (a: true | false, b: true | false) => void >a : boolean >true : true >false : false @@ -166,7 +166,7 @@ function assertNever(x: never): never { } function f10(x: true | false) { ->f10 : (x: boolean) => "false" | "true" +>f10 : (x: true | false) => "false" | "true" >x : boolean >true : true >false : false @@ -185,7 +185,7 @@ function f10(x: true | false) { } function f11(x: true | false) { ->f11 : (x: boolean) => "false" | "true" +>f11 : (x: true | false) => "false" | "true" >x : boolean >true : true >false : false @@ -208,7 +208,7 @@ function f11(x: true | false) { } function f12(x: true | false) { ->f12 : (x: boolean) => void +>f12 : (x: true | false) => void >x : boolean >true : true >false : false @@ -226,7 +226,7 @@ function f12(x: true | false) { } function f13(x: true | false) { ->f13 : (x: boolean) => void +>f13 : (x: true | false) => void >x : boolean >true : true >false : false diff --git a/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes2.types.diff b/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes2.types.diff deleted file mode 100644 index 894b696b073..00000000000 --- a/testdata/baselines/reference/submodule/conformance/booleanLiteralTypes2.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.booleanLiteralTypes2.types -+++ new.booleanLiteralTypes2.types -@@= skipped -31, +31 lines =@@ - } - - function f2(a: true | false, b: boolean) { -->f2 : (a: true | false, b: boolean) => void -+>f2 : (a: boolean, b: boolean) => void - >a : boolean - >true : true - >false : false -@@= skipped -18, +18 lines =@@ - } - - function f3(a: true | false, b: true | false) { -->f3 : (a: true | false, b: true | false) => void -+>f3 : (a: boolean, b: boolean) => void - >a : boolean - >true : true - >false : false -@@= skipped -116, +116 lines =@@ - } - - function f10(x: true | false) { -->f10 : (x: true | false) => "false" | "true" -+>f10 : (x: boolean) => "false" | "true" - >x : boolean - >true : true - >false : false -@@= skipped -19, +19 lines =@@ - } - - function f11(x: true | false) { -->f11 : (x: true | false) => "false" | "true" -+>f11 : (x: boolean) => "false" | "true" - >x : boolean - >true : true - >false : false -@@= skipped -23, +23 lines =@@ - } - - function f12(x: true | false) { -->f12 : (x: true | false) => void -+>f12 : (x: boolean) => void - >x : boolean - >true : true - >false : false -@@= skipped -18, +18 lines =@@ - } - - function f13(x: true | false) { -->f13 : (x: true | false) => void -+>f13 : (x: boolean) => void - >x : boolean - >true : true - >false : false \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=esnext).types b/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=esnext).types index 492fe88467d..4e511424a65 100644 --- a/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=esnext).types @@ -10,7 +10,7 @@ declare module "fs" { >"fs" : typeof import("fs") export function readFileSync(path: string, encoding?: string): string; ->readFileSync : (path: string, encoding?: string | undefined) => string +>readFileSync : (path: string, encoding?: string) => string >path : string >encoding : string | undefined } diff --git a/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=esnext).types.diff deleted file mode 100644 index 840792a7c51..00000000000 --- a/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=esnext).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.bundlerSyntaxRestrictions(module=esnext).types -+++ new.bundlerSyntaxRestrictions(module=esnext).types -@@= skipped -9, +9 lines =@@ - >"fs" : typeof import("fs") - - export function readFileSync(path: string, encoding?: string): string; -->readFileSync : (path: string, encoding?: string) => string -+>readFileSync : (path: string, encoding?: string | undefined) => string - >path : string - >encoding : string | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=preserve).types b/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=preserve).types index 492fe88467d..4e511424a65 100644 --- a/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=preserve).types +++ b/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=preserve).types @@ -10,7 +10,7 @@ declare module "fs" { >"fs" : typeof import("fs") export function readFileSync(path: string, encoding?: string): string; ->readFileSync : (path: string, encoding?: string | undefined) => string +>readFileSync : (path: string, encoding?: string) => string >path : string >encoding : string | undefined } diff --git a/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=preserve).types.diff b/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=preserve).types.diff deleted file mode 100644 index fd1a0c9d785..00000000000 --- a/testdata/baselines/reference/submodule/conformance/bundlerSyntaxRestrictions(module=preserve).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.bundlerSyntaxRestrictions(module=preserve).types -+++ new.bundlerSyntaxRestrictions(module=preserve).types -@@= skipped -9, +9 lines =@@ - >"fs" : typeof import("fs") - - export function readFileSync(path: string, encoding?: string): string; -->readFileSync : (path: string, encoding?: string) => string -+>readFileSync : (path: string, encoding?: string | undefined) => string - >path : string - >encoding : string | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/callChain.2.types b/testdata/baselines/reference/submodule/conformance/callChain.2.types index e159eb840a8..29eab783585 100644 --- a/testdata/baselines/reference/submodule/conformance/callChain.2.types +++ b/testdata/baselines/reference/submodule/conformance/callChain.2.types @@ -19,7 +19,7 @@ o2?.b(); >b : () => number declare const o3: { b: (() => { c: string }) | undefined }; ->o3 : { b: () => { c: string; }; } +>o3 : { b: (() => { c: string; }) | undefined; } >b : () => { c: string; } >c : string @@ -27,7 +27,7 @@ o3.b?.().c; >o3.b?.().c : string >o3.b?.() : { c: string; } >o3.b : () => { c: string; } ->o3 : { b: () => { c: string; }; } +>o3 : { b: (() => { c: string; }) | undefined; } >b : () => { c: string; } >c : string diff --git a/testdata/baselines/reference/submodule/conformance/callChain.2.types.diff b/testdata/baselines/reference/submodule/conformance/callChain.2.types.diff deleted file mode 100644 index fd89fc7ff4f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/callChain.2.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.callChain.2.types -+++ new.callChain.2.types -@@= skipped -18, +18 lines =@@ - >b : () => number - - declare const o3: { b: (() => { c: string }) | undefined }; -->o3 : { b: (() => { c: string; }) | undefined; } -+>o3 : { b: () => { c: string; }; } - >b : () => { c: string; } - >c : string - -@@= skipped -8, +8 lines =@@ - >o3.b?.().c : string - >o3.b?.() : { c: string; } - >o3.b : () => { c: string; } -->o3 : { b: (() => { c: string; }) | undefined; } -+>o3 : { b: () => { c: string; }; } - >b : () => { c: string; } - >c : string diff --git a/testdata/baselines/reference/submodule/conformance/callChain.types b/testdata/baselines/reference/submodule/conformance/callChain.types index 8611752955a..65c03126255 100644 --- a/testdata/baselines/reference/submodule/conformance/callChain.types +++ b/testdata/baselines/reference/submodule/conformance/callChain.types @@ -259,30 +259,30 @@ const v: number | undefined = o4?.(incr); // GH#33744 declare const o5: () => undefined | (() => void); ->o5 : () => (() => void) | undefined +>o5 : () => undefined | (() => void) o5()?.(); >o5()?.() : void | undefined >o5() : (() => void) | undefined ->o5 : () => (() => void) | undefined +>o5 : () => undefined | (() => void) // GH#36031 o2?.b()!.toString; ->o2?.b()!.toString : ((radix?: number | undefined) => string) | undefined +>o2?.b()!.toString : ((radix?: number) => string) | undefined >o2?.b()! : number | undefined >o2?.b() : number | undefined >o2?.b : ((...args: any[]) => number) | undefined >o2 : { b: (...args: any[]) => number; } | undefined >b : ((...args: any[]) => number) | undefined ->toString : ((radix?: number | undefined) => string) | undefined +>toString : ((radix?: number) => string) | undefined o2?.b()!.toString!; ->o2?.b()!.toString! : (radix?: number | undefined) => string ->o2?.b()!.toString : ((radix?: number | undefined) => string) | undefined +>o2?.b()!.toString! : (radix?: number) => string +>o2?.b()!.toString : ((radix?: number) => string) | undefined >o2?.b()! : number | undefined >o2?.b() : number | undefined >o2?.b : ((...args: any[]) => number) | undefined >o2 : { b: (...args: any[]) => number; } | undefined >b : ((...args: any[]) => number) | undefined ->toString : ((radix?: number | undefined) => string) | undefined +>toString : ((radix?: number) => string) | undefined diff --git a/testdata/baselines/reference/submodule/conformance/callChain.types.diff b/testdata/baselines/reference/submodule/conformance/callChain.types.diff deleted file mode 100644 index 289262a175a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/callChain.types.diff +++ /dev/null @@ -1,39 +0,0 @@ ---- old.callChain.types -+++ new.callChain.types -@@= skipped -258, +258 lines =@@ - - // GH#33744 - declare const o5: () => undefined | (() => void); -->o5 : () => undefined | (() => void) -+>o5 : () => (() => void) | undefined - - o5()?.(); - >o5()?.() : void | undefined - >o5() : (() => void) | undefined -->o5 : () => undefined | (() => void) -+>o5 : () => (() => void) | undefined - - // GH#36031 - o2?.b()!.toString; -->o2?.b()!.toString : ((radix?: number) => string) | undefined -+>o2?.b()!.toString : ((radix?: number | undefined) => string) | undefined - >o2?.b()! : number | undefined - >o2?.b() : number | undefined - >o2?.b : ((...args: any[]) => number) | undefined - >o2 : { b: (...args: any[]) => number; } | undefined - >b : ((...args: any[]) => number) | undefined -->toString : ((radix?: number) => string) | undefined -+>toString : ((radix?: number | undefined) => string) | undefined - - o2?.b()!.toString!; -->o2?.b()!.toString! : (radix?: number) => string -->o2?.b()!.toString : ((radix?: number) => string) | undefined -+>o2?.b()!.toString! : (radix?: number | undefined) => string -+>o2?.b()!.toString : ((radix?: number | undefined) => string) | undefined - >o2?.b()! : number | undefined - >o2?.b() : number | undefined - >o2?.b : ((...args: any[]) => number) | undefined - >o2 : { b: (...args: any[]) => number; } | undefined - >b : ((...args: any[]) => number) | undefined -->toString : ((radix?: number) => string) | undefined -+>toString : ((radix?: number | undefined) => string) | undefined diff --git a/testdata/baselines/reference/submodule/conformance/callOverload.types b/testdata/baselines/reference/submodule/conformance/callOverload.types index 350c18a3cd5..b34f45f5c73 100644 --- a/testdata/baselines/reference/submodule/conformance/callOverload.types +++ b/testdata/baselines/reference/submodule/conformance/callOverload.types @@ -11,7 +11,7 @@ declare function takeTwo(x: any, y: any): void; >y : any declare function withRest(a: any, ...args: Array): void; ->withRest : (a: any, ...args: any[]) => void +>withRest : (a: any, ...args: Array) => void >a : any >args : any[] @@ -41,18 +41,18 @@ takeTwo(1, 2, 3, 4) withRest('a', ...n); // no error >withRest('a', ...n) : void ->withRest : (a: any, ...args: any[]) => void +>withRest : (a: any, ...args: Array) => void >'a' : "a" >...n : number >n : number[] withRest(); >withRest() : void ->withRest : (a: any, ...args: any[]) => void +>withRest : (a: any, ...args: Array) => void withRest(...n); >withRest(...n) : void ->withRest : (a: any, ...args: any[]) => void +>withRest : (a: any, ...args: Array) => void >...n : number >n : number[] diff --git a/testdata/baselines/reference/submodule/conformance/callOverload.types.diff b/testdata/baselines/reference/submodule/conformance/callOverload.types.diff deleted file mode 100644 index 79520057098..00000000000 --- a/testdata/baselines/reference/submodule/conformance/callOverload.types.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- old.callOverload.types -+++ new.callOverload.types -@@= skipped -10, +10 lines =@@ - >y : any - - declare function withRest(a: any, ...args: Array): void; -->withRest : (a: any, ...args: Array) => void -+>withRest : (a: any, ...args: any[]) => void - >a : any - >args : any[] - -@@= skipped -30, +30 lines =@@ - - withRest('a', ...n); // no error - >withRest('a', ...n) : void -->withRest : (a: any, ...args: Array) => void -+>withRest : (a: any, ...args: any[]) => void - >'a' : "a" - >...n : number - >n : number[] - - withRest(); - >withRest() : void -->withRest : (a: any, ...args: Array) => void -+>withRest : (a: any, ...args: any[]) => void - - withRest(...n); - >withRest(...n) : void -->withRest : (a: any, ...args: Array) => void -+>withRest : (a: any, ...args: any[]) => void - >...n : number - >n : number[] diff --git a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance2.types b/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance2.types index 063545ab708..a5db197e162 100644 --- a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance2.types +++ b/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance2.types @@ -86,12 +86,12 @@ interface A { // T >bar : string a12: (x: Array, y: Array) => Array; ->a12 : (x: Base[], y: Derived2[]) => Derived[] +>a12 : (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] a13: (x: Array, y: Array) => Array; ->a13 : (x: Base[], y: Derived[]) => Derived[] +>a13 : (x: Array, y: Array) => Array >x : Base[] >y : Derived[] @@ -223,12 +223,12 @@ interface I extends A { >y : T a12: >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : (x: Base[], y: T) => Derived[] +>a12 : >(x: Array, y: T) => Array >x : Base[] >y : T a13: >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : (x: Base[], y: T) => T +>a13 : >(x: Array, y: T) => T >x : Base[] >y : T diff --git a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance2.types.diff b/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance2.types.diff deleted file mode 100644 index 473e44cc132..00000000000 --- a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance2.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.callSignatureAssignabilityInInheritance2.types -+++ new.callSignatureAssignabilityInInheritance2.types -@@= skipped -85, +85 lines =@@ - >bar : string - - a12: (x: Array, y: Array) => Array; -->a12 : (x: Array, y: Array) => Array -+>a12 : (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - - a13: (x: Array, y: Array) => Array; -->a13 : (x: Array, y: Array) => Array -+>a13 : (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] - -@@= skipped -137, +137 lines =@@ - >y : T - - a12: >(x: Array, y: T) => Array; // ok, less specific parameter type -->a12 : >(x: Array, y: T) => Array -+>a12 : (x: Base[], y: T) => Derived[] - >x : Base[] - >y : T - - a13: >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds -->a13 : >(x: Array, y: T) => T -+>a13 : (x: Base[], y: T) => T - >x : Base[] - >y : T diff --git a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance3.types b/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance3.types index 87d26412fbd..846b9808082 100644 --- a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance3.types +++ b/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance3.types @@ -60,7 +60,7 @@ namespace Errors { >bar : string a12: (x: Array, y: Array) => Array; ->a12 : (x: Base[], y: Derived2[]) => Derived[] +>a12 : (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] @@ -81,11 +81,11 @@ namespace Errors { >b : number a16: { ->a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } +>a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } // type of parameter is overload set which means we can't do inference based on this type (x: { ->x : { (a: number): number; (a?: number | undefined): number; } +>x : { (a: number): number; (a?: number): number; } (a: number): number; >a : number @@ -95,7 +95,7 @@ namespace Errors { }): number[]; (x: { ->x : { (a: boolean): boolean; (a?: boolean | undefined): boolean; } +>x : { (a: boolean): boolean; (a?: boolean): boolean; } (a: boolean): boolean; >a : boolean @@ -178,7 +178,7 @@ namespace Errors { interface I4E extends A { a12: >(x: Array, y: Array) => T; // valid, no inferences for T, defaults to Array ->a12 : (x: Base[], y: Base[]) => T +>a12 : >(x: Array, y: Array) => T >x : Base[] >y : Base[] } diff --git a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance3.types.diff b/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance3.types.diff deleted file mode 100644 index ecdc14e1e06..00000000000 --- a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance3.types.diff +++ /dev/null @@ -1,43 +0,0 @@ ---- old.callSignatureAssignabilityInInheritance3.types -+++ new.callSignatureAssignabilityInInheritance3.types -@@= skipped -59, +59 lines =@@ - >bar : string - - a12: (x: Array, y: Array) => Array; -->a12 : (x: Array, y: Array) => Array -+>a12 : (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - -@@= skipped -21, +21 lines =@@ - >b : number - - a16: { -->a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -+>a16 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } - - // type of parameter is overload set which means we can't do inference based on this type - (x: { -->x : { (a: number): number; (a?: number): number; } -+>x : { (a: number): number; (a?: number | undefined): number; } - - (a: number): number; - >a : number -@@= skipped -14, +14 lines =@@ - - }): number[]; - (x: { -->x : { (a: boolean): boolean; (a?: boolean): boolean; } -+>x : { (a: boolean): boolean; (a?: boolean | undefined): boolean; } - - (a: boolean): boolean; - >a : boolean -@@= skipped -83, +83 lines =@@ - - interface I4E extends A { - a12: >(x: Array, y: Array) => T; // valid, no inferences for T, defaults to Array -->a12 : >(x: Array, y: Array) => T -+>a12 : (x: Base[], y: Base[]) => T - >x : Base[] - >y : Base[] - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance5.types b/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance5.types index fed7fc0a1d2..0c63a3912d8 100644 --- a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance5.types +++ b/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance5.types @@ -87,12 +87,12 @@ interface A { // T >bar : string a12: (x: Array, y: Array) => Array; ->a12 : (x: Base[], y: Derived2[]) => Derived[] +>a12 : (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] a13: (x: Array, y: Array) => Array; ->a13 : (x: Base[], y: Derived[]) => Derived[] +>a13 : (x: Array, y: Array) => Array >x : Base[] >y : Derived[] @@ -173,12 +173,12 @@ interface I extends B { >y : T a12: >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : (x: Base[], y: T) => Derived[] +>a12 : >(x: Array, y: T) => Array >x : Base[] >y : T a13: >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : (x: Base[], y: T) => T +>a13 : >(x: Array, y: T) => T >x : Base[] >y : T diff --git a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance5.types.diff b/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance5.types.diff deleted file mode 100644 index 2bba1061a44..00000000000 --- a/testdata/baselines/reference/submodule/conformance/callSignatureAssignabilityInInheritance5.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.callSignatureAssignabilityInInheritance5.types -+++ new.callSignatureAssignabilityInInheritance5.types -@@= skipped -86, +86 lines =@@ - >bar : string - - a12: (x: Array, y: Array) => Array; -->a12 : (x: Array, y: Array) => Array -+>a12 : (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - - a13: (x: Array, y: Array) => Array; -->a13 : (x: Array, y: Array) => Array -+>a13 : (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] - -@@= skipped -86, +86 lines =@@ - >y : T - - a12: >(x: Array, y: T) => Array; // ok, less specific parameter type -->a12 : >(x: Array, y: T) => Array -+>a12 : (x: Base[], y: T) => Derived[] - >x : Base[] - >y : T - - a13: >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds -->a13 : >(x: Array, y: T) => T -+>a13 : (x: Base[], y: T) => T - >x : Base[] - >y : T diff --git a/testdata/baselines/reference/submodule/conformance/callWithMissingVoid.types b/testdata/baselines/reference/submodule/conformance/callWithMissingVoid.types index 134e0701cee..5b9e0e7f2f2 100644 --- a/testdata/baselines/reference/submodule/conformance/callWithMissingVoid.types +++ b/testdata/baselines/reference/submodule/conformance/callWithMissingVoid.types @@ -190,7 +190,7 @@ b(4); // not ok >4 : 4 function c(x: number | void, y: void, z: void | string | number): void { ->c : (x: void | number, y: void, z: void | string | number) => void +>c : (x: number | void, y: void, z: void | string | number) => void >x : void | number >y : void >z : void | string | number @@ -199,7 +199,7 @@ function c(x: number | void, y: void, z: void | string | number): void { c(3, void 0, void 0); // ok >c(3, void 0, void 0) : void ->c : (x: void | number, y: void, z: void | string | number) => void +>c : (x: number | void, y: void, z: void | string | number) => void >3 : 3 >void 0 : undefined >0 : 0 @@ -208,19 +208,19 @@ c(3, void 0, void 0); // ok c(3, void 0); // ok >c(3, void 0) : void ->c : (x: void | number, y: void, z: void | string | number) => void +>c : (x: number | void, y: void, z: void | string | number) => void >3 : 3 >void 0 : undefined >0 : 0 c(3); // ok >c(3) : void ->c : (x: void | number, y: void, z: void | string | number) => void +>c : (x: number | void, y: void, z: void | string | number) => void >3 : 3 c(); // ok >c() : void ->c : (x: void | number, y: void, z: void | string | number) => void +>c : (x: number | void, y: void, z: void | string | number) => void // Spread Parameters @@ -288,7 +288,7 @@ call((x: void, y: void) => 42) // ok call((x: number | void, y: number | void) => 42) // ok >call((x: number | void, y: number | void) => 42) : void >call : (handler: (...args: TS) => unknown, ...args: TS) => void ->(x: number | void, y: number | void) => 42 : (x: void | number, y: void | number) => number +>(x: number | void, y: number | void) => 42 : (x: number | void, y: number | void) => number >x : void | number >y : void | number >42 : 42 @@ -296,7 +296,7 @@ call((x: number | void, y: number | void) => 42) // ok call((x: number | void, y: number | void) => 42, 4) // ok >call((x: number | void, y: number | void) => 42, 4) : void >call : (handler: (...args: TS) => unknown, ...args: TS) => void ->(x: number | void, y: number | void) => 42 : (x: void | number, y: void | number) => number +>(x: number | void, y: number | void) => 42 : (x: number | void, y: number | void) => number >x : void | number >y : void | number >42 : 42 @@ -305,7 +305,7 @@ call((x: number | void, y: number | void) => 42, 4) // ok call((x: number | void, y: number | void) => 42, 4, 2) // ok >call((x: number | void, y: number | void) => 42, 4, 2) : void >call : (handler: (...args: TS) => unknown, ...args: TS) => void ->(x: number | void, y: number | void) => 42 : (x: void | number, y: void | number) => number +>(x: number | void, y: number | void) => 42 : (x: number | void, y: number | void) => number >x : void | number >y : void | number >42 : 42 diff --git a/testdata/baselines/reference/submodule/conformance/callWithMissingVoid.types.diff b/testdata/baselines/reference/submodule/conformance/callWithMissingVoid.types.diff deleted file mode 100644 index b883701a59b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/callWithMissingVoid.types.diff +++ /dev/null @@ -1,70 +0,0 @@ ---- old.callWithMissingVoid.types -+++ new.callWithMissingVoid.types -@@= skipped -189, +189 lines =@@ - >4 : 4 - - function c(x: number | void, y: void, z: void | string | number): void { -->c : (x: number | void, y: void, z: void | string | number) => void -+>c : (x: void | number, y: void, z: void | string | number) => void - >x : void | number - >y : void - >z : void | string | number -@@= skipped -9, +9 lines =@@ - - c(3, void 0, void 0); // ok - >c(3, void 0, void 0) : void -->c : (x: number | void, y: void, z: void | string | number) => void -+>c : (x: void | number, y: void, z: void | string | number) => void - >3 : 3 - >void 0 : undefined - >0 : 0 -@@= skipped -9, +9 lines =@@ - - c(3, void 0); // ok - >c(3, void 0) : void -->c : (x: number | void, y: void, z: void | string | number) => void -+>c : (x: void | number, y: void, z: void | string | number) => void - >3 : 3 - >void 0 : undefined - >0 : 0 - - c(3); // ok - >c(3) : void -->c : (x: number | void, y: void, z: void | string | number) => void -+>c : (x: void | number, y: void, z: void | string | number) => void - >3 : 3 - - c(); // ok - >c() : void -->c : (x: number | void, y: void, z: void | string | number) => void -+>c : (x: void | number, y: void, z: void | string | number) => void - - - // Spread Parameters -@@= skipped -80, +80 lines =@@ - call((x: number | void, y: number | void) => 42) // ok - >call((x: number | void, y: number | void) => 42) : void - >call : (handler: (...args: TS) => unknown, ...args: TS) => void -->(x: number | void, y: number | void) => 42 : (x: number | void, y: number | void) => number -+>(x: number | void, y: number | void) => 42 : (x: void | number, y: void | number) => number - >x : void | number - >y : void | number - >42 : 42 -@@= skipped -8, +8 lines =@@ - call((x: number | void, y: number | void) => 42, 4) // ok - >call((x: number | void, y: number | void) => 42, 4) : void - >call : (handler: (...args: TS) => unknown, ...args: TS) => void -->(x: number | void, y: number | void) => 42 : (x: number | void, y: number | void) => number -+>(x: number | void, y: number | void) => 42 : (x: void | number, y: void | number) => number - >x : void | number - >y : void | number - >42 : 42 -@@= skipped -9, +9 lines =@@ - call((x: number | void, y: number | void) => 42, 4, 2) // ok - >call((x: number | void, y: number | void) => 42, 4, 2) : void - >call : (handler: (...args: TS) => unknown, ...args: TS) => void -->(x: number | void, y: number | void) => 42 : (x: number | void, y: number | void) => number -+>(x: number | void, y: number | void) => 42 : (x: void | number, y: void | number) => number - >x : void | number - >y : void | number - >42 : 42 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/callWithSpread2.types b/testdata/baselines/reference/submodule/conformance/callWithSpread2.types index 40de4943152..32b0ba704e8 100644 --- a/testdata/baselines/reference/submodule/conformance/callWithSpread2.types +++ b/testdata/baselines/reference/submodule/conformance/callWithSpread2.types @@ -2,23 +2,23 @@ === callWithSpread2.ts === declare function all(a?: number, b?: number): void; ->all : (a?: number | undefined, b?: number | undefined) => void +>all : (a?: number, b?: number) => void >a : number | undefined >b : number | undefined declare function weird(a?: number | string, b?: number | string): void; ->weird : (a?: string | number | undefined, b?: string | number | undefined) => void +>weird : (a?: number | string, b?: number | string) => void >a : string | number | undefined >b : string | number | undefined declare function prefix(s: string, a?: number, b?: number): void; ->prefix : (s: string, a?: number | undefined, b?: number | undefined) => void +>prefix : (s: string, a?: number, b?: number) => void >s : string >a : number | undefined >b : number | undefined declare function rest(s: string, a?: number, b?: number, ...rest: number[]): void; ->rest : (s: string, a?: number | undefined, b?: number | undefined, ...rest: number[]) => void +>rest : (s: string, a?: number, b?: number, ...rest: number[]) => void >s : string >a : number | undefined >b : number | undefined @@ -32,7 +32,7 @@ declare function thunk(): string; >thunk : () => string declare function prefix2(s: string, n: number, a?: number, b?: number): void; ->prefix2 : (s: string, n: number, a?: number | undefined, b?: number | undefined) => void +>prefix2 : (s: string, n: number, a?: number, b?: number) => void >s : string >n : number >a : number | undefined @@ -50,38 +50,38 @@ declare var tuple: [number, string]; // good all(...ns) >all(...ns) : void ->all : (a?: number | undefined, b?: number | undefined) => void +>all : (a?: number, b?: number) => void >...ns : number >ns : number[] weird(...ns) >weird(...ns) : void ->weird : (a?: string | number | undefined, b?: string | number | undefined) => void +>weird : (a?: number | string, b?: number | string) => void >...ns : number >ns : number[] weird(...mixed) >weird(...mixed) : void ->weird : (a?: string | number | undefined, b?: string | number | undefined) => void +>weird : (a?: number | string, b?: number | string) => void >...mixed : string | number >mixed : (string | number)[] weird(...tuple) >weird(...tuple) : void ->weird : (a?: string | number | undefined, b?: string | number | undefined) => void +>weird : (a?: number | string, b?: number | string) => void >...tuple : string | number >tuple : [number, string] prefix("a", ...ns) >prefix("a", ...ns) : void ->prefix : (s: string, a?: number | undefined, b?: number | undefined) => void +>prefix : (s: string, a?: number, b?: number) => void >"a" : "a" >...ns : number >ns : number[] rest("d", ...ns) >rest("d", ...ns) : void ->rest : (s: string, a?: number | undefined, b?: number | undefined, ...rest: number[]) => void +>rest : (s: string, a?: number, b?: number, ...rest: number[]) => void >"d" : "d" >...ns : number >ns : number[] @@ -104,65 +104,65 @@ thunk(...ns) // bad all(...mixed) >all(...mixed) : void ->all : (a?: number | undefined, b?: number | undefined) => void +>all : (a?: number, b?: number) => void >...mixed : string | number >mixed : (string | number)[] all(...tuple) >all(...tuple) : void ->all : (a?: number | undefined, b?: number | undefined) => void +>all : (a?: number, b?: number) => void >...tuple : string | number >tuple : [number, string] prefix("b", ...mixed) >prefix("b", ...mixed) : void ->prefix : (s: string, a?: number | undefined, b?: number | undefined) => void +>prefix : (s: string, a?: number, b?: number) => void >"b" : "b" >...mixed : string | number >mixed : (string | number)[] prefix("c", ...tuple) >prefix("c", ...tuple) : void ->prefix : (s: string, a?: number | undefined, b?: number | undefined) => void +>prefix : (s: string, a?: number, b?: number) => void >"c" : "c" >...tuple : string | number >tuple : [number, string] rest("e", ...mixed) >rest("e", ...mixed) : void ->rest : (s: string, a?: number | undefined, b?: number | undefined, ...rest: number[]) => void +>rest : (s: string, a?: number, b?: number, ...rest: number[]) => void >"e" : "e" >...mixed : string | number >mixed : (string | number)[] rest("f", ...tuple) >rest("f", ...tuple) : void ->rest : (s: string, a?: number | undefined, b?: number | undefined, ...rest: number[]) => void +>rest : (s: string, a?: number, b?: number, ...rest: number[]) => void >"f" : "f" >...tuple : string | number >tuple : [number, string] prefix(...ns) // required parameters are required >prefix(...ns) : void ->prefix : (s: string, a?: number | undefined, b?: number | undefined) => void +>prefix : (s: string, a?: number, b?: number) => void >...ns : number >ns : number[] prefix(...mixed) >prefix(...mixed) : void ->prefix : (s: string, a?: number | undefined, b?: number | undefined) => void +>prefix : (s: string, a?: number, b?: number) => void >...mixed : string | number >mixed : (string | number)[] prefix(...tuple) >prefix(...tuple) : void ->prefix : (s: string, a?: number | undefined, b?: number | undefined) => void +>prefix : (s: string, a?: number, b?: number) => void >...tuple : string | number >tuple : [number, string] prefix2("g", ...ns); >prefix2("g", ...ns) : void ->prefix2 : (s: string, n: number, a?: number | undefined, b?: number | undefined) => void +>prefix2 : (s: string, n: number, a?: number, b?: number) => void >"g" : "g" >...ns : number >ns : number[] diff --git a/testdata/baselines/reference/submodule/conformance/callWithSpread2.types.diff b/testdata/baselines/reference/submodule/conformance/callWithSpread2.types.diff deleted file mode 100644 index 5ceb3ad129b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/callWithSpread2.types.diff +++ /dev/null @@ -1,160 +0,0 @@ ---- old.callWithSpread2.types -+++ new.callWithSpread2.types -@@= skipped -1, +1 lines =@@ - - === callWithSpread2.ts === - declare function all(a?: number, b?: number): void; -->all : (a?: number, b?: number) => void -+>all : (a?: number | undefined, b?: number | undefined) => void - >a : number | undefined - >b : number | undefined - - declare function weird(a?: number | string, b?: number | string): void; -->weird : (a?: number | string, b?: number | string) => void -+>weird : (a?: string | number | undefined, b?: string | number | undefined) => void - >a : string | number | undefined - >b : string | number | undefined - - declare function prefix(s: string, a?: number, b?: number): void; -->prefix : (s: string, a?: number, b?: number) => void -+>prefix : (s: string, a?: number | undefined, b?: number | undefined) => void - >s : string - >a : number | undefined - >b : number | undefined - - declare function rest(s: string, a?: number, b?: number, ...rest: number[]): void; -->rest : (s: string, a?: number, b?: number, ...rest: number[]) => void -+>rest : (s: string, a?: number | undefined, b?: number | undefined, ...rest: number[]) => void - >s : string - >a : number | undefined - >b : number | undefined -@@= skipped -30, +30 lines =@@ - >thunk : () => string - - declare function prefix2(s: string, n: number, a?: number, b?: number): void; -->prefix2 : (s: string, n: number, a?: number, b?: number) => void -+>prefix2 : (s: string, n: number, a?: number | undefined, b?: number | undefined) => void - >s : string - >n : number - >a : number | undefined -@@= skipped -18, +18 lines =@@ - // good - all(...ns) - >all(...ns) : void -->all : (a?: number, b?: number) => void -+>all : (a?: number | undefined, b?: number | undefined) => void - >...ns : number - >ns : number[] - - weird(...ns) - >weird(...ns) : void -->weird : (a?: number | string, b?: number | string) => void -+>weird : (a?: string | number | undefined, b?: string | number | undefined) => void - >...ns : number - >ns : number[] - - weird(...mixed) - >weird(...mixed) : void -->weird : (a?: number | string, b?: number | string) => void -+>weird : (a?: string | number | undefined, b?: string | number | undefined) => void - >...mixed : string | number - >mixed : (string | number)[] - - weird(...tuple) - >weird(...tuple) : void -->weird : (a?: number | string, b?: number | string) => void -+>weird : (a?: string | number | undefined, b?: string | number | undefined) => void - >...tuple : string | number - >tuple : [number, string] - - prefix("a", ...ns) - >prefix("a", ...ns) : void -->prefix : (s: string, a?: number, b?: number) => void -+>prefix : (s: string, a?: number | undefined, b?: number | undefined) => void - >"a" : "a" - >...ns : number - >ns : number[] - - rest("d", ...ns) - >rest("d", ...ns) : void -->rest : (s: string, a?: number, b?: number, ...rest: number[]) => void -+>rest : (s: string, a?: number | undefined, b?: number | undefined, ...rest: number[]) => void - >"d" : "d" - >...ns : number - >ns : number[] -@@= skipped -54, +54 lines =@@ - // bad - all(...mixed) - >all(...mixed) : void -->all : (a?: number, b?: number) => void -+>all : (a?: number | undefined, b?: number | undefined) => void - >...mixed : string | number - >mixed : (string | number)[] - - all(...tuple) - >all(...tuple) : void -->all : (a?: number, b?: number) => void -+>all : (a?: number | undefined, b?: number | undefined) => void - >...tuple : string | number - >tuple : [number, string] - - prefix("b", ...mixed) - >prefix("b", ...mixed) : void -->prefix : (s: string, a?: number, b?: number) => void -+>prefix : (s: string, a?: number | undefined, b?: number | undefined) => void - >"b" : "b" - >...mixed : string | number - >mixed : (string | number)[] - - prefix("c", ...tuple) - >prefix("c", ...tuple) : void -->prefix : (s: string, a?: number, b?: number) => void -+>prefix : (s: string, a?: number | undefined, b?: number | undefined) => void - >"c" : "c" - >...tuple : string | number - >tuple : [number, string] - - rest("e", ...mixed) - >rest("e", ...mixed) : void -->rest : (s: string, a?: number, b?: number, ...rest: number[]) => void -+>rest : (s: string, a?: number | undefined, b?: number | undefined, ...rest: number[]) => void - >"e" : "e" - >...mixed : string | number - >mixed : (string | number)[] - - rest("f", ...tuple) - >rest("f", ...tuple) : void -->rest : (s: string, a?: number, b?: number, ...rest: number[]) => void -+>rest : (s: string, a?: number | undefined, b?: number | undefined, ...rest: number[]) => void - >"f" : "f" - >...tuple : string | number - >tuple : [number, string] - - prefix(...ns) // required parameters are required - >prefix(...ns) : void -->prefix : (s: string, a?: number, b?: number) => void -+>prefix : (s: string, a?: number | undefined, b?: number | undefined) => void - >...ns : number - >ns : number[] - - prefix(...mixed) - >prefix(...mixed) : void -->prefix : (s: string, a?: number, b?: number) => void -+>prefix : (s: string, a?: number | undefined, b?: number | undefined) => void - >...mixed : string | number - >mixed : (string | number)[] - - prefix(...tuple) - >prefix(...tuple) : void -->prefix : (s: string, a?: number, b?: number) => void -+>prefix : (s: string, a?: number | undefined, b?: number | undefined) => void - >...tuple : string | number - >tuple : [number, string] - - prefix2("g", ...ns); - >prefix2("g", ...ns) : void -->prefix2 : (s: string, n: number, a?: number, b?: number) => void -+>prefix2 : (s: string, n: number, a?: number | undefined, b?: number | undefined) => void - >"g" : "g" - >...ns : number - >ns : number[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/callWithSpread4.types b/testdata/baselines/reference/submodule/conformance/callWithSpread4.types index f443951c1a6..a05ca4a36e7 100644 --- a/testdata/baselines/reference/submodule/conformance/callWithSpread4.types +++ b/testdata/baselines/reference/submodule/conformance/callWithSpread4.types @@ -15,7 +15,7 @@ type RW = { a: number, b: number } >b : number declare const pli: { ->pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: readonly (R | RW | W)[]): Promise; (s1: R, s2: RW | W, ...streams: (RW | W)[]): Promise; } +>pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; >s1 : R @@ -54,7 +54,7 @@ declare var fun: (inp: any) => AsyncGenerator pli( >pli( reads, ...gun, tr, fun, ...gz, writes) : Promise ->pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: readonly (R | RW | W)[]): Promise; (s1: R, s2: RW | W, ...streams: (RW | W)[]): Promise; } +>pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } reads, >reads : R @@ -94,7 +94,7 @@ test(...anys) pli(...[reads, writes, writes] as const) >pli(...[reads, writes, writes] as const) : Promise ->pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: readonly (R | RW | W)[]): Promise; (s1: R, s2: RW | W, ...streams: (RW | W)[]): Promise; } +>pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } >...[reads, writes, writes] as const : R | W >[reads, writes, writes] as const : readonly [R, W, W] >[reads, writes, writes] : readonly [R, W, W] diff --git a/testdata/baselines/reference/submodule/conformance/callWithSpread4.types.diff b/testdata/baselines/reference/submodule/conformance/callWithSpread4.types.diff deleted file mode 100644 index 08aacf18884..00000000000 --- a/testdata/baselines/reference/submodule/conformance/callWithSpread4.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.callWithSpread4.types -+++ new.callWithSpread4.types -@@= skipped -14, +14 lines =@@ - >b : number - - declare const pli: { -->pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } -+>pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: readonly (R | RW | W)[]): Promise; (s1: R, s2: RW | W, ...streams: (RW | W)[]): Promise; } - - (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; - >s1 : R -@@= skipped -39, +39 lines =@@ - - pli( - >pli( reads, ...gun, tr, fun, ...gz, writes) : Promise -->pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } -+>pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: readonly (R | RW | W)[]): Promise; (s1: R, s2: RW | W, ...streams: (RW | W)[]): Promise; } - - reads, - >reads : R -@@= skipped -40, +40 lines =@@ - - pli(...[reads, writes, writes] as const) - >pli(...[reads, writes, writes] as const) : Promise -->pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } -+>pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: readonly (R | RW | W)[]): Promise; (s1: R, s2: RW | W, ...streams: (RW | W)[]): Promise; } - >...[reads, writes, writes] as const : R | W - >[reads, writes, writes] as const : readonly [R, W, W] - >[reads, writes, writes] : readonly [R, W, W] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/callbackCrossModule.types b/testdata/baselines/reference/submodule/conformance/callbackCrossModule.types index 532f25b1a87..a506333610f 100644 --- a/testdata/baselines/reference/submodule/conformance/callbackCrossModule.types +++ b/testdata/baselines/reference/submodule/conformance/callbackCrossModule.types @@ -26,7 +26,7 @@ function C() { === use.js === /** @param {import('./mod1').Con} k */ function f(k) { ->f : (k: import("./mod1").Con) => any +>f : (k: import('./mod1').Con) => any >k : import("./mod1").Con if (1 === 2 - 1) { diff --git a/testdata/baselines/reference/submodule/conformance/callbackCrossModule.types.diff b/testdata/baselines/reference/submodule/conformance/callbackCrossModule.types.diff index 6190297bf1f..82fad34b8bc 100644 --- a/testdata/baselines/reference/submodule/conformance/callbackCrossModule.types.diff +++ b/testdata/baselines/reference/submodule/conformance/callbackCrossModule.types.diff @@ -26,4 +26,13 @@ +>this : any >p : any >1 : 1 - } \ No newline at end of file + } +@@= skipped -20, +20 lines =@@ + === use.js === + /** @param {import('./mod1').Con} k */ + function f(k) { +->f : (k: import("./mod1").Con) => any ++>f : (k: import('./mod1').Con) => any + >k : import("./mod1").Con + + if (1 === 2 - 1) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocOptionalParamOrder.types b/testdata/baselines/reference/submodule/conformance/checkJsdocOptionalParamOrder.types index ecc2718779f..415b9d6aa06 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocOptionalParamOrder.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocOptionalParamOrder.types @@ -8,7 +8,7 @@ * @param {number} c */ function foo(a, b, c) {} ->foo : (a: number, b?: number | undefined, c: number) => void +>foo : (a: number, b?: number, c: number) => void >a : number >b : number | undefined >c : number diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocOptionalParamOrder.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocOptionalParamOrder.types.diff deleted file mode 100644 index b19ec98b293..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocOptionalParamOrder.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.checkJsdocOptionalParamOrder.types -+++ new.checkJsdocOptionalParamOrder.types -@@= skipped -7, +7 lines =@@ - * @param {number} c - */ - function foo(a, b, c) {} -->foo : (a: number, b?: number, c: number) => void -+>foo : (a: number, b?: number | undefined, c: number) => void - >a : number - >b : number | undefined - >c : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types b/testdata/baselines/reference/submodule/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types index e149c296405..f58740120e0 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types @@ -7,9 +7,9 @@ * @param {string} [s] */ var x = function foo(n, s) {} ->x : (n?: number, s?: string) => void ->function foo(n, s) {} : (n?: number, s?: string) => void ->foo : (n?: number, s?: string) => void +>x : (n?: number | undefined, s?: string) => void +>function foo(n, s) {} : (n?: number | undefined, s?: string) => void +>foo : (n?: number | undefined, s?: string) => void >n : number >s : string diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocParamTag1.types b/testdata/baselines/reference/submodule/conformance/checkJsdocParamTag1.types index 291e416a728..884967a5368 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocParamTag1.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocParamTag1.types @@ -7,22 +7,22 @@ * @param {string} [s] */ function foo(n, s) {} ->foo : (n?: number | undefined, s?: string | undefined) => void +>foo : (n?: number | undefined, s?: string) => void >n : number | undefined >s : string | undefined foo(); >foo() : void ->foo : (n?: number | undefined, s?: string | undefined) => void +>foo : (n?: number | undefined, s?: string) => void foo(1); >foo(1) : void ->foo : (n?: number | undefined, s?: string | undefined) => void +>foo : (n?: number | undefined, s?: string) => void >1 : 1 foo(1, "hi"); >foo(1, "hi") : void ->foo : (n?: number | undefined, s?: string | undefined) => void +>foo : (n?: number | undefined, s?: string) => void >1 : 1 >"hi" : "hi" diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocParamTag1.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocParamTag1.types.diff deleted file mode 100644 index 36d4c6c7dfd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocParamTag1.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.checkJsdocParamTag1.types -+++ new.checkJsdocParamTag1.types -@@= skipped -6, +6 lines =@@ - * @param {string} [s] - */ - function foo(n, s) {} -->foo : (n?: number | undefined, s?: string) => void -+>foo : (n?: number | undefined, s?: string | undefined) => void - >n : number | undefined - >s : string | undefined - - foo(); - >foo() : void -->foo : (n?: number | undefined, s?: string) => void -+>foo : (n?: number | undefined, s?: string | undefined) => void - - foo(1); - >foo(1) : void -->foo : (n?: number | undefined, s?: string) => void -+>foo : (n?: number | undefined, s?: string | undefined) => void - >1 : 1 - - foo(1, "hi"); - >foo(1, "hi") : void -->foo : (n?: number | undefined, s?: string) => void -+>foo : (n?: number | undefined, s?: string | undefined) => void - >1 : 1 - >"hi" : "hi" diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag1.types b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag1.types index e60b1571b72..b66080b5f57 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag1.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag1.types @@ -56,9 +56,9 @@ const t5 = /** @satisfies {T3} */((m) => m.substring(0)); >(m) => m.substring(0) : (m: string) => string >m : string >m.substring(0) : string ->m.substring : (start: number, end?: number | undefined) => string +>m.substring : (start: number, end?: number) => string >m : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >0 : 0 const t6 = /** @satisfies {[number, number]} */ ([1, 2]); diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag1.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag1.types.diff index 54b07164a4a..b63a4f8b533 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag1.types.diff @@ -8,16 +8,4 @@ +>({ a: "a" }) : { a: "a"; } >{ a: "a" } : { a: "a"; } >a : "a" - >"a" : "a" -@@= skipped -12, +12 lines =@@ - >(m) => m.substring(0) : (m: string) => string - >m : string - >m.substring(0) : string -->m.substring : (start: number, end?: number) => string -+>m.substring : (start: number, end?: number | undefined) => string - >m : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >0 : 0 - - const t6 = /** @satisfies {[number, number]} */ ([1, 2]); \ No newline at end of file + >"a" : "a" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag10.types b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag10.types index cee671dd4c7..19bb42f7616 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag10.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag10.types @@ -26,20 +26,20 @@ const p = /** @satisfies {Partial>} */ ({ let a = p.a.toFixed(); >a : string >p.a.toFixed() : string ->p.a.toFixed : (fractionDigits?: number | undefined) => string +>p.a.toFixed : (fractionDigits?: number) => string >p.a : number >p : { a: number; b: string; x: number; } >a : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string let b = p.b.substring(1); >b : string >p.b.substring(1) : string ->p.b.substring : (start: number, end?: number | undefined) => string +>p.b.substring : (start: number, end?: number) => string >p.b : string >p : { a: number; b: string; x: number; } >b : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >1 : 1 // Should error even though 'd' is in 'Keys' diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag10.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag10.types.diff deleted file mode 100644 index bb8df92aa8f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag10.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.checkJsdocSatisfiesTag10.types -+++ new.checkJsdocSatisfiesTag10.types -@@= skipped -25, +25 lines =@@ - let a = p.a.toFixed(); - >a : string - >p.a.toFixed() : string -->p.a.toFixed : (fractionDigits?: number) => string -+>p.a.toFixed : (fractionDigits?: number | undefined) => string - >p.a : number - >p : { a: number; b: string; x: number; } - >a : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - let b = p.b.substring(1); - >b : string - >p.b.substring(1) : string -->p.b.substring : (start: number, end?: number) => string -+>p.b.substring : (start: number, end?: number | undefined) => string - >p.b : string - >p : { a: number; b: string; x: number; } - >b : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >1 : 1 - - // Should error even though 'd' is in 'Keys' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag6.types b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag6.types index c0efbe22104..27731e2ff5b 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag6.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag6.types @@ -22,11 +22,11 @@ console.log(a.x.toFixed()); >console : Console >log : (...data: any[]) => void >a.x.toFixed() : string ->a.x.toFixed : (fractionDigits?: number | undefined) => string +>a.x.toFixed : (fractionDigits?: number) => string >a.x : number >a : { x: number; } >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string // Should error let p = a.y; diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag6.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag6.types.diff deleted file mode 100644 index 2086f2e6213..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag6.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.checkJsdocSatisfiesTag6.types -+++ new.checkJsdocSatisfiesTag6.types -@@= skipped -21, +21 lines =@@ - >console : Console - >log : (...data: any[]) => void - >a.x.toFixed() : string -->a.x.toFixed : (fractionDigits?: number) => string -+>a.x.toFixed : (fractionDigits?: number | undefined) => string - >a.x : number - >a : { x: number; } - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - // Should error - let p = a.y; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag7.types b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag7.types index efdeeeed63c..e5a245e579b 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag7.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag7.types @@ -26,20 +26,20 @@ const p = /** @satisfies {Record} */ ({ let a = p.a.toFixed(); >a : string >p.a.toFixed() : string ->p.a.toFixed : (fractionDigits?: number | undefined) => string +>p.a.toFixed : (fractionDigits?: number) => string >p.a : number >p : { a: number; b: string; x: number; } >a : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string let b = p.b.substring(1); >b : string >p.b.substring(1) : string ->p.b.substring : (start: number, end?: number | undefined) => string +>p.b.substring : (start: number, end?: number) => string >p.b : string >p : { a: number; b: string; x: number; } >b : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >1 : 1 // Should error even though 'd' is in 'Keys' diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag7.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag7.types.diff deleted file mode 100644 index 653b7007bb9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocSatisfiesTag7.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.checkJsdocSatisfiesTag7.types -+++ new.checkJsdocSatisfiesTag7.types -@@= skipped -25, +25 lines =@@ - let a = p.a.toFixed(); - >a : string - >p.a.toFixed() : string -->p.a.toFixed : (fractionDigits?: number) => string -+>p.a.toFixed : (fractionDigits?: number | undefined) => string - >p.a : number - >p : { a: number; b: string; x: number; } - >a : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - let b = p.b.substring(1); - >b : string - >p.b.substring(1) : string -->p.b.substring : (start: number, end?: number) => string -+>p.b.substring : (start: number, end?: number | undefined) => string - >p.b : string - >p : { a: number; b: string; x: number; } - >b : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >1 : 1 - - // Should error even though 'd' is in 'Keys' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag5.types b/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag5.types index d1b3e483723..3f58a30bb7e 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag5.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag5.types @@ -46,7 +46,7 @@ var k = function (x) { return x } /** @typedef {(x: 'hi' | 'bye') => 0 | 1 | 2} Argle */ /** @type {Argle} */ function blargle(s) { ->blargle : (x: "bye" | "hi") => 0 | 1 | 2 +>blargle : (x: 'hi' | 'bye') => 0 | 1 | 2 >s : "bye" | "hi" return 0; @@ -57,7 +57,7 @@ function blargle(s) { var zeroonetwo = blargle('hi') >zeroonetwo : 0 | 1 | 2 >blargle('hi') : 0 | 1 | 2 ->blargle : (x: "bye" | "hi") => 0 | 1 | 2 +>blargle : (x: 'hi' | 'bye') => 0 | 1 | 2 >'hi' : "hi" /** @typedef {{(s: string): 0 | 1; (b: boolean): 2 | 3 }} Gioconda */ diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag5.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag5.types.diff index 5657510b06b..da08325a102 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag5.types.diff +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag5.types.diff @@ -39,7 +39,7 @@ /** @type {Argle} */ function blargle(s) { ->blargle : (x: "hi" | "bye") => 0 | 1 | 2 -+>blargle : (x: "bye" | "hi") => 0 | 1 | 2 ++>blargle : (x: 'hi' | 'bye') => 0 | 1 | 2 >s : "bye" | "hi" return 0; @@ -48,7 +48,7 @@ >zeroonetwo : 0 | 1 | 2 >blargle('hi') : 0 | 1 | 2 ->blargle : (x: "hi" | "bye") => 0 | 1 | 2 -+>blargle : (x: "bye" | "hi") => 0 | 1 | 2 ++>blargle : (x: 'hi' | 'bye') => 0 | 1 | 2 >'hi' : "hi" /** @typedef {{(s: string): 0 | 1; (b: boolean): 2 | 3 }} Gioconda */ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag8.types b/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag8.types index 9a38c237808..3b1b93eba60 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag8.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag8.types @@ -7,7 +7,7 @@ * @param {Number|BigInt} n */ function isLessThanFive(n) { ->isLessThanFive : (n: any) => boolean +>isLessThanFive : (n: Number | BigInt) => boolean >n : any return n < 5; diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag8.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag8.types.diff index 38a74d9fa0a..b6a94ea9ed1 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag8.types.diff +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocTypeTag8.types.diff @@ -6,7 +6,7 @@ function isLessThanFive(n) { ->isLessThanFive : (n: number | bigint) => boolean ->n : number | bigint -+>isLessThanFive : (n: any) => boolean ++>isLessThanFive : (n: Number | BigInt) => boolean +>n : any return n < 5; diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty12.types b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty12.types index d68a312427e..0280a828aca 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty12.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty12.types @@ -35,18 +35,18 @@ class Button extends React.Component { return > : JSX.Element >InnerButton : typeof InnerButton ->this.props : ButtonProp & { children?: React.ReactNode | undefined; } +>this.props : ButtonProp & { children?: React.ReactNode; } >this : this ->props : ButtonProp & { children?: React.ReactNode | undefined; } +>props : ButtonProp & { children?: React.ReactNode; } } else { return ( >(
Hello World
) : JSX.Element >
Hello World
: JSX.Element >InnerButton : typeof InnerButton ->this.props : ButtonProp & { children?: React.ReactNode | undefined; } +>this.props : ButtonProp & { children?: React.ReactNode; } >this : this ->props : ButtonProp & { children?: React.ReactNode | undefined; } +>props : ButtonProp & { children?: React.ReactNode; }
Hello World
>
Hello World
: JSX.Element diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty12.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty12.types.diff deleted file mode 100644 index c715415ae85..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty12.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.checkJsxChildrenProperty12.types -+++ new.checkJsxChildrenProperty12.types -@@= skipped -34, +34 lines =@@ - return - > : JSX.Element - >InnerButton : typeof InnerButton -->this.props : ButtonProp & { children?: React.ReactNode; } -+>this.props : ButtonProp & { children?: React.ReactNode | undefined; } - >this : this -->props : ButtonProp & { children?: React.ReactNode; } -+>props : ButtonProp & { children?: React.ReactNode | undefined; } - } - else { - return ( - >(
Hello World
) : JSX.Element - >
Hello World
: JSX.Element - >InnerButton : typeof InnerButton -->this.props : ButtonProp & { children?: React.ReactNode; } -+>this.props : ButtonProp & { children?: React.ReactNode | undefined; } - >this : this -->props : ButtonProp & { children?: React.ReactNode; } -+>props : ButtonProp & { children?: React.ReactNode | undefined; } - -
Hello World
- >
Hello World
: JSX.Element \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty13.types b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty13.types index 1fcf1aa60db..7149f0af2ce 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty13.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty13.types @@ -31,9 +31,9 @@ class Button extends React.Component { >(
Hello World
) : JSX.Element >
Hello World
: JSX.Element >InnerButton : typeof InnerButton ->this.props : ButtonProp & { children?: React.ReactNode | undefined; } +>this.props : ButtonProp & { children?: React.ReactNode; } >this : this ->props : ButtonProp & { children?: React.ReactNode | undefined; } +>props : ButtonProp & { children?: React.ReactNode; } >children : string
Hello World
diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty13.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty13.types.diff deleted file mode 100644 index 80d7bc55c16..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty13.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.checkJsxChildrenProperty13.types -+++ new.checkJsxChildrenProperty13.types -@@= skipped -30, +30 lines =@@ - >(
Hello World
) : JSX.Element - >
Hello World
: JSX.Element - >InnerButton : typeof InnerButton -->this.props : ButtonProp & { children?: React.ReactNode; } -+>this.props : ButtonProp & { children?: React.ReactNode | undefined; } - >this : this -->props : ButtonProp & { children?: React.ReactNode; } -+>props : ButtonProp & { children?: React.ReactNode | undefined; } - >children : string - -
Hello World
\ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty3.types b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty3.types index 872e457be79..c68b473e8a9 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty3.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty3.types @@ -36,9 +36,9 @@ class FetchUser extends React.Component { ? this.props.children(this.state.result) >this.props.children(this.state.result) : JSX.Element >this.props.children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) ->this.props : IFetchUserProps & { children?: React.ReactNode | undefined; } +>this.props : IFetchUserProps & { children?: React.ReactNode; } >this : this ->props : IFetchUserProps & { children?: React.ReactNode | undefined; } +>props : IFetchUserProps & { children?: React.ReactNode; } >children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) >this.state.result : any >this.state : any diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty3.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty3.types.diff deleted file mode 100644 index 9b334a27fac..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty3.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.checkJsxChildrenProperty3.types -+++ new.checkJsxChildrenProperty3.types -@@= skipped -35, +35 lines =@@ - ? this.props.children(this.state.result) - >this.props.children(this.state.result) : JSX.Element - >this.props.children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) -->this.props : IFetchUserProps & { children?: React.ReactNode; } -+>this.props : IFetchUserProps & { children?: React.ReactNode | undefined; } - >this : this -->props : IFetchUserProps & { children?: React.ReactNode; } -+>props : IFetchUserProps & { children?: React.ReactNode | undefined; } - >children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) - >this.state.result : any - >this.state : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty4.types b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty4.types index fce1a0291b5..6797fb3b199 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty4.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty4.types @@ -36,9 +36,9 @@ class FetchUser extends React.Component { ? this.props.children(this.state.result) >this.props.children(this.state.result) : JSX.Element >this.props.children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) ->this.props : IFetchUserProps & { children?: React.ReactNode | undefined; } +>this.props : IFetchUserProps & { children?: React.ReactNode; } >this : this ->props : IFetchUserProps & { children?: React.ReactNode | undefined; } +>props : IFetchUserProps & { children?: React.ReactNode; } >children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) >this.state.result : any >this.state : any diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty4.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty4.types.diff deleted file mode 100644 index dbc30cfc2cb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsxChildrenProperty4.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.checkJsxChildrenProperty4.types -+++ new.checkJsxChildrenProperty4.types -@@= skipped -35, +35 lines =@@ - ? this.props.children(this.state.result) - >this.props.children(this.state.result) : JSX.Element - >this.props.children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) -->this.props : IFetchUserProps & { children?: React.ReactNode; } -+>this.props : IFetchUserProps & { children?: React.ReactNode | undefined; } - >this : this -->props : IFetchUserProps & { children?: React.ReactNode; } -+>props : IFetchUserProps & { children?: React.ReactNode | undefined; } - >children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) - >this.state.result : any - >this.state : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxGenericTagHasCorrectInferences.errors.txt b/testdata/baselines/reference/submodule/conformance/checkJsxGenericTagHasCorrectInferences.errors.txt index ca35bfde322..7b7808b7d22 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsxGenericTagHasCorrectInferences.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/checkJsxGenericTagHasCorrectInferences.errors.txt @@ -22,4 +22,4 @@ file.tsx(14,54): error TS2322: Type '(a: { x: string; }) => string' is not assig !!! error TS2322: Type '(a: { x: string; }) => string' is not assignable to type '((a: { x: string; }) => string) & ((cur: { x: string; }) => { x: string; })'. !!! error TS2322: Type '(a: { x: string; }) => string' is not assignable to type '(cur: { x: string; }) => { x: string; }'. !!! error TS2322: Type 'string' is not assignable to type '{ x: string; }'. -!!! related TS6500 file.tsx:14:54: The expected type comes from property 'nextValues' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes string; }, { x: string; }>> & { initialValues: { x: string; }; nextValues: (a: { x: string; }) => string; } & BaseProps<{ x: string; }> & { children?: ReactNode | undefined; }' \ No newline at end of file +!!! related TS6500 file.tsx:14:54: The expected type comes from property 'nextValues' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes string; }, { x: string; }>> & { initialValues: { x: string; }; nextValues: (a: { x: string; }) => string; } & BaseProps<{ x: string; }> & { children?: ReactNode; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxGenericTagHasCorrectInferences.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/checkJsxGenericTagHasCorrectInferences.errors.txt.diff new file mode 100644 index 00000000000..491989ad049 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/checkJsxGenericTagHasCorrectInferences.errors.txt.diff @@ -0,0 +1,8 @@ +--- old.checkJsxGenericTagHasCorrectInferences.errors.txt ++++ new.checkJsxGenericTagHasCorrectInferences.errors.txt +@@= skipped -21, +21 lines =@@ + !!! error TS2322: Type '(a: { x: string; }) => string' is not assignable to type '((a: { x: string; }) => string) & ((cur: { x: string; }) => { x: string; })'. + !!! error TS2322: Type '(a: { x: string; }) => string' is not assignable to type '(cur: { x: string; }) => { x: string; }'. + !!! error TS2322: Type 'string' is not assignable to type '{ x: string; }'. +-!!! related TS6500 file.tsx:14:54: The expected type comes from property 'nextValues' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes string; }, { x: string; }>> & { initialValues: { x: string; }; nextValues: (a: { x: string; }) => string; } & BaseProps<{ x: string; }> & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:14:54: The expected type comes from property 'nextValues' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes string; }, { x: string; }>> & { initialValues: { x: string; }; nextValues: (a: { x: string; }) => string; } & BaseProps<{ x: string; }> & { children?: ReactNode; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxIntersectionElementPropsType.types b/testdata/baselines/reference/submodule/conformance/checkJsxIntersectionElementPropsType.types index 9741bdeccf6..fe8383a9acf 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsxIntersectionElementPropsType.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsxIntersectionElementPropsType.types @@ -18,7 +18,7 @@ declare class Component

{ class C extends Component<{ x?: boolean; } & T> {} >C : C ->Component : Component<{ x?: boolean | undefined; } & T> +>Component : Component<{ x?: boolean; } & T> >x : boolean | undefined const y = new C({foobar: "example"}); diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxIntersectionElementPropsType.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsxIntersectionElementPropsType.types.diff deleted file mode 100644 index bc0ba37138e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsxIntersectionElementPropsType.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.checkJsxIntersectionElementPropsType.types -+++ new.checkJsxIntersectionElementPropsType.types -@@= skipped -17, +17 lines =@@ - - class C extends Component<{ x?: boolean; } & T> {} - >C : C -->Component : Component<{ x?: boolean; } & T> -+>Component : Component<{ x?: boolean | undefined; } & T> - >x : boolean | undefined - - const y = new C({foobar: "example"}); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxSubtleSkipContextSensitiveBug.types b/testdata/baselines/reference/submodule/conformance/checkJsxSubtleSkipContextSensitiveBug.types index f29568e6694..2efaa16f859 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsxSubtleSkipContextSensitiveBug.types +++ b/testdata/baselines/reference/submodule/conformance/checkJsxSubtleSkipContextSensitiveBug.types @@ -29,7 +29,7 @@ class AsyncLoader extends React.Component> { } async function load(): Promise<{ success: true } | ErrorResult> { ->load : () => Promise +>load : () => Promise<{ success: true; } | ErrorResult> >success : true >true : true @@ -45,8 +45,8 @@ const loader = AsyncLoader : typeof AsyncLoader prop1={load} ->prop1 : () => Promise ->load : () => Promise +>prop1 : () => Promise<{ success: true; } | ErrorResult> +>load : () => Promise<{ success: true; } | ErrorResult> prop2={result => result} >prop2 : (result: { success: true; }) => { success: true; } diff --git a/testdata/baselines/reference/submodule/conformance/checkJsxSubtleSkipContextSensitiveBug.types.diff b/testdata/baselines/reference/submodule/conformance/checkJsxSubtleSkipContextSensitiveBug.types.diff deleted file mode 100644 index a7ae429f140..00000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsxSubtleSkipContextSensitiveBug.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.checkJsxSubtleSkipContextSensitiveBug.types -+++ new.checkJsxSubtleSkipContextSensitiveBug.types -@@= skipped -28, +28 lines =@@ - } - - async function load(): Promise<{ success: true } | ErrorResult> { -->load : () => Promise<{ success: true; } | ErrorResult> -+>load : () => Promise - >success : true - >true : true - -@@= skipped -16, +16 lines =@@ - >AsyncLoader : typeof AsyncLoader - - prop1={load} -->prop1 : () => Promise<{ success: true; } | ErrorResult> -->load : () => Promise<{ success: true; } | ErrorResult> -+>prop1 : () => Promise -+>load : () => Promise - - prop2={result => result} - >prop2 : (result: { success: true; }) => { success: true; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.types b/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.types index 09c0fb6a59b..24f201a51bd 100644 --- a/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.types +++ b/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.types @@ -232,13 +232,13 @@ const expected = /** @type {{name: string, readonly middleInit: string, readonly * @param {typeof needsExemplar} b */ function match(a, b) {} ->match : (a: () => { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }, b: (_?: { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }) => undefined) => void +>match : (a: typeof returnExemplar, b: typeof needsExemplar) => void >a : () => { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; } >b : (_?: { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }) => undefined match(() => expected, (x = expected) => void 0); >match(() => expected, (x = expected) => void 0) : void ->match : (a: () => { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }, b: (_?: { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }) => undefined) => void +>match : (a: typeof returnExemplar, b: typeof needsExemplar) => void >() => expected : () => { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; } >expected : { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; } >(x = expected) => void 0 : (x?: { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; } | undefined) => undefined diff --git a/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.types.diff b/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.types.diff index e5d02428c73..630241ba967 100644 --- a/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.types.diff +++ b/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.types.diff @@ -231,21 +231,18 @@ >void 0 : undefined >0 : 0 -@@= skipped -27, +27 lines =@@ - * @param {typeof needsExemplar} b +@@= skipped -28, +28 lines =@@ */ function match(a, b) {} -->match : (a: typeof returnExemplar, b: typeof needsExemplar) => void + >match : (a: typeof returnExemplar, b: typeof needsExemplar) => void ->a : () => typeof x ->b : (_?: typeof x) => undefined -+>match : (a: () => { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }, b: (_?: { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }) => undefined) => void +>a : () => { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; } +>b : (_?: { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }) => undefined match(() => expected, (x = expected) => void 0); >match(() => expected, (x = expected) => void 0) : void -->match : (a: typeof returnExemplar, b: typeof needsExemplar) => void -+>match : (a: () => { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }, b: (_?: { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; }) => undefined) => void + >match : (a: typeof returnExemplar, b: typeof needsExemplar) => void >() => expected : () => { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; } >expected : { name: string; readonly middleInit: string; readonly lastName: string; zip: number; readonly houseNumber: number; zipStr: string; } ->(x = expected) => void 0 : (x?: typeof x | undefined) => undefined diff --git a/testdata/baselines/reference/submodule/conformance/classCanExtendConstructorFunction.types b/testdata/baselines/reference/submodule/conformance/classCanExtendConstructorFunction.types index ec3a14d944a..989c51eb4b1 100644 --- a/testdata/baselines/reference/submodule/conformance/classCanExtendConstructorFunction.types +++ b/testdata/baselines/reference/submodule/conformance/classCanExtendConstructorFunction.types @@ -104,7 +104,7 @@ class Sql extends Wagon { * This is not assignable, so should have a type error */ load(files, format) { ->load : (files: string[], format: "csv" | "json" | "xmlolololol") => void +>load : (files: Array, format: "csv" | "json" | "xmlolololol") => void >files : string[] >format : "csv" | "json" | "xmlolololol" @@ -202,7 +202,7 @@ class Conestoga extends Wagon { } // should error since others is not optional static circle(others: (typeof Wagon)[]) { ->circle : (others: { (numberOxen: number): void; circle: (wagons?: Wagon[] | undefined) => number; }[]) => number +>circle : (others: (typeof Wagon)[]) => number >others : { (numberOxen: number): void; circle: (wagons?: Wagon[] | undefined) => number; }[] >Wagon : { (numberOxen: number): void; circle: (wagons?: Wagon[] | undefined) => number; } diff --git a/testdata/baselines/reference/submodule/conformance/classCanExtendConstructorFunction.types.diff b/testdata/baselines/reference/submodule/conformance/classCanExtendConstructorFunction.types.diff index 3df33cea67a..45e835badf5 100644 --- a/testdata/baselines/reference/submodule/conformance/classCanExtendConstructorFunction.types.diff +++ b/testdata/baselines/reference/submodule/conformance/classCanExtendConstructorFunction.types.diff @@ -84,16 +84,7 @@ this.foonly = 12 >this.foonly = 12 : 12 -@@= skipped -38, +38 lines =@@ - * This is not assignable, so should have a type error - */ - load(files, format) { -->load : (files: Array, format: "csv" | "json" | "xmlolololol") => void -+>load : (files: string[], format: "csv" | "json" | "xmlolololol") => void - >files : string[] - >format : "csv" | "json" | "xmlolololol" - -@@= skipped -16, +16 lines =@@ +@@= skipped -54, +54 lines =@@ } else { super.speed() // run faster @@ -150,10 +141,9 @@ } // should error since others is not optional static circle(others: (typeof Wagon)[]) { -->circle : (others: (typeof Wagon)[]) => number + >circle : (others: (typeof Wagon)[]) => number ->others : (typeof Wagon)[] ->Wagon : typeof Wagon -+>circle : (others: { (numberOxen: number): void; circle: (wagons?: Wagon[] | undefined) => number; }[]) => number +>others : { (numberOxen: number): void; circle: (wagons?: Wagon[] | undefined) => number; }[] +>Wagon : { (numberOxen: number): void; circle: (wagons?: Wagon[] | undefined) => number; } diff --git a/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.errors.txt b/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.errors.txt index c7f284f669d..225325a73f1 100644 --- a/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.errors.txt @@ -1,7 +1,7 @@ classIsSubtypeOfBaseType.ts(2,5): error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor. classIsSubtypeOfBaseType.ts(6,5): error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor. classIsSubtypeOfBaseType.ts(12,5): error TS2416: Property 'foo' in type 'Derived2' is not assignable to the same property in base type 'Base<{ bar: string; }>'. - Type '{ bar?: string | undefined; }' is not assignable to type '{ bar: string; }'. + Type '{ bar?: string; }' is not assignable to type '{ bar: string; }'. Types of property 'bar' are incompatible. Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. @@ -27,7 +27,7 @@ classIsSubtypeOfBaseType.ts(12,5): error TS2564: Property 'foo' has no initializ foo: { ~~~ !!! error TS2416: Property 'foo' in type 'Derived2' is not assignable to the same property in base type 'Base<{ bar: string; }>'. -!!! error TS2416: Type '{ bar?: string | undefined; }' is not assignable to type '{ bar: string; }'. +!!! error TS2416: Type '{ bar?: string; }' is not assignable to type '{ bar: string; }'. !!! error TS2416: Types of property 'bar' are incompatible. !!! error TS2416: Type 'string | undefined' is not assignable to type 'string'. !!! error TS2416: Type 'undefined' is not assignable to type 'string'. diff --git a/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.errors.txt.diff new file mode 100644 index 00000000000..ad16ae06ff2 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.errors.txt.diff @@ -0,0 +1,20 @@ +--- old.classIsSubtypeOfBaseType.errors.txt ++++ new.classIsSubtypeOfBaseType.errors.txt +@@= skipped -0, +0 lines =@@ + classIsSubtypeOfBaseType.ts(2,5): error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor. + classIsSubtypeOfBaseType.ts(6,5): error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor. + classIsSubtypeOfBaseType.ts(12,5): error TS2416: Property 'foo' in type 'Derived2' is not assignable to the same property in base type 'Base<{ bar: string; }>'. +- Type '{ bar?: string | undefined; }' is not assignable to type '{ bar: string; }'. ++ Type '{ bar?: string; }' is not assignable to type '{ bar: string; }'. + Types of property 'bar' are incompatible. + Type 'string | undefined' is not assignable to type 'string'. + Type 'undefined' is not assignable to type 'string'. +@@= skipped -26, +26 lines =@@ + foo: { + ~~~ + !!! error TS2416: Property 'foo' in type 'Derived2' is not assignable to the same property in base type 'Base<{ bar: string; }>'. +-!!! error TS2416: Type '{ bar?: string | undefined; }' is not assignable to type '{ bar: string; }'. ++!!! error TS2416: Type '{ bar?: string; }' is not assignable to type '{ bar: string; }'. + !!! error TS2416: Types of property 'bar' are incompatible. + !!! error TS2416: Type 'string | undefined' is not assignable to type 'string'. + !!! error TS2416: Type 'undefined' is not assignable to type 'string'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.types b/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.types index 7d50b66bc73..abb42a1b55e 100644 --- a/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.types +++ b/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.types @@ -28,7 +28,7 @@ class Derived2 extends Base<{ bar: string; }> { >bar : string foo: { ->foo : { bar?: string | undefined; } +>foo : { bar?: string; } bar?: string; // error >bar : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.types.diff b/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.types.diff deleted file mode 100644 index e14942c3115..00000000000 --- a/testdata/baselines/reference/submodule/conformance/classIsSubtypeOfBaseType.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.classIsSubtypeOfBaseType.types -+++ new.classIsSubtypeOfBaseType.types -@@= skipped -27, +27 lines =@@ - >bar : string - - foo: { -->foo : { bar?: string; } -+>foo : { bar?: string | undefined; } - - bar?: string; // error - >bar : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/commaOperatorWithSecondOperandStringType.types b/testdata/baselines/reference/submodule/conformance/commaOperatorWithSecondOperandStringType.types index 000e47c23dc..e780ca0ec4d 100644 --- a/testdata/baselines/reference/submodule/conformance/commaOperatorWithSecondOperandStringType.types +++ b/testdata/baselines/reference/submodule/conformance/commaOperatorWithSecondOperandStringType.types @@ -112,9 +112,9 @@ BOOLEAN == undefined, ""; >"a" : "a" >"b" : "b" >NUMBER.toString() : string ->NUMBER.toString : (radix?: number | undefined) => string +>NUMBER.toString : (radix?: number) => string >NUMBER : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string OBJECT = new Object, STRING + "string"; >OBJECT = new Object, STRING + "string" : string @@ -166,9 +166,9 @@ var resultIsString10 = (["a", "b"], NUMBER.toString()); >"a" : "a" >"b" : "b" >NUMBER.toString() : string ->NUMBER.toString : (radix?: number | undefined) => string +>NUMBER.toString : (radix?: number) => string >NUMBER : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string var resultIsString11 = (new Object, STRING + "string"); >resultIsString11 : string diff --git a/testdata/baselines/reference/submodule/conformance/commaOperatorWithSecondOperandStringType.types.diff b/testdata/baselines/reference/submodule/conformance/commaOperatorWithSecondOperandStringType.types.diff deleted file mode 100644 index 1389b548dd8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/commaOperatorWithSecondOperandStringType.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.commaOperatorWithSecondOperandStringType.types -+++ new.commaOperatorWithSecondOperandStringType.types -@@= skipped -111, +111 lines =@@ - >"a" : "a" - >"b" : "b" - >NUMBER.toString() : string -->NUMBER.toString : (radix?: number) => string -+>NUMBER.toString : (radix?: number | undefined) => string - >NUMBER : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - OBJECT = new Object, STRING + "string"; - >OBJECT = new Object, STRING + "string" : string -@@= skipped -54, +54 lines =@@ - >"a" : "a" - >"b" : "b" - >NUMBER.toString() : string -->NUMBER.toString : (radix?: number) => string -+>NUMBER.toString : (radix?: number | undefined) => string - >NUMBER : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - var resultIsString11 = (new Object, STRING + "string"); - >resultIsString11 : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.errors.txt b/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.errors.txt index 55f892691ce..41dd7fe1c96 100644 --- a/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.errors.txt @@ -1,10 +1,10 @@ -commonTypeIntersection.ts(2,5): error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & { a: boolean; }' is not assignable to type '{ __typename?: "TypeOne" | undefined; } & { a: boolean; }'. - Type '{ __typename?: "TypeTwo" | undefined; } & { a: boolean; }' is not assignable to type '{ __typename?: "TypeOne" | undefined; }'. +commonTypeIntersection.ts(2,5): error TS2322: Type '{ __typename?: 'TypeTwo'; } & { a: boolean; }' is not assignable to type '{ __typename?: 'TypeOne'; } & { a: boolean; }'. + Type '{ __typename?: 'TypeTwo'; } & { a: boolean; }' is not assignable to type '{ __typename?: 'TypeOne'; }'. Types of property '__typename' are incompatible. Type '"TypeTwo" | undefined' is not assignable to type '"TypeOne" | undefined'. Type '"TypeTwo"' is not assignable to type '"TypeOne"'. -commonTypeIntersection.ts(4,5): error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & string' is not assignable to type '{ __typename?: "TypeOne" | undefined; } & string'. - Type '{ __typename?: "TypeTwo" | undefined; } & string' is not assignable to type '{ __typename?: "TypeOne" | undefined; }'. +commonTypeIntersection.ts(4,5): error TS2322: Type '{ __typename?: 'TypeTwo'; } & string' is not assignable to type '{ __typename?: 'TypeOne'; } & string'. + Type '{ __typename?: 'TypeTwo'; } & string' is not assignable to type '{ __typename?: 'TypeOne'; }'. Types of property '__typename' are incompatible. Type '"TypeTwo" | undefined' is not assignable to type '"TypeOne" | undefined'. Type '"TypeTwo"' is not assignable to type '"TypeOne"'. @@ -14,16 +14,16 @@ commonTypeIntersection.ts(4,5): error TS2322: Type '{ __typename?: "TypeTwo" | u declare let x1: { __typename?: 'TypeTwo' } & { a: boolean }; let y1: { __typename?: 'TypeOne' } & { a: boolean} = x1; // should error here ~~ -!!! error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & { a: boolean; }' is not assignable to type '{ __typename?: "TypeOne" | undefined; } & { a: boolean; }'. -!!! error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & { a: boolean; }' is not assignable to type '{ __typename?: "TypeOne" | undefined; }'. +!!! error TS2322: Type '{ __typename?: 'TypeTwo'; } & { a: boolean; }' is not assignable to type '{ __typename?: 'TypeOne'; } & { a: boolean; }'. +!!! error TS2322: Type '{ __typename?: 'TypeTwo'; } & { a: boolean; }' is not assignable to type '{ __typename?: 'TypeOne'; }'. !!! error TS2322: Types of property '__typename' are incompatible. !!! error TS2322: Type '"TypeTwo" | undefined' is not assignable to type '"TypeOne" | undefined'. !!! error TS2322: Type '"TypeTwo"' is not assignable to type '"TypeOne"'. declare let x2: { __typename?: 'TypeTwo' } & string; let y2: { __typename?: 'TypeOne' } & string = x2; // should error here ~~ -!!! error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & string' is not assignable to type '{ __typename?: "TypeOne" | undefined; } & string'. -!!! error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & string' is not assignable to type '{ __typename?: "TypeOne" | undefined; }'. +!!! error TS2322: Type '{ __typename?: 'TypeTwo'; } & string' is not assignable to type '{ __typename?: 'TypeOne'; } & string'. +!!! error TS2322: Type '{ __typename?: 'TypeTwo'; } & string' is not assignable to type '{ __typename?: 'TypeOne'; }'. !!! error TS2322: Types of property '__typename' are incompatible. !!! error TS2322: Type '"TypeTwo" | undefined' is not assignable to type '"TypeOne" | undefined'. !!! error TS2322: Type '"TypeTwo"' is not assignable to type '"TypeOne"'. diff --git a/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.errors.txt.diff new file mode 100644 index 00000000000..5b6e4ff8ac0 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.errors.txt.diff @@ -0,0 +1,38 @@ +--- old.commonTypeIntersection.errors.txt ++++ new.commonTypeIntersection.errors.txt +@@= skipped -0, +0 lines =@@ +-commonTypeIntersection.ts(2,5): error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & { a: boolean; }' is not assignable to type '{ __typename?: "TypeOne" | undefined; } & { a: boolean; }'. +- Type '{ __typename?: "TypeTwo" | undefined; } & { a: boolean; }' is not assignable to type '{ __typename?: "TypeOne" | undefined; }'. ++commonTypeIntersection.ts(2,5): error TS2322: Type '{ __typename?: 'TypeTwo'; } & { a: boolean; }' is not assignable to type '{ __typename?: 'TypeOne'; } & { a: boolean; }'. ++ Type '{ __typename?: 'TypeTwo'; } & { a: boolean; }' is not assignable to type '{ __typename?: 'TypeOne'; }'. + Types of property '__typename' are incompatible. + Type '"TypeTwo" | undefined' is not assignable to type '"TypeOne" | undefined'. + Type '"TypeTwo"' is not assignable to type '"TypeOne"'. +-commonTypeIntersection.ts(4,5): error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & string' is not assignable to type '{ __typename?: "TypeOne" | undefined; } & string'. +- Type '{ __typename?: "TypeTwo" | undefined; } & string' is not assignable to type '{ __typename?: "TypeOne" | undefined; }'. ++commonTypeIntersection.ts(4,5): error TS2322: Type '{ __typename?: 'TypeTwo'; } & string' is not assignable to type '{ __typename?: 'TypeOne'; } & string'. ++ Type '{ __typename?: 'TypeTwo'; } & string' is not assignable to type '{ __typename?: 'TypeOne'; }'. + Types of property '__typename' are incompatible. + Type '"TypeTwo" | undefined' is not assignable to type '"TypeOne" | undefined'. + Type '"TypeTwo"' is not assignable to type '"TypeOne"'. +@@= skipped -13, +13 lines =@@ + declare let x1: { __typename?: 'TypeTwo' } & { a: boolean }; + let y1: { __typename?: 'TypeOne' } & { a: boolean} = x1; // should error here + ~~ +-!!! error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & { a: boolean; }' is not assignable to type '{ __typename?: "TypeOne" | undefined; } & { a: boolean; }'. +-!!! error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & { a: boolean; }' is not assignable to type '{ __typename?: "TypeOne" | undefined; }'. ++!!! error TS2322: Type '{ __typename?: 'TypeTwo'; } & { a: boolean; }' is not assignable to type '{ __typename?: 'TypeOne'; } & { a: boolean; }'. ++!!! error TS2322: Type '{ __typename?: 'TypeTwo'; } & { a: boolean; }' is not assignable to type '{ __typename?: 'TypeOne'; }'. + !!! error TS2322: Types of property '__typename' are incompatible. + !!! error TS2322: Type '"TypeTwo" | undefined' is not assignable to type '"TypeOne" | undefined'. + !!! error TS2322: Type '"TypeTwo"' is not assignable to type '"TypeOne"'. + declare let x2: { __typename?: 'TypeTwo' } & string; + let y2: { __typename?: 'TypeOne' } & string = x2; // should error here + ~~ +-!!! error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & string' is not assignable to type '{ __typename?: "TypeOne" | undefined; } & string'. +-!!! error TS2322: Type '{ __typename?: "TypeTwo" | undefined; } & string' is not assignable to type '{ __typename?: "TypeOne" | undefined; }'. ++!!! error TS2322: Type '{ __typename?: 'TypeTwo'; } & string' is not assignable to type '{ __typename?: 'TypeOne'; } & string'. ++!!! error TS2322: Type '{ __typename?: 'TypeTwo'; } & string' is not assignable to type '{ __typename?: 'TypeOne'; }'. + !!! error TS2322: Types of property '__typename' are incompatible. + !!! error TS2322: Type '"TypeTwo" | undefined' is not assignable to type '"TypeOne" | undefined'. + !!! error TS2322: Type '"TypeTwo"' is not assignable to type '"TypeOne"'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.types b/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.types index 522a9a49bd8..aee2ee1f671 100644 --- a/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.types +++ b/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.types @@ -2,22 +2,22 @@ === commonTypeIntersection.ts === declare let x1: { __typename?: 'TypeTwo' } & { a: boolean }; ->x1 : { __typename?: "TypeTwo" | undefined; } & { a: boolean; } +>x1 : { __typename?: 'TypeTwo'; } & { a: boolean; } >__typename : "TypeTwo" | undefined >a : boolean let y1: { __typename?: 'TypeOne' } & { a: boolean} = x1; // should error here ->y1 : { __typename?: "TypeOne" | undefined; } & { a: boolean; } +>y1 : { __typename?: 'TypeOne'; } & { a: boolean; } >__typename : "TypeOne" | undefined >a : boolean ->x1 : { __typename?: "TypeTwo" | undefined; } & { a: boolean; } +>x1 : { __typename?: 'TypeTwo'; } & { a: boolean; } declare let x2: { __typename?: 'TypeTwo' } & string; ->x2 : { __typename?: "TypeTwo" | undefined; } & string +>x2 : { __typename?: 'TypeTwo'; } & string >__typename : "TypeTwo" | undefined let y2: { __typename?: 'TypeOne' } & string = x2; // should error here ->y2 : { __typename?: "TypeOne" | undefined; } & string +>y2 : { __typename?: 'TypeOne'; } & string >__typename : "TypeOne" | undefined ->x2 : { __typename?: "TypeTwo" | undefined; } & string +>x2 : { __typename?: 'TypeTwo'; } & string diff --git a/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.types.diff b/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.types.diff index dbe89afb234..989eb07e695 100644 --- a/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.types.diff +++ b/testdata/baselines/reference/submodule/conformance/commonTypeIntersection.types.diff @@ -5,26 +5,26 @@ === commonTypeIntersection.ts === declare let x1: { __typename?: 'TypeTwo' } & { a: boolean }; ->x1 : { __typename?: "TypeTwo"; } & { a: boolean; } -+>x1 : { __typename?: "TypeTwo" | undefined; } & { a: boolean; } ++>x1 : { __typename?: 'TypeTwo'; } & { a: boolean; } >__typename : "TypeTwo" | undefined >a : boolean let y1: { __typename?: 'TypeOne' } & { a: boolean} = x1; // should error here ->y1 : { __typename?: "TypeOne"; } & { a: boolean; } -+>y1 : { __typename?: "TypeOne" | undefined; } & { a: boolean; } ++>y1 : { __typename?: 'TypeOne'; } & { a: boolean; } >__typename : "TypeOne" | undefined >a : boolean ->x1 : { __typename?: "TypeTwo"; } & { a: boolean; } -+>x1 : { __typename?: "TypeTwo" | undefined; } & { a: boolean; } ++>x1 : { __typename?: 'TypeTwo'; } & { a: boolean; } declare let x2: { __typename?: 'TypeTwo' } & string; ->x2 : { __typename?: "TypeTwo"; } & string -+>x2 : { __typename?: "TypeTwo" | undefined; } & string ++>x2 : { __typename?: 'TypeTwo'; } & string >__typename : "TypeTwo" | undefined let y2: { __typename?: 'TypeOne' } & string = x2; // should error here ->y2 : { __typename?: "TypeOne"; } & string -+>y2 : { __typename?: "TypeOne" | undefined; } & string ++>y2 : { __typename?: 'TypeOne'; } & string >__typename : "TypeOne" | undefined ->x2 : { __typename?: "TypeTwo"; } & string -+>x2 : { __typename?: "TypeTwo" | undefined; } & string ++>x2 : { __typename?: 'TypeTwo'; } & string diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types index ef819342c77..9cc2633b639 100644 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types +++ b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types @@ -62,13 +62,13 @@ declare var b4: { fn(): C }; >fn : () => C declare var a5: { fn(a?: Base): void }; ->a5 : { fn(a?: Base | undefined): void; } ->fn : (a?: Base | undefined) => void +>a5 : { fn(a?: Base): void; } +>fn : (a?: Base) => void >a : Base | undefined declare var b5: { fn(a?: C): void }; ->b5 : { fn(a?: C | undefined): void; } ->fn : (a?: C | undefined) => void +>b5 : { fn(a?: C): void; } +>fn : (a?: C) => void >a : C | undefined declare var a6: { fn(...a: Base[]): void }; @@ -119,8 +119,8 @@ var r1a4 = a4 < b4; var r1a5 = a5 < b5; >r1a5 : boolean >a5 < b5 : boolean ->a5 : { fn(a?: Base | undefined): void; } ->b5 : { fn(a?: C | undefined): void; } +>a5 : { fn(a?: Base): void; } +>b5 : { fn(a?: C): void; } var r1a6 = a6 < b6; >r1a6 : boolean @@ -161,8 +161,8 @@ var r1b4 = b4 < a4; var r1b5 = b5 < a5; >r1b5 : boolean >b5 < a5 : boolean ->b5 : { fn(a?: C | undefined): void; } ->a5 : { fn(a?: Base | undefined): void; } +>b5 : { fn(a?: C): void; } +>a5 : { fn(a?: Base): void; } var r1b6 = b6 < a6; >r1b6 : boolean @@ -204,8 +204,8 @@ var r2a4 = a4 > b4; var r2a5 = a5 > b5; >r2a5 : boolean >a5 > b5 : boolean ->a5 : { fn(a?: Base | undefined): void; } ->b5 : { fn(a?: C | undefined): void; } +>a5 : { fn(a?: Base): void; } +>b5 : { fn(a?: C): void; } var r2a6 = a6 > b6; >r2a6 : boolean @@ -246,8 +246,8 @@ var r2b4 = b4 > a4; var r2b5 = b5 > a5; >r2b5 : boolean >b5 > a5 : boolean ->b5 : { fn(a?: C | undefined): void; } ->a5 : { fn(a?: Base | undefined): void; } +>b5 : { fn(a?: C): void; } +>a5 : { fn(a?: Base): void; } var r2b6 = b6 > a6; >r2b6 : boolean @@ -289,8 +289,8 @@ var r3a4 = a4 <= b4; var r3a5 = a5 <= b5; >r3a5 : boolean >a5 <= b5 : boolean ->a5 : { fn(a?: Base | undefined): void; } ->b5 : { fn(a?: C | undefined): void; } +>a5 : { fn(a?: Base): void; } +>b5 : { fn(a?: C): void; } var r3a6 = a6 <= b6; >r3a6 : boolean @@ -331,8 +331,8 @@ var r3b4 = b4 <= a4; var r3b5 = b5 <= a5; >r3b5 : boolean >b5 <= a5 : boolean ->b5 : { fn(a?: C | undefined): void; } ->a5 : { fn(a?: Base | undefined): void; } +>b5 : { fn(a?: C): void; } +>a5 : { fn(a?: Base): void; } var r3b6 = b6 <= a6; >r3b6 : boolean @@ -374,8 +374,8 @@ var r4a4 = a4 >= b4; var r4a5 = a5 >= b5; >r4a5 : boolean >a5 >= b5 : boolean ->a5 : { fn(a?: Base | undefined): void; } ->b5 : { fn(a?: C | undefined): void; } +>a5 : { fn(a?: Base): void; } +>b5 : { fn(a?: C): void; } var r4a6 = a6 >= b6; >r4a6 : boolean @@ -416,8 +416,8 @@ var r4b4 = b4 >= a4; var r4b5 = b5 >= a5; >r4b5 : boolean >b5 >= a5 : boolean ->b5 : { fn(a?: C | undefined): void; } ->a5 : { fn(a?: Base | undefined): void; } +>b5 : { fn(a?: C): void; } +>a5 : { fn(a?: Base): void; } var r4b6 = b6 >= a6; >r4b6 : boolean @@ -459,8 +459,8 @@ var r5a4 = a4 == b4; var r5a5 = a5 == b5; >r5a5 : boolean >a5 == b5 : boolean ->a5 : { fn(a?: Base | undefined): void; } ->b5 : { fn(a?: C | undefined): void; } +>a5 : { fn(a?: Base): void; } +>b5 : { fn(a?: C): void; } var r5a6 = a6 == b6; >r5a6 : boolean @@ -501,8 +501,8 @@ var r5b4 = b4 == a4; var r5b5 = b5 == a5; >r5b5 : boolean >b5 == a5 : boolean ->b5 : { fn(a?: C | undefined): void; } ->a5 : { fn(a?: Base | undefined): void; } +>b5 : { fn(a?: C): void; } +>a5 : { fn(a?: Base): void; } var r5b6 = b6 == a6; >r5b6 : boolean @@ -544,8 +544,8 @@ var r6a4 = a4 != b4; var r6a5 = a5 != b5; >r6a5 : boolean >a5 != b5 : boolean ->a5 : { fn(a?: Base | undefined): void; } ->b5 : { fn(a?: C | undefined): void; } +>a5 : { fn(a?: Base): void; } +>b5 : { fn(a?: C): void; } var r6a6 = a6 != b6; >r6a6 : boolean @@ -586,8 +586,8 @@ var r6b4 = b4 != a4; var r6b5 = b5 != a5; >r6b5 : boolean >b5 != a5 : boolean ->b5 : { fn(a?: C | undefined): void; } ->a5 : { fn(a?: Base | undefined): void; } +>b5 : { fn(a?: C): void; } +>a5 : { fn(a?: Base): void; } var r6b6 = b6 != a6; >r6b6 : boolean @@ -629,8 +629,8 @@ var r7a4 = a4 === b4; var r7a5 = a5 === b5; >r7a5 : boolean >a5 === b5 : boolean ->a5 : { fn(a?: Base | undefined): void; } ->b5 : { fn(a?: C | undefined): void; } +>a5 : { fn(a?: Base): void; } +>b5 : { fn(a?: C): void; } var r7a6 = a6 === b6; >r7a6 : boolean @@ -671,8 +671,8 @@ var r7b4 = b4 === a4; var r7b5 = b5 === a5; >r7b5 : boolean >b5 === a5 : boolean ->b5 : { fn(a?: C | undefined): void; } ->a5 : { fn(a?: Base | undefined): void; } +>b5 : { fn(a?: C): void; } +>a5 : { fn(a?: Base): void; } var r7b6 = b6 === a6; >r7b6 : boolean @@ -714,8 +714,8 @@ var r8a4 = a4 !== b4; var r8a5 = a5 !== b5; >r8a5 : boolean >a5 !== b5 : boolean ->a5 : { fn(a?: Base | undefined): void; } ->b5 : { fn(a?: C | undefined): void; } +>a5 : { fn(a?: Base): void; } +>b5 : { fn(a?: C): void; } var r8a6 = a6 !== b6; >r8a6 : boolean @@ -756,8 +756,8 @@ var r8b4 = b4 !== a4; var r8b5 = b5 !== a5; >r8b5 : boolean >b5 !== a5 : boolean ->b5 : { fn(a?: C | undefined): void; } ->a5 : { fn(a?: Base | undefined): void; } +>b5 : { fn(a?: C): void; } +>a5 : { fn(a?: Base): void; } var r8b6 = b6 !== a6; >r8b6 : boolean diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types.diff b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types.diff deleted file mode 100644 index 828b12a2ef7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types.diff +++ /dev/null @@ -1,196 +0,0 @@ ---- old.comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types -+++ new.comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types -@@= skipped -61, +61 lines =@@ - >fn : () => C - - declare var a5: { fn(a?: Base): void }; -->a5 : { fn(a?: Base): void; } -->fn : (a?: Base) => void -+>a5 : { fn(a?: Base | undefined): void; } -+>fn : (a?: Base | undefined) => void - >a : Base | undefined - - declare var b5: { fn(a?: C): void }; -->b5 : { fn(a?: C): void; } -->fn : (a?: C) => void -+>b5 : { fn(a?: C | undefined): void; } -+>fn : (a?: C | undefined) => void - >a : C | undefined - - declare var a6: { fn(...a: Base[]): void }; -@@= skipped -57, +57 lines =@@ - var r1a5 = a5 < b5; - >r1a5 : boolean - >a5 < b5 : boolean -->a5 : { fn(a?: Base): void; } -->b5 : { fn(a?: C): void; } -+>a5 : { fn(a?: Base | undefined): void; } -+>b5 : { fn(a?: C | undefined): void; } - - var r1a6 = a6 < b6; - >r1a6 : boolean -@@= skipped -42, +42 lines =@@ - var r1b5 = b5 < a5; - >r1b5 : boolean - >b5 < a5 : boolean -->b5 : { fn(a?: C): void; } -->a5 : { fn(a?: Base): void; } -+>b5 : { fn(a?: C | undefined): void; } -+>a5 : { fn(a?: Base | undefined): void; } - - var r1b6 = b6 < a6; - >r1b6 : boolean -@@= skipped -43, +43 lines =@@ - var r2a5 = a5 > b5; - >r2a5 : boolean - >a5 > b5 : boolean -->a5 : { fn(a?: Base): void; } -->b5 : { fn(a?: C): void; } -+>a5 : { fn(a?: Base | undefined): void; } -+>b5 : { fn(a?: C | undefined): void; } - - var r2a6 = a6 > b6; - >r2a6 : boolean -@@= skipped -42, +42 lines =@@ - var r2b5 = b5 > a5; - >r2b5 : boolean - >b5 > a5 : boolean -->b5 : { fn(a?: C): void; } -->a5 : { fn(a?: Base): void; } -+>b5 : { fn(a?: C | undefined): void; } -+>a5 : { fn(a?: Base | undefined): void; } - - var r2b6 = b6 > a6; - >r2b6 : boolean -@@= skipped -43, +43 lines =@@ - var r3a5 = a5 <= b5; - >r3a5 : boolean - >a5 <= b5 : boolean -->a5 : { fn(a?: Base): void; } -->b5 : { fn(a?: C): void; } -+>a5 : { fn(a?: Base | undefined): void; } -+>b5 : { fn(a?: C | undefined): void; } - - var r3a6 = a6 <= b6; - >r3a6 : boolean -@@= skipped -42, +42 lines =@@ - var r3b5 = b5 <= a5; - >r3b5 : boolean - >b5 <= a5 : boolean -->b5 : { fn(a?: C): void; } -->a5 : { fn(a?: Base): void; } -+>b5 : { fn(a?: C | undefined): void; } -+>a5 : { fn(a?: Base | undefined): void; } - - var r3b6 = b6 <= a6; - >r3b6 : boolean -@@= skipped -43, +43 lines =@@ - var r4a5 = a5 >= b5; - >r4a5 : boolean - >a5 >= b5 : boolean -->a5 : { fn(a?: Base): void; } -->b5 : { fn(a?: C): void; } -+>a5 : { fn(a?: Base | undefined): void; } -+>b5 : { fn(a?: C | undefined): void; } - - var r4a6 = a6 >= b6; - >r4a6 : boolean -@@= skipped -42, +42 lines =@@ - var r4b5 = b5 >= a5; - >r4b5 : boolean - >b5 >= a5 : boolean -->b5 : { fn(a?: C): void; } -->a5 : { fn(a?: Base): void; } -+>b5 : { fn(a?: C | undefined): void; } -+>a5 : { fn(a?: Base | undefined): void; } - - var r4b6 = b6 >= a6; - >r4b6 : boolean -@@= skipped -43, +43 lines =@@ - var r5a5 = a5 == b5; - >r5a5 : boolean - >a5 == b5 : boolean -->a5 : { fn(a?: Base): void; } -->b5 : { fn(a?: C): void; } -+>a5 : { fn(a?: Base | undefined): void; } -+>b5 : { fn(a?: C | undefined): void; } - - var r5a6 = a6 == b6; - >r5a6 : boolean -@@= skipped -42, +42 lines =@@ - var r5b5 = b5 == a5; - >r5b5 : boolean - >b5 == a5 : boolean -->b5 : { fn(a?: C): void; } -->a5 : { fn(a?: Base): void; } -+>b5 : { fn(a?: C | undefined): void; } -+>a5 : { fn(a?: Base | undefined): void; } - - var r5b6 = b6 == a6; - >r5b6 : boolean -@@= skipped -43, +43 lines =@@ - var r6a5 = a5 != b5; - >r6a5 : boolean - >a5 != b5 : boolean -->a5 : { fn(a?: Base): void; } -->b5 : { fn(a?: C): void; } -+>a5 : { fn(a?: Base | undefined): void; } -+>b5 : { fn(a?: C | undefined): void; } - - var r6a6 = a6 != b6; - >r6a6 : boolean -@@= skipped -42, +42 lines =@@ - var r6b5 = b5 != a5; - >r6b5 : boolean - >b5 != a5 : boolean -->b5 : { fn(a?: C): void; } -->a5 : { fn(a?: Base): void; } -+>b5 : { fn(a?: C | undefined): void; } -+>a5 : { fn(a?: Base | undefined): void; } - - var r6b6 = b6 != a6; - >r6b6 : boolean -@@= skipped -43, +43 lines =@@ - var r7a5 = a5 === b5; - >r7a5 : boolean - >a5 === b5 : boolean -->a5 : { fn(a?: Base): void; } -->b5 : { fn(a?: C): void; } -+>a5 : { fn(a?: Base | undefined): void; } -+>b5 : { fn(a?: C | undefined): void; } - - var r7a6 = a6 === b6; - >r7a6 : boolean -@@= skipped -42, +42 lines =@@ - var r7b5 = b5 === a5; - >r7b5 : boolean - >b5 === a5 : boolean -->b5 : { fn(a?: C): void; } -->a5 : { fn(a?: Base): void; } -+>b5 : { fn(a?: C | undefined): void; } -+>a5 : { fn(a?: Base | undefined): void; } - - var r7b6 = b6 === a6; - >r7b6 : boolean -@@= skipped -43, +43 lines =@@ - var r8a5 = a5 !== b5; - >r8a5 : boolean - >a5 !== b5 : boolean -->a5 : { fn(a?: Base): void; } -->b5 : { fn(a?: C): void; } -+>a5 : { fn(a?: Base | undefined): void; } -+>b5 : { fn(a?: C | undefined): void; } - - var r8a6 = a6 !== b6; - >r8a6 : boolean -@@= skipped -42, +42 lines =@@ - var r8b5 = b5 !== a5; - >r8b5 : boolean - >b5 !== a5 : boolean -->b5 : { fn(a?: C): void; } -->a5 : { fn(a?: Base): void; } -+>b5 : { fn(a?: C | undefined): void; } -+>a5 : { fn(a?: Base | undefined): void; } - - var r8b6 = b6 !== a6; - >r8b6 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types index dc788384537..38c9a66dab6 100644 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types +++ b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types @@ -56,11 +56,11 @@ declare var b4: { new (): C }; >b4 : new () => C declare var a5: { new (a?: Base): Base }; ->a5 : new (a?: Base | undefined) => Base +>a5 : new (a?: Base) => Base >a : Base | undefined declare var b5: { new (a?: C): Base }; ->b5 : new (a?: C | undefined) => Base +>b5 : new (a?: C) => Base >a : C | undefined declare var a6: { new (...a: Base[]): Base }; @@ -107,8 +107,8 @@ var r1a4 = a4 < b4; var r1a5 = a5 < b5; >r1a5 : boolean >a5 < b5 : boolean ->a5 : new (a?: Base | undefined) => Base ->b5 : new (a?: C | undefined) => Base +>a5 : new (a?: Base) => Base +>b5 : new (a?: C) => Base var r1a6 = a6 < b6; >r1a6 : boolean @@ -149,8 +149,8 @@ var r1b4 = b4 < a4; var r1b5 = b5 < a5; >r1b5 : boolean >b5 < a5 : boolean ->b5 : new (a?: C | undefined) => Base ->a5 : new (a?: Base | undefined) => Base +>b5 : new (a?: C) => Base +>a5 : new (a?: Base) => Base var r1b6 = b6 < a6; >r1b6 : boolean @@ -192,8 +192,8 @@ var r2a4 = a4 > b4; var r2a5 = a5 > b5; >r2a5 : boolean >a5 > b5 : boolean ->a5 : new (a?: Base | undefined) => Base ->b5 : new (a?: C | undefined) => Base +>a5 : new (a?: Base) => Base +>b5 : new (a?: C) => Base var r2a6 = a6 > b6; >r2a6 : boolean @@ -234,8 +234,8 @@ var r2b4 = b4 > a4; var r2b5 = b5 > a5; >r2b5 : boolean >b5 > a5 : boolean ->b5 : new (a?: C | undefined) => Base ->a5 : new (a?: Base | undefined) => Base +>b5 : new (a?: C) => Base +>a5 : new (a?: Base) => Base var r2b6 = b6 > a6; >r2b6 : boolean @@ -277,8 +277,8 @@ var r3a4 = a4 <= b4; var r3a5 = a5 <= b5; >r3a5 : boolean >a5 <= b5 : boolean ->a5 : new (a?: Base | undefined) => Base ->b5 : new (a?: C | undefined) => Base +>a5 : new (a?: Base) => Base +>b5 : new (a?: C) => Base var r3a6 = a6 <= b6; >r3a6 : boolean @@ -319,8 +319,8 @@ var r3b4 = b4 <= a4; var r3b5 = b5 <= a5; >r3b5 : boolean >b5 <= a5 : boolean ->b5 : new (a?: C | undefined) => Base ->a5 : new (a?: Base | undefined) => Base +>b5 : new (a?: C) => Base +>a5 : new (a?: Base) => Base var r3b6 = b6 <= a6; >r3b6 : boolean @@ -362,8 +362,8 @@ var r4a4 = a4 >= b4; var r4a5 = a5 >= b5; >r4a5 : boolean >a5 >= b5 : boolean ->a5 : new (a?: Base | undefined) => Base ->b5 : new (a?: C | undefined) => Base +>a5 : new (a?: Base) => Base +>b5 : new (a?: C) => Base var r4a6 = a6 >= b6; >r4a6 : boolean @@ -404,8 +404,8 @@ var r4b4 = b4 >= a4; var r4b5 = b5 >= a5; >r4b5 : boolean >b5 >= a5 : boolean ->b5 : new (a?: C | undefined) => Base ->a5 : new (a?: Base | undefined) => Base +>b5 : new (a?: C) => Base +>a5 : new (a?: Base) => Base var r4b6 = b6 >= a6; >r4b6 : boolean @@ -447,8 +447,8 @@ var r5a4 = a4 == b4; var r5a5 = a5 == b5; >r5a5 : boolean >a5 == b5 : boolean ->a5 : new (a?: Base | undefined) => Base ->b5 : new (a?: C | undefined) => Base +>a5 : new (a?: Base) => Base +>b5 : new (a?: C) => Base var r5a6 = a6 == b6; >r5a6 : boolean @@ -489,8 +489,8 @@ var r5b4 = b4 == a4; var r5b5 = b5 == a5; >r5b5 : boolean >b5 == a5 : boolean ->b5 : new (a?: C | undefined) => Base ->a5 : new (a?: Base | undefined) => Base +>b5 : new (a?: C) => Base +>a5 : new (a?: Base) => Base var r5b6 = b6 == a6; >r5b6 : boolean @@ -532,8 +532,8 @@ var r6a4 = a4 != b4; var r6a5 = a5 != b5; >r6a5 : boolean >a5 != b5 : boolean ->a5 : new (a?: Base | undefined) => Base ->b5 : new (a?: C | undefined) => Base +>a5 : new (a?: Base) => Base +>b5 : new (a?: C) => Base var r6a6 = a6 != b6; >r6a6 : boolean @@ -574,8 +574,8 @@ var r6b4 = b4 != a4; var r6b5 = b5 != a5; >r6b5 : boolean >b5 != a5 : boolean ->b5 : new (a?: C | undefined) => Base ->a5 : new (a?: Base | undefined) => Base +>b5 : new (a?: C) => Base +>a5 : new (a?: Base) => Base var r6b6 = b6 != a6; >r6b6 : boolean @@ -617,8 +617,8 @@ var r7a4 = a4 === b4; var r7a5 = a5 === b5; >r7a5 : boolean >a5 === b5 : boolean ->a5 : new (a?: Base | undefined) => Base ->b5 : new (a?: C | undefined) => Base +>a5 : new (a?: Base) => Base +>b5 : new (a?: C) => Base var r7a6 = a6 === b6; >r7a6 : boolean @@ -659,8 +659,8 @@ var r7b4 = b4 === a4; var r7b5 = b5 === a5; >r7b5 : boolean >b5 === a5 : boolean ->b5 : new (a?: C | undefined) => Base ->a5 : new (a?: Base | undefined) => Base +>b5 : new (a?: C) => Base +>a5 : new (a?: Base) => Base var r7b6 = b6 === a6; >r7b6 : boolean @@ -702,8 +702,8 @@ var r8a4 = a4 !== b4; var r8a5 = a5 !== b5; >r8a5 : boolean >a5 !== b5 : boolean ->a5 : new (a?: Base | undefined) => Base ->b5 : new (a?: C | undefined) => Base +>a5 : new (a?: Base) => Base +>b5 : new (a?: C) => Base var r8a6 = a6 !== b6; >r8a6 : boolean @@ -744,8 +744,8 @@ var r8b4 = b4 !== a4; var r8b5 = b5 !== a5; >r8b5 : boolean >b5 !== a5 : boolean ->b5 : new (a?: C | undefined) => Base ->a5 : new (a?: Base | undefined) => Base +>b5 : new (a?: C) => Base +>a5 : new (a?: Base) => Base var r8b6 = b6 !== a6; >r8b6 : boolean diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types.diff b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types.diff deleted file mode 100644 index fd3f680109b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types.diff +++ /dev/null @@ -1,192 +0,0 @@ ---- old.comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types -+++ new.comparisonOperatorWithNoRelationshipObjectsOnConstructorSignature.types -@@= skipped -55, +55 lines =@@ - >b4 : new () => C - - declare var a5: { new (a?: Base): Base }; -->a5 : new (a?: Base) => Base -+>a5 : new (a?: Base | undefined) => Base - >a : Base | undefined - - declare var b5: { new (a?: C): Base }; -->b5 : new (a?: C) => Base -+>b5 : new (a?: C | undefined) => Base - >a : C | undefined - - declare var a6: { new (...a: Base[]): Base }; -@@= skipped -51, +51 lines =@@ - var r1a5 = a5 < b5; - >r1a5 : boolean - >a5 < b5 : boolean -->a5 : new (a?: Base) => Base -->b5 : new (a?: C) => Base -+>a5 : new (a?: Base | undefined) => Base -+>b5 : new (a?: C | undefined) => Base - - var r1a6 = a6 < b6; - >r1a6 : boolean -@@= skipped -42, +42 lines =@@ - var r1b5 = b5 < a5; - >r1b5 : boolean - >b5 < a5 : boolean -->b5 : new (a?: C) => Base -->a5 : new (a?: Base) => Base -+>b5 : new (a?: C | undefined) => Base -+>a5 : new (a?: Base | undefined) => Base - - var r1b6 = b6 < a6; - >r1b6 : boolean -@@= skipped -43, +43 lines =@@ - var r2a5 = a5 > b5; - >r2a5 : boolean - >a5 > b5 : boolean -->a5 : new (a?: Base) => Base -->b5 : new (a?: C) => Base -+>a5 : new (a?: Base | undefined) => Base -+>b5 : new (a?: C | undefined) => Base - - var r2a6 = a6 > b6; - >r2a6 : boolean -@@= skipped -42, +42 lines =@@ - var r2b5 = b5 > a5; - >r2b5 : boolean - >b5 > a5 : boolean -->b5 : new (a?: C) => Base -->a5 : new (a?: Base) => Base -+>b5 : new (a?: C | undefined) => Base -+>a5 : new (a?: Base | undefined) => Base - - var r2b6 = b6 > a6; - >r2b6 : boolean -@@= skipped -43, +43 lines =@@ - var r3a5 = a5 <= b5; - >r3a5 : boolean - >a5 <= b5 : boolean -->a5 : new (a?: Base) => Base -->b5 : new (a?: C) => Base -+>a5 : new (a?: Base | undefined) => Base -+>b5 : new (a?: C | undefined) => Base - - var r3a6 = a6 <= b6; - >r3a6 : boolean -@@= skipped -42, +42 lines =@@ - var r3b5 = b5 <= a5; - >r3b5 : boolean - >b5 <= a5 : boolean -->b5 : new (a?: C) => Base -->a5 : new (a?: Base) => Base -+>b5 : new (a?: C | undefined) => Base -+>a5 : new (a?: Base | undefined) => Base - - var r3b6 = b6 <= a6; - >r3b6 : boolean -@@= skipped -43, +43 lines =@@ - var r4a5 = a5 >= b5; - >r4a5 : boolean - >a5 >= b5 : boolean -->a5 : new (a?: Base) => Base -->b5 : new (a?: C) => Base -+>a5 : new (a?: Base | undefined) => Base -+>b5 : new (a?: C | undefined) => Base - - var r4a6 = a6 >= b6; - >r4a6 : boolean -@@= skipped -42, +42 lines =@@ - var r4b5 = b5 >= a5; - >r4b5 : boolean - >b5 >= a5 : boolean -->b5 : new (a?: C) => Base -->a5 : new (a?: Base) => Base -+>b5 : new (a?: C | undefined) => Base -+>a5 : new (a?: Base | undefined) => Base - - var r4b6 = b6 >= a6; - >r4b6 : boolean -@@= skipped -43, +43 lines =@@ - var r5a5 = a5 == b5; - >r5a5 : boolean - >a5 == b5 : boolean -->a5 : new (a?: Base) => Base -->b5 : new (a?: C) => Base -+>a5 : new (a?: Base | undefined) => Base -+>b5 : new (a?: C | undefined) => Base - - var r5a6 = a6 == b6; - >r5a6 : boolean -@@= skipped -42, +42 lines =@@ - var r5b5 = b5 == a5; - >r5b5 : boolean - >b5 == a5 : boolean -->b5 : new (a?: C) => Base -->a5 : new (a?: Base) => Base -+>b5 : new (a?: C | undefined) => Base -+>a5 : new (a?: Base | undefined) => Base - - var r5b6 = b6 == a6; - >r5b6 : boolean -@@= skipped -43, +43 lines =@@ - var r6a5 = a5 != b5; - >r6a5 : boolean - >a5 != b5 : boolean -->a5 : new (a?: Base) => Base -->b5 : new (a?: C) => Base -+>a5 : new (a?: Base | undefined) => Base -+>b5 : new (a?: C | undefined) => Base - - var r6a6 = a6 != b6; - >r6a6 : boolean -@@= skipped -42, +42 lines =@@ - var r6b5 = b5 != a5; - >r6b5 : boolean - >b5 != a5 : boolean -->b5 : new (a?: C) => Base -->a5 : new (a?: Base) => Base -+>b5 : new (a?: C | undefined) => Base -+>a5 : new (a?: Base | undefined) => Base - - var r6b6 = b6 != a6; - >r6b6 : boolean -@@= skipped -43, +43 lines =@@ - var r7a5 = a5 === b5; - >r7a5 : boolean - >a5 === b5 : boolean -->a5 : new (a?: Base) => Base -->b5 : new (a?: C) => Base -+>a5 : new (a?: Base | undefined) => Base -+>b5 : new (a?: C | undefined) => Base - - var r7a6 = a6 === b6; - >r7a6 : boolean -@@= skipped -42, +42 lines =@@ - var r7b5 = b5 === a5; - >r7b5 : boolean - >b5 === a5 : boolean -->b5 : new (a?: C) => Base -->a5 : new (a?: Base) => Base -+>b5 : new (a?: C | undefined) => Base -+>a5 : new (a?: Base | undefined) => Base - - var r7b6 = b6 === a6; - >r7b6 : boolean -@@= skipped -43, +43 lines =@@ - var r8a5 = a5 !== b5; - >r8a5 : boolean - >a5 !== b5 : boolean -->a5 : new (a?: Base) => Base -->b5 : new (a?: C) => Base -+>a5 : new (a?: Base | undefined) => Base -+>b5 : new (a?: C | undefined) => Base - - var r8a6 = a6 !== b6; - >r8a6 : boolean -@@= skipped -42, +42 lines =@@ - var r8b5 = b5 !== a5; - >r8b5 : boolean - >b5 !== a5 : boolean -->b5 : new (a?: C) => Base -->a5 : new (a?: Base) => Base -+>b5 : new (a?: C | undefined) => Base -+>a5 : new (a?: Base | undefined) => Base - - var r8b6 = b6 !== a6; - >r8b6 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types index ae2773fe17c..0c6478c0b66 100644 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types +++ b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types @@ -43,13 +43,13 @@ var b2: { fn(x: string): number }; >x : string var a3: { fn(x?: T): T }; ->a3 : { fn(x?: T | undefined): T; } ->fn : (x?: T | undefined) => T +>a3 : { fn(x?: T): T; } +>fn : (x?: T) => T >x : T | undefined var b3: { fn(x?: string): number }; ->b3 : { fn(x?: string | undefined): number; } ->fn : (x?: string | undefined) => number +>b3 : { fn(x?: string): number; } +>fn : (x?: string) => number >x : string | undefined var a4: { fn(...x: T[]): T }; @@ -102,8 +102,8 @@ var r1a2 = a2 < b2; var r1a3 = a3 < b3; >r1a3 : boolean >a3 < b3 : boolean ->a3 : { fn(x?: T | undefined): T; } ->b3 : { fn(x?: string | undefined): number; } +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } var r1a4 = a4 < b4; >r1a4 : boolean @@ -138,8 +138,8 @@ var r1b2 = b2 < a2; var r1b3 = b3 < a3; >r1b3 : boolean >b3 < a3 : boolean ->b3 : { fn(x?: string | undefined): number; } ->a3 : { fn(x?: T | undefined): T; } +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } var r1b4 = b4 < a4; >r1b4 : boolean @@ -175,8 +175,8 @@ var r2a2 = a2 > b2; var r2a3 = a3 > b3; >r2a3 : boolean >a3 > b3 : boolean ->a3 : { fn(x?: T | undefined): T; } ->b3 : { fn(x?: string | undefined): number; } +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } var r2a4 = a4 > b4; >r2a4 : boolean @@ -211,8 +211,8 @@ var r2b2 = b2 > a2; var r2b3 = b3 > a3; >r2b3 : boolean >b3 > a3 : boolean ->b3 : { fn(x?: string | undefined): number; } ->a3 : { fn(x?: T | undefined): T; } +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } var r2b4 = b4 > a4; >r2b4 : boolean @@ -248,8 +248,8 @@ var r3a2 = a2 <= b2; var r3a3 = a3 <= b3; >r3a3 : boolean >a3 <= b3 : boolean ->a3 : { fn(x?: T | undefined): T; } ->b3 : { fn(x?: string | undefined): number; } +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } var r3a4 = a4 <= b4; >r3a4 : boolean @@ -284,8 +284,8 @@ var r3b2 = b2 <= a2; var r3b3 = b3 <= a3; >r3b3 : boolean >b3 <= a3 : boolean ->b3 : { fn(x?: string | undefined): number; } ->a3 : { fn(x?: T | undefined): T; } +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } var r3b4 = b4 <= a4; >r3b4 : boolean @@ -321,8 +321,8 @@ var r4a2 = a2 >= b2; var r4a3 = a3 >= b3; >r4a3 : boolean >a3 >= b3 : boolean ->a3 : { fn(x?: T | undefined): T; } ->b3 : { fn(x?: string | undefined): number; } +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } var r4a4 = a4 >= b4; >r4a4 : boolean @@ -357,8 +357,8 @@ var r4b2 = b2 >= a2; var r4b3 = b3 >= a3; >r4b3 : boolean >b3 >= a3 : boolean ->b3 : { fn(x?: string | undefined): number; } ->a3 : { fn(x?: T | undefined): T; } +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } var r4b4 = b4 >= a4; >r4b4 : boolean @@ -394,8 +394,8 @@ var r5a2 = a2 == b2; var r5a3 = a3 == b3; >r5a3 : boolean >a3 == b3 : boolean ->a3 : { fn(x?: T | undefined): T; } ->b3 : { fn(x?: string | undefined): number; } +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } var r5a4 = a4 == b4; >r5a4 : boolean @@ -430,8 +430,8 @@ var r5b2 = b2 == a2; var r5b3 = b3 == a3; >r5b3 : boolean >b3 == a3 : boolean ->b3 : { fn(x?: string | undefined): number; } ->a3 : { fn(x?: T | undefined): T; } +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } var r5b4 = b4 == a4; >r5b4 : boolean @@ -467,8 +467,8 @@ var r6a2 = a2 != b2; var r6a3 = a3 != b3; >r6a3 : boolean >a3 != b3 : boolean ->a3 : { fn(x?: T | undefined): T; } ->b3 : { fn(x?: string | undefined): number; } +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } var r6a4 = a4 != b4; >r6a4 : boolean @@ -503,8 +503,8 @@ var r6b2 = b2 != a2; var r6b3 = b3 != a3; >r6b3 : boolean >b3 != a3 : boolean ->b3 : { fn(x?: string | undefined): number; } ->a3 : { fn(x?: T | undefined): T; } +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } var r6b4 = b4 != a4; >r6b4 : boolean @@ -540,8 +540,8 @@ var r7a2 = a2 === b2; var r7a3 = a3 === b3; >r7a3 : boolean >a3 === b3 : boolean ->a3 : { fn(x?: T | undefined): T; } ->b3 : { fn(x?: string | undefined): number; } +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } var r7a4 = a4 === b4; >r7a4 : boolean @@ -576,8 +576,8 @@ var r7b2 = b2 === a2; var r7b3 = b3 === a3; >r7b3 : boolean >b3 === a3 : boolean ->b3 : { fn(x?: string | undefined): number; } ->a3 : { fn(x?: T | undefined): T; } +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } var r7b4 = b4 === a4; >r7b4 : boolean @@ -613,8 +613,8 @@ var r8a2 = a2 !== b2; var r8a3 = a3 !== b3; >r8a3 : boolean >a3 !== b3 : boolean ->a3 : { fn(x?: T | undefined): T; } ->b3 : { fn(x?: string | undefined): number; } +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } var r8a4 = a4 !== b4; >r8a4 : boolean @@ -649,8 +649,8 @@ var r8b2 = b2 !== a2; var r8b3 = b3 !== a3; >r8b3 : boolean >b3 !== a3 : boolean ->b3 : { fn(x?: string | undefined): number; } ->a3 : { fn(x?: T | undefined): T; } +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } var r8b4 = b4 !== a4; >r8b4 : boolean diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types.diff b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types.diff deleted file mode 100644 index 71ac5741494..00000000000 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types.diff +++ /dev/null @@ -1,196 +0,0 @@ ---- old.comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types -+++ new.comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types -@@= skipped -42, +42 lines =@@ - >x : string - - var a3: { fn(x?: T): T }; -->a3 : { fn(x?: T): T; } -->fn : (x?: T) => T -+>a3 : { fn(x?: T | undefined): T; } -+>fn : (x?: T | undefined) => T - >x : T | undefined - - var b3: { fn(x?: string): number }; -->b3 : { fn(x?: string): number; } -->fn : (x?: string) => number -+>b3 : { fn(x?: string | undefined): number; } -+>fn : (x?: string | undefined) => number - >x : string | undefined - - var a4: { fn(...x: T[]): T }; -@@= skipped -59, +59 lines =@@ - var r1a3 = a3 < b3; - >r1a3 : boolean - >a3 < b3 : boolean -->a3 : { fn(x?: T): T; } -->b3 : { fn(x?: string): number; } -+>a3 : { fn(x?: T | undefined): T; } -+>b3 : { fn(x?: string | undefined): number; } - - var r1a4 = a4 < b4; - >r1a4 : boolean -@@= skipped -36, +36 lines =@@ - var r1b3 = b3 < a3; - >r1b3 : boolean - >b3 < a3 : boolean -->b3 : { fn(x?: string): number; } -->a3 : { fn(x?: T): T; } -+>b3 : { fn(x?: string | undefined): number; } -+>a3 : { fn(x?: T | undefined): T; } - - var r1b4 = b4 < a4; - >r1b4 : boolean -@@= skipped -37, +37 lines =@@ - var r2a3 = a3 > b3; - >r2a3 : boolean - >a3 > b3 : boolean -->a3 : { fn(x?: T): T; } -->b3 : { fn(x?: string): number; } -+>a3 : { fn(x?: T | undefined): T; } -+>b3 : { fn(x?: string | undefined): number; } - - var r2a4 = a4 > b4; - >r2a4 : boolean -@@= skipped -36, +36 lines =@@ - var r2b3 = b3 > a3; - >r2b3 : boolean - >b3 > a3 : boolean -->b3 : { fn(x?: string): number; } -->a3 : { fn(x?: T): T; } -+>b3 : { fn(x?: string | undefined): number; } -+>a3 : { fn(x?: T | undefined): T; } - - var r2b4 = b4 > a4; - >r2b4 : boolean -@@= skipped -37, +37 lines =@@ - var r3a3 = a3 <= b3; - >r3a3 : boolean - >a3 <= b3 : boolean -->a3 : { fn(x?: T): T; } -->b3 : { fn(x?: string): number; } -+>a3 : { fn(x?: T | undefined): T; } -+>b3 : { fn(x?: string | undefined): number; } - - var r3a4 = a4 <= b4; - >r3a4 : boolean -@@= skipped -36, +36 lines =@@ - var r3b3 = b3 <= a3; - >r3b3 : boolean - >b3 <= a3 : boolean -->b3 : { fn(x?: string): number; } -->a3 : { fn(x?: T): T; } -+>b3 : { fn(x?: string | undefined): number; } -+>a3 : { fn(x?: T | undefined): T; } - - var r3b4 = b4 <= a4; - >r3b4 : boolean -@@= skipped -37, +37 lines =@@ - var r4a3 = a3 >= b3; - >r4a3 : boolean - >a3 >= b3 : boolean -->a3 : { fn(x?: T): T; } -->b3 : { fn(x?: string): number; } -+>a3 : { fn(x?: T | undefined): T; } -+>b3 : { fn(x?: string | undefined): number; } - - var r4a4 = a4 >= b4; - >r4a4 : boolean -@@= skipped -36, +36 lines =@@ - var r4b3 = b3 >= a3; - >r4b3 : boolean - >b3 >= a3 : boolean -->b3 : { fn(x?: string): number; } -->a3 : { fn(x?: T): T; } -+>b3 : { fn(x?: string | undefined): number; } -+>a3 : { fn(x?: T | undefined): T; } - - var r4b4 = b4 >= a4; - >r4b4 : boolean -@@= skipped -37, +37 lines =@@ - var r5a3 = a3 == b3; - >r5a3 : boolean - >a3 == b3 : boolean -->a3 : { fn(x?: T): T; } -->b3 : { fn(x?: string): number; } -+>a3 : { fn(x?: T | undefined): T; } -+>b3 : { fn(x?: string | undefined): number; } - - var r5a4 = a4 == b4; - >r5a4 : boolean -@@= skipped -36, +36 lines =@@ - var r5b3 = b3 == a3; - >r5b3 : boolean - >b3 == a3 : boolean -->b3 : { fn(x?: string): number; } -->a3 : { fn(x?: T): T; } -+>b3 : { fn(x?: string | undefined): number; } -+>a3 : { fn(x?: T | undefined): T; } - - var r5b4 = b4 == a4; - >r5b4 : boolean -@@= skipped -37, +37 lines =@@ - var r6a3 = a3 != b3; - >r6a3 : boolean - >a3 != b3 : boolean -->a3 : { fn(x?: T): T; } -->b3 : { fn(x?: string): number; } -+>a3 : { fn(x?: T | undefined): T; } -+>b3 : { fn(x?: string | undefined): number; } - - var r6a4 = a4 != b4; - >r6a4 : boolean -@@= skipped -36, +36 lines =@@ - var r6b3 = b3 != a3; - >r6b3 : boolean - >b3 != a3 : boolean -->b3 : { fn(x?: string): number; } -->a3 : { fn(x?: T): T; } -+>b3 : { fn(x?: string | undefined): number; } -+>a3 : { fn(x?: T | undefined): T; } - - var r6b4 = b4 != a4; - >r6b4 : boolean -@@= skipped -37, +37 lines =@@ - var r7a3 = a3 === b3; - >r7a3 : boolean - >a3 === b3 : boolean -->a3 : { fn(x?: T): T; } -->b3 : { fn(x?: string): number; } -+>a3 : { fn(x?: T | undefined): T; } -+>b3 : { fn(x?: string | undefined): number; } - - var r7a4 = a4 === b4; - >r7a4 : boolean -@@= skipped -36, +36 lines =@@ - var r7b3 = b3 === a3; - >r7b3 : boolean - >b3 === a3 : boolean -->b3 : { fn(x?: string): number; } -->a3 : { fn(x?: T): T; } -+>b3 : { fn(x?: string | undefined): number; } -+>a3 : { fn(x?: T | undefined): T; } - - var r7b4 = b4 === a4; - >r7b4 : boolean -@@= skipped -37, +37 lines =@@ - var r8a3 = a3 !== b3; - >r8a3 : boolean - >a3 !== b3 : boolean -->a3 : { fn(x?: T): T; } -->b3 : { fn(x?: string): number; } -+>a3 : { fn(x?: T | undefined): T; } -+>b3 : { fn(x?: string | undefined): number; } - - var r8a4 = a4 !== b4; - >r8a4 : boolean -@@= skipped -36, +36 lines =@@ - var r8b3 = b3 !== a3; - >r8b3 : boolean - >b3 !== a3 : boolean -->b3 : { fn(x?: string): number; } -->a3 : { fn(x?: T): T; } -+>b3 : { fn(x?: string | undefined): number; } -+>a3 : { fn(x?: T | undefined): T; } - - var r8b4 = b4 !== a4; - >r8b4 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types index 838ed5557b3..5cde3730072 100644 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types +++ b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types @@ -39,11 +39,11 @@ var b2: { new (x: string): number }; >x : string var a3: { new (x?: T): T }; ->a3 : new (x?: T | undefined) => T +>a3 : new (x?: T) => T >x : T | undefined var b3: { new (x?: string): number }; ->b3 : new (x?: string | undefined) => number +>b3 : new (x?: string) => number >x : string | undefined var a4: { new (...x: T[]): T }; @@ -90,8 +90,8 @@ var r1a2 = a2 < b2; var r1a3 = a3 < b3; >r1a3 : boolean >a3 < b3 : boolean ->a3 : new (x?: T | undefined) => T ->b3 : new (x?: string | undefined) => number +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number var r1a4 = a4 < b4; >r1a4 : boolean @@ -126,8 +126,8 @@ var r1b2 = b2 < a2; var r1b3 = b3 < a3; >r1b3 : boolean >b3 < a3 : boolean ->b3 : new (x?: string | undefined) => number ->a3 : new (x?: T | undefined) => T +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T var r1b4 = b4 < a4; >r1b4 : boolean @@ -163,8 +163,8 @@ var r2a2 = a2 > b2; var r2a3 = a3 > b3; >r2a3 : boolean >a3 > b3 : boolean ->a3 : new (x?: T | undefined) => T ->b3 : new (x?: string | undefined) => number +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number var r2a4 = a4 > b4; >r2a4 : boolean @@ -199,8 +199,8 @@ var r2b2 = b2 > a2; var r2b3 = b3 > a3; >r2b3 : boolean >b3 > a3 : boolean ->b3 : new (x?: string | undefined) => number ->a3 : new (x?: T | undefined) => T +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T var r2b4 = b4 > a4; >r2b4 : boolean @@ -236,8 +236,8 @@ var r3a2 = a2 <= b2; var r3a3 = a3 <= b3; >r3a3 : boolean >a3 <= b3 : boolean ->a3 : new (x?: T | undefined) => T ->b3 : new (x?: string | undefined) => number +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number var r3a4 = a4 <= b4; >r3a4 : boolean @@ -272,8 +272,8 @@ var r3b2 = b2 <= a2; var r3b3 = b3 <= a3; >r3b3 : boolean >b3 <= a3 : boolean ->b3 : new (x?: string | undefined) => number ->a3 : new (x?: T | undefined) => T +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T var r3b4 = b4 <= a4; >r3b4 : boolean @@ -309,8 +309,8 @@ var r4a2 = a2 >= b2; var r4a3 = a3 >= b3; >r4a3 : boolean >a3 >= b3 : boolean ->a3 : new (x?: T | undefined) => T ->b3 : new (x?: string | undefined) => number +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number var r4a4 = a4 >= b4; >r4a4 : boolean @@ -345,8 +345,8 @@ var r4b2 = b2 >= a2; var r4b3 = b3 >= a3; >r4b3 : boolean >b3 >= a3 : boolean ->b3 : new (x?: string | undefined) => number ->a3 : new (x?: T | undefined) => T +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T var r4b4 = b4 >= a4; >r4b4 : boolean @@ -382,8 +382,8 @@ var r5a2 = a2 == b2; var r5a3 = a3 == b3; >r5a3 : boolean >a3 == b3 : boolean ->a3 : new (x?: T | undefined) => T ->b3 : new (x?: string | undefined) => number +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number var r5a4 = a4 == b4; >r5a4 : boolean @@ -418,8 +418,8 @@ var r5b2 = b2 == a2; var r5b3 = b3 == a3; >r5b3 : boolean >b3 == a3 : boolean ->b3 : new (x?: string | undefined) => number ->a3 : new (x?: T | undefined) => T +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T var r5b4 = b4 == a4; >r5b4 : boolean @@ -455,8 +455,8 @@ var r6a2 = a2 != b2; var r6a3 = a3 != b3; >r6a3 : boolean >a3 != b3 : boolean ->a3 : new (x?: T | undefined) => T ->b3 : new (x?: string | undefined) => number +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number var r6a4 = a4 != b4; >r6a4 : boolean @@ -491,8 +491,8 @@ var r6b2 = b2 != a2; var r6b3 = b3 != a3; >r6b3 : boolean >b3 != a3 : boolean ->b3 : new (x?: string | undefined) => number ->a3 : new (x?: T | undefined) => T +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T var r6b4 = b4 != a4; >r6b4 : boolean @@ -528,8 +528,8 @@ var r7a2 = a2 === b2; var r7a3 = a3 === b3; >r7a3 : boolean >a3 === b3 : boolean ->a3 : new (x?: T | undefined) => T ->b3 : new (x?: string | undefined) => number +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number var r7a4 = a4 === b4; >r7a4 : boolean @@ -564,8 +564,8 @@ var r7b2 = b2 === a2; var r7b3 = b3 === a3; >r7b3 : boolean >b3 === a3 : boolean ->b3 : new (x?: string | undefined) => number ->a3 : new (x?: T | undefined) => T +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T var r7b4 = b4 === a4; >r7b4 : boolean @@ -601,8 +601,8 @@ var r8a2 = a2 !== b2; var r8a3 = a3 !== b3; >r8a3 : boolean >a3 !== b3 : boolean ->a3 : new (x?: T | undefined) => T ->b3 : new (x?: string | undefined) => number +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number var r8a4 = a4 !== b4; >r8a4 : boolean @@ -637,8 +637,8 @@ var r8b2 = b2 !== a2; var r8b3 = b3 !== a3; >r8b3 : boolean >b3 !== a3 : boolean ->b3 : new (x?: string | undefined) => number ->a3 : new (x?: T | undefined) => T +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T var r8b4 = b4 !== a4; >r8b4 : boolean diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types.diff b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types.diff deleted file mode 100644 index bd14b0cc045..00000000000 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types.diff +++ /dev/null @@ -1,192 +0,0 @@ ---- old.comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types -+++ new.comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types -@@= skipped -38, +38 lines =@@ - >x : string - - var a3: { new (x?: T): T }; -->a3 : new (x?: T) => T -+>a3 : new (x?: T | undefined) => T - >x : T | undefined - - var b3: { new (x?: string): number }; -->b3 : new (x?: string) => number -+>b3 : new (x?: string | undefined) => number - >x : string | undefined - - var a4: { new (...x: T[]): T }; -@@= skipped -51, +51 lines =@@ - var r1a3 = a3 < b3; - >r1a3 : boolean - >a3 < b3 : boolean -->a3 : new (x?: T) => T -->b3 : new (x?: string) => number -+>a3 : new (x?: T | undefined) => T -+>b3 : new (x?: string | undefined) => number - - var r1a4 = a4 < b4; - >r1a4 : boolean -@@= skipped -36, +36 lines =@@ - var r1b3 = b3 < a3; - >r1b3 : boolean - >b3 < a3 : boolean -->b3 : new (x?: string) => number -->a3 : new (x?: T) => T -+>b3 : new (x?: string | undefined) => number -+>a3 : new (x?: T | undefined) => T - - var r1b4 = b4 < a4; - >r1b4 : boolean -@@= skipped -37, +37 lines =@@ - var r2a3 = a3 > b3; - >r2a3 : boolean - >a3 > b3 : boolean -->a3 : new (x?: T) => T -->b3 : new (x?: string) => number -+>a3 : new (x?: T | undefined) => T -+>b3 : new (x?: string | undefined) => number - - var r2a4 = a4 > b4; - >r2a4 : boolean -@@= skipped -36, +36 lines =@@ - var r2b3 = b3 > a3; - >r2b3 : boolean - >b3 > a3 : boolean -->b3 : new (x?: string) => number -->a3 : new (x?: T) => T -+>b3 : new (x?: string | undefined) => number -+>a3 : new (x?: T | undefined) => T - - var r2b4 = b4 > a4; - >r2b4 : boolean -@@= skipped -37, +37 lines =@@ - var r3a3 = a3 <= b3; - >r3a3 : boolean - >a3 <= b3 : boolean -->a3 : new (x?: T) => T -->b3 : new (x?: string) => number -+>a3 : new (x?: T | undefined) => T -+>b3 : new (x?: string | undefined) => number - - var r3a4 = a4 <= b4; - >r3a4 : boolean -@@= skipped -36, +36 lines =@@ - var r3b3 = b3 <= a3; - >r3b3 : boolean - >b3 <= a3 : boolean -->b3 : new (x?: string) => number -->a3 : new (x?: T) => T -+>b3 : new (x?: string | undefined) => number -+>a3 : new (x?: T | undefined) => T - - var r3b4 = b4 <= a4; - >r3b4 : boolean -@@= skipped -37, +37 lines =@@ - var r4a3 = a3 >= b3; - >r4a3 : boolean - >a3 >= b3 : boolean -->a3 : new (x?: T) => T -->b3 : new (x?: string) => number -+>a3 : new (x?: T | undefined) => T -+>b3 : new (x?: string | undefined) => number - - var r4a4 = a4 >= b4; - >r4a4 : boolean -@@= skipped -36, +36 lines =@@ - var r4b3 = b3 >= a3; - >r4b3 : boolean - >b3 >= a3 : boolean -->b3 : new (x?: string) => number -->a3 : new (x?: T) => T -+>b3 : new (x?: string | undefined) => number -+>a3 : new (x?: T | undefined) => T - - var r4b4 = b4 >= a4; - >r4b4 : boolean -@@= skipped -37, +37 lines =@@ - var r5a3 = a3 == b3; - >r5a3 : boolean - >a3 == b3 : boolean -->a3 : new (x?: T) => T -->b3 : new (x?: string) => number -+>a3 : new (x?: T | undefined) => T -+>b3 : new (x?: string | undefined) => number - - var r5a4 = a4 == b4; - >r5a4 : boolean -@@= skipped -36, +36 lines =@@ - var r5b3 = b3 == a3; - >r5b3 : boolean - >b3 == a3 : boolean -->b3 : new (x?: string) => number -->a3 : new (x?: T) => T -+>b3 : new (x?: string | undefined) => number -+>a3 : new (x?: T | undefined) => T - - var r5b4 = b4 == a4; - >r5b4 : boolean -@@= skipped -37, +37 lines =@@ - var r6a3 = a3 != b3; - >r6a3 : boolean - >a3 != b3 : boolean -->a3 : new (x?: T) => T -->b3 : new (x?: string) => number -+>a3 : new (x?: T | undefined) => T -+>b3 : new (x?: string | undefined) => number - - var r6a4 = a4 != b4; - >r6a4 : boolean -@@= skipped -36, +36 lines =@@ - var r6b3 = b3 != a3; - >r6b3 : boolean - >b3 != a3 : boolean -->b3 : new (x?: string) => number -->a3 : new (x?: T) => T -+>b3 : new (x?: string | undefined) => number -+>a3 : new (x?: T | undefined) => T - - var r6b4 = b4 != a4; - >r6b4 : boolean -@@= skipped -37, +37 lines =@@ - var r7a3 = a3 === b3; - >r7a3 : boolean - >a3 === b3 : boolean -->a3 : new (x?: T) => T -->b3 : new (x?: string) => number -+>a3 : new (x?: T | undefined) => T -+>b3 : new (x?: string | undefined) => number - - var r7a4 = a4 === b4; - >r7a4 : boolean -@@= skipped -36, +36 lines =@@ - var r7b3 = b3 === a3; - >r7b3 : boolean - >b3 === a3 : boolean -->b3 : new (x?: string) => number -->a3 : new (x?: T) => T -+>b3 : new (x?: string | undefined) => number -+>a3 : new (x?: T | undefined) => T - - var r7b4 = b4 === a4; - >r7b4 : boolean -@@= skipped -37, +37 lines =@@ - var r8a3 = a3 !== b3; - >r8a3 : boolean - >a3 !== b3 : boolean -->a3 : new (x?: T) => T -->b3 : new (x?: string) => number -+>a3 : new (x?: T | undefined) => T -+>b3 : new (x?: string | undefined) => number - - var r8a4 = a4 !== b4; - >r8a4 : boolean -@@= skipped -36, +36 lines =@@ - var r8b3 = b3 !== a3; - >r8b3 : boolean - >b3 !== a3 : boolean -->b3 : new (x?: string) => number -->a3 : new (x?: T) => T -+>b3 : new (x?: string | undefined) => number -+>a3 : new (x?: T | undefined) => T - - var r8b4 = b4 !== a4; - >r8b4 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnCallSignature.types b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnCallSignature.types index 187b1f53219..fc9ac988749 100644 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnCallSignature.types +++ b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnCallSignature.types @@ -104,13 +104,13 @@ var b9: { fn(): Derived }; >fn : () => Derived var a10: { fn(a?: Base): void }; ->a10 : { fn(a?: Base | undefined): void; } ->fn : (a?: Base | undefined) => void +>a10 : { fn(a?: Base): void; } +>fn : (a?: Base) => void >a : Base | undefined var b10: { fn(a?: Derived): void }; ->b10 : { fn(a?: Derived | undefined): void; } ->fn : (a?: Derived | undefined) => void +>b10 : { fn(a?: Derived): void; } +>fn : (a?: Derived) => void >a : Derived | undefined var a11: { fn(...a: Base[]): void }; @@ -184,8 +184,8 @@ var r1a9 = a9 < b9; var r1a10 = a10 < b10; >r1a10 : boolean >a10 < b10 : boolean ->a10 : { fn(a?: Base | undefined): void; } ->b10 : { fn(a?: Derived | undefined): void; } +>a10 : { fn(a?: Base): void; } +>b10 : { fn(a?: Derived): void; } var r1a11 = a11 < b11; >r1a11 : boolean @@ -252,8 +252,8 @@ var r1b9 = b9 < a9; var r1b10 = b10 < a10; >r1b10 : boolean >b10 < a10 : boolean ->b10 : { fn(a?: Derived | undefined): void; } ->a10 : { fn(a?: Base | undefined): void; } +>b10 : { fn(a?: Derived): void; } +>a10 : { fn(a?: Base): void; } var r1b11 = b11 < a11; >r1b11 : boolean @@ -321,8 +321,8 @@ var r2a9 = a9 > b9; var r2a10 = a10 > b10; >r2a10 : boolean >a10 > b10 : boolean ->a10 : { fn(a?: Base | undefined): void; } ->b10 : { fn(a?: Derived | undefined): void; } +>a10 : { fn(a?: Base): void; } +>b10 : { fn(a?: Derived): void; } var r2a11 = a11 > b11; >r2a11 : boolean @@ -389,8 +389,8 @@ var r2b9 = b9 > a9; var r2b10 = b10 > a10; >r2b10 : boolean >b10 > a10 : boolean ->b10 : { fn(a?: Derived | undefined): void; } ->a10 : { fn(a?: Base | undefined): void; } +>b10 : { fn(a?: Derived): void; } +>a10 : { fn(a?: Base): void; } var r2b11 = b11 > a11; >r2b11 : boolean @@ -458,8 +458,8 @@ var r3a9 = a9 <= b9; var r3a10 = a10 <= b10; >r3a10 : boolean >a10 <= b10 : boolean ->a10 : { fn(a?: Base | undefined): void; } ->b10 : { fn(a?: Derived | undefined): void; } +>a10 : { fn(a?: Base): void; } +>b10 : { fn(a?: Derived): void; } var r3a11 = a11 <= b11; >r3a11 : boolean @@ -526,8 +526,8 @@ var r3b9 = b9 <= a9; var r3b10 = b10 <= a10; >r3b10 : boolean >b10 <= a10 : boolean ->b10 : { fn(a?: Derived | undefined): void; } ->a10 : { fn(a?: Base | undefined): void; } +>b10 : { fn(a?: Derived): void; } +>a10 : { fn(a?: Base): void; } var r3b11 = b11 <= a11; >r3b11 : boolean @@ -595,8 +595,8 @@ var r4a9 = a9 >= b9; var r4a10 = a10 >= b10; >r4a10 : boolean >a10 >= b10 : boolean ->a10 : { fn(a?: Base | undefined): void; } ->b10 : { fn(a?: Derived | undefined): void; } +>a10 : { fn(a?: Base): void; } +>b10 : { fn(a?: Derived): void; } var r4a11 = a11 >= b11; >r4a11 : boolean @@ -663,8 +663,8 @@ var r4b9 = b9 >= a9; var r4b10 = b10 >= a10; >r4b10 : boolean >b10 >= a10 : boolean ->b10 : { fn(a?: Derived | undefined): void; } ->a10 : { fn(a?: Base | undefined): void; } +>b10 : { fn(a?: Derived): void; } +>a10 : { fn(a?: Base): void; } var r4b11 = b11 >= a11; >r4b11 : boolean @@ -732,8 +732,8 @@ var r5a9 = a9 == b9; var r5a10 = a10 == b10; >r5a10 : boolean >a10 == b10 : boolean ->a10 : { fn(a?: Base | undefined): void; } ->b10 : { fn(a?: Derived | undefined): void; } +>a10 : { fn(a?: Base): void; } +>b10 : { fn(a?: Derived): void; } var r5a11 = a11 == b11; >r5a11 : boolean @@ -800,8 +800,8 @@ var r5b9 = b9 == a9; var r5b10 = b10 == a10; >r5b10 : boolean >b10 == a10 : boolean ->b10 : { fn(a?: Derived | undefined): void; } ->a10 : { fn(a?: Base | undefined): void; } +>b10 : { fn(a?: Derived): void; } +>a10 : { fn(a?: Base): void; } var r5b11 = b11 == a11; >r5b11 : boolean @@ -869,8 +869,8 @@ var r6a9 = a9 != b9; var r6a10 = a10 != b10; >r6a10 : boolean >a10 != b10 : boolean ->a10 : { fn(a?: Base | undefined): void; } ->b10 : { fn(a?: Derived | undefined): void; } +>a10 : { fn(a?: Base): void; } +>b10 : { fn(a?: Derived): void; } var r6a11 = a11 != b11; >r6a11 : boolean @@ -937,8 +937,8 @@ var r6b9 = b9 != a9; var r6b10 = b10 != a10; >r6b10 : boolean >b10 != a10 : boolean ->b10 : { fn(a?: Derived | undefined): void; } ->a10 : { fn(a?: Base | undefined): void; } +>b10 : { fn(a?: Derived): void; } +>a10 : { fn(a?: Base): void; } var r6b11 = b11 != a11; >r6b11 : boolean @@ -1006,8 +1006,8 @@ var r7a9 = a9 === b9; var r7a10 = a10 === b10; >r7a10 : boolean >a10 === b10 : boolean ->a10 : { fn(a?: Base | undefined): void; } ->b10 : { fn(a?: Derived | undefined): void; } +>a10 : { fn(a?: Base): void; } +>b10 : { fn(a?: Derived): void; } var r7a11 = a11 === b11; >r7a11 : boolean @@ -1074,8 +1074,8 @@ var r7b9 = b9 === a9; var r7b10 = b10 === a10; >r7b10 : boolean >b10 === a10 : boolean ->b10 : { fn(a?: Derived | undefined): void; } ->a10 : { fn(a?: Base | undefined): void; } +>b10 : { fn(a?: Derived): void; } +>a10 : { fn(a?: Base): void; } var r7b11 = b11 === a11; >r7b11 : boolean @@ -1143,8 +1143,8 @@ var r8a9 = a9 !== b9; var r8a10 = a10 !== b10; >r8a10 : boolean >a10 !== b10 : boolean ->a10 : { fn(a?: Base | undefined): void; } ->b10 : { fn(a?: Derived | undefined): void; } +>a10 : { fn(a?: Base): void; } +>b10 : { fn(a?: Derived): void; } var r8a11 = a11 !== b11; >r8a11 : boolean @@ -1211,8 +1211,8 @@ var r8b9 = b9 !== a9; var r8b10 = b10 !== a10; >r8b10 : boolean >b10 !== a10 : boolean ->b10 : { fn(a?: Derived | undefined): void; } ->a10 : { fn(a?: Base | undefined): void; } +>b10 : { fn(a?: Derived): void; } +>a10 : { fn(a?: Base): void; } var r8b11 = b11 !== a11; >r8b11 : boolean diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnCallSignature.types.diff b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnCallSignature.types.diff deleted file mode 100644 index 302e844d880..00000000000 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnCallSignature.types.diff +++ /dev/null @@ -1,196 +0,0 @@ ---- old.comparisonOperatorWithSubtypeObjectOnCallSignature.types -+++ new.comparisonOperatorWithSubtypeObjectOnCallSignature.types -@@= skipped -103, +103 lines =@@ - >fn : () => Derived - - var a10: { fn(a?: Base): void }; -->a10 : { fn(a?: Base): void; } -->fn : (a?: Base) => void -+>a10 : { fn(a?: Base | undefined): void; } -+>fn : (a?: Base | undefined) => void - >a : Base | undefined - - var b10: { fn(a?: Derived): void }; -->b10 : { fn(a?: Derived): void; } -->fn : (a?: Derived) => void -+>b10 : { fn(a?: Derived | undefined): void; } -+>fn : (a?: Derived | undefined) => void - >a : Derived | undefined - - var a11: { fn(...a: Base[]): void }; -@@= skipped -80, +80 lines =@@ - var r1a10 = a10 < b10; - >r1a10 : boolean - >a10 < b10 : boolean -->a10 : { fn(a?: Base): void; } -->b10 : { fn(a?: Derived): void; } -+>a10 : { fn(a?: Base | undefined): void; } -+>b10 : { fn(a?: Derived | undefined): void; } - - var r1a11 = a11 < b11; - >r1a11 : boolean -@@= skipped -68, +68 lines =@@ - var r1b10 = b10 < a10; - >r1b10 : boolean - >b10 < a10 : boolean -->b10 : { fn(a?: Derived): void; } -->a10 : { fn(a?: Base): void; } -+>b10 : { fn(a?: Derived | undefined): void; } -+>a10 : { fn(a?: Base | undefined): void; } - - var r1b11 = b11 < a11; - >r1b11 : boolean -@@= skipped -69, +69 lines =@@ - var r2a10 = a10 > b10; - >r2a10 : boolean - >a10 > b10 : boolean -->a10 : { fn(a?: Base): void; } -->b10 : { fn(a?: Derived): void; } -+>a10 : { fn(a?: Base | undefined): void; } -+>b10 : { fn(a?: Derived | undefined): void; } - - var r2a11 = a11 > b11; - >r2a11 : boolean -@@= skipped -68, +68 lines =@@ - var r2b10 = b10 > a10; - >r2b10 : boolean - >b10 > a10 : boolean -->b10 : { fn(a?: Derived): void; } -->a10 : { fn(a?: Base): void; } -+>b10 : { fn(a?: Derived | undefined): void; } -+>a10 : { fn(a?: Base | undefined): void; } - - var r2b11 = b11 > a11; - >r2b11 : boolean -@@= skipped -69, +69 lines =@@ - var r3a10 = a10 <= b10; - >r3a10 : boolean - >a10 <= b10 : boolean -->a10 : { fn(a?: Base): void; } -->b10 : { fn(a?: Derived): void; } -+>a10 : { fn(a?: Base | undefined): void; } -+>b10 : { fn(a?: Derived | undefined): void; } - - var r3a11 = a11 <= b11; - >r3a11 : boolean -@@= skipped -68, +68 lines =@@ - var r3b10 = b10 <= a10; - >r3b10 : boolean - >b10 <= a10 : boolean -->b10 : { fn(a?: Derived): void; } -->a10 : { fn(a?: Base): void; } -+>b10 : { fn(a?: Derived | undefined): void; } -+>a10 : { fn(a?: Base | undefined): void; } - - var r3b11 = b11 <= a11; - >r3b11 : boolean -@@= skipped -69, +69 lines =@@ - var r4a10 = a10 >= b10; - >r4a10 : boolean - >a10 >= b10 : boolean -->a10 : { fn(a?: Base): void; } -->b10 : { fn(a?: Derived): void; } -+>a10 : { fn(a?: Base | undefined): void; } -+>b10 : { fn(a?: Derived | undefined): void; } - - var r4a11 = a11 >= b11; - >r4a11 : boolean -@@= skipped -68, +68 lines =@@ - var r4b10 = b10 >= a10; - >r4b10 : boolean - >b10 >= a10 : boolean -->b10 : { fn(a?: Derived): void; } -->a10 : { fn(a?: Base): void; } -+>b10 : { fn(a?: Derived | undefined): void; } -+>a10 : { fn(a?: Base | undefined): void; } - - var r4b11 = b11 >= a11; - >r4b11 : boolean -@@= skipped -69, +69 lines =@@ - var r5a10 = a10 == b10; - >r5a10 : boolean - >a10 == b10 : boolean -->a10 : { fn(a?: Base): void; } -->b10 : { fn(a?: Derived): void; } -+>a10 : { fn(a?: Base | undefined): void; } -+>b10 : { fn(a?: Derived | undefined): void; } - - var r5a11 = a11 == b11; - >r5a11 : boolean -@@= skipped -68, +68 lines =@@ - var r5b10 = b10 == a10; - >r5b10 : boolean - >b10 == a10 : boolean -->b10 : { fn(a?: Derived): void; } -->a10 : { fn(a?: Base): void; } -+>b10 : { fn(a?: Derived | undefined): void; } -+>a10 : { fn(a?: Base | undefined): void; } - - var r5b11 = b11 == a11; - >r5b11 : boolean -@@= skipped -69, +69 lines =@@ - var r6a10 = a10 != b10; - >r6a10 : boolean - >a10 != b10 : boolean -->a10 : { fn(a?: Base): void; } -->b10 : { fn(a?: Derived): void; } -+>a10 : { fn(a?: Base | undefined): void; } -+>b10 : { fn(a?: Derived | undefined): void; } - - var r6a11 = a11 != b11; - >r6a11 : boolean -@@= skipped -68, +68 lines =@@ - var r6b10 = b10 != a10; - >r6b10 : boolean - >b10 != a10 : boolean -->b10 : { fn(a?: Derived): void; } -->a10 : { fn(a?: Base): void; } -+>b10 : { fn(a?: Derived | undefined): void; } -+>a10 : { fn(a?: Base | undefined): void; } - - var r6b11 = b11 != a11; - >r6b11 : boolean -@@= skipped -69, +69 lines =@@ - var r7a10 = a10 === b10; - >r7a10 : boolean - >a10 === b10 : boolean -->a10 : { fn(a?: Base): void; } -->b10 : { fn(a?: Derived): void; } -+>a10 : { fn(a?: Base | undefined): void; } -+>b10 : { fn(a?: Derived | undefined): void; } - - var r7a11 = a11 === b11; - >r7a11 : boolean -@@= skipped -68, +68 lines =@@ - var r7b10 = b10 === a10; - >r7b10 : boolean - >b10 === a10 : boolean -->b10 : { fn(a?: Derived): void; } -->a10 : { fn(a?: Base): void; } -+>b10 : { fn(a?: Derived | undefined): void; } -+>a10 : { fn(a?: Base | undefined): void; } - - var r7b11 = b11 === a11; - >r7b11 : boolean -@@= skipped -69, +69 lines =@@ - var r8a10 = a10 !== b10; - >r8a10 : boolean - >a10 !== b10 : boolean -->a10 : { fn(a?: Base): void; } -->b10 : { fn(a?: Derived): void; } -+>a10 : { fn(a?: Base | undefined): void; } -+>b10 : { fn(a?: Derived | undefined): void; } - - var r8a11 = a11 !== b11; - >r8a11 : boolean -@@= skipped -68, +68 lines =@@ - var r8b10 = b10 !== a10; - >r8b10 : boolean - >b10 !== a10 : boolean -->b10 : { fn(a?: Derived): void; } -->a10 : { fn(a?: Base): void; } -+>b10 : { fn(a?: Derived | undefined): void; } -+>a10 : { fn(a?: Base | undefined): void; } - - var r8b11 = b11 !== a11; - >r8b11 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types index b04623df03c..b62e6240064 100644 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types +++ b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types @@ -74,11 +74,11 @@ var b7: { new (): Derived }; >b7 : new () => Derived var a8: { new (a?: Base): Base }; ->a8 : new (a?: Base | undefined) => Base +>a8 : new (a?: Base) => Base >a : Base | undefined var b8: { new (a?: Derived): Base }; ->b8 : new (a?: Derived | undefined) => Base +>b8 : new (a?: Derived) => Base >a : Derived | undefined var a9: { new (...a: Base[]): Base }; @@ -138,8 +138,8 @@ var r1a7 = a7 < b7; var r1a8 = a8 < b8; >r1a8 : boolean >a8 < b8 : boolean ->a8 : new (a?: Base | undefined) => Base ->b8 : new (a?: Derived | undefined) => Base +>a8 : new (a?: Base) => Base +>b8 : new (a?: Derived) => Base var r1a9 = a9 < b9; >r1a9 : boolean @@ -194,8 +194,8 @@ var r1b7 = b7 < a7; var r1b8 = b8 < a8; >r1b8 : boolean >b8 < a8 : boolean ->b8 : new (a?: Derived | undefined) => Base ->a8 : new (a?: Base | undefined) => Base +>b8 : new (a?: Derived) => Base +>a8 : new (a?: Base) => Base var r1b9 = b9 < a9; >r1b9 : boolean @@ -251,8 +251,8 @@ var r2a7 = a7 > b7; var r2a8 = a8 > b8; >r2a8 : boolean >a8 > b8 : boolean ->a8 : new (a?: Base | undefined) => Base ->b8 : new (a?: Derived | undefined) => Base +>a8 : new (a?: Base) => Base +>b8 : new (a?: Derived) => Base var r2a9 = a9 > b9; >r2a9 : boolean @@ -307,8 +307,8 @@ var r2b7 = b7 > a7; var r2b8 = b8 > a8; >r2b8 : boolean >b8 > a8 : boolean ->b8 : new (a?: Derived | undefined) => Base ->a8 : new (a?: Base | undefined) => Base +>b8 : new (a?: Derived) => Base +>a8 : new (a?: Base) => Base var r2b9 = b9 > a9; >r2b9 : boolean @@ -364,8 +364,8 @@ var r3a7 = a7 <= b7; var r3a8 = a8 <= b8; >r3a8 : boolean >a8 <= b8 : boolean ->a8 : new (a?: Base | undefined) => Base ->b8 : new (a?: Derived | undefined) => Base +>a8 : new (a?: Base) => Base +>b8 : new (a?: Derived) => Base var r3a9 = a9 <= b9; >r3a9 : boolean @@ -420,8 +420,8 @@ var r3b7 = b7 <= a7; var r3b8 = b8 <= a8; >r3b8 : boolean >b8 <= a8 : boolean ->b8 : new (a?: Derived | undefined) => Base ->a8 : new (a?: Base | undefined) => Base +>b8 : new (a?: Derived) => Base +>a8 : new (a?: Base) => Base var r3b9 = b9 <= a9; >r3b9 : boolean @@ -477,8 +477,8 @@ var r4a7 = a7 >= b7; var r4a8 = a8 >= b8; >r4a8 : boolean >a8 >= b8 : boolean ->a8 : new (a?: Base | undefined) => Base ->b8 : new (a?: Derived | undefined) => Base +>a8 : new (a?: Base) => Base +>b8 : new (a?: Derived) => Base var r4a9 = a9 >= b9; >r4a9 : boolean @@ -533,8 +533,8 @@ var r4b7 = b7 >= a7; var r4b8 = b8 >= a8; >r4b8 : boolean >b8 >= a8 : boolean ->b8 : new (a?: Derived | undefined) => Base ->a8 : new (a?: Base | undefined) => Base +>b8 : new (a?: Derived) => Base +>a8 : new (a?: Base) => Base var r4b9 = b9 >= a9; >r4b9 : boolean @@ -590,8 +590,8 @@ var r5a7 = a7 == b7; var r5a8 = a8 == b8; >r5a8 : boolean >a8 == b8 : boolean ->a8 : new (a?: Base | undefined) => Base ->b8 : new (a?: Derived | undefined) => Base +>a8 : new (a?: Base) => Base +>b8 : new (a?: Derived) => Base var r5a9 = a9 == b9; >r5a9 : boolean @@ -646,8 +646,8 @@ var r5b7 = b7 == a7; var r5b8 = b8 == a8; >r5b8 : boolean >b8 == a8 : boolean ->b8 : new (a?: Derived | undefined) => Base ->a8 : new (a?: Base | undefined) => Base +>b8 : new (a?: Derived) => Base +>a8 : new (a?: Base) => Base var r5b9 = b9 == a9; >r5b9 : boolean @@ -703,8 +703,8 @@ var r6a7 = a7 != b7; var r6a8 = a8 != b8; >r6a8 : boolean >a8 != b8 : boolean ->a8 : new (a?: Base | undefined) => Base ->b8 : new (a?: Derived | undefined) => Base +>a8 : new (a?: Base) => Base +>b8 : new (a?: Derived) => Base var r6a9 = a9 != b9; >r6a9 : boolean @@ -759,8 +759,8 @@ var r6b7 = b7 != a7; var r6b8 = b8 != a8; >r6b8 : boolean >b8 != a8 : boolean ->b8 : new (a?: Derived | undefined) => Base ->a8 : new (a?: Base | undefined) => Base +>b8 : new (a?: Derived) => Base +>a8 : new (a?: Base) => Base var r6b9 = b9 != a9; >r6b9 : boolean @@ -816,8 +816,8 @@ var r7a7 = a7 === b7; var r7a8 = a8 === b8; >r7a8 : boolean >a8 === b8 : boolean ->a8 : new (a?: Base | undefined) => Base ->b8 : new (a?: Derived | undefined) => Base +>a8 : new (a?: Base) => Base +>b8 : new (a?: Derived) => Base var r7a9 = a9 === b9; >r7a9 : boolean @@ -872,8 +872,8 @@ var r7b7 = b7 === a7; var r7b8 = b8 === a8; >r7b8 : boolean >b8 === a8 : boolean ->b8 : new (a?: Derived | undefined) => Base ->a8 : new (a?: Base | undefined) => Base +>b8 : new (a?: Derived) => Base +>a8 : new (a?: Base) => Base var r7b9 = b9 === a9; >r7b9 : boolean @@ -929,8 +929,8 @@ var r8a7 = a7 !== b7; var r8a8 = a8 !== b8; >r8a8 : boolean >a8 !== b8 : boolean ->a8 : new (a?: Base | undefined) => Base ->b8 : new (a?: Derived | undefined) => Base +>a8 : new (a?: Base) => Base +>b8 : new (a?: Derived) => Base var r8a9 = a9 !== b9; >r8a9 : boolean @@ -985,8 +985,8 @@ var r8b7 = b7 !== a7; var r8b8 = b8 !== a8; >r8b8 : boolean >b8 !== a8 : boolean ->b8 : new (a?: Derived | undefined) => Base ->a8 : new (a?: Base | undefined) => Base +>b8 : new (a?: Derived) => Base +>a8 : new (a?: Base) => Base var r8b9 = b9 !== a9; >r8b9 : boolean diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types.diff b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types.diff deleted file mode 100644 index 90f5162e2d0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types.diff +++ /dev/null @@ -1,192 +0,0 @@ ---- old.comparisonOperatorWithSubtypeObjectOnConstructorSignature.types -+++ new.comparisonOperatorWithSubtypeObjectOnConstructorSignature.types -@@= skipped -73, +73 lines =@@ - >b7 : new () => Derived - - var a8: { new (a?: Base): Base }; -->a8 : new (a?: Base) => Base -+>a8 : new (a?: Base | undefined) => Base - >a : Base | undefined - - var b8: { new (a?: Derived): Base }; -->b8 : new (a?: Derived) => Base -+>b8 : new (a?: Derived | undefined) => Base - >a : Derived | undefined - - var a9: { new (...a: Base[]): Base }; -@@= skipped -64, +64 lines =@@ - var r1a8 = a8 < b8; - >r1a8 : boolean - >a8 < b8 : boolean -->a8 : new (a?: Base) => Base -->b8 : new (a?: Derived) => Base -+>a8 : new (a?: Base | undefined) => Base -+>b8 : new (a?: Derived | undefined) => Base - - var r1a9 = a9 < b9; - >r1a9 : boolean -@@= skipped -56, +56 lines =@@ - var r1b8 = b8 < a8; - >r1b8 : boolean - >b8 < a8 : boolean -->b8 : new (a?: Derived) => Base -->a8 : new (a?: Base) => Base -+>b8 : new (a?: Derived | undefined) => Base -+>a8 : new (a?: Base | undefined) => Base - - var r1b9 = b9 < a9; - >r1b9 : boolean -@@= skipped -57, +57 lines =@@ - var r2a8 = a8 > b8; - >r2a8 : boolean - >a8 > b8 : boolean -->a8 : new (a?: Base) => Base -->b8 : new (a?: Derived) => Base -+>a8 : new (a?: Base | undefined) => Base -+>b8 : new (a?: Derived | undefined) => Base - - var r2a9 = a9 > b9; - >r2a9 : boolean -@@= skipped -56, +56 lines =@@ - var r2b8 = b8 > a8; - >r2b8 : boolean - >b8 > a8 : boolean -->b8 : new (a?: Derived) => Base -->a8 : new (a?: Base) => Base -+>b8 : new (a?: Derived | undefined) => Base -+>a8 : new (a?: Base | undefined) => Base - - var r2b9 = b9 > a9; - >r2b9 : boolean -@@= skipped -57, +57 lines =@@ - var r3a8 = a8 <= b8; - >r3a8 : boolean - >a8 <= b8 : boolean -->a8 : new (a?: Base) => Base -->b8 : new (a?: Derived) => Base -+>a8 : new (a?: Base | undefined) => Base -+>b8 : new (a?: Derived | undefined) => Base - - var r3a9 = a9 <= b9; - >r3a9 : boolean -@@= skipped -56, +56 lines =@@ - var r3b8 = b8 <= a8; - >r3b8 : boolean - >b8 <= a8 : boolean -->b8 : new (a?: Derived) => Base -->a8 : new (a?: Base) => Base -+>b8 : new (a?: Derived | undefined) => Base -+>a8 : new (a?: Base | undefined) => Base - - var r3b9 = b9 <= a9; - >r3b9 : boolean -@@= skipped -57, +57 lines =@@ - var r4a8 = a8 >= b8; - >r4a8 : boolean - >a8 >= b8 : boolean -->a8 : new (a?: Base) => Base -->b8 : new (a?: Derived) => Base -+>a8 : new (a?: Base | undefined) => Base -+>b8 : new (a?: Derived | undefined) => Base - - var r4a9 = a9 >= b9; - >r4a9 : boolean -@@= skipped -56, +56 lines =@@ - var r4b8 = b8 >= a8; - >r4b8 : boolean - >b8 >= a8 : boolean -->b8 : new (a?: Derived) => Base -->a8 : new (a?: Base) => Base -+>b8 : new (a?: Derived | undefined) => Base -+>a8 : new (a?: Base | undefined) => Base - - var r4b9 = b9 >= a9; - >r4b9 : boolean -@@= skipped -57, +57 lines =@@ - var r5a8 = a8 == b8; - >r5a8 : boolean - >a8 == b8 : boolean -->a8 : new (a?: Base) => Base -->b8 : new (a?: Derived) => Base -+>a8 : new (a?: Base | undefined) => Base -+>b8 : new (a?: Derived | undefined) => Base - - var r5a9 = a9 == b9; - >r5a9 : boolean -@@= skipped -56, +56 lines =@@ - var r5b8 = b8 == a8; - >r5b8 : boolean - >b8 == a8 : boolean -->b8 : new (a?: Derived) => Base -->a8 : new (a?: Base) => Base -+>b8 : new (a?: Derived | undefined) => Base -+>a8 : new (a?: Base | undefined) => Base - - var r5b9 = b9 == a9; - >r5b9 : boolean -@@= skipped -57, +57 lines =@@ - var r6a8 = a8 != b8; - >r6a8 : boolean - >a8 != b8 : boolean -->a8 : new (a?: Base) => Base -->b8 : new (a?: Derived) => Base -+>a8 : new (a?: Base | undefined) => Base -+>b8 : new (a?: Derived | undefined) => Base - - var r6a9 = a9 != b9; - >r6a9 : boolean -@@= skipped -56, +56 lines =@@ - var r6b8 = b8 != a8; - >r6b8 : boolean - >b8 != a8 : boolean -->b8 : new (a?: Derived) => Base -->a8 : new (a?: Base) => Base -+>b8 : new (a?: Derived | undefined) => Base -+>a8 : new (a?: Base | undefined) => Base - - var r6b9 = b9 != a9; - >r6b9 : boolean -@@= skipped -57, +57 lines =@@ - var r7a8 = a8 === b8; - >r7a8 : boolean - >a8 === b8 : boolean -->a8 : new (a?: Base) => Base -->b8 : new (a?: Derived) => Base -+>a8 : new (a?: Base | undefined) => Base -+>b8 : new (a?: Derived | undefined) => Base - - var r7a9 = a9 === b9; - >r7a9 : boolean -@@= skipped -56, +56 lines =@@ - var r7b8 = b8 === a8; - >r7b8 : boolean - >b8 === a8 : boolean -->b8 : new (a?: Derived) => Base -->a8 : new (a?: Base) => Base -+>b8 : new (a?: Derived | undefined) => Base -+>a8 : new (a?: Base | undefined) => Base - - var r7b9 = b9 === a9; - >r7b9 : boolean -@@= skipped -57, +57 lines =@@ - var r8a8 = a8 !== b8; - >r8a8 : boolean - >a8 !== b8 : boolean -->a8 : new (a?: Base) => Base -->b8 : new (a?: Derived) => Base -+>a8 : new (a?: Base | undefined) => Base -+>b8 : new (a?: Derived | undefined) => Base - - var r8a9 = a9 !== b9; - >r8a9 : boolean -@@= skipped -56, +56 lines =@@ - var r8b8 = b8 !== a8; - >r8b8 : boolean - >b8 !== a8 : boolean -->b8 : new (a?: Derived) => Base -->a8 : new (a?: Base) => Base -+>b8 : new (a?: Derived | undefined) => Base -+>a8 : new (a?: Base | undefined) => Base - - var r8b9 = b9 !== a9; - >r8b9 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types index 51a0fb8fb36..9191c2a694f 100644 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types +++ b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types @@ -50,13 +50,13 @@ var b3: { fn(x: string, y: number): string }; >y : number var a4: { fn(x?: T): T }; ->a4 : { fn(x?: T | undefined): T; } ->fn : (x?: T | undefined) => T +>a4 : { fn(x?: T): T; } +>fn : (x?: T) => T >x : T | undefined var b4: { fn(x?: string): string }; ->b4 : { fn(x?: string | undefined): string; } ->fn : (x?: string | undefined) => string +>b4 : { fn(x?: string): string; } +>fn : (x?: string) => string >x : string | undefined var a5: { fn(...x: T[]): T }; @@ -110,8 +110,8 @@ var r1a3 = a3 < b3; var r1a4 = a4 < b4; >r1a4 : boolean >a4 < b4 : boolean ->a4 : { fn(x?: T | undefined): T; } ->b4 : { fn(x?: string | undefined): string; } +>a4 : { fn(x?: T): T; } +>b4 : { fn(x?: string): string; } var r1a5 = a5 < b5; >r1a5 : boolean @@ -148,8 +148,8 @@ var r1b3 = b3 < a3; var r1b4 = b4 < a4; >r1b4 : boolean >b4 < a4 : boolean ->b4 : { fn(x?: string | undefined): string; } ->a4 : { fn(x?: T | undefined): T; } +>b4 : { fn(x?: string): string; } +>a4 : { fn(x?: T): T; } var r1b5 = b5 < a5; >r1b5 : boolean @@ -187,8 +187,8 @@ var r2a3 = a3 > b3; var r2a4 = a4 > b4; >r2a4 : boolean >a4 > b4 : boolean ->a4 : { fn(x?: T | undefined): T; } ->b4 : { fn(x?: string | undefined): string; } +>a4 : { fn(x?: T): T; } +>b4 : { fn(x?: string): string; } var r2a5 = a5 > b5; >r2a5 : boolean @@ -225,8 +225,8 @@ var r2b3 = b3 > a3; var r2b4 = b4 > a4; >r2b4 : boolean >b4 > a4 : boolean ->b4 : { fn(x?: string | undefined): string; } ->a4 : { fn(x?: T | undefined): T; } +>b4 : { fn(x?: string): string; } +>a4 : { fn(x?: T): T; } var r2b5 = b5 > a5; >r2b5 : boolean @@ -264,8 +264,8 @@ var r3a3 = a3 <= b3; var r3a4 = a4 <= b4; >r3a4 : boolean >a4 <= b4 : boolean ->a4 : { fn(x?: T | undefined): T; } ->b4 : { fn(x?: string | undefined): string; } +>a4 : { fn(x?: T): T; } +>b4 : { fn(x?: string): string; } var r3a5 = a5 <= b5; >r3a5 : boolean @@ -302,8 +302,8 @@ var r3b3 = b3 <= a3; var r3b4 = b4 <= a4; >r3b4 : boolean >b4 <= a4 : boolean ->b4 : { fn(x?: string | undefined): string; } ->a4 : { fn(x?: T | undefined): T; } +>b4 : { fn(x?: string): string; } +>a4 : { fn(x?: T): T; } var r3b5 = b5 <= a5; >r3b5 : boolean @@ -341,8 +341,8 @@ var r4a3 = a3 >= b3; var r4a4 = a4 >= b4; >r4a4 : boolean >a4 >= b4 : boolean ->a4 : { fn(x?: T | undefined): T; } ->b4 : { fn(x?: string | undefined): string; } +>a4 : { fn(x?: T): T; } +>b4 : { fn(x?: string): string; } var r4a5 = a5 >= b5; >r4a5 : boolean @@ -379,8 +379,8 @@ var r4b3 = b3 >= a3; var r4b4 = b4 >= a4; >r4b4 : boolean >b4 >= a4 : boolean ->b4 : { fn(x?: string | undefined): string; } ->a4 : { fn(x?: T | undefined): T; } +>b4 : { fn(x?: string): string; } +>a4 : { fn(x?: T): T; } var r4b5 = b5 >= a5; >r4b5 : boolean @@ -418,8 +418,8 @@ var r5a3 = a3 == b3; var r5a4 = a4 == b4; >r5a4 : boolean >a4 == b4 : boolean ->a4 : { fn(x?: T | undefined): T; } ->b4 : { fn(x?: string | undefined): string; } +>a4 : { fn(x?: T): T; } +>b4 : { fn(x?: string): string; } var r5a5 = a5 == b5; >r5a5 : boolean @@ -456,8 +456,8 @@ var r5b3 = b3 == a3; var r5b4 = b4 == a4; >r5b4 : boolean >b4 == a4 : boolean ->b4 : { fn(x?: string | undefined): string; } ->a4 : { fn(x?: T | undefined): T; } +>b4 : { fn(x?: string): string; } +>a4 : { fn(x?: T): T; } var r5b5 = b5 == a5; >r5b5 : boolean @@ -495,8 +495,8 @@ var r6a3 = a3 != b3; var r6a4 = a4 != b4; >r6a4 : boolean >a4 != b4 : boolean ->a4 : { fn(x?: T | undefined): T; } ->b4 : { fn(x?: string | undefined): string; } +>a4 : { fn(x?: T): T; } +>b4 : { fn(x?: string): string; } var r6a5 = a5 != b5; >r6a5 : boolean @@ -533,8 +533,8 @@ var r6b3 = b3 != a3; var r6b4 = b4 != a4; >r6b4 : boolean >b4 != a4 : boolean ->b4 : { fn(x?: string | undefined): string; } ->a4 : { fn(x?: T | undefined): T; } +>b4 : { fn(x?: string): string; } +>a4 : { fn(x?: T): T; } var r6b5 = b5 != a5; >r6b5 : boolean @@ -572,8 +572,8 @@ var r7a3 = a3 === b3; var r7a4 = a4 === b4; >r7a4 : boolean >a4 === b4 : boolean ->a4 : { fn(x?: T | undefined): T; } ->b4 : { fn(x?: string | undefined): string; } +>a4 : { fn(x?: T): T; } +>b4 : { fn(x?: string): string; } var r7a5 = a5 === b5; >r7a5 : boolean @@ -610,8 +610,8 @@ var r7b3 = b3 === a3; var r7b4 = b4 === a4; >r7b4 : boolean >b4 === a4 : boolean ->b4 : { fn(x?: string | undefined): string; } ->a4 : { fn(x?: T | undefined): T; } +>b4 : { fn(x?: string): string; } +>a4 : { fn(x?: T): T; } var r7b5 = b5 === a5; >r7b5 : boolean @@ -649,8 +649,8 @@ var r8a3 = a3 !== b3; var r8a4 = a4 !== b4; >r8a4 : boolean >a4 !== b4 : boolean ->a4 : { fn(x?: T | undefined): T; } ->b4 : { fn(x?: string | undefined): string; } +>a4 : { fn(x?: T): T; } +>b4 : { fn(x?: string): string; } var r8a5 = a5 !== b5; >r8a5 : boolean @@ -687,8 +687,8 @@ var r8b3 = b3 !== a3; var r8b4 = b4 !== a4; >r8b4 : boolean >b4 !== a4 : boolean ->b4 : { fn(x?: string | undefined): string; } ->a4 : { fn(x?: T | undefined): T; } +>b4 : { fn(x?: string): string; } +>a4 : { fn(x?: T): T; } var r8b5 = b5 !== a5; >r8b5 : boolean diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types.diff b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types.diff deleted file mode 100644 index 1cd38497dfd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types.diff +++ /dev/null @@ -1,196 +0,0 @@ ---- old.comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types -+++ new.comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types -@@= skipped -49, +49 lines =@@ - >y : number - - var a4: { fn(x?: T): T }; -->a4 : { fn(x?: T): T; } -->fn : (x?: T) => T -+>a4 : { fn(x?: T | undefined): T; } -+>fn : (x?: T | undefined) => T - >x : T | undefined - - var b4: { fn(x?: string): string }; -->b4 : { fn(x?: string): string; } -->fn : (x?: string) => string -+>b4 : { fn(x?: string | undefined): string; } -+>fn : (x?: string | undefined) => string - >x : string | undefined - - var a5: { fn(...x: T[]): T }; -@@= skipped -60, +60 lines =@@ - var r1a4 = a4 < b4; - >r1a4 : boolean - >a4 < b4 : boolean -->a4 : { fn(x?: T): T; } -->b4 : { fn(x?: string): string; } -+>a4 : { fn(x?: T | undefined): T; } -+>b4 : { fn(x?: string | undefined): string; } - - var r1a5 = a5 < b5; - >r1a5 : boolean -@@= skipped -38, +38 lines =@@ - var r1b4 = b4 < a4; - >r1b4 : boolean - >b4 < a4 : boolean -->b4 : { fn(x?: string): string; } -->a4 : { fn(x?: T): T; } -+>b4 : { fn(x?: string | undefined): string; } -+>a4 : { fn(x?: T | undefined): T; } - - var r1b5 = b5 < a5; - >r1b5 : boolean -@@= skipped -39, +39 lines =@@ - var r2a4 = a4 > b4; - >r2a4 : boolean - >a4 > b4 : boolean -->a4 : { fn(x?: T): T; } -->b4 : { fn(x?: string): string; } -+>a4 : { fn(x?: T | undefined): T; } -+>b4 : { fn(x?: string | undefined): string; } - - var r2a5 = a5 > b5; - >r2a5 : boolean -@@= skipped -38, +38 lines =@@ - var r2b4 = b4 > a4; - >r2b4 : boolean - >b4 > a4 : boolean -->b4 : { fn(x?: string): string; } -->a4 : { fn(x?: T): T; } -+>b4 : { fn(x?: string | undefined): string; } -+>a4 : { fn(x?: T | undefined): T; } - - var r2b5 = b5 > a5; - >r2b5 : boolean -@@= skipped -39, +39 lines =@@ - var r3a4 = a4 <= b4; - >r3a4 : boolean - >a4 <= b4 : boolean -->a4 : { fn(x?: T): T; } -->b4 : { fn(x?: string): string; } -+>a4 : { fn(x?: T | undefined): T; } -+>b4 : { fn(x?: string | undefined): string; } - - var r3a5 = a5 <= b5; - >r3a5 : boolean -@@= skipped -38, +38 lines =@@ - var r3b4 = b4 <= a4; - >r3b4 : boolean - >b4 <= a4 : boolean -->b4 : { fn(x?: string): string; } -->a4 : { fn(x?: T): T; } -+>b4 : { fn(x?: string | undefined): string; } -+>a4 : { fn(x?: T | undefined): T; } - - var r3b5 = b5 <= a5; - >r3b5 : boolean -@@= skipped -39, +39 lines =@@ - var r4a4 = a4 >= b4; - >r4a4 : boolean - >a4 >= b4 : boolean -->a4 : { fn(x?: T): T; } -->b4 : { fn(x?: string): string; } -+>a4 : { fn(x?: T | undefined): T; } -+>b4 : { fn(x?: string | undefined): string; } - - var r4a5 = a5 >= b5; - >r4a5 : boolean -@@= skipped -38, +38 lines =@@ - var r4b4 = b4 >= a4; - >r4b4 : boolean - >b4 >= a4 : boolean -->b4 : { fn(x?: string): string; } -->a4 : { fn(x?: T): T; } -+>b4 : { fn(x?: string | undefined): string; } -+>a4 : { fn(x?: T | undefined): T; } - - var r4b5 = b5 >= a5; - >r4b5 : boolean -@@= skipped -39, +39 lines =@@ - var r5a4 = a4 == b4; - >r5a4 : boolean - >a4 == b4 : boolean -->a4 : { fn(x?: T): T; } -->b4 : { fn(x?: string): string; } -+>a4 : { fn(x?: T | undefined): T; } -+>b4 : { fn(x?: string | undefined): string; } - - var r5a5 = a5 == b5; - >r5a5 : boolean -@@= skipped -38, +38 lines =@@ - var r5b4 = b4 == a4; - >r5b4 : boolean - >b4 == a4 : boolean -->b4 : { fn(x?: string): string; } -->a4 : { fn(x?: T): T; } -+>b4 : { fn(x?: string | undefined): string; } -+>a4 : { fn(x?: T | undefined): T; } - - var r5b5 = b5 == a5; - >r5b5 : boolean -@@= skipped -39, +39 lines =@@ - var r6a4 = a4 != b4; - >r6a4 : boolean - >a4 != b4 : boolean -->a4 : { fn(x?: T): T; } -->b4 : { fn(x?: string): string; } -+>a4 : { fn(x?: T | undefined): T; } -+>b4 : { fn(x?: string | undefined): string; } - - var r6a5 = a5 != b5; - >r6a5 : boolean -@@= skipped -38, +38 lines =@@ - var r6b4 = b4 != a4; - >r6b4 : boolean - >b4 != a4 : boolean -->b4 : { fn(x?: string): string; } -->a4 : { fn(x?: T): T; } -+>b4 : { fn(x?: string | undefined): string; } -+>a4 : { fn(x?: T | undefined): T; } - - var r6b5 = b5 != a5; - >r6b5 : boolean -@@= skipped -39, +39 lines =@@ - var r7a4 = a4 === b4; - >r7a4 : boolean - >a4 === b4 : boolean -->a4 : { fn(x?: T): T; } -->b4 : { fn(x?: string): string; } -+>a4 : { fn(x?: T | undefined): T; } -+>b4 : { fn(x?: string | undefined): string; } - - var r7a5 = a5 === b5; - >r7a5 : boolean -@@= skipped -38, +38 lines =@@ - var r7b4 = b4 === a4; - >r7b4 : boolean - >b4 === a4 : boolean -->b4 : { fn(x?: string): string; } -->a4 : { fn(x?: T): T; } -+>b4 : { fn(x?: string | undefined): string; } -+>a4 : { fn(x?: T | undefined): T; } - - var r7b5 = b5 === a5; - >r7b5 : boolean -@@= skipped -39, +39 lines =@@ - var r8a4 = a4 !== b4; - >r8a4 : boolean - >a4 !== b4 : boolean -->a4 : { fn(x?: T): T; } -->b4 : { fn(x?: string): string; } -+>a4 : { fn(x?: T | undefined): T; } -+>b4 : { fn(x?: string | undefined): string; } - - var r8a5 = a5 !== b5; - >r8a5 : boolean -@@= skipped -38, +38 lines =@@ - var r8b4 = b4 !== a4; - >r8b4 : boolean - >b4 !== a4 : boolean -->b4 : { fn(x?: string): string; } -->a4 : { fn(x?: T): T; } -+>b4 : { fn(x?: string | undefined): string; } -+>a4 : { fn(x?: T | undefined): T; } - - var r8b5 = b5 !== a5; - >r8b5 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types index 11cbb9f3150..acef262252a 100644 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types +++ b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types @@ -44,11 +44,11 @@ var b3: { new (x: string, y: number): string }; >y : number var a4: { new (x?: T): T }; ->a4 : new (x?: T | undefined) => T +>a4 : new (x?: T) => T >x : T | undefined var b4: { new (x?: string): string }; ->b4 : new (x?: string | undefined) => string +>b4 : new (x?: string) => string >x : string | undefined var a5: { new (...x: T[]): T }; @@ -97,8 +97,8 @@ var r1a3 = a3 < b3; var r1a4 = a4 < b4; >r1a4 : boolean >a4 < b4 : boolean ->a4 : new (x?: T | undefined) => T ->b4 : new (x?: string | undefined) => string +>a4 : new (x?: T) => T +>b4 : new (x?: string) => string var r1a5 = a5 < b5; >r1a5 : boolean @@ -135,8 +135,8 @@ var r1b3 = b3 < a3; var r1b4 = b4 < a4; >r1b4 : boolean >b4 < a4 : boolean ->b4 : new (x?: string | undefined) => string ->a4 : new (x?: T | undefined) => T +>b4 : new (x?: string) => string +>a4 : new (x?: T) => T var r1b5 = b5 < a5; >r1b5 : boolean @@ -174,8 +174,8 @@ var r2a3 = a3 > b3; var r2a4 = a4 > b4; >r2a4 : boolean >a4 > b4 : boolean ->a4 : new (x?: T | undefined) => T ->b4 : new (x?: string | undefined) => string +>a4 : new (x?: T) => T +>b4 : new (x?: string) => string var r2a5 = a5 > b5; >r2a5 : boolean @@ -212,8 +212,8 @@ var r2b3 = b3 > a3; var r2b4 = b4 > a4; >r2b4 : boolean >b4 > a4 : boolean ->b4 : new (x?: string | undefined) => string ->a4 : new (x?: T | undefined) => T +>b4 : new (x?: string) => string +>a4 : new (x?: T) => T var r2b5 = b5 > a5; >r2b5 : boolean @@ -251,8 +251,8 @@ var r3a3 = a3 <= b3; var r3a4 = a4 <= b4; >r3a4 : boolean >a4 <= b4 : boolean ->a4 : new (x?: T | undefined) => T ->b4 : new (x?: string | undefined) => string +>a4 : new (x?: T) => T +>b4 : new (x?: string) => string var r3a5 = a5 <= b5; >r3a5 : boolean @@ -289,8 +289,8 @@ var r3b3 = b3 <= a3; var r3b4 = b4 <= a4; >r3b4 : boolean >b4 <= a4 : boolean ->b4 : new (x?: string | undefined) => string ->a4 : new (x?: T | undefined) => T +>b4 : new (x?: string) => string +>a4 : new (x?: T) => T var r3b5 = b5 <= a5; >r3b5 : boolean @@ -328,8 +328,8 @@ var r4a3 = a3 >= b3; var r4a4 = a4 >= b4; >r4a4 : boolean >a4 >= b4 : boolean ->a4 : new (x?: T | undefined) => T ->b4 : new (x?: string | undefined) => string +>a4 : new (x?: T) => T +>b4 : new (x?: string) => string var r4a5 = a5 >= b5; >r4a5 : boolean @@ -366,8 +366,8 @@ var r4b3 = b3 >= a3; var r4b4 = b4 >= a4; >r4b4 : boolean >b4 >= a4 : boolean ->b4 : new (x?: string | undefined) => string ->a4 : new (x?: T | undefined) => T +>b4 : new (x?: string) => string +>a4 : new (x?: T) => T var r4b5 = b5 >= a5; >r4b5 : boolean @@ -405,8 +405,8 @@ var r5a3 = a3 == b3; var r5a4 = a4 == b4; >r5a4 : boolean >a4 == b4 : boolean ->a4 : new (x?: T | undefined) => T ->b4 : new (x?: string | undefined) => string +>a4 : new (x?: T) => T +>b4 : new (x?: string) => string var r5a5 = a5 == b5; >r5a5 : boolean @@ -443,8 +443,8 @@ var r5b3 = b3 == a3; var r5b4 = b4 == a4; >r5b4 : boolean >b4 == a4 : boolean ->b4 : new (x?: string | undefined) => string ->a4 : new (x?: T | undefined) => T +>b4 : new (x?: string) => string +>a4 : new (x?: T) => T var r5b5 = b5 == a5; >r5b5 : boolean @@ -482,8 +482,8 @@ var r6a3 = a3 != b3; var r6a4 = a4 != b4; >r6a4 : boolean >a4 != b4 : boolean ->a4 : new (x?: T | undefined) => T ->b4 : new (x?: string | undefined) => string +>a4 : new (x?: T) => T +>b4 : new (x?: string) => string var r6a5 = a5 != b5; >r6a5 : boolean @@ -520,8 +520,8 @@ var r6b3 = b3 != a3; var r6b4 = b4 != a4; >r6b4 : boolean >b4 != a4 : boolean ->b4 : new (x?: string | undefined) => string ->a4 : new (x?: T | undefined) => T +>b4 : new (x?: string) => string +>a4 : new (x?: T) => T var r6b5 = b5 != a5; >r6b5 : boolean @@ -559,8 +559,8 @@ var r7a3 = a3 === b3; var r7a4 = a4 === b4; >r7a4 : boolean >a4 === b4 : boolean ->a4 : new (x?: T | undefined) => T ->b4 : new (x?: string | undefined) => string +>a4 : new (x?: T) => T +>b4 : new (x?: string) => string var r7a5 = a5 === b5; >r7a5 : boolean @@ -597,8 +597,8 @@ var r7b3 = b3 === a3; var r7b4 = b4 === a4; >r7b4 : boolean >b4 === a4 : boolean ->b4 : new (x?: string | undefined) => string ->a4 : new (x?: T | undefined) => T +>b4 : new (x?: string) => string +>a4 : new (x?: T) => T var r7b5 = b5 === a5; >r7b5 : boolean @@ -636,8 +636,8 @@ var r8a3 = a3 !== b3; var r8a4 = a4 !== b4; >r8a4 : boolean >a4 !== b4 : boolean ->a4 : new (x?: T | undefined) => T ->b4 : new (x?: string | undefined) => string +>a4 : new (x?: T) => T +>b4 : new (x?: string) => string var r8a5 = a5 !== b5; >r8a5 : boolean @@ -674,8 +674,8 @@ var r8b3 = b3 !== a3; var r8b4 = b4 !== a4; >r8b4 : boolean >b4 !== a4 : boolean ->b4 : new (x?: string | undefined) => string ->a4 : new (x?: T | undefined) => T +>b4 : new (x?: string) => string +>a4 : new (x?: T) => T var r8b5 = b5 !== a5; >r8b5 : boolean diff --git a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types.diff b/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types.diff deleted file mode 100644 index 47764cb6050..00000000000 --- a/testdata/baselines/reference/submodule/conformance/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types.diff +++ /dev/null @@ -1,192 +0,0 @@ ---- old.comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types -+++ new.comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types -@@= skipped -43, +43 lines =@@ - >y : number - - var a4: { new (x?: T): T }; -->a4 : new (x?: T) => T -+>a4 : new (x?: T | undefined) => T - >x : T | undefined - - var b4: { new (x?: string): string }; -->b4 : new (x?: string) => string -+>b4 : new (x?: string | undefined) => string - >x : string | undefined - - var a5: { new (...x: T[]): T }; -@@= skipped -53, +53 lines =@@ - var r1a4 = a4 < b4; - >r1a4 : boolean - >a4 < b4 : boolean -->a4 : new (x?: T) => T -->b4 : new (x?: string) => string -+>a4 : new (x?: T | undefined) => T -+>b4 : new (x?: string | undefined) => string - - var r1a5 = a5 < b5; - >r1a5 : boolean -@@= skipped -38, +38 lines =@@ - var r1b4 = b4 < a4; - >r1b4 : boolean - >b4 < a4 : boolean -->b4 : new (x?: string) => string -->a4 : new (x?: T) => T -+>b4 : new (x?: string | undefined) => string -+>a4 : new (x?: T | undefined) => T - - var r1b5 = b5 < a5; - >r1b5 : boolean -@@= skipped -39, +39 lines =@@ - var r2a4 = a4 > b4; - >r2a4 : boolean - >a4 > b4 : boolean -->a4 : new (x?: T) => T -->b4 : new (x?: string) => string -+>a4 : new (x?: T | undefined) => T -+>b4 : new (x?: string | undefined) => string - - var r2a5 = a5 > b5; - >r2a5 : boolean -@@= skipped -38, +38 lines =@@ - var r2b4 = b4 > a4; - >r2b4 : boolean - >b4 > a4 : boolean -->b4 : new (x?: string) => string -->a4 : new (x?: T) => T -+>b4 : new (x?: string | undefined) => string -+>a4 : new (x?: T | undefined) => T - - var r2b5 = b5 > a5; - >r2b5 : boolean -@@= skipped -39, +39 lines =@@ - var r3a4 = a4 <= b4; - >r3a4 : boolean - >a4 <= b4 : boolean -->a4 : new (x?: T) => T -->b4 : new (x?: string) => string -+>a4 : new (x?: T | undefined) => T -+>b4 : new (x?: string | undefined) => string - - var r3a5 = a5 <= b5; - >r3a5 : boolean -@@= skipped -38, +38 lines =@@ - var r3b4 = b4 <= a4; - >r3b4 : boolean - >b4 <= a4 : boolean -->b4 : new (x?: string) => string -->a4 : new (x?: T) => T -+>b4 : new (x?: string | undefined) => string -+>a4 : new (x?: T | undefined) => T - - var r3b5 = b5 <= a5; - >r3b5 : boolean -@@= skipped -39, +39 lines =@@ - var r4a4 = a4 >= b4; - >r4a4 : boolean - >a4 >= b4 : boolean -->a4 : new (x?: T) => T -->b4 : new (x?: string) => string -+>a4 : new (x?: T | undefined) => T -+>b4 : new (x?: string | undefined) => string - - var r4a5 = a5 >= b5; - >r4a5 : boolean -@@= skipped -38, +38 lines =@@ - var r4b4 = b4 >= a4; - >r4b4 : boolean - >b4 >= a4 : boolean -->b4 : new (x?: string) => string -->a4 : new (x?: T) => T -+>b4 : new (x?: string | undefined) => string -+>a4 : new (x?: T | undefined) => T - - var r4b5 = b5 >= a5; - >r4b5 : boolean -@@= skipped -39, +39 lines =@@ - var r5a4 = a4 == b4; - >r5a4 : boolean - >a4 == b4 : boolean -->a4 : new (x?: T) => T -->b4 : new (x?: string) => string -+>a4 : new (x?: T | undefined) => T -+>b4 : new (x?: string | undefined) => string - - var r5a5 = a5 == b5; - >r5a5 : boolean -@@= skipped -38, +38 lines =@@ - var r5b4 = b4 == a4; - >r5b4 : boolean - >b4 == a4 : boolean -->b4 : new (x?: string) => string -->a4 : new (x?: T) => T -+>b4 : new (x?: string | undefined) => string -+>a4 : new (x?: T | undefined) => T - - var r5b5 = b5 == a5; - >r5b5 : boolean -@@= skipped -39, +39 lines =@@ - var r6a4 = a4 != b4; - >r6a4 : boolean - >a4 != b4 : boolean -->a4 : new (x?: T) => T -->b4 : new (x?: string) => string -+>a4 : new (x?: T | undefined) => T -+>b4 : new (x?: string | undefined) => string - - var r6a5 = a5 != b5; - >r6a5 : boolean -@@= skipped -38, +38 lines =@@ - var r6b4 = b4 != a4; - >r6b4 : boolean - >b4 != a4 : boolean -->b4 : new (x?: string) => string -->a4 : new (x?: T) => T -+>b4 : new (x?: string | undefined) => string -+>a4 : new (x?: T | undefined) => T - - var r6b5 = b5 != a5; - >r6b5 : boolean -@@= skipped -39, +39 lines =@@ - var r7a4 = a4 === b4; - >r7a4 : boolean - >a4 === b4 : boolean -->a4 : new (x?: T) => T -->b4 : new (x?: string) => string -+>a4 : new (x?: T | undefined) => T -+>b4 : new (x?: string | undefined) => string - - var r7a5 = a5 === b5; - >r7a5 : boolean -@@= skipped -38, +38 lines =@@ - var r7b4 = b4 === a4; - >r7b4 : boolean - >b4 === a4 : boolean -->b4 : new (x?: string) => string -->a4 : new (x?: T) => T -+>b4 : new (x?: string | undefined) => string -+>a4 : new (x?: T | undefined) => T - - var r7b5 = b5 === a5; - >r7b5 : boolean -@@= skipped -39, +39 lines =@@ - var r8a4 = a4 !== b4; - >r8a4 : boolean - >a4 !== b4 : boolean -->a4 : new (x?: T) => T -->b4 : new (x?: string) => string -+>a4 : new (x?: T | undefined) => T -+>b4 : new (x?: string | undefined) => string - - var r8a5 = a5 !== b5; - >r8a5 : boolean -@@= skipped -38, +38 lines =@@ - var r8b4 = b4 !== a4; - >r8b4 : boolean - >b4 !== a4 : boolean -->b4 : new (x?: string) => string -->a4 : new (x?: T) => T -+>b4 : new (x?: string | undefined) => string -+>a4 : new (x?: T | undefined) => T - - var r8b5 = b5 !== a5; - >r8b5 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/conditionalOperatorWithoutIdenticalBCT.types b/testdata/baselines/reference/submodule/conformance/conditionalOperatorWithoutIdenticalBCT.types index bffe630002a..134dbe5563d 100644 --- a/testdata/baselines/reference/submodule/conformance/conditionalOperatorWithoutIdenticalBCT.types +++ b/testdata/baselines/reference/submodule/conformance/conditionalOperatorWithoutIdenticalBCT.types @@ -112,7 +112,7 @@ var result6: (t: X) => boolean = true ? (m) => m.propertyX1 : (n) => n.propertyX >propertyX2 : string var result61: (t: X) => number| string = true ? (m) => m.propertyX1 : (n) => n.propertyX2; ->result61 : (t: X) => string | number +>result61 : (t: X) => number | string >t : X >true ? (m) => m.propertyX1 : (n) => n.propertyX2 : ((m: X) => number) | ((n: X) => string) >true : true diff --git a/testdata/baselines/reference/submodule/conformance/conditionalOperatorWithoutIdenticalBCT.types.diff b/testdata/baselines/reference/submodule/conformance/conditionalOperatorWithoutIdenticalBCT.types.diff deleted file mode 100644 index 1bd8532f905..00000000000 --- a/testdata/baselines/reference/submodule/conformance/conditionalOperatorWithoutIdenticalBCT.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.conditionalOperatorWithoutIdenticalBCT.types -+++ new.conditionalOperatorWithoutIdenticalBCT.types -@@= skipped -111, +111 lines =@@ - >propertyX2 : string - - var result61: (t: X) => number| string = true ? (m) => m.propertyX1 : (n) => n.propertyX2; -->result61 : (t: X) => number | string -+>result61 : (t: X) => string | number - >t : X - >true ? (m) => m.propertyX1 : (n) => n.propertyX2 : ((m: X) => number) | ((n: X) => string) - >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/conditionalTypes1.js b/testdata/baselines/reference/submodule/conformance/conditionalTypes1.js index cf23628bece..0e09cc139f0 100644 --- a/testdata/baselines/reference/submodule/conformance/conditionalTypes1.js +++ b/testdata/baselines/reference/submodule/conformance/conditionalTypes1.js @@ -649,7 +649,7 @@ type Foo = T extends string ? boolean : number; type Bar = T extends string ? boolean : number; declare const convert: (value: Foo) => Bar; type Baz = Foo; -declare const convert2: (value: Foo) => Foo; +declare const convert2: (value: Foo) => Baz; declare function f31(): void; declare function f32(): void; declare function f33(): void; diff --git a/testdata/baselines/reference/submodule/conformance/conditionalTypes1.js.diff b/testdata/baselines/reference/submodule/conformance/conditionalTypes1.js.diff deleted file mode 100644 index 3579b956e92..00000000000 --- a/testdata/baselines/reference/submodule/conformance/conditionalTypes1.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.conditionalTypes1.js -+++ new.conditionalTypes1.js -@@= skipped -648, +648 lines =@@ - type Bar = T extends string ? boolean : number; - declare const convert: (value: Foo) => Bar; - type Baz = Foo; --declare const convert2: (value: Foo) => Baz; -+declare const convert2: (value: Foo) => Foo; - declare function f31(): void; - declare function f32(): void; - declare function f33(): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/conditionalTypes1.types b/testdata/baselines/reference/submodule/conformance/conditionalTypes1.types index 372b3b30da1..b5496f00171 100644 --- a/testdata/baselines/reference/submodule/conformance/conditionalTypes1.types +++ b/testdata/baselines/reference/submodule/conformance/conditionalTypes1.types @@ -335,7 +335,7 @@ type DeepReadonlyObject = { }; function f10(part: DeepReadonly) { ->f10 : (part: DeepReadonlyObject) => void +>f10 : (part: DeepReadonly) => void >part : DeepReadonlyObject let name: string = part.name; @@ -406,7 +406,7 @@ type ZeroOf = T extends number ? 0 : T exte >false : false function zeroOf(value: T) { ->zeroOf : (value: T) => ZeroOf +>zeroOf : (value: T) => ZeroOf >value : T return >(typeof value === "number" ? 0 : typeof value === "string" ? "" : false); @@ -436,42 +436,42 @@ function f20(n: number, b: boolean, x: number | boolean, y: T) zeroOf(5); // 0 >zeroOf(5) : 0 ->zeroOf : (value: T_1) => ZeroOf +>zeroOf : (value: T_1) => ZeroOf >5 : 5 zeroOf("hello"); // "" >zeroOf("hello") : "" ->zeroOf : (value: T_1) => ZeroOf +>zeroOf : (value: T_1) => ZeroOf >"hello" : "hello" zeroOf(true); // false >zeroOf(true) : false ->zeroOf : (value: T_1) => ZeroOf +>zeroOf : (value: T_1) => ZeroOf >true : true zeroOf(n); // 0 >zeroOf(n) : 0 ->zeroOf : (value: T_1) => ZeroOf +>zeroOf : (value: T_1) => ZeroOf >n : number zeroOf(b); // False >zeroOf(b) : false ->zeroOf : (value: T_1) => ZeroOf +>zeroOf : (value: T_1) => ZeroOf >b : boolean zeroOf(x); // 0 | false >zeroOf(x) : 0 | false ->zeroOf : (value: T_1) => ZeroOf +>zeroOf : (value: T_1) => ZeroOf >x : number | boolean zeroOf(y); // ZeroOf >zeroOf(y) : ZeroOf ->zeroOf : (value: T_1) => ZeroOf +>zeroOf : (value: T_1) => ZeroOf >y : T } function f21(x: T, y: ZeroOf) { ->f21 : (x: T, y: ZeroOf) => void +>f21 : (x: T, y: ZeroOf) => void >x : T >y : ZeroOf @@ -789,8 +789,8 @@ type Baz = Foo; >Baz : Baz const convert2 = (value: Foo): Baz => value; ->convert2 : (value: Foo) => Foo ->(value: Foo): Baz => value : (value: Foo) => Foo +>convert2 : (value: Foo) => Baz +>(value: Foo): Baz => value : (value: Foo) => Baz >value : Foo >value : Foo diff --git a/testdata/baselines/reference/submodule/conformance/conditionalTypes1.types.diff b/testdata/baselines/reference/submodule/conformance/conditionalTypes1.types.diff deleted file mode 100644 index 272010215d8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/conditionalTypes1.types.diff +++ /dev/null @@ -1,81 +0,0 @@ ---- old.conditionalTypes1.types -+++ new.conditionalTypes1.types -@@= skipped -334, +334 lines =@@ - }; - - function f10(part: DeepReadonly) { -->f10 : (part: DeepReadonly) => void -+>f10 : (part: DeepReadonlyObject) => void - >part : DeepReadonlyObject - - let name: string = part.name; -@@= skipped -71, +71 lines =@@ - >false : false - - function zeroOf(value: T) { -->zeroOf : (value: T) => ZeroOf -+>zeroOf : (value: T) => ZeroOf - >value : T - - return >(typeof value === "number" ? 0 : typeof value === "string" ? "" : false); -@@= skipped -30, +30 lines =@@ - - zeroOf(5); // 0 - >zeroOf(5) : 0 -->zeroOf : (value: T_1) => ZeroOf -+>zeroOf : (value: T_1) => ZeroOf - >5 : 5 - - zeroOf("hello"); // "" - >zeroOf("hello") : "" -->zeroOf : (value: T_1) => ZeroOf -+>zeroOf : (value: T_1) => ZeroOf - >"hello" : "hello" - - zeroOf(true); // false - >zeroOf(true) : false -->zeroOf : (value: T_1) => ZeroOf -+>zeroOf : (value: T_1) => ZeroOf - >true : true - - zeroOf(n); // 0 - >zeroOf(n) : 0 -->zeroOf : (value: T_1) => ZeroOf -+>zeroOf : (value: T_1) => ZeroOf - >n : number - - zeroOf(b); // False - >zeroOf(b) : false -->zeroOf : (value: T_1) => ZeroOf -+>zeroOf : (value: T_1) => ZeroOf - >b : boolean - - zeroOf(x); // 0 | false - >zeroOf(x) : 0 | false -->zeroOf : (value: T_1) => ZeroOf -+>zeroOf : (value: T_1) => ZeroOf - >x : number | boolean - - zeroOf(y); // ZeroOf - >zeroOf(y) : ZeroOf -->zeroOf : (value: T_1) => ZeroOf -+>zeroOf : (value: T_1) => ZeroOf - >y : T - } - - function f21(x: T, y: ZeroOf) { -->f21 : (x: T, y: ZeroOf) => void -+>f21 : (x: T, y: ZeroOf) => void - >x : T - >y : ZeroOf - -@@= skipped -353, +353 lines =@@ - >Baz : Baz - - const convert2 = (value: Foo): Baz => value; -->convert2 : (value: Foo) => Baz -->(value: Foo): Baz => value : (value: Foo) => Baz -+>convert2 : (value: Foo) => Foo -+>(value: Foo): Baz => value : (value: Foo) => Foo - >value : Foo - >value : Foo diff --git a/testdata/baselines/reference/submodule/conformance/conditionalTypes2.types b/testdata/baselines/reference/submodule/conformance/conditionalTypes2.types index 976b54e78b8..9234143af57 100644 --- a/testdata/baselines/reference/submodule/conformance/conditionalTypes2.types +++ b/testdata/baselines/reference/submodule/conformance/conditionalTypes2.types @@ -451,13 +451,13 @@ const w: What = { a: 4 }; // Repro from #33568 declare function save(_response: IRootResponse): void; ->save : (_response: IResponse) => void +>save : (_response: IRootResponse) => void >_response : IResponse exportCommand(save); >exportCommand(save) : void >exportCommand : (functionToCall: IExportCallback) => void ->save : (_response: IResponse) => void +>save : (_response: IRootResponse) => void declare function exportCommand(functionToCall: IExportCallback): void; >exportCommand : (functionToCall: IExportCallback) => void @@ -490,7 +490,7 @@ declare type IResponse = { >IResponse : IResponse sendValue(name: keyof GetAllPropertiesOfType): void; ->sendValue : (name: GetPropertyNamesOfType, string>) => void +>sendValue : (name: keyof GetAllPropertiesOfType) => void >name : GetPropertyNamesOfType, string> }; @@ -511,7 +511,7 @@ declare type GetAllPropertiesOfType = Pick< // Repro from #33568 declare function ff(x: Foo3): void; ->ff : (x: { x: string; }) => void +>ff : (x: Foo3) => void >x : { x: string; } declare function gg(f: (x: Foo3) => void): void; @@ -527,7 +527,7 @@ type Foo3 = T extends number ? { n: T } : { x: T }; gg(ff); >gg(ff) : void >gg : (f: (x: Foo3) => void) => void ->ff : (x: { x: string; }) => void +>ff : (x: Foo3) => void // Repro from #41613 diff --git a/testdata/baselines/reference/submodule/conformance/conditionalTypes2.types.diff b/testdata/baselines/reference/submodule/conformance/conditionalTypes2.types.diff index a1d7609b69f..31df5f1ec3d 100644 --- a/testdata/baselines/reference/submodule/conformance/conditionalTypes2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/conditionalTypes2.types.diff @@ -8,46 +8,3 @@ +>partition2 : { (predicate: (v: T) => v is U): [Vector, Vector>]; (predicate: (x: T) => boolean): [Vector, Vector]; } >predicate : (v: T) => boolean >v : T - -@@= skipped -202, +202 lines =@@ - // Repro from #33568 - - declare function save(_response: IRootResponse): void; -->save : (_response: IRootResponse) => void -+>save : (_response: IResponse) => void - >_response : IResponse - - exportCommand(save); - >exportCommand(save) : void - >exportCommand : (functionToCall: IExportCallback) => void -->save : (_response: IRootResponse) => void -+>save : (_response: IResponse) => void - - declare function exportCommand(functionToCall: IExportCallback): void; - >exportCommand : (functionToCall: IExportCallback) => void -@@= skipped -39, +39 lines =@@ - >IResponse : IResponse - - sendValue(name: keyof GetAllPropertiesOfType): void; -->sendValue : (name: keyof GetAllPropertiesOfType) => void -+>sendValue : (name: GetPropertyNamesOfType, string>) => void - >name : GetPropertyNamesOfType, string> - - }; -@@= skipped -21, +21 lines =@@ - // Repro from #33568 - - declare function ff(x: Foo3): void; -->ff : (x: Foo3) => void -+>ff : (x: { x: string; }) => void - >x : { x: string; } - - declare function gg(f: (x: Foo3) => void): void; -@@= skipped -16, +16 lines =@@ - gg(ff); - >gg(ff) : void - >gg : (f: (x: Foo3) => void) => void -->ff : (x: Foo3) => void -+>ff : (x: { x: string; }) => void - - // Repro from #41613 diff --git a/testdata/baselines/reference/submodule/conformance/constAssertions.js b/testdata/baselines/reference/submodule/conformance/constAssertions.js index 10137051a5f..b6f81074d77 100644 --- a/testdata/baselines/reference/submodule/conformance/constAssertions.js +++ b/testdata/baselines/reference/submodule/conformance/constAssertions.js @@ -214,8 +214,8 @@ const fooConst54374 = { //// [constAssertions.d.ts] -declare let v1: "abc"; -declare let v2: "abc"; +declare let v1: 'abc'; +declare let v2: `abc`; declare let v3: 10; declare let v4: -10; declare let v5: 10; @@ -223,8 +223,8 @@ declare let v6: 10n; declare let v7: -10n; declare let v8: true; declare let v9: false; -declare let c1: "abc"; -declare let c2: "abc"; +declare let c1: 'abc'; +declare let c2: `abc`; declare let c3: 10; declare let c4: -10; declare let c5: 10; @@ -301,7 +301,7 @@ declare let x1: { }; }; declare let q1: 10; -declare let q2: "abc"; +declare let q2: 'abc'; declare let q3: true; declare let q4: readonly [1, 2, 3]; declare let q5: { @@ -312,8 +312,8 @@ declare function id(x: T): T; declare let e1: "abc"; declare let e2: 0 | 1; declare let e3: 1; -declare let t1: "foo"; -declare let t2: "bar"; +declare let t1: 'foo'; +declare let t2: 'bar'; declare let t3: "foo-bar"; declare let t4: "(foo)-(bar)"; declare function ff1(x: 'foo' | 'bar', y: 1 | 2): "bar-1" | "bar-2" | "foo-1" | "foo-2"; diff --git a/testdata/baselines/reference/submodule/conformance/constAssertions.js.diff b/testdata/baselines/reference/submodule/conformance/constAssertions.js.diff new file mode 100644 index 00000000000..fab96d19b49 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/constAssertions.js.diff @@ -0,0 +1,44 @@ +--- old.constAssertions.js ++++ new.constAssertions.js +@@= skipped -213, +213 lines =@@ + + + //// [constAssertions.d.ts] +-declare let v1: "abc"; +-declare let v2: "abc"; ++declare let v1: 'abc'; ++declare let v2: `abc`; + declare let v3: 10; + declare let v4: -10; + declare let v5: 10; +@@= skipped -9, +9 lines =@@ + declare let v7: -10n; + declare let v8: true; + declare let v9: false; +-declare let c1: "abc"; +-declare let c2: "abc"; ++declare let c1: 'abc'; ++declare let c2: `abc`; + declare let c3: 10; + declare let c4: -10; + declare let c5: 10; +@@= skipped -78, +78 lines =@@ + }; + }; + declare let q1: 10; +-declare let q2: "abc"; ++declare let q2: 'abc'; + declare let q3: true; + declare let q4: readonly [1, 2, 3]; + declare let q5: { +@@= skipped -11, +11 lines =@@ + declare let e1: "abc"; + declare let e2: 0 | 1; + declare let e3: 1; +-declare let t1: "foo"; +-declare let t2: "bar"; ++declare let t1: 'foo'; ++declare let t2: 'bar'; + declare let t3: "foo-bar"; + declare let t4: "(foo)-(bar)"; + declare function ff1(x: 'foo' | 'bar', y: 1 | 2): "bar-1" | "bar-2" | "foo-1" | "foo-2"; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/constAssertions.types b/testdata/baselines/reference/submodule/conformance/constAssertions.types index c85e01d8ed4..79f003aab86 100644 --- a/testdata/baselines/reference/submodule/conformance/constAssertions.types +++ b/testdata/baselines/reference/submodule/conformance/constAssertions.types @@ -383,7 +383,7 @@ let t4 = `${`(${t1})`}-${`(${t2})`}` as const; >t2 : "bar" function ff1(x: 'foo' | 'bar', y: 1 | 2) { ->ff1 : (x: "bar" | "foo", y: 1 | 2) => "bar-1" | "bar-2" | "foo-1" | "foo-2" +>ff1 : (x: 'foo' | 'bar', y: 1 | 2) => "bar-1" | "bar-2" | "foo-1" | "foo-2" >x : "bar" | "foo" >y : 1 | 2 @@ -443,7 +443,7 @@ const ts3 = ff2(!!true ? 'top' : 'bottom', !!true ? 'left' : 'right'); >'right' : "right" function ff3(x: 'foo' | 'bar', y: object) { ->ff3 : (x: "bar" | "foo", y: object) => `bar${string}` | `foo${string}` +>ff3 : (x: 'foo' | 'bar', y: object) => `bar${string}` | `foo${string}` >x : "bar" | "foo" >y : object diff --git a/testdata/baselines/reference/submodule/conformance/constAssertions.types.diff b/testdata/baselines/reference/submodule/conformance/constAssertions.types.diff index a55f0bb5989..03b057ed2c6 100644 --- a/testdata/baselines/reference/submodule/conformance/constAssertions.types.diff +++ b/testdata/baselines/reference/submodule/conformance/constAssertions.types.diff @@ -5,7 +5,7 @@ function ff1(x: 'foo' | 'bar', y: 1 | 2) { ->ff1 : (x: "foo" | "bar", y: 1 | 2) => "bar-1" | "bar-2" | "foo-1" | "foo-2" -+>ff1 : (x: "bar" | "foo", y: 1 | 2) => "bar-1" | "bar-2" | "foo-1" | "foo-2" ++>ff1 : (x: 'foo' | 'bar', y: 1 | 2) => "bar-1" | "bar-2" | "foo-1" | "foo-2" >x : "bar" | "foo" >y : 1 | 2 @@ -14,6 +14,6 @@ function ff3(x: 'foo' | 'bar', y: object) { ->ff3 : (x: "foo" | "bar", y: object) => `bar${string}` | `foo${string}` -+>ff3 : (x: "bar" | "foo", y: object) => `bar${string}` | `foo${string}` ++>ff3 : (x: 'foo' | 'bar', y: object) => `bar${string}` | `foo${string}` >x : "bar" | "foo" >y : object diff --git a/testdata/baselines/reference/submodule/conformance/constEnum3.types b/testdata/baselines/reference/submodule/conformance/constEnum3.types index d13bc7828c1..a8e454c6f17 100644 --- a/testdata/baselines/reference/submodule/conformance/constEnum3.types +++ b/testdata/baselines/reference/submodule/conformance/constEnum3.types @@ -15,7 +15,7 @@ function f1(f: TestType) { } >f : TestType function f2(f: TestTypeStr) { } ->f2 : (f: "bar" | "foo") => void +>f2 : (f: TestTypeStr) => void >f : "bar" | "foo" f1(TestType.foo) @@ -34,11 +34,11 @@ f1(TestType.bar) f2('foo') >f2('foo') : void ->f2 : (f: "bar" | "foo") => void +>f2 : (f: TestTypeStr) => void >'foo' : "foo" f2('bar') >f2('bar') : void ->f2 : (f: "bar" | "foo") => void +>f2 : (f: TestTypeStr) => void >'bar' : "bar" diff --git a/testdata/baselines/reference/submodule/conformance/constEnum3.types.diff b/testdata/baselines/reference/submodule/conformance/constEnum3.types.diff deleted file mode 100644 index 8832ec71161..00000000000 --- a/testdata/baselines/reference/submodule/conformance/constEnum3.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.constEnum3.types -+++ new.constEnum3.types -@@= skipped -14, +14 lines =@@ - >f : TestType - - function f2(f: TestTypeStr) { } -->f2 : (f: TestTypeStr) => void -+>f2 : (f: "bar" | "foo") => void - >f : "bar" | "foo" - - f1(TestType.foo) -@@= skipped -19, +19 lines =@@ - - f2('foo') - >f2('foo') : void -->f2 : (f: TestTypeStr) => void -+>f2 : (f: "bar" | "foo") => void - >'foo' : "foo" - - f2('bar') - >f2('bar') : void -->f2 : (f: TestTypeStr) => void -+>f2 : (f: "bar" | "foo") => void - >'bar' : "bar" diff --git a/testdata/baselines/reference/submodule/conformance/constEnumPropertyAccess3.types b/testdata/baselines/reference/submodule/conformance/constEnumPropertyAccess3.types index 62d9caf85d1..85d0460f9b6 100644 --- a/testdata/baselines/reference/submodule/conformance/constEnumPropertyAccess3.types +++ b/testdata/baselines/reference/submodule/conformance/constEnumPropertyAccess3.types @@ -39,73 +39,73 @@ const enum E { E.A.toString(); >E.A.toString() : string ->E.A.toString : (radix?: number | undefined) => string +>E.A.toString : (radix?: number) => string >E.A : E.A >E : typeof E >A : E.A ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string E.B.toString(); >E.B.toString() : string ->E.B.toString : (radix?: number | undefined) => string +>E.B.toString : (radix?: number) => string >E.B : E.B >E : typeof E >B : E.B ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string E.C.toString(); >E.C.toString() : string ->E.C.toString : (radix?: number | undefined) => string +>E.C.toString : (radix?: number) => string >E.C : E.C >E : typeof E >C : E.C ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string E.D.toString(); >E.D.toString() : string ->E.D.toString : (radix?: number | undefined) => string +>E.D.toString : (radix?: number) => string >E.D : E.C >E : typeof E >D : E.C ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string E["A"].toString(); >E["A"].toString() : string ->E["A"].toString : (radix?: number | undefined) => string +>E["A"].toString : (radix?: number) => string >E["A"] : E.A >E : typeof E >"A" : "A" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string E["B"].toString(); >E["B"].toString() : string ->E["B"].toString : (radix?: number | undefined) => string +>E["B"].toString : (radix?: number) => string >E["B"] : E.B >E : typeof E >"B" : "B" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string E["C"].toString(); >E["C"].toString() : string ->E["C"].toString : (radix?: number | undefined) => string +>E["C"].toString : (radix?: number) => string >E["C"] : E.C >E : typeof E >"C" : "C" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string E["D"].toString(); >E["D"].toString() : string ->E["D"].toString : (radix?: number | undefined) => string +>E["D"].toString : (radix?: number) => string >E["D"] : E.C >E : typeof E >"D" : "D" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string E["E"].toString(); >E["E"].toString() : string ->E["E"].toString : (radix?: number | undefined) => string +>E["E"].toString : (radix?: number) => string >E["E"] : E.E >E : typeof E >"E" : "E" ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/constEnumPropertyAccess3.types.diff b/testdata/baselines/reference/submodule/conformance/constEnumPropertyAccess3.types.diff deleted file mode 100644 index 6be7276894b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/constEnumPropertyAccess3.types.diff +++ /dev/null @@ -1,93 +0,0 @@ ---- old.constEnumPropertyAccess3.types -+++ new.constEnumPropertyAccess3.types -@@= skipped -38, +38 lines =@@ - - E.A.toString(); - >E.A.toString() : string -->E.A.toString : (radix?: number) => string -+>E.A.toString : (radix?: number | undefined) => string - >E.A : E.A - >E : typeof E - >A : E.A -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - E.B.toString(); - >E.B.toString() : string -->E.B.toString : (radix?: number) => string -+>E.B.toString : (radix?: number | undefined) => string - >E.B : E.B - >E : typeof E - >B : E.B -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - E.C.toString(); - >E.C.toString() : string -->E.C.toString : (radix?: number) => string -+>E.C.toString : (radix?: number | undefined) => string - >E.C : E.C - >E : typeof E - >C : E.C -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - E.D.toString(); - >E.D.toString() : string -->E.D.toString : (radix?: number) => string -+>E.D.toString : (radix?: number | undefined) => string - >E.D : E.C - >E : typeof E - >D : E.C -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - E["A"].toString(); - >E["A"].toString() : string -->E["A"].toString : (radix?: number) => string -+>E["A"].toString : (radix?: number | undefined) => string - >E["A"] : E.A - >E : typeof E - >"A" : "A" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - E["B"].toString(); - >E["B"].toString() : string -->E["B"].toString : (radix?: number) => string -+>E["B"].toString : (radix?: number | undefined) => string - >E["B"] : E.B - >E : typeof E - >"B" : "B" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - E["C"].toString(); - >E["C"].toString() : string -->E["C"].toString : (radix?: number) => string -+>E["C"].toString : (radix?: number | undefined) => string - >E["C"] : E.C - >E : typeof E - >"C" : "C" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - E["D"].toString(); - >E["D"].toString() : string -->E["D"].toString : (radix?: number) => string -+>E["D"].toString : (radix?: number | undefined) => string - >E["D"] : E.C - >E : typeof E - >"D" : "D" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - E["E"].toString(); - >E["E"].toString() : string -->E["E"].toString : (radix?: number) => string -+>E["E"].toString : (radix?: number | undefined) => string - >E["E"] : E.E - >E : typeof E - >"E" : "E" -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance2.types b/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance2.types index 38b794d8458..30d9cf0bfba 100644 --- a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance2.types +++ b/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance2.types @@ -86,12 +86,12 @@ interface A { // T >bar : string a12: new (x: Array, y: Array) => Array; ->a12 : new (x: Base[], y: Derived2[]) => Derived[] +>a12 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] a13: new (x: Array, y: Array) => Array; ->a13 : new (x: Base[], y: Derived[]) => Derived[] +>a13 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived[] @@ -223,12 +223,12 @@ interface I extends A { >y : T a12: new >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : new (x: Base[], y: T) => Derived[] +>a12 : new >(x: Array, y: T) => Array >x : Base[] >y : T a13: new >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : new (x: Base[], y: T) => T +>a13 : new >(x: Array, y: T) => T >x : Base[] >y : T diff --git a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance2.types.diff b/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance2.types.diff deleted file mode 100644 index 3f503bf848c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance2.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.constructSignatureAssignabilityInInheritance2.types -+++ new.constructSignatureAssignabilityInInheritance2.types -@@= skipped -85, +85 lines =@@ - >bar : string - - a12: new (x: Array, y: Array) => Array; -->a12 : new (x: Array, y: Array) => Array -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - - a13: new (x: Array, y: Array) => Array; -->a13 : new (x: Array, y: Array) => Array -+>a13 : new (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] - -@@= skipped -137, +137 lines =@@ - >y : T - - a12: new >(x: Array, y: T) => Array; // ok, less specific parameter type -->a12 : new >(x: Array, y: T) => Array -+>a12 : new (x: Base[], y: T) => Derived[] - >x : Base[] - >y : T - - a13: new >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds -->a13 : new >(x: Array, y: T) => T -+>a13 : new (x: Base[], y: T) => T - >x : Base[] - >y : T diff --git a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance3.types b/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance3.types index 1c62b0c2279..a9ac482b441 100644 --- a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance3.types +++ b/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance3.types @@ -60,7 +60,7 @@ namespace Errors { >bar : string a12: new (x: Array, y: Array) => Array; ->a12 : new (x: Base[], y: Derived2[]) => Derived[] +>a12 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] @@ -81,11 +81,11 @@ namespace Errors { >b : number a16: { ->a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } +>a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } // type of parameter is overload set which means we can't do inference based on this type new (x: { ->x : { new (a: number): number; new (a?: number | undefined): number; } +>x : { new (a: number): number; new (a?: number): number; } new (a: number): number; >a : number @@ -95,7 +95,7 @@ namespace Errors { }): number[]; new (x: { ->x : { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; } +>x : { new (a: boolean): boolean; new (a?: boolean): boolean; } new (a: boolean): boolean; >a : boolean @@ -154,7 +154,7 @@ namespace Errors { interface I4E extends A { a12: new >(x: Array, y: Array) => T; // valid, no inferences for T, defaults to Array ->a12 : new (x: Base[], y: Base[]) => T +>a12 : new >(x: Array, y: Array) => T >x : Base[] >y : Base[] } diff --git a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance3.types.diff b/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance3.types.diff deleted file mode 100644 index 08585ab68f0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance3.types.diff +++ /dev/null @@ -1,43 +0,0 @@ ---- old.constructSignatureAssignabilityInInheritance3.types -+++ new.constructSignatureAssignabilityInInheritance3.types -@@= skipped -59, +59 lines =@@ - >bar : string - - a12: new (x: Array, y: Array) => Array; -->a12 : new (x: Array, y: Array) => Array -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - -@@= skipped -21, +21 lines =@@ - >b : number - - a16: { -->a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -+>a16 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } - - // type of parameter is overload set which means we can't do inference based on this type - new (x: { -->x : { new (a: number): number; new (a?: number): number; } -+>x : { new (a: number): number; new (a?: number | undefined): number; } - - new (a: number): number; - >a : number -@@= skipped -14, +14 lines =@@ - - }): number[]; - new (x: { -->x : { new (a: boolean): boolean; new (a?: boolean): boolean; } -+>x : { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; } - - new (a: boolean): boolean; - >a : boolean -@@= skipped -59, +59 lines =@@ - - interface I4E extends A { - a12: new >(x: Array, y: Array) => T; // valid, no inferences for T, defaults to Array -->a12 : new >(x: Array, y: Array) => T -+>a12 : new (x: Base[], y: Base[]) => T - >x : Base[] - >y : Base[] - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance5.types b/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance5.types index a4a036865c6..ff5c1ad2796 100644 --- a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance5.types +++ b/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance5.types @@ -87,12 +87,12 @@ interface A { // T >bar : string a12: new (x: Array, y: Array) => Array; ->a12 : new (x: Base[], y: Derived2[]) => Derived[] +>a12 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] a13: new (x: Array, y: Array) => Array; ->a13 : new (x: Base[], y: Derived[]) => Derived[] +>a13 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived[] @@ -173,12 +173,12 @@ interface I extends B { >y : T a12: new >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : new (x: Base[], y: T) => Derived[] +>a12 : new >(x: Array, y: T) => Array >x : Base[] >y : T a13: new >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : new (x: Base[], y: T) => T +>a13 : new >(x: Array, y: T) => T >x : Base[] >y : T diff --git a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance5.types.diff b/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance5.types.diff deleted file mode 100644 index 8bfe85e2a0d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/constructSignatureAssignabilityInInheritance5.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.constructSignatureAssignabilityInInheritance5.types -+++ new.constructSignatureAssignabilityInInheritance5.types -@@= skipped -86, +86 lines =@@ - >bar : string - - a12: new (x: Array, y: Array) => Array; -->a12 : new (x: Array, y: Array) => Array -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - - a13: new (x: Array, y: Array) => Array; -->a13 : new (x: Array, y: Array) => Array -+>a13 : new (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] - -@@= skipped -86, +86 lines =@@ - >y : T - - a12: new >(x: Array, y: T) => Array; // ok, less specific parameter type -->a12 : new >(x: Array, y: T) => Array -+>a12 : new (x: Base[], y: T) => Derived[] - >x : Base[] - >y : T - - a13: new >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds -->a13 : new >(x: Array, y: T) => T -+>a13 : new (x: Base[], y: T) => T - >x : Base[] - >y : T diff --git a/testdata/baselines/reference/submodule/conformance/constructSignaturesWithOverloads.types b/testdata/baselines/reference/submodule/conformance/constructSignaturesWithOverloads.types index 2876f394b27..e7468ced672 100644 --- a/testdata/baselines/reference/submodule/conformance/constructSignaturesWithOverloads.types +++ b/testdata/baselines/reference/submodule/conformance/constructSignaturesWithOverloads.types @@ -97,7 +97,7 @@ var r4 = new i2(1, ''); >'' : "" var a: { ->a : { new (x: number, y?: string | undefined): C; new (x: number, y: string): C; } +>a : { new (x: number, y?: string): C; new (x: number, y: string): C; } new(x: number, y?: string): C; >x : number @@ -111,12 +111,12 @@ var a: { var r5 = new a(1, ''); >r5 : C >new a(1, '') : C ->a : { new (x: number, y?: string | undefined): C; new (x: number, y: string): C; } +>a : { new (x: number, y?: string): C; new (x: number, y: string): C; } >1 : 1 >'' : "" var b: { ->b : { new (x: T, y?: string | undefined): C2; new (x: T, y: string): C2; } +>b : { new (x: T, y?: string): C2; new (x: T, y: string): C2; } new(x: T, y?: string): C2; >x : T @@ -130,7 +130,7 @@ var b: { var r6 = new b(1, ''); >r6 : C2 >new b(1, '') : C2 ->b : { new (x: T, y?: string | undefined): C2; new (x: T, y: string): C2; } +>b : { new (x: T, y?: string): C2; new (x: T, y: string): C2; } >1 : 1 >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/constructSignaturesWithOverloads.types.diff b/testdata/baselines/reference/submodule/conformance/constructSignaturesWithOverloads.types.diff deleted file mode 100644 index cd7666ab024..00000000000 --- a/testdata/baselines/reference/submodule/conformance/constructSignaturesWithOverloads.types.diff +++ /dev/null @@ -1,34 +0,0 @@ ---- old.constructSignaturesWithOverloads.types -+++ new.constructSignaturesWithOverloads.types -@@= skipped -96, +96 lines =@@ - >'' : "" - - var a: { -->a : { new (x: number, y?: string): C; new (x: number, y: string): C; } -+>a : { new (x: number, y?: string | undefined): C; new (x: number, y: string): C; } - - new(x: number, y?: string): C; - >x : number -@@= skipped -14, +14 lines =@@ - var r5 = new a(1, ''); - >r5 : C - >new a(1, '') : C -->a : { new (x: number, y?: string): C; new (x: number, y: string): C; } -+>a : { new (x: number, y?: string | undefined): C; new (x: number, y: string): C; } - >1 : 1 - >'' : "" - - var b: { -->b : { new (x: T, y?: string): C2; new (x: T, y: string): C2; } -+>b : { new (x: T, y?: string | undefined): C2; new (x: T, y: string): C2; } - - new(x: T, y?: string): C2; - >x : T -@@= skipped -19, +19 lines =@@ - var r6 = new b(1, ''); - >r6 : C2 - >new b(1, '') : C2 -->b : { new (x: T, y?: string): C2; new (x: T, y: string): C2; } -+>b : { new (x: T, y?: string | undefined): C2; new (x: T, y: string): C2; } - >1 : 1 - >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypeFromJSDoc.types b/testdata/baselines/reference/submodule/conformance/contextualTypeFromJSDoc.types index ffba64d3081..a023f8621fc 100644 --- a/testdata/baselines/reference/submodule/conformance/contextualTypeFromJSDoc.types +++ b/testdata/baselines/reference/submodule/conformance/contextualTypeFromJSDoc.types @@ -3,7 +3,7 @@ === index.js === /** @type {Array<[string, {x?:number, y?:number}]>} */ const arr = [ ->arr : [string, { x?: number | undefined; y?: number | undefined; }][] +>arr : [string, { x?: number; y?: number; }][] >[ ['a', { x: 1 }], ['b', { y: 2 }]] : ([string, { x: number; }] | [string, { y: number; }])[] ['a', { x: 1 }], @@ -24,7 +24,7 @@ const arr = [ /** @return {Array<[string, {x?:number, y?:number}]>} */ function f() { ->f : () => [string, { x?: number | undefined; y?: number | undefined; }][] +>f : () => Array<[string, { x?: number; y?: number; }]> return [ >[ ['a', { x: 1 }], ['b', { y: 2 }] ] : ([string, { x: number; }] | [string, { y: number; }])[] @@ -51,11 +51,11 @@ class C { /** @param {Array<[string, {x?:number, y?:number}]>} value */ set x(value) { } ->x : [string, { x?: number | undefined; y?: number | undefined; }][] ->value : [string, { x?: number | undefined; y?: number | undefined; }][] +>x : [string, { x?: number; y?: number; }][] +>value : [string, { x?: number; y?: number; }][] get x() { ->x : [string, { x?: number | undefined; y?: number | undefined; }][] +>x : [string, { x?: number; y?: number; }][] return [ >[ ['a', { x: 1 }], ['b', { y: 2 }] ] : ([string, { x: number; }] | [string, { y: number; }])[] diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypeFromJSDoc.types.diff b/testdata/baselines/reference/submodule/conformance/contextualTypeFromJSDoc.types.diff deleted file mode 100644 index 7515bcd2563..00000000000 --- a/testdata/baselines/reference/submodule/conformance/contextualTypeFromJSDoc.types.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- old.contextualTypeFromJSDoc.types -+++ new.contextualTypeFromJSDoc.types -@@= skipped -2, +2 lines =@@ - === index.js === - /** @type {Array<[string, {x?:number, y?:number}]>} */ - const arr = [ -->arr : [string, { x?: number; y?: number; }][] -+>arr : [string, { x?: number | undefined; y?: number | undefined; }][] - >[ ['a', { x: 1 }], ['b', { y: 2 }]] : ([string, { x: number; }] | [string, { y: number; }])[] - - ['a', { x: 1 }], -@@= skipped -21, +21 lines =@@ - - /** @return {Array<[string, {x?:number, y?:number}]>} */ - function f() { -->f : () => Array<[string, { x?: number; y?: number; }]> -+>f : () => [string, { x?: number | undefined; y?: number | undefined; }][] - - return [ - >[ ['a', { x: 1 }], ['b', { y: 2 }] ] : ([string, { x: number; }] | [string, { y: number; }])[] -@@= skipped -27, +27 lines =@@ - - /** @param {Array<[string, {x?:number, y?:number}]>} value */ - set x(value) { } -->x : [string, { x?: number; y?: number; }][] -->value : [string, { x?: number; y?: number; }][] -+>x : [string, { x?: number | undefined; y?: number | undefined; }][] -+>value : [string, { x?: number | undefined; y?: number | undefined; }][] - - get x() { -->x : [string, { x?: number; y?: number; }][] -+>x : [string, { x?: number | undefined; y?: number | undefined; }][] - - return [ - >[ ['a', { x: 1 }], ['b', { y: 2 }] ] : ([string, { x: number; }] | [string, { y: number; }])[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeCallSignatures.types b/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeCallSignatures.types index a0b5f64364e..6ba9bf66985 100644 --- a/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeCallSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeCallSignatures.types @@ -39,9 +39,9 @@ var x: IWithNoCallSignatures | IWithCallSignatures = a => a.toString(); >a => a.toString() : (a: number) => string >a : number >a.toString() : string ->a.toString : (radix?: number | undefined) => string +>a.toString : (radix?: number) => string >a : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string // With call signatures with different return type var x2: IWithCallSignatures | IWithCallSignatures2 = a => a.toString(); // Like iWithCallSignatures @@ -49,9 +49,9 @@ var x2: IWithCallSignatures | IWithCallSignatures2 = a => a.toString(); // Like >a => a.toString() : (a: number) => string >a : number >a.toString() : string ->a.toString : (radix?: number | undefined) => string +>a.toString : (radix?: number) => string >a : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string var x2: IWithCallSignatures | IWithCallSignatures2 = a => a; // Like iWithCallSignatures2 >x2 : IWithCallSignatures | IWithCallSignatures2 diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeCallSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeCallSignatures.types.diff deleted file mode 100644 index 3ee1bba6a65..00000000000 --- a/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeCallSignatures.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.contextualTypeWithUnionTypeCallSignatures.types -+++ new.contextualTypeWithUnionTypeCallSignatures.types -@@= skipped -38, +38 lines =@@ - >a => a.toString() : (a: number) => string - >a : number - >a.toString() : string -->a.toString : (radix?: number) => string -+>a.toString : (radix?: number | undefined) => string - >a : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - // With call signatures with different return type - var x2: IWithCallSignatures | IWithCallSignatures2 = a => a.toString(); // Like iWithCallSignatures -@@= skipped -10, +10 lines =@@ - >a => a.toString() : (a: number) => string - >a : number - >a.toString() : string -->a.toString : (radix?: number) => string -+>a.toString : (radix?: number | undefined) => string - >a : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - var x2: IWithCallSignatures | IWithCallSignatures2 = a => a; // Like iWithCallSignatures2 - >x2 : IWithCallSignatures | IWithCallSignatures2 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeIndexSignatures.types b/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeIndexSignatures.types index d01ec9889a4..d4a38f12c25 100644 --- a/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeIndexSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeIndexSignatures.types @@ -77,9 +77,9 @@ var x2: IWithStringIndexSignature1 | IWithStringIndexSignature2 = { z: a => a.to >a => a.toString() : (a: number) => string >a : number >a.toString() : string ->a.toString : (radix?: number | undefined) => string +>a.toString : (radix?: number) => string >a : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string var x2: IWithStringIndexSignature1 | IWithStringIndexSignature2 = { z: a => a }; // a should be number >x2 : IWithStringIndexSignature1 | IWithStringIndexSignature2 @@ -122,9 +122,9 @@ var x4: IWithNumberIndexSignature1 | IWithNumberIndexSignature2 = { 1: a => a.to >a => a.toString() : (a: number) => string >a : number >a.toString() : string ->a.toString : (radix?: number | undefined) => string +>a.toString : (radix?: number) => string >a : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string var x4: IWithNumberIndexSignature1 | IWithNumberIndexSignature2 = { 1: a => a }; // a should be number >x4 : IWithNumberIndexSignature1 | IWithNumberIndexSignature2 diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeIndexSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeIndexSignatures.types.diff deleted file mode 100644 index e925ea6649b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/contextualTypeWithUnionTypeIndexSignatures.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.contextualTypeWithUnionTypeIndexSignatures.types -+++ new.contextualTypeWithUnionTypeIndexSignatures.types -@@= skipped -76, +76 lines =@@ - >a => a.toString() : (a: number) => string - >a : number - >a.toString() : string -->a.toString : (radix?: number) => string -+>a.toString : (radix?: number | undefined) => string - >a : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - var x2: IWithStringIndexSignature1 | IWithStringIndexSignature2 = { z: a => a }; // a should be number - >x2 : IWithStringIndexSignature1 | IWithStringIndexSignature2 -@@= skipped -45, +45 lines =@@ - >a => a.toString() : (a: number) => string - >a : number - >a.toString() : string -->a.toString : (radix?: number) => string -+>a.toString : (radix?: number | undefined) => string - >a : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - var x4: IWithNumberIndexSignature1 | IWithNumberIndexSignature2 = { 1: a => a }; // a should be number - >x4 : IWithNumberIndexSignature1 | IWithNumberIndexSignature2 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.types b/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.types index d3739a557a9..40ec59babcb 100644 --- a/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.types +++ b/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.types @@ -193,9 +193,9 @@ F.prototype = { /** @type {{ status: 'done', m(n: number): void }} */ module.exports = { >module.exports = { status: "done", m(n) { }} : { status: "done"; m(n: number): void; } ->module.exports : { status: "done"; m(n: number): void; } ->module : { "export=": { status: "done"; m(n: number): void; }; } ->exports : { status: "done"; m(n: number): void; } +>module.exports : { status: 'done'; m(n: number): void; } +>module : { "export=": { status: 'done'; m(n: number): void; }; } +>exports : { status: 'done'; m(n: number): void; } >{ status: "done", m(n) { }} : { status: "done"; m(n: number): void; } status: "done", diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.types.diff b/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.types.diff index b6efc1e7a5a..643bd11a608 100644 --- a/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.types.diff +++ b/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.types.diff @@ -142,11 +142,16 @@ >prototype : DoneStatus >{ status: "done", m(n) { }} : { status: "done"; m(n: number): void; } -@@= skipped -33, +33 lines =@@ +@@= skipped -32, +32 lines =@@ + /** @type {{ status: 'done', m(n: number): void }} */ module.exports = { >module.exports = { status: "done", m(n) { }} : { status: "done"; m(n: number): void; } - >module.exports : { status: "done"; m(n: number): void; } +->module.exports : { status: "done"; m(n: number): void; } ->module : { exports: { status: "done"; m(n: number): void; }; } -+>module : { "export=": { status: "done"; m(n: number): void; }; } - >exports : { status: "done"; m(n: number): void; } +->exports : { status: "done"; m(n: number): void; } ++>module.exports : { status: 'done'; m(n: number): void; } ++>module : { "export=": { status: 'done'; m(n: number): void; }; } ++>exports : { status: 'done'; m(n: number): void; } >{ status: "done", m(n) { }} : { status: "done"; m(n: number): void; } + + status: "done", \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/contextuallyTypedBindingInitializer.types b/testdata/baselines/reference/submodule/conformance/contextuallyTypedBindingInitializer.types index 53451af044e..aceb31d8c19 100644 --- a/testdata/baselines/reference/submodule/conformance/contextuallyTypedBindingInitializer.types +++ b/testdata/baselines/reference/submodule/conformance/contextuallyTypedBindingInitializer.types @@ -12,9 +12,9 @@ function f({ show = v => v.toString() }: Show) {} >v => v.toString() : (v: number) => string >v : number >v.toString() : string ->v.toString : (radix?: number | undefined) => string +>v.toString : (radix?: number) => string >v : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string function f2({ "show": showRename = v => v.toString() }: Show) {} >f2 : ({ "show": showRename }: Show) => void @@ -22,9 +22,9 @@ function f2({ "show": showRename = v => v.toString() }: Show) {} >v => v.toString() : (v: number) => string >v : number >v.toString() : string ->v.toString : (radix?: number | undefined) => string +>v.toString : (radix?: number) => string >v : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string function f3({ ["show"]: showRename = v => v.toString() }: Show) {} >f3 : ({ ["show"]: showRename }: Show) => void @@ -33,9 +33,9 @@ function f3({ ["show"]: showRename = v => v.toString() }: Show) {} >v => v.toString() : (v: number) => string >v : number >v.toString() : string ->v.toString : (radix?: number | undefined) => string +>v.toString : (radix?: number) => string >v : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string interface Nested { nested: Show @@ -49,9 +49,9 @@ function ff({ nested = { show: v => v.toString() } }: Nested) {} >v => v.toString() : (v: number) => string >v : number >v.toString() : string ->v.toString : (radix?: number | undefined) => string +>v.toString : (radix?: number) => string >v : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string interface Tuples { prop: [string, number]; diff --git a/testdata/baselines/reference/submodule/conformance/contextuallyTypedBindingInitializer.types.diff b/testdata/baselines/reference/submodule/conformance/contextuallyTypedBindingInitializer.types.diff deleted file mode 100644 index aa2786e27a2..00000000000 --- a/testdata/baselines/reference/submodule/conformance/contextuallyTypedBindingInitializer.types.diff +++ /dev/null @@ -1,50 +0,0 @@ ---- old.contextuallyTypedBindingInitializer.types -+++ new.contextuallyTypedBindingInitializer.types -@@= skipped -11, +11 lines =@@ - >v => v.toString() : (v: number) => string - >v : number - >v.toString() : string -->v.toString : (radix?: number) => string -+>v.toString : (radix?: number | undefined) => string - >v : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - function f2({ "show": showRename = v => v.toString() }: Show) {} - >f2 : ({ "show": showRename }: Show) => void -@@= skipped -10, +10 lines =@@ - >v => v.toString() : (v: number) => string - >v : number - >v.toString() : string -->v.toString : (radix?: number) => string -+>v.toString : (radix?: number | undefined) => string - >v : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - function f3({ ["show"]: showRename = v => v.toString() }: Show) {} - >f3 : ({ ["show"]: showRename }: Show) => void -@@= skipped -11, +11 lines =@@ - >v => v.toString() : (v: number) => string - >v : number - >v.toString() : string -->v.toString : (radix?: number) => string -+>v.toString : (radix?: number | undefined) => string - >v : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - interface Nested { - nested: Show -@@= skipped -16, +16 lines =@@ - >v => v.toString() : (v: number) => string - >v : number - >v.toString() : string -->v.toString : (radix?: number) => string -+>v.toString : (radix?: number | undefined) => string - >v : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - interface Tuples { - prop: [string, number]; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.errors.txt b/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.errors.txt index b1dcf7be43f..481d564897d 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.errors.txt @@ -2,22 +2,22 @@ controlFlowAliasing.ts(59,13): error TS2322: Type 'string | number' is not assig Type 'number' is not assignable to type 'string'. controlFlowAliasing.ts(74,13): error TS2322: Type 'string | number' is not assignable to type 'string'. Type 'number' is not assignable to type 'string'. -controlFlowAliasing.ts(91,13): error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. - Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. -controlFlowAliasing.ts(94,13): error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. - Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. -controlFlowAliasing.ts(101,13): error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. - Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. -controlFlowAliasing.ts(104,13): error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. - Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. -controlFlowAliasing.ts(112,13): error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. - Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. -controlFlowAliasing.ts(115,13): error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. - Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. -controlFlowAliasing.ts(154,19): error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. - Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. -controlFlowAliasing.ts(157,19): error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. - Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. +controlFlowAliasing.ts(91,13): error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. + Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. +controlFlowAliasing.ts(94,13): error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. + Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. +controlFlowAliasing.ts(101,13): error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. + Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. +controlFlowAliasing.ts(104,13): error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. + Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. +controlFlowAliasing.ts(112,13): error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. + Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. +controlFlowAliasing.ts(115,13): error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. + Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. +controlFlowAliasing.ts(154,19): error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. + Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. +controlFlowAliasing.ts(157,19): error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. + Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. controlFlowAliasing.ts(233,13): error TS2322: Type 'string | number' is not assignable to type 'string'. Type 'number' is not assignable to type 'string'. controlFlowAliasing.ts(280,5): error TS2448: Block-scoped variable 'a' used before its declaration. @@ -123,14 +123,14 @@ controlFlowAliasing.ts(280,5): error TS2454: Variable 'a' is used before being a if (isFoo) { obj.foo; // Not narrowed because isFoo has type annotation ~~~ -!!! error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. -!!! error TS2339: Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. +!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. +!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. } else { obj.bar; // Not narrowed because isFoo has type annotation ~~~ -!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. -!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. +!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. +!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. } } @@ -139,14 +139,14 @@ controlFlowAliasing.ts(280,5): error TS2454: Variable 'a' is used before being a if (isFoo) { obj.foo; // Not narrowed because isFoo is mutable ~~~ -!!! error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. -!!! error TS2339: Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. +!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. +!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. } else { obj.bar; // Not narrowed because isFoo is mutable ~~~ -!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. -!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. +!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. +!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. } } @@ -156,14 +156,14 @@ controlFlowAliasing.ts(280,5): error TS2454: Variable 'a' is used before being a if (isFoo) { obj.foo; // Not narrowed because obj is assigned in function body ~~~ -!!! error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. -!!! error TS2339: Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. +!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. +!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. } else { obj.bar; // Not narrowed because obj is assigned in function body ~~~ -!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. -!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. +!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. +!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. } } @@ -204,14 +204,14 @@ controlFlowAliasing.ts(280,5): error TS2454: Variable 'a' is used before being a if (isFoo) { outer.obj.foo; // Not narrowed because obj is mutable ~~~ -!!! error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. -!!! error TS2339: Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. +!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. +!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. } else { outer.obj.bar; // Not narrowed because obj is mutable ~~~ -!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. -!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. +!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. +!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. } } diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.errors.txt.diff new file mode 100644 index 00000000000..dcc0e01c347 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.errors.txt.diff @@ -0,0 +1,117 @@ +--- old.controlFlowAliasing.errors.txt ++++ new.controlFlowAliasing.errors.txt +@@= skipped -1, +1 lines =@@ + Type 'number' is not assignable to type 'string'. + controlFlowAliasing.ts(74,13): error TS2322: Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. +-controlFlowAliasing.ts(91,13): error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +- Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. +-controlFlowAliasing.ts(94,13): error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +- Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. +-controlFlowAliasing.ts(101,13): error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +- Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. +-controlFlowAliasing.ts(104,13): error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +- Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. +-controlFlowAliasing.ts(112,13): error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +- Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. +-controlFlowAliasing.ts(115,13): error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +- Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. +-controlFlowAliasing.ts(154,19): error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +- Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. +-controlFlowAliasing.ts(157,19): error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +- Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. ++controlFlowAliasing.ts(91,13): error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++ Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. ++controlFlowAliasing.ts(94,13): error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++ Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. ++controlFlowAliasing.ts(101,13): error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++ Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. ++controlFlowAliasing.ts(104,13): error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++ Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. ++controlFlowAliasing.ts(112,13): error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++ Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. ++controlFlowAliasing.ts(115,13): error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++ Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. ++controlFlowAliasing.ts(154,19): error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++ Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. ++controlFlowAliasing.ts(157,19): error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++ Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. + controlFlowAliasing.ts(233,13): error TS2322: Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. + controlFlowAliasing.ts(280,5): error TS2448: Block-scoped variable 'a' used before its declaration. +@@= skipped -121, +121 lines =@@ + if (isFoo) { + obj.foo; // Not narrowed because isFoo has type annotation + ~~~ +-!!! error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +-!!! error TS2339: Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. ++!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. + } + else { + obj.bar; // Not narrowed because isFoo has type annotation + ~~~ +-!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +-!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. ++!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. + } + } + +@@= skipped -16, +16 lines =@@ + if (isFoo) { + obj.foo; // Not narrowed because isFoo is mutable + ~~~ +-!!! error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +-!!! error TS2339: Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. ++!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. + } + else { + obj.bar; // Not narrowed because isFoo is mutable + ~~~ +-!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +-!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. ++!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. + } + } + +@@= skipped -17, +17 lines =@@ + if (isFoo) { + obj.foo; // Not narrowed because obj is assigned in function body + ~~~ +-!!! error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +-!!! error TS2339: Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. ++!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. + } + else { + obj.bar; // Not narrowed because obj is assigned in function body + ~~~ +-!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +-!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. ++!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. + } + } + +@@= skipped -48, +48 lines =@@ + if (isFoo) { + outer.obj.foo; // Not narrowed because obj is mutable + ~~~ +-!!! error TS2339: Property 'foo' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +-!!! error TS2339: Property 'foo' does not exist on type '{ kind: "bar"; bar: number; }'. ++!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++!!! error TS2339: Property 'foo' does not exist on type '{ kind: 'bar'; bar: number; }'. + } + else { + outer.obj.bar; // Not narrowed because obj is mutable + ~~~ +-!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }'. +-!!! error TS2339: Property 'bar' does not exist on type '{ kind: "foo"; foo: string; }'. ++!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }'. ++!!! error TS2339: Property 'bar' does not exist on type '{ kind: 'foo'; foo: string; }'. + } + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.types b/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.types index 254a02a3b0d..f4ad49599a4 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.types @@ -249,8 +249,8 @@ function f18(obj: readonly [string | number]) { } function f20(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f20 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f20 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -260,7 +260,7 @@ function f20(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { >isFoo : boolean >obj.kind === 'foo' : boolean >obj.kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'foo' : "foo" @@ -269,20 +269,20 @@ function f20(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { obj.foo; >obj.foo : string ->obj : { kind: "foo"; foo: string; } +>obj : { kind: 'foo'; foo: string; } >foo : string } else { obj.bar; >obj.bar : number ->obj : { kind: "bar"; bar: number; } +>obj : { kind: 'bar'; bar: number; } >bar : number } } function f21(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f21 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f21 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -292,7 +292,7 @@ function f21(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { >isFoo : boolean >obj.kind === 'foo' : boolean >obj.kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'foo' : "foo" @@ -301,20 +301,20 @@ function f21(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { obj.foo; // Not narrowed because isFoo has type annotation >obj.foo : any ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >foo : any } else { obj.bar; // Not narrowed because isFoo has type annotation >obj.bar : any ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >bar : any } } function f22(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f22 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f22 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -324,7 +324,7 @@ function f22(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { >isFoo : boolean >obj.kind === 'foo' : boolean >obj.kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'foo' : "foo" @@ -333,20 +333,20 @@ function f22(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { obj.foo; // Not narrowed because isFoo is mutable >obj.foo : any ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >foo : any } else { obj.bar; // Not narrowed because isFoo is mutable >obj.bar : any ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >bar : any } } function f23(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f23 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f23 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -356,48 +356,48 @@ function f23(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { >isFoo : boolean >obj.kind === 'foo' : boolean >obj.kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'foo' : "foo" obj = obj; ->obj = obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj = obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } if (isFoo) { >isFoo : boolean obj.foo; // Not narrowed because obj is assigned in function body >obj.foo : any ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >foo : any } else { obj.bar; // Not narrowed because obj is assigned in function body >obj.bar : any ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >bar : any } } function f24(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f24 : (arg: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f24 : (arg: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" >bar : number const obj = arg; ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ->arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } const isFoo = obj.kind === 'foo'; >isFoo : boolean >obj.kind === 'foo' : boolean >obj.kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'foo' : "foo" @@ -406,34 +406,34 @@ function f24(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { obj.foo; >obj.foo : string ->obj : { kind: "foo"; foo: string; } +>obj : { kind: 'foo'; foo: string; } >foo : string } else { obj.bar; >obj.bar : number ->obj : { kind: "bar"; bar: number; } +>obj : { kind: 'bar'; bar: number; } >bar : number } } function f25(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f25 : (arg: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f25 : (arg: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" >bar : number let obj = arg; ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ->arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } const isFoo = obj.kind === 'foo'; >isFoo : boolean >obj.kind === 'foo' : boolean >obj.kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'foo' : "foo" @@ -442,21 +442,21 @@ function f25(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { obj.foo; >obj.foo : string ->obj : { kind: "foo"; foo: string; } +>obj : { kind: 'foo'; foo: string; } >foo : string } else { obj.bar; >obj.bar : number ->obj : { kind: "bar"; bar: number; } +>obj : { kind: 'bar'; bar: number; } >bar : number } } function f26(outer: { readonly obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number } }) { ->f26 : (outer: { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; }) => void ->outer : { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f26 : (outer: { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; }) => void +>outer : { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -466,9 +466,9 @@ function f26(outer: { readonly obj: { kind: 'foo', foo: string } | { kind: 'bar' >isFoo : boolean >outer.obj.kind === 'foo' : boolean >outer.obj.kind : "bar" | "foo" ->outer.obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ->outer : { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>outer.obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>outer : { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'foo' : "foo" @@ -477,25 +477,25 @@ function f26(outer: { readonly obj: { kind: 'foo', foo: string } | { kind: 'bar' outer.obj.foo; >outer.obj.foo : string ->outer.obj : { kind: "foo"; foo: string; } ->outer : { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } ->obj : { kind: "foo"; foo: string; } +>outer.obj : { kind: 'foo'; foo: string; } +>outer : { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>obj : { kind: 'foo'; foo: string; } >foo : string } else { outer.obj.bar; >outer.obj.bar : number ->outer.obj : { kind: "bar"; bar: number; } ->outer : { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } ->obj : { kind: "bar"; bar: number; } +>outer.obj : { kind: 'bar'; bar: number; } +>outer : { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>obj : { kind: 'bar'; bar: number; } >bar : number } } function f27(outer: { obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number } }) { ->f27 : (outer: { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; }) => void ->outer : { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f27 : (outer: { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; }) => void +>outer : { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -505,9 +505,9 @@ function f27(outer: { obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: nu >isFoo : boolean >outer.obj.kind === 'foo' : boolean >outer.obj.kind : "bar" | "foo" ->outer.obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ->outer : { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>outer.obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>outer : { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'foo' : "foo" @@ -516,24 +516,24 @@ function f27(outer: { obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: nu outer.obj.foo; // Not narrowed because obj is mutable >outer.obj.foo : any ->outer.obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ->outer : { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>outer.obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>outer : { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >foo : any } else { outer.obj.bar; // Not narrowed because obj is mutable >outer.obj.bar : any ->outer.obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ->outer : { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>outer.obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>outer : { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >bar : any } } function f28(obj?: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f28 : (obj?: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined) => void ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined +>f28 : (obj?: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } | undefined >kind : "foo" >foo : string >kind : "bar" @@ -542,20 +542,20 @@ function f28(obj?: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) const isFoo = obj && obj.kind === 'foo'; >isFoo : boolean | undefined >obj && obj.kind === 'foo' : boolean | undefined ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } | undefined >obj.kind === 'foo' : boolean >obj.kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'foo' : "foo" const isBar = obj && obj.kind === 'bar'; >isBar : boolean | undefined >obj && obj.kind === 'bar' : boolean | undefined ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } | undefined >obj.kind === 'bar' : boolean >obj.kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" >'bar' : "bar" @@ -564,7 +564,7 @@ function f28(obj?: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) obj.foo; >obj.foo : string ->obj : { kind: "foo"; foo: string; } +>obj : { kind: 'foo'; foo: string; } >foo : string } if (isBar) { @@ -572,7 +572,7 @@ function f28(obj?: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) obj.bar; >obj.bar : number ->obj : { kind: "bar"; bar: number; } +>obj : { kind: 'bar'; bar: number; } >bar : number } } @@ -580,8 +580,8 @@ function f28(obj?: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) // Narrowing by aliased discriminant property access function f30(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f30 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f30 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -590,7 +590,7 @@ function f30(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { const kind = obj.kind; >kind : "bar" | "foo" >obj.kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "bar" | "foo" if (kind === 'foo') { @@ -600,20 +600,20 @@ function f30(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { obj.foo; >obj.foo : string ->obj : { kind: "foo"; foo: string; } +>obj : { kind: 'foo'; foo: string; } >foo : string } else { obj.bar; >obj.bar : number ->obj : { kind: "bar"; bar: number; } +>obj : { kind: 'bar'; bar: number; } >bar : number } } function f31(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f31 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f31 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -621,7 +621,7 @@ function f31(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { const { kind } = obj; >kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } if (kind === 'foo') { >kind === 'foo' : boolean @@ -630,20 +630,20 @@ function f31(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { obj.foo; >obj.foo : string ->obj : { kind: "foo"; foo: string; } +>obj : { kind: 'foo'; foo: string; } >foo : string } else { obj.bar; >obj.bar : number ->obj : { kind: "bar"; bar: number; } +>obj : { kind: 'bar'; bar: number; } >bar : number } } function f32(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f32 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f32 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -652,7 +652,7 @@ function f32(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { const { kind: k } = obj; >kind : any >k : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } if (k === 'foo') { >k === 'foo' : boolean @@ -661,20 +661,20 @@ function f32(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { obj.foo; >obj.foo : string ->obj : { kind: "foo"; foo: string; } +>obj : { kind: 'foo'; foo: string; } >foo : string } else { obj.bar; >obj.bar : number ->obj : { kind: "bar"; bar: number; } +>obj : { kind: 'bar'; bar: number; } >bar : number } } function f33(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f33 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>f33 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string >kind : "bar" @@ -682,7 +682,7 @@ function f33(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { const { kind } = obj; >kind : "bar" | "foo" ->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } switch (kind) { >kind : "bar" | "foo" @@ -690,13 +690,13 @@ function f33(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { case 'foo': obj.foo; break; >'foo' : "foo" >obj.foo : string ->obj : { kind: "foo"; foo: string; } +>obj : { kind: 'foo'; foo: string; } >foo : string case 'bar': obj.bar; break; >'bar' : "bar" >obj.bar : number ->obj : { kind: "bar"; bar: number; } +>obj : { kind: 'bar'; bar: number; } >bar : number } } @@ -809,8 +809,8 @@ class C11 { // Mixing of aliased discriminants and conditionals function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) { ->f40 : (obj: { kind: "foo"; foo?: string | undefined; } | { kind: "bar"; bar?: number | undefined; }) => void ->obj : { kind: "foo"; foo?: string | undefined; } | { kind: "bar"; bar?: number | undefined; } +>f40 : (obj: { kind: 'foo'; foo?: string; } | { kind: 'bar'; bar?: number; }) => void +>obj : { kind: 'foo'; foo?: string; } | { kind: 'bar'; bar?: number; } >kind : "foo" >foo : string | undefined >kind : "bar" @@ -818,7 +818,7 @@ function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) const { kind } = obj; >kind : "bar" | "foo" ->obj : { kind: "foo"; foo?: string | undefined; } | { kind: "bar"; bar?: number | undefined; } +>obj : { kind: 'foo'; foo?: string; } | { kind: 'bar'; bar?: number; } const isFoo = kind == 'foo'; >isFoo : boolean @@ -830,13 +830,13 @@ function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) >isFoo && obj.foo : string | false | undefined >isFoo : boolean >obj.foo : string | undefined ->obj : { kind: "foo"; foo?: string | undefined; } +>obj : { kind: 'foo'; foo?: string; } >foo : string | undefined let t: string = obj.foo; >t : string >obj.foo : string ->obj : { kind: "foo"; foo?: string | undefined; } +>obj : { kind: 'foo'; foo?: string; } >foo : string } } @@ -864,14 +864,14 @@ function gg2(obj: Data) { let t: string = obj.payload; >t : string >obj.payload : string ->obj : { kind: "str"; payload: string; } +>obj : { kind: 'str'; payload: string; } >payload : string } else { let t: number = obj.payload; >t : number >obj.payload : number ->obj : { kind: "num"; payload: number; } +>obj : { kind: 'num'; payload: number; } >payload : number } } diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.types.diff index 5711e7f84f7..b10260dc85f 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.types.diff +++ b/testdata/baselines/reference/submodule/conformance/controlFlowAliasing.types.diff @@ -1,22 +1,530 @@ --- old.controlFlowAliasing.types +++ new.controlFlowAliasing.types -@@= skipped -531, +531 lines =@@ +@@= skipped -248, +248 lines =@@ + } + + function f20(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f20 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f20 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -11, +11 lines =@@ + >isFoo : boolean + >obj.kind === 'foo' : boolean + >obj.kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'foo' : "foo" + +@@= skipped -9, +9 lines =@@ + + obj.foo; + >obj.foo : string +->obj : { kind: "foo"; foo: string; } ++>obj : { kind: 'foo'; foo: string; } + >foo : string + } + else { + obj.bar; + >obj.bar : number +->obj : { kind: "bar"; bar: number; } ++>obj : { kind: 'bar'; bar: number; } + >bar : number + } + } + + function f21(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f21 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f21 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -23, +23 lines =@@ + >isFoo : boolean + >obj.kind === 'foo' : boolean + >obj.kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'foo' : "foo" + +@@= skipped -9, +9 lines =@@ + + obj.foo; // Not narrowed because isFoo has type annotation + >obj.foo : any +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >foo : any + } + else { + obj.bar; // Not narrowed because isFoo has type annotation + >obj.bar : any +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >bar : any + } + } + + function f22(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f22 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f22 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -23, +23 lines =@@ + >isFoo : boolean + >obj.kind === 'foo' : boolean + >obj.kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'foo' : "foo" + +@@= skipped -9, +9 lines =@@ + + obj.foo; // Not narrowed because isFoo is mutable + >obj.foo : any +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >foo : any + } + else { + obj.bar; // Not narrowed because isFoo is mutable + >obj.bar : any +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >bar : any + } + } + + function f23(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f23 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f23 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -23, +23 lines =@@ + >isFoo : boolean + >obj.kind === 'foo' : boolean + >obj.kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'foo' : "foo" + + obj = obj; +->obj = obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj = obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + + if (isFoo) { + >isFoo : boolean + + obj.foo; // Not narrowed because obj is assigned in function body + >obj.foo : any +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >foo : any + } + else { + obj.bar; // Not narrowed because obj is assigned in function body + >obj.bar : any +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >bar : any + } + } + + function f24(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f24 : (arg: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f24 : (arg: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" + >bar : number + + const obj = arg; +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +->arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } ++>arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + + const isFoo = obj.kind === 'foo'; + >isFoo : boolean + >obj.kind === 'foo' : boolean + >obj.kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'foo' : "foo" + +@@= skipped -50, +50 lines =@@ + + obj.foo; + >obj.foo : string +->obj : { kind: "foo"; foo: string; } ++>obj : { kind: 'foo'; foo: string; } + >foo : string + } + else { + obj.bar; + >obj.bar : number +->obj : { kind: "bar"; bar: number; } ++>obj : { kind: 'bar'; bar: number; } + >bar : number + } + } + + function f25(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f25 : (arg: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f25 : (arg: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" + >bar : number + + let obj = arg; +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +->arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } ++>arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + + const isFoo = obj.kind === 'foo'; + >isFoo : boolean + >obj.kind === 'foo' : boolean + >obj.kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'foo' : "foo" + +@@= skipped -36, +36 lines =@@ + + obj.foo; + >obj.foo : string +->obj : { kind: "foo"; foo: string; } ++>obj : { kind: 'foo'; foo: string; } + >foo : string + } + else { + obj.bar; + >obj.bar : number +->obj : { kind: "bar"; bar: number; } ++>obj : { kind: 'bar'; bar: number; } + >bar : number + } + } + + function f26(outer: { readonly obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number } }) { +->f26 : (outer: { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; }) => void +->outer : { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f26 : (outer: { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; }) => void ++>outer : { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -24, +24 lines =@@ + >isFoo : boolean + >outer.obj.kind === 'foo' : boolean + >outer.obj.kind : "bar" | "foo" +->outer.obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +->outer : { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>outer.obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } ++>outer : { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'foo' : "foo" + +@@= skipped -11, +11 lines =@@ + + outer.obj.foo; + >outer.obj.foo : string +->outer.obj : { kind: "foo"; foo: string; } +->outer : { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } +->obj : { kind: "foo"; foo: string; } ++>outer.obj : { kind: 'foo'; foo: string; } ++>outer : { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } ++>obj : { kind: 'foo'; foo: string; } + >foo : string + } + else { + outer.obj.bar; + >outer.obj.bar : number +->outer.obj : { kind: "bar"; bar: number; } +->outer : { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } +->obj : { kind: "bar"; bar: number; } ++>outer.obj : { kind: 'bar'; bar: number; } ++>outer : { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } ++>obj : { kind: 'bar'; bar: number; } + >bar : number + } + } + + function f27(outer: { obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number } }) { +->f27 : (outer: { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; }) => void +->outer : { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f27 : (outer: { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; }) => void ++>outer : { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -28, +28 lines =@@ + >isFoo : boolean + >outer.obj.kind === 'foo' : boolean + >outer.obj.kind : "bar" | "foo" +->outer.obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +->outer : { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>outer.obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } ++>outer : { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'foo' : "foo" + +@@= skipped -11, +11 lines =@@ + + outer.obj.foo; // Not narrowed because obj is mutable + >outer.obj.foo : any +->outer.obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +->outer : { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>outer.obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } ++>outer : { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >foo : any + } + else { + outer.obj.bar; // Not narrowed because obj is mutable + >outer.obj.bar : any +->outer.obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } +->outer : { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>outer.obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } ++>outer : { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >bar : any + } } function f28(obj?: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f28 : (obj?: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void -+>f28 : (obj?: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined) => void - >obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined ++>f28 : (obj?: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } | undefined + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -26, +26 lines =@@ + const isFoo = obj && obj.kind === 'foo'; + >isFoo : boolean | undefined + >obj && obj.kind === 'foo' : boolean | undefined +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } | undefined + >obj.kind === 'foo' : boolean + >obj.kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'foo' : "foo" + + const isBar = obj && obj.kind === 'bar'; + >isBar : boolean | undefined + >obj && obj.kind === 'bar' : boolean | undefined +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } | undefined + >obj.kind === 'bar' : boolean + >obj.kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + >'bar' : "bar" + +@@= skipped -22, +22 lines =@@ + + obj.foo; + >obj.foo : string +->obj : { kind: "foo"; foo: string; } ++>obj : { kind: 'foo'; foo: string; } + >foo : string + } + if (isBar) { +@@= skipped -8, +8 lines =@@ + + obj.bar; + >obj.bar : number +->obj : { kind: "bar"; bar: number; } ++>obj : { kind: 'bar'; bar: number; } + >bar : number + } + } +@@= skipped -8, +8 lines =@@ + // Narrowing by aliased discriminant property access + + function f30(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f30 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f30 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } >kind : "foo" >foo : string -@@= skipped -277, +277 lines =@@ + >kind : "bar" +@@= skipped -10, +10 lines =@@ + const kind = obj.kind; + >kind : "bar" | "foo" + >obj.kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "bar" | "foo" + + if (kind === 'foo') { +@@= skipped -10, +10 lines =@@ + + obj.foo; + >obj.foo : string +->obj : { kind: "foo"; foo: string; } ++>obj : { kind: 'foo'; foo: string; } + >foo : string + } + else { + obj.bar; + >obj.bar : number +->obj : { kind: "bar"; bar: number; } ++>obj : { kind: 'bar'; bar: number; } + >bar : number + } + } + + function f31(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f31 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f31 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -21, +21 lines =@@ + + const { kind } = obj; + >kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + + if (kind === 'foo') { + >kind === 'foo' : boolean +@@= skipped -9, +9 lines =@@ + + obj.foo; + >obj.foo : string +->obj : { kind: "foo"; foo: string; } ++>obj : { kind: 'foo'; foo: string; } + >foo : string + } + else { + obj.bar; + >obj.bar : number +->obj : { kind: "bar"; bar: number; } ++>obj : { kind: 'bar'; bar: number; } + >bar : number + } + } + + function f32(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f32 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f32 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -22, +22 lines =@@ + const { kind: k } = obj; + >kind : any + >k : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + + if (k === 'foo') { + >k === 'foo' : boolean +@@= skipped -9, +9 lines =@@ + + obj.foo; + >obj.foo : string +->obj : { kind: "foo"; foo: string; } ++>obj : { kind: 'foo'; foo: string; } + >foo : string + } + else { + obj.bar; + >obj.bar : number +->obj : { kind: "bar"; bar: number; } ++>obj : { kind: 'bar'; bar: number; } + >bar : number + } + } + + function f33(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { +->f33 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>f33 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + >kind : "foo" + >foo : string + >kind : "bar" +@@= skipped -21, +21 lines =@@ + + const { kind } = obj; + >kind : "bar" | "foo" +->obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } ++>obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } + + switch (kind) { + >kind : "bar" | "foo" +@@= skipped -8, +8 lines =@@ + case 'foo': obj.foo; break; + >'foo' : "foo" + >obj.foo : string +->obj : { kind: "foo"; foo: string; } ++>obj : { kind: 'foo'; foo: string; } + >foo : string + + case 'bar': obj.bar; break; + >'bar' : "bar" + >obj.bar : number +->obj : { kind: "bar"; bar: number; } ++>obj : { kind: 'bar'; bar: number; } + >bar : number + } + } +@@= skipped -119, +119 lines =@@ // Mixing of aliased discriminants and conditionals function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) { ->f40 : (obj: { kind: "foo"; foo?: string; } | { kind: "bar"; bar?: number; }) => void ->obj : { kind: "foo"; foo?: string; } | { kind: "bar"; bar?: number; } -+>f40 : (obj: { kind: "foo"; foo?: string | undefined; } | { kind: "bar"; bar?: number | undefined; }) => void -+>obj : { kind: "foo"; foo?: string | undefined; } | { kind: "bar"; bar?: number | undefined; } ++>f40 : (obj: { kind: 'foo'; foo?: string; } | { kind: 'bar'; bar?: number; }) => void ++>obj : { kind: 'foo'; foo?: string; } | { kind: 'bar'; bar?: number; } >kind : "foo" >foo : string | undefined >kind : "bar" @@ -25,7 +533,7 @@ const { kind } = obj; >kind : "bar" | "foo" ->obj : { kind: "foo"; foo?: string; } | { kind: "bar"; bar?: number; } -+>obj : { kind: "foo"; foo?: string | undefined; } | { kind: "bar"; bar?: number | undefined; } ++>obj : { kind: 'foo'; foo?: string; } | { kind: 'bar'; bar?: number; } const isFoo = kind == 'foo'; >isFoo : boolean @@ -34,14 +542,31 @@ >isFoo : boolean >obj.foo : string | undefined ->obj : { kind: "foo"; foo?: string; } -+>obj : { kind: "foo"; foo?: string | undefined; } ++>obj : { kind: 'foo'; foo?: string; } >foo : string | undefined let t: string = obj.foo; >t : string >obj.foo : string ->obj : { kind: "foo"; foo?: string; } -+>obj : { kind: "foo"; foo?: string | undefined; } ++>obj : { kind: 'foo'; foo?: string; } >foo : string } + } +@@= skipped -34, +34 lines =@@ + let t: string = obj.payload; + >t : string + >obj.payload : string +->obj : { kind: "str"; payload: string; } ++>obj : { kind: 'str'; payload: string; } + >payload : string + } + else { + let t: number = obj.payload; + >t : number + >obj.payload : number +->obj : { kind: "num"; payload: number; } ++>obj : { kind: 'num'; payload: number; } + >payload : number + } } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowComputedPropertyNames.types b/testdata/baselines/reference/submodule/conformance/controlFlowComputedPropertyNames.types index 4306380c3d4..66253523cb8 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowComputedPropertyNames.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowComputedPropertyNames.types @@ -132,11 +132,11 @@ function f3(obj: Thing, key: keyof Thing) { obj[key].toFixed(); >obj[key].toFixed() : string ->obj[key].toFixed : (fractionDigits?: number | undefined) => string +>obj[key].toFixed : (fractionDigits?: number) => string >obj[key] : number >obj : Thing >key : keyof Thing ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } } } diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowComputedPropertyNames.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowComputedPropertyNames.types.diff deleted file mode 100644 index fff500dbcad..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowComputedPropertyNames.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.controlFlowComputedPropertyNames.types -+++ new.controlFlowComputedPropertyNames.types -@@= skipped -131, +131 lines =@@ - - obj[key].toFixed(); - >obj[key].toFixed() : string -->obj[key].toFixed : (fractionDigits?: number) => string -+>obj[key].toFixed : (fractionDigits?: number | undefined) => string - >obj[key] : number - >obj : Thing - >key : keyof Thing -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowDeleteOperator.types b/testdata/baselines/reference/submodule/conformance/controlFlowDeleteOperator.types index 64058182c36..6382f47f2df 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowDeleteOperator.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowDeleteOperator.types @@ -5,7 +5,7 @@ function f() { >f : () => void let x: { a?: number | string, b: number | string } = { b: 1 }; ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >a : string | number | undefined >b : string | number >{ b: 1 } : { b: number; } @@ -14,67 +14,67 @@ function f() { x.a; >x.a : string | number | undefined ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >a : string | number | undefined x.b; >x.b : string | number ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >b : string | number x.a = 1; >x.a = 1 : 1 >x.a : string | number | undefined ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >a : string | number | undefined >1 : 1 x.b = 1; >x.b = 1 : 1 >x.b : string | number ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >b : string | number >1 : 1 x.a; >x.a : number ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >a : number x.b; >x.b : number ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >b : number delete x.a; >delete x.a : boolean >x.a : number ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >a : number delete x.b; >delete x.b : boolean >x.b : number ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >b : number x.a; >x.a : undefined ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >a : undefined x.b; >x.b : string | number ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } >b : string | number x; ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } delete x; // No effect >delete x : boolean ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } x; ->x : { a?: string | number | undefined; b: string | number; } +>x : { a?: number | string; b: number | string; } } diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowDeleteOperator.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowDeleteOperator.types.diff deleted file mode 100644 index 970307fee9a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowDeleteOperator.types.diff +++ /dev/null @@ -1,92 +0,0 @@ ---- old.controlFlowDeleteOperator.types -+++ new.controlFlowDeleteOperator.types -@@= skipped -4, +4 lines =@@ - >f : () => void - - let x: { a?: number | string, b: number | string } = { b: 1 }; -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >a : string | number | undefined - >b : string | number - >{ b: 1 } : { b: number; } -@@= skipped -9, +9 lines =@@ - - x.a; - >x.a : string | number | undefined -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >a : string | number | undefined - - x.b; - >x.b : string | number -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >b : string | number - - x.a = 1; - >x.a = 1 : 1 - >x.a : string | number | undefined -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >a : string | number | undefined - >1 : 1 - - x.b = 1; - >x.b = 1 : 1 - >x.b : string | number -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >b : string | number - >1 : 1 - - x.a; - >x.a : number -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >a : number - - x.b; - >x.b : number -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >b : number - - delete x.a; - >delete x.a : boolean - >x.a : number -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >a : number - - delete x.b; - >delete x.b : boolean - >x.b : number -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >b : number - - x.a; - >x.a : undefined -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >a : undefined - - x.b; - >x.b : string | number -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - >b : string | number - - x; -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - - delete x; // No effect - >delete x : boolean -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - - x; -->x : { a?: number | string; b: number | string; } -+>x : { a?: string | number | undefined; b: string | number; } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowForOfStatement.types b/testdata/baselines/reference/submodule/conformance/controlFlowForOfStatement.types index 8333955ce47..3ff6bc0418a 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowForOfStatement.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowForOfStatement.types @@ -23,9 +23,9 @@ function a() { >x = x.toExponential() : string >x : string | number | boolean | RegExp >x.toExponential() : string ->x.toExponential : (fractionDigits?: number | undefined) => string +>x.toExponential : (fractionDigits?: number) => string >x : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string } x; // string | boolean >x : string | true diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowForOfStatement.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowForOfStatement.types.diff deleted file mode 100644 index cffc37e21e0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowForOfStatement.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.controlFlowForOfStatement.types -+++ new.controlFlowForOfStatement.types -@@= skipped -22, +22 lines =@@ - >x = x.toExponential() : string - >x : string | number | boolean | RegExp - >x.toExponential() : string -->x.toExponential : (fractionDigits?: number) => string -+>x.toExponential : (fractionDigits?: number | undefined) => string - >x : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - } - x; // string | boolean - >x : string | true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowForStatement.types b/testdata/baselines/reference/submodule/conformance/controlFlowForStatement.types index ff38f229563..2e9c75ff45f 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowForStatement.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowForStatement.types @@ -62,9 +62,9 @@ function c() { >x = x.toExponential() : string >x : string | number | boolean >x.toExponential() : string ->x.toExponential : (fractionDigits?: number | undefined) => string +>x.toExponential : (fractionDigits?: number) => string >x : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string >x = 5 : 5 >x : string | number | boolean >5 : 5 diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowForStatement.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowForStatement.types.diff deleted file mode 100644 index 11e641bb139..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowForStatement.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.controlFlowForStatement.types -+++ new.controlFlowForStatement.types -@@= skipped -61, +61 lines =@@ - >x = x.toExponential() : string - >x : string | number | boolean - >x.toExponential() : string -->x.toExponential : (fractionDigits?: number) => string -+>x.toExponential : (fractionDigits?: number | undefined) => string - >x : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - >x = 5 : 5 - >x : string | number | boolean - >5 : 5 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowGenericTypes.types b/testdata/baselines/reference/submodule/conformance/controlFlowGenericTypes.types index b678252f8de..35210bb1d24 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowGenericTypes.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowGenericTypes.types @@ -168,11 +168,11 @@ function g4 | undefined>(x: T) { // Repro from #13995 declare function takeA(val: 'A'): void; ->takeA : (val: "A") => void +>takeA : (val: 'A') => void >val : "A" export function bounceAndTakeIfA(value: AB): AB { ->bounceAndTakeIfA : (value: AB) => AB +>bounceAndTakeIfA : (value: AB) => AB >value : AB if (value === 'A') { @@ -182,7 +182,7 @@ export function bounceAndTakeIfA(value: AB): AB { takeA(value); >takeA(value) : void ->takeA : (val: "A") => void +>takeA : (val: 'A') => void >value : "A" return value; @@ -332,7 +332,7 @@ interface A { }; function get(key: K, obj: A): number { ->get : (key: K, obj: A) => number +>get : (key: K, obj: A) => number >key : K >obj : A @@ -360,7 +360,7 @@ class EventEmitter { >EventEmitter : EventEmitter off(...args: [K, number] | [unknown, string]):void {} ->off : (...args: [unknown, string] | [K, number]) => void +>off : (...args: [K, number] | [unknown, string]) => void >args : [unknown, string] | [K, number] } function once>(emittingObject: T, eventName: keyof ET): void { @@ -586,13 +586,13 @@ type Column = (keyof T extends never ? { id?: number | string } : { id: T }) >title : string | undefined function getColumnProperty(column: Column, key: keyof Column) { ->getColumnProperty : (column: Column, key: "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })) => Column["title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { 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?: string | number | undefined; } : { id: T; }) +>key : "title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; }) return column[key]; ->column[key] : Column["title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })] +>column[key] : Column["title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; })] >column : Column ->key : "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; }) +>key : "title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; }) } diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowGenericTypes.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowGenericTypes.types.diff index 74aa45cffb7..41096b96c9b 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowGenericTypes.types.diff +++ b/testdata/baselines/reference/submodule/conformance/controlFlowGenericTypes.types.diff @@ -1,37 +1,25 @@ --- old.controlFlowGenericTypes.types +++ new.controlFlowGenericTypes.types -@@= skipped -331, +331 lines =@@ - }; +@@= skipped -167, +167 lines =@@ + // Repro from #13995 - function get(key: K, obj: A): number { -->get : (key: K, obj: A) => number -+>get : (key: K, obj: A) => number - >key : K - >obj : A + declare function takeA(val: 'A'): void; +->takeA : (val: "A") => void ++>takeA : (val: 'A') => void + >val : "A" -@@= skipped -28, +28 lines =@@ - >EventEmitter : EventEmitter + export function bounceAndTakeIfA(value: AB): AB { +->bounceAndTakeIfA : (value: AB) => AB ++>bounceAndTakeIfA : (value: AB) => AB + >value : AB - off(...args: [K, number] | [unknown, string]):void {} -->off : (...args: [K, number] | [unknown, string]) => void -+>off : (...args: [unknown, string] | [K, number]) => void - >args : [unknown, string] | [K, number] - } - function once>(emittingObject: T, eventName: keyof ET): void { -@@= skipped -226, +226 lines =@@ - >title : string | undefined + if (value === 'A') { +@@= skipped -14, +14 lines =@@ - 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: "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })) => Column["title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })] - >column : Column -->key : "title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; }) -+>key : "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; }) + takeA(value); + >takeA(value) : void +->takeA : (val: "A") => void ++>takeA : (val: 'A') => void + >value : "A" - return column[key]; -->column[key] : Column["title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; })] -+>column[key] : Column["title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })] - >column : Column -->key : "title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; }) -+>key : "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; }) - } + return value; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowIIFE.types b/testdata/baselines/reference/submodule/conformance/controlFlowIIFE.types index 4f30ec9cdba..df88e747569 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowIIFE.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowIIFE.types @@ -146,9 +146,9 @@ if (!test) { test.slice(1); // No error >test.slice(1) : string ->test.slice : (start?: number | undefined, end?: number | undefined) => string +>test.slice : (start?: number, end?: number) => string >test : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string >1 : 1 })(); diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowIIFE.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowIIFE.types.diff deleted file mode 100644 index 3ed68c7ec56..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowIIFE.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.controlFlowIIFE.types -+++ new.controlFlowIIFE.types -@@= skipped -145, +145 lines =@@ - - test.slice(1); // No error - >test.slice(1) : string -->test.slice : (start?: number, end?: number) => string -+>test.slice : (start?: number | undefined, end?: number | undefined) => string - >test : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - >1 : 1 - - })(); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowIfStatement.types b/testdata/baselines/reference/submodule/conformance/controlFlowIfStatement.types index 2330b9d22f6..37fb95fca10 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowIfStatement.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowIfStatement.types @@ -103,9 +103,9 @@ function c(data: string | T): T { return JSON.parse(data); >JSON.parse(data) : any ->JSON.parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any +>JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any >JSON : JSON ->parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any +>parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any >data : string | (T & string) } else { diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowIfStatement.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowIfStatement.types.diff deleted file mode 100644 index f9c9a94c248..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowIfStatement.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.controlFlowIfStatement.types -+++ new.controlFlowIfStatement.types -@@= skipped -102, +102 lines =@@ - - return JSON.parse(data); - >JSON.parse(data) : any -->JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any -+>JSON.parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any - >JSON : JSON -->parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any -+>parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any - >data : string | (T & string) - } - else { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowInstanceOfGuardPrimitives.types b/testdata/baselines/reference/submodule/conformance/controlFlowInstanceOfGuardPrimitives.types index d1f919c3a13..6f27e67dbeb 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowInstanceOfGuardPrimitives.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowInstanceOfGuardPrimitives.types @@ -48,9 +48,9 @@ function distinguish(thing: string | number | Date) { >"Aha!! It's the number " + thing.toPrecision(3) : string >"Aha!! It's the number " : "Aha!! It's the number " >thing.toPrecision(3) : string ->thing.toPrecision : (precision?: number | undefined) => string +>thing.toPrecision : (precision?: number) => string >thing : number ->toPrecision : (precision?: number | undefined) => string +>toPrecision : (precision?: number) => string >3 : 3 } } diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowInstanceOfGuardPrimitives.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowInstanceOfGuardPrimitives.types.diff deleted file mode 100644 index ac8c323b594..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowInstanceOfGuardPrimitives.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.controlFlowInstanceOfGuardPrimitives.types -+++ new.controlFlowInstanceOfGuardPrimitives.types -@@= skipped -47, +47 lines =@@ - >"Aha!! It's the number " + thing.toPrecision(3) : string - >"Aha!! It's the number " : "Aha!! It's the number " - >thing.toPrecision(3) : string -->thing.toPrecision : (precision?: number) => string -+>thing.toPrecision : (precision?: number | undefined) => string - >thing : number -->toPrecision : (precision?: number) => string -+>toPrecision : (precision?: number | undefined) => string - >3 : 3 - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowNullishCoalesce.types b/testdata/baselines/reference/submodule/conformance/controlFlowNullishCoalesce.types index bb7f21facc5..485d047d248 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowNullishCoalesce.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowNullishCoalesce.types @@ -15,9 +15,9 @@ o ?? (a = 1); a.toString(); >a.toString() : string ->a.toString : (radix?: number | undefined) => string +>a.toString : (radix?: number) => string >a : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string // assignment flow declare const o: { x: number } | undefined; diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowNullishCoalesce.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowNullishCoalesce.types.diff deleted file mode 100644 index 35afdcc6e0a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowNullishCoalesce.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.controlFlowNullishCoalesce.types -+++ new.controlFlowNullishCoalesce.types -@@= skipped -14, +14 lines =@@ - - a.toString(); - >a.toString() : string -->a.toString : (radix?: number) => string -+>a.toString : (radix?: number | undefined) => string - >a : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - // assignment flow - declare const o: { x: number } | undefined; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain.types b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain.types index 50422b63759..183123ab74e 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain.types @@ -28,9 +28,9 @@ o?.[a = 1]; a.toString(); >a.toString() : string ->a.toString : (radix?: number | undefined) => string +>a.toString : (radix?: number) => string >a : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let b: number; >b : number @@ -46,9 +46,9 @@ o?.x[b = 1]; b.toString(); >b.toString() : string ->b.toString : (radix?: number | undefined) => string +>b.toString : (radix?: number) => string >b : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let c: number; >c : number @@ -62,9 +62,9 @@ o?.(c = 1) c.toString(); >c.toString() : string ->c.toString : (radix?: number | undefined) => string +>c.toString : (radix?: number) => string >c : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string let d: number; >d : number @@ -80,9 +80,9 @@ o?.x(d = 1); d.toString(); >d.toString() : string ->d.toString : (radix?: number | undefined) => string +>d.toString : (radix?: number) => string >d : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string // type predicates declare const f: undefined | ((x: any) => x is number); @@ -251,256 +251,256 @@ o3.x; >x : 1 | 2 declare const o4: { x?: { y: boolean } }; ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } | undefined >y : boolean if (o4.x?.y) { >o4.x?.y : boolean | undefined >o4.x : { y: boolean; } | undefined ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } | undefined >y : boolean | undefined o4.x; // { y: boolean } >o4.x : { y: boolean; } ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } o4.x.y; // true >o4.x.y : true >o4.x : { y: boolean; } ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } >y : true o4.x?.y; // true >o4.x?.y : true >o4.x : { y: boolean; } ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } >y : true } else { o4.x; >o4.x : { y: boolean; } | undefined ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } | undefined o4.x?.y; >o4.x?.y : boolean | undefined >o4.x : { y: boolean; } | undefined ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } | undefined >y : boolean | undefined o4.x.y; >o4.x.y : boolean >o4.x : { y: boolean; } | undefined ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } | undefined >y : boolean } o4.x; >o4.x : { y: boolean; } | undefined ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } | undefined o4.x?.y; >o4.x?.y : boolean | undefined >o4.x : { y: boolean; } | undefined ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } | undefined >y : boolean | undefined o4.x.y; >o4.x.y : boolean >o4.x : { y: boolean; } | undefined ->o4 : { x?: { y: boolean; } | undefined; } +>o4 : { x?: { y: boolean; }; } >x : { y: boolean; } | undefined >y : boolean declare const o5: { x?: { y: { z?: { w: boolean } } } }; ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } >z : { w: boolean; } | undefined >w : boolean if (o5.x?.y.z?.w) { >o5.x?.y.z?.w : boolean | undefined >o5.x?.y.z : { w: boolean; } | undefined ->o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } | undefined +>o5.x?.y : { z?: { w: boolean; }; } | undefined +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } | undefined >z : { w: boolean; } | undefined >w : boolean | undefined o5.x; ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } o5.x.y; ->o5.x.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } ->y : { z?: { w: boolean; } | undefined; } +>o5.x.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } +>y : { z?: { w: boolean; }; } o5.x.y.z; >o5.x.y.z : { w: boolean; } ->o5.x.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } ->y : { z?: { w: boolean; } | undefined; } +>o5.x.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } +>y : { z?: { w: boolean; }; } >z : { w: boolean; } o5.x.y.z.w; // true >o5.x.y.z.w : true >o5.x.y.z : { w: boolean; } ->o5.x.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } ->y : { z?: { w: boolean; } | undefined; } +>o5.x.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } +>y : { z?: { w: boolean; }; } >z : { w: boolean; } >w : true o5.x.y.z?.w; // true >o5.x.y.z?.w : true >o5.x.y.z : { w: boolean; } ->o5.x.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } ->y : { z?: { w: boolean; } | undefined; } +>o5.x.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } +>y : { z?: { w: boolean; }; } >z : { w: boolean; } >w : true o5.x?.y.z.w; // true >o5.x?.y.z.w : true >o5.x?.y.z : { w: boolean; } ->o5.x?.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } ->y : { z?: { w: boolean; } | undefined; } +>o5.x?.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } +>y : { z?: { w: boolean; }; } >z : { w: boolean; } >w : true o5.x?.y.z?.w; // true >o5.x?.y.z?.w : true >o5.x?.y.z : { w: boolean; } ->o5.x?.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } ->y : { z?: { w: boolean; } | undefined; } +>o5.x?.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } +>y : { z?: { w: boolean; }; } >z : { w: boolean; } >w : true } else { o5.x; ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined o5.x?.y; ->o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } | undefined +>o5.x?.y : { z?: { w: boolean; }; } | undefined +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } | undefined o5.x?.y.z; >o5.x?.y.z : { w: boolean; } | undefined ->o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } | undefined +>o5.x?.y : { z?: { w: boolean; }; } | undefined +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } | undefined >z : { w: boolean; } | undefined o5.x?.y.z?.w; >o5.x?.y.z?.w : boolean | undefined >o5.x?.y.z : { w: boolean; } | undefined ->o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } | undefined +>o5.x?.y : { z?: { w: boolean; }; } | undefined +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } | undefined >z : { w: boolean; } | undefined >w : boolean | undefined o5.x.y; ->o5.x.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } +>o5.x.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } o5.x.y.z.w; >o5.x.y.z.w : boolean >o5.x.y.z : { w: boolean; } | undefined ->o5.x.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } +>o5.x.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } >z : { w: boolean; } | undefined >w : boolean } o5.x; ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined o5.x?.y; ->o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } | undefined +>o5.x?.y : { z?: { w: boolean; }; } | undefined +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } | undefined o5.x?.y.z; >o5.x?.y.z : { w: boolean; } | undefined ->o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } | undefined +>o5.x?.y : { z?: { w: boolean; }; } | undefined +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } | undefined >z : { w: boolean; } | undefined o5.x?.y.z?.w; >o5.x?.y.z?.w : boolean | undefined >o5.x?.y.z : { w: boolean; } | undefined ->o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } | undefined +>o5.x?.y : { z?: { w: boolean; }; } | undefined +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } | undefined >z : { w: boolean; } | undefined >w : boolean | undefined o5.x.y; ->o5.x.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } +>o5.x.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } o5.x.y.z.w; >o5.x.y.z.w : boolean >o5.x.y.z : { w: boolean; } | undefined ->o5.x.y : { z?: { w: boolean; } | undefined; } ->o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } ->x : { y: { z?: { w: boolean; } | undefined; }; } | undefined ->y : { z?: { w: boolean; } | undefined; } +>o5.x.y : { z?: { w: boolean; }; } +>o5.x : { y: { z?: { w: boolean; }; }; } | undefined +>o5 : { x?: { y: { z?: { w: boolean; }; }; }; } +>x : { y: { z?: { w: boolean; }; }; } | undefined +>y : { z?: { w: boolean; }; } >z : { w: boolean; } | undefined >w : boolean @@ -1874,7 +1874,7 @@ type Shape = >radius : number function getArea(shape?: Shape) { ->getArea : (shape?: Shape | undefined) => number +>getArea : (shape?: Shape) => number >shape : Shape | undefined switch (shape?.type) { @@ -1892,7 +1892,7 @@ function getArea(shape?: Shape) { >PI : number >shape.radius ** 2 : number >shape.radius : number ->shape : { type: "circle"; radius: number; } +>shape : { type: 'circle'; radius: number; } >radius : number >2 : 2 @@ -1902,10 +1902,10 @@ function getArea(shape?: Shape) { return shape.width * shape.height >shape.width * shape.height : number >shape.width : number ->shape : { type: "rectangle"; width: number; height: number; } +>shape : { type: 'rectangle'; width: number; height: number; } >width : number >shape.height : number ->shape : { type: "rectangle"; width: number; height: number; } +>shape : { type: 'rectangle'; width: number; height: number; } >height : number default: @@ -2030,14 +2030,14 @@ let i = 0; >0 : 0 declare const arr: { tag: ("left" | "right") }[]; ->arr : { tag: "left" | "right"; }[] +>arr : { tag: ("left" | "right"); }[] >tag : "left" | "right" while (arr[i]?.tag === "left") { >arr[i]?.tag === "left" : boolean >arr[i]?.tag : "left" | "right" ->arr[i] : { tag: "left" | "right"; } ->arr : { tag: "left" | "right"; }[] +>arr[i] : { tag: ("left" | "right"); } +>arr : { tag: ("left" | "right"); }[] >i : number >tag : "left" | "right" >"left" : "left" @@ -2050,8 +2050,8 @@ while (arr[i]?.tag === "left") { if (arr[i]?.tag === "right") { >arr[i]?.tag === "right" : boolean >arr[i]?.tag : "left" | "right" ->arr[i] : { tag: "left" | "right"; } ->arr : { tag: "left" | "right"; }[] +>arr[i] : { tag: ("left" | "right"); } +>arr : { tag: ("left" | "right"); }[] >i : number >tag : "left" | "right" >"right" : "right" diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain.types.diff index 36095c6cea8..9989f0acfef 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain.types.diff +++ b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain.types.diff @@ -1,453 +1,24 @@ --- old.controlFlowOptionalChain.types +++ new.controlFlowOptionalChain.types -@@= skipped -27, +27 lines =@@ - - a.toString(); - >a.toString() : string -->a.toString : (radix?: number) => string -+>a.toString : (radix?: number | undefined) => string - >a : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let b: number; - >b : number -@@= skipped -18, +18 lines =@@ - - b.toString(); - >b.toString() : string -->b.toString : (radix?: number) => string -+>b.toString : (radix?: number | undefined) => string - >b : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let c: number; - >c : number -@@= skipped -16, +16 lines =@@ - - c.toString(); - >c.toString() : string -->c.toString : (radix?: number) => string -+>c.toString : (radix?: number | undefined) => string - >c : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - let d: number; - >d : number -@@= skipped -18, +18 lines =@@ - - d.toString(); - >d.toString() : string -->d.toString : (radix?: number) => string -+>d.toString : (radix?: number | undefined) => string - >d : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - // type predicates - declare const f: undefined | ((x: any) => x is number); -@@= skipped -171, +171 lines =@@ - >x : 1 | 2 - - declare const o4: { x?: { y: boolean } }; -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } | undefined - >y : boolean - - if (o4.x?.y) { - >o4.x?.y : boolean | undefined - >o4.x : { y: boolean; } | undefined -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } | undefined - >y : boolean | undefined - - o4.x; // { y: boolean } - >o4.x : { y: boolean; } -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } - - o4.x.y; // true - >o4.x.y : true - >o4.x : { y: boolean; } -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } - >y : true - - o4.x?.y; // true - >o4.x?.y : true - >o4.x : { y: boolean; } -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } - >y : true - } - else { - o4.x; - >o4.x : { y: boolean; } | undefined -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } | undefined - - o4.x?.y; - >o4.x?.y : boolean | undefined - >o4.x : { y: boolean; } | undefined -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } | undefined - >y : boolean | undefined - - o4.x.y; - >o4.x.y : boolean - >o4.x : { y: boolean; } | undefined -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } | undefined - >y : boolean - } - o4.x; - >o4.x : { y: boolean; } | undefined -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } | undefined - - o4.x?.y; - >o4.x?.y : boolean | undefined - >o4.x : { y: boolean; } | undefined -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } | undefined - >y : boolean | undefined - - o4.x.y; - >o4.x.y : boolean - >o4.x : { y: boolean; } | undefined -->o4 : { x?: { y: boolean; }; } -+>o4 : { x?: { y: boolean; } | undefined; } - >x : { y: boolean; } | undefined - >y : boolean - - declare const o5: { x?: { y: { z?: { w: boolean } } } }; -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } - >z : { w: boolean; } | undefined - >w : boolean - - if (o5.x?.y.z?.w) { - >o5.x?.y.z?.w : boolean | undefined - >o5.x?.y.z : { w: boolean; } | undefined -->o5.x?.y : { z?: { w: boolean; }; } | undefined -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } | undefined -+>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } | undefined - >z : { w: boolean; } | undefined - >w : boolean | undefined - - o5.x; -->o5.x : { y: { z?: { w: boolean; }; }; } -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } - - o5.x.y; -->o5.x.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } -->y : { z?: { w: boolean; }; } -+>o5.x.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } -+>y : { z?: { w: boolean; } | undefined; } - - o5.x.y.z; - >o5.x.y.z : { w: boolean; } -->o5.x.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } -->y : { z?: { w: boolean; }; } -+>o5.x.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } -+>y : { z?: { w: boolean; } | undefined; } - >z : { w: boolean; } - - o5.x.y.z.w; // true - >o5.x.y.z.w : true - >o5.x.y.z : { w: boolean; } -->o5.x.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } -->y : { z?: { w: boolean; }; } -+>o5.x.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } -+>y : { z?: { w: boolean; } | undefined; } - >z : { w: boolean; } - >w : true - - o5.x.y.z?.w; // true - >o5.x.y.z?.w : true - >o5.x.y.z : { w: boolean; } -->o5.x.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } -->y : { z?: { w: boolean; }; } -+>o5.x.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } -+>y : { z?: { w: boolean; } | undefined; } - >z : { w: boolean; } - >w : true - - o5.x?.y.z.w; // true - >o5.x?.y.z.w : true - >o5.x?.y.z : { w: boolean; } -->o5.x?.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } -->y : { z?: { w: boolean; }; } -+>o5.x?.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } -+>y : { z?: { w: boolean; } | undefined; } - >z : { w: boolean; } - >w : true - - o5.x?.y.z?.w; // true - >o5.x?.y.z?.w : true - >o5.x?.y.z : { w: boolean; } -->o5.x?.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } -->y : { z?: { w: boolean; }; } -+>o5.x?.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } -+>y : { z?: { w: boolean; } | undefined; } - >z : { w: boolean; } - >w : true - } - else { - o5.x; -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined - - o5.x?.y; -->o5.x?.y : { z?: { w: boolean; }; } | undefined -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } | undefined -+>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } | undefined - - o5.x?.y.z; - >o5.x?.y.z : { w: boolean; } | undefined -->o5.x?.y : { z?: { w: boolean; }; } | undefined -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } | undefined -+>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } | undefined - >z : { w: boolean; } | undefined - - o5.x?.y.z?.w; - >o5.x?.y.z?.w : boolean | undefined - >o5.x?.y.z : { w: boolean; } | undefined -->o5.x?.y : { z?: { w: boolean; }; } | undefined -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } | undefined -+>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } | undefined - >z : { w: boolean; } | undefined - >w : boolean | undefined - - o5.x.y; -->o5.x.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } -+>o5.x.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } - - o5.x.y.z.w; - >o5.x.y.z.w : boolean - >o5.x.y.z : { w: boolean; } | undefined -->o5.x.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } -+>o5.x.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } - >z : { w: boolean; } | undefined - >w : boolean - } - o5.x; -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined - - o5.x?.y; -->o5.x?.y : { z?: { w: boolean; }; } | undefined -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } | undefined -+>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } | undefined - - o5.x?.y.z; - >o5.x?.y.z : { w: boolean; } | undefined -->o5.x?.y : { z?: { w: boolean; }; } | undefined -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } | undefined -+>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } | undefined - >z : { w: boolean; } | undefined - - o5.x?.y.z?.w; - >o5.x?.y.z?.w : boolean | undefined - >o5.x?.y.z : { w: boolean; } | undefined -->o5.x?.y : { z?: { w: boolean; }; } | undefined -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } | undefined -+>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } | undefined - >z : { w: boolean; } | undefined - >w : boolean | undefined - - o5.x.y; -->o5.x.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } -+>o5.x.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } - - o5.x.y.z.w; - >o5.x.y.z.w : boolean - >o5.x.y.z : { w: boolean; } | undefined -->o5.x.y : { z?: { w: boolean; }; } -->o5.x : { y: { z?: { w: boolean; }; }; } | undefined -->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -->x : { y: { z?: { w: boolean; }; }; } | undefined -->y : { z?: { w: boolean; }; } -+>o5.x.y : { z?: { w: boolean; } | undefined; } -+>o5.x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } -+>x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -+>y : { z?: { w: boolean; } | undefined; } - >z : { w: boolean; } | undefined - >w : boolean - -@@= skipped -1623, +1623 lines =@@ +@@= skipped -1891, +1891 lines =@@ + >PI : number + >shape.radius ** 2 : number + >shape.radius : number +->shape : { type: "circle"; radius: number; } ++>shape : { type: 'circle'; radius: number; } >radius : number - - function getArea(shape?: Shape) { -->getArea : (shape?: Shape) => number -+>getArea : (shape?: Shape | undefined) => number - >shape : Shape | undefined - - switch (shape?.type) { -@@= skipped -156, +156 lines =@@ - >0 : 0 - - declare const arr: { tag: ("left" | "right") }[]; -->arr : { tag: ("left" | "right"); }[] -+>arr : { tag: "left" | "right"; }[] - >tag : "left" | "right" - - while (arr[i]?.tag === "left") { - >arr[i]?.tag === "left" : boolean - >arr[i]?.tag : "left" | "right" -->arr[i] : { tag: ("left" | "right"); } -->arr : { tag: ("left" | "right"); }[] -+>arr[i] : { tag: "left" | "right"; } -+>arr : { tag: "left" | "right"; }[] - >i : number - >tag : "left" | "right" - >"left" : "left" -@@= skipped -20, +20 lines =@@ - if (arr[i]?.tag === "right") { - >arr[i]?.tag === "right" : boolean - >arr[i]?.tag : "left" | "right" -->arr[i] : { tag: ("left" | "right"); } -->arr : { tag: ("left" | "right"); }[] -+>arr[i] : { tag: "left" | "right"; } -+>arr : { tag: "left" | "right"; }[] - >i : number - >tag : "left" | "right" - >"right" : "right" \ No newline at end of file + >2 : 2 + +@@= skipped -10, +10 lines =@@ + return shape.width * shape.height + >shape.width * shape.height : number + >shape.width : number +->shape : { type: "rectangle"; width: number; height: number; } ++>shape : { type: 'rectangle'; width: number; height: number; } + >width : number + >shape.height : number +->shape : { type: "rectangle"; width: number; height: number; } ++>shape : { type: 'rectangle'; width: number; height: number; } + >height : number + + default: \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain2.types b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain2.types index 2a78d6d45d8..d034586e2de 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain2.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain2.types @@ -86,7 +86,7 @@ type X = { kind: 'X', x: 'x' } >x : "x" function f1(x: X | U | undefined) { ->f1 : (x: U | X | undefined) => void +>f1 : (x: X | U | undefined) => void >x : U | X | undefined if (x?.kind === undefined) { @@ -106,7 +106,7 @@ function f1(x: X | U | undefined) { } function f2(x: X | N | undefined) { ->f2 : (x: N | X | undefined) => void +>f2 : (x: X | N | undefined) => void >x : N | X | undefined if (x?.kind === undefined) { @@ -126,7 +126,7 @@ function f2(x: X | N | undefined) { } function f3(x: X | U | null) { ->f3 : (x: U | X | null) => void +>f3 : (x: X | U | null) => void >x : U | X | null if (x?.kind === undefined) { @@ -146,7 +146,7 @@ function f3(x: X | U | null) { } function f4(x: X | N | null) { ->f4 : (x: N | X | null) => void +>f4 : (x: X | N | null) => void >x : N | X | null if (x?.kind === undefined) { @@ -166,7 +166,7 @@ function f4(x: X | N | null) { } function f5(x: X | U | undefined) { ->f5 : (x: U | X | undefined) => void +>f5 : (x: X | U | undefined) => void >x : U | X | undefined if (x?.kind === null) { @@ -185,7 +185,7 @@ function f5(x: X | U | undefined) { } function f6(x: X | N | undefined) { ->f6 : (x: N | X | undefined) => void +>f6 : (x: X | N | undefined) => void >x : N | X | undefined if (x?.kind === null) { @@ -204,7 +204,7 @@ function f6(x: X | N | undefined) { } function f7(x: X | U | null) { ->f7 : (x: U | X | null) => void +>f7 : (x: X | U | null) => void >x : U | X | null if (x?.kind === null) { @@ -223,7 +223,7 @@ function f7(x: X | U | null) { } function f8(x: X | N | null) { ->f8 : (x: N | X | null) => void +>f8 : (x: X | N | null) => void >x : N | X | null if (x?.kind === null) { diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain2.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain2.types.diff deleted file mode 100644 index 8981e7f1152..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain2.types.diff +++ /dev/null @@ -1,74 +0,0 @@ ---- old.controlFlowOptionalChain2.types -+++ new.controlFlowOptionalChain2.types -@@= skipped -85, +85 lines =@@ - >x : "x" - - function f1(x: X | U | undefined) { -->f1 : (x: X | U | undefined) => void -+>f1 : (x: U | X | undefined) => void - >x : U | X | undefined - - if (x?.kind === undefined) { -@@= skipped -20, +20 lines =@@ - } - - function f2(x: X | N | undefined) { -->f2 : (x: X | N | undefined) => void -+>f2 : (x: N | X | undefined) => void - >x : N | X | undefined - - if (x?.kind === undefined) { -@@= skipped -20, +20 lines =@@ - } - - function f3(x: X | U | null) { -->f3 : (x: X | U | null) => void -+>f3 : (x: U | X | null) => void - >x : U | X | null - - if (x?.kind === undefined) { -@@= skipped -20, +20 lines =@@ - } - - function f4(x: X | N | null) { -->f4 : (x: X | N | null) => void -+>f4 : (x: N | X | null) => void - >x : N | X | null - - if (x?.kind === undefined) { -@@= skipped -20, +20 lines =@@ - } - - function f5(x: X | U | undefined) { -->f5 : (x: X | U | undefined) => void -+>f5 : (x: U | X | undefined) => void - >x : U | X | undefined - - if (x?.kind === null) { -@@= skipped -19, +19 lines =@@ - } - - function f6(x: X | N | undefined) { -->f6 : (x: X | N | undefined) => void -+>f6 : (x: N | X | undefined) => void - >x : N | X | undefined - - if (x?.kind === null) { -@@= skipped -19, +19 lines =@@ - } - - function f7(x: X | U | null) { -->f7 : (x: X | U | null) => void -+>f7 : (x: U | X | null) => void - >x : U | X | null - - if (x?.kind === null) { -@@= skipped -19, +19 lines =@@ - } - - function f8(x: X | N | null) { -->f8 : (x: X | N | null) => void -+>f8 : (x: N | X | null) => void - >x : N | X | null - - if (x?.kind === null) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain3.types b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain3.types index 0efbf20ee25..5c603b7570a 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain3.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain3.types @@ -87,8 +87,8 @@ function Test3({ foo }: { foo: Foo | undefined }) { } function test4(options?: { a?: boolean; b?: boolean }) { ->test4 : (options?: { a?: boolean | undefined; b?: boolean | undefined; } | undefined) => void ->options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined +>test4 : (options?: { a?: boolean; b?: boolean; }) => void +>options : { a?: boolean; b?: boolean; } | undefined >a : boolean | undefined >b : boolean | undefined @@ -96,15 +96,15 @@ function test4(options?: { a?: boolean; b?: boolean }) { >options?.a === false || options.b : boolean | undefined >options?.a === false : boolean >options?.a : boolean | undefined ->options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined +>options : { a?: boolean; b?: boolean; } | undefined >a : boolean | undefined >false : false >options.b : boolean | undefined ->options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined +>options : { a?: boolean; b?: boolean; } | undefined >b : boolean | undefined options; ->options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined +>options : { a?: boolean; b?: boolean; } | undefined } } diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain3.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain3.types.diff deleted file mode 100644 index 96fb20bfd4b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowOptionalChain3.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.controlFlowOptionalChain3.types -+++ new.controlFlowOptionalChain3.types -@@= skipped -86, +86 lines =@@ - } - - function test4(options?: { a?: boolean; b?: boolean }) { -->test4 : (options?: { a?: boolean; b?: boolean; }) => void -->options : { a?: boolean; b?: boolean; } | undefined -+>test4 : (options?: { a?: boolean | undefined; b?: boolean | undefined; } | undefined) => void -+>options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined - >a : boolean | undefined - >b : boolean | undefined - -@@= skipped -9, +9 lines =@@ - >options?.a === false || options.b : boolean | undefined - >options?.a === false : boolean - >options?.a : boolean | undefined -->options : { a?: boolean; b?: boolean; } | undefined -+>options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined - >a : boolean | undefined - >false : false - >options.b : boolean | undefined -->options : { a?: boolean; b?: boolean; } | undefined -+>options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined - >b : boolean | undefined - - options; -->options : { a?: boolean; b?: boolean; } | undefined -+>options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined - } - } diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowParameter.types b/testdata/baselines/reference/submodule/conformance/controlFlowParameter.types index b14d796b054..526fd2f7c34 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowParameter.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowParameter.types @@ -26,7 +26,7 @@ function f1( } function f2( ->f2 : (a: string | number | undefined, required?: unknown) => void +>f2 : (a: number | string | undefined, required?: unknown) => void a: number | string | undefined, >a : string | number | undefined @@ -49,7 +49,7 @@ function f2( } function f3( ->f3 : (a?: string | number | undefined, required?: unknown) => void +>f3 : (a?: number | string | undefined, required?: unknown) => void a: number | string | undefined = 1, >a : string | number | undefined @@ -73,7 +73,7 @@ function f3( } function f4( ->f4 : (a?: string | number | undefined, { [(a = "")]: b }?: any) => void +>f4 : (a?: number | string | undefined, { [(a = "")]: b }?: any) => void a: number | string | undefined = 1, >a : string | number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowParameter.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowParameter.types.diff deleted file mode 100644 index ad871bcd179..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowParameter.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.controlFlowParameter.types -+++ new.controlFlowParameter.types -@@= skipped -25, +25 lines =@@ - } - - function f2( -->f2 : (a: number | string | undefined, required?: unknown) => void -+>f2 : (a: string | number | undefined, required?: unknown) => void - - a: number | string | undefined, - >a : string | number | undefined -@@= skipped -23, +23 lines =@@ - } - - function f3( -->f3 : (a?: number | string | undefined, required?: unknown) => void -+>f3 : (a?: string | number | undefined, required?: unknown) => void - - a: number | string | undefined = 1, - >a : string | number | undefined -@@= skipped -24, +24 lines =@@ - } - - function f4( -->f4 : (a?: number | string | undefined, { [(a = "")]: b }?: any) => void -+>f4 : (a?: string | number | undefined, { [(a = "")]: b }?: any) => void - - a: number | string | undefined = 1, - >a : string | number | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowStringIndex.types b/testdata/baselines/reference/submodule/conformance/controlFlowStringIndex.types index 3a7069205fe..1bf431a52de 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowStringIndex.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowStringIndex.types @@ -22,11 +22,11 @@ if (value.foo !== null) { value.foo.toExponential() >value.foo.toExponential() : string ->value.foo.toExponential : (fractionDigits?: number | undefined) => string +>value.foo.toExponential : (fractionDigits?: number) => string >value.foo : number >value : A >foo : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string value.other // should still be number | null >value.other : number | null diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowStringIndex.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowStringIndex.types.diff deleted file mode 100644 index be70ef5a825..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowStringIndex.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.controlFlowStringIndex.types -+++ new.controlFlowStringIndex.types -@@= skipped -21, +21 lines =@@ - - value.foo.toExponential() - >value.foo.toExponential() : string -->value.foo.toExponential : (fractionDigits?: number) => string -+>value.foo.toExponential : (fractionDigits?: number | undefined) => string - >value.foo : number - >value : A - >foo : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - value.other // should still be number | null - >value.other : number | null \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowWithTemplateLiterals.types b/testdata/baselines/reference/submodule/conformance/controlFlowWithTemplateLiterals.types index 286939d7ae1..9b0dfa55893 100644 --- a/testdata/baselines/reference/submodule/conformance/controlFlowWithTemplateLiterals.types +++ b/testdata/baselines/reference/submodule/conformance/controlFlowWithTemplateLiterals.types @@ -12,9 +12,9 @@ if (typeof envVar === `string`) { envVar.slice(0) >envVar.slice(0) : string ->envVar.slice : (start?: number | undefined, end?: number | undefined) => string +>envVar.slice : (start?: number, end?: number) => string >envVar : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string >0 : 0 } @@ -29,11 +29,11 @@ if (`test` in obj) { obj.test.slice(0) >obj.test.slice(0) : string ->obj.test.slice : (start?: number | undefined, end?: number | undefined) => string +>obj.test.slice : (start?: number, end?: number) => string >obj.test : string >obj : { test: string; } >test : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string >0 : 0 } diff --git a/testdata/baselines/reference/submodule/conformance/controlFlowWithTemplateLiterals.types.diff b/testdata/baselines/reference/submodule/conformance/controlFlowWithTemplateLiterals.types.diff deleted file mode 100644 index cdac0438509..00000000000 --- a/testdata/baselines/reference/submodule/conformance/controlFlowWithTemplateLiterals.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.controlFlowWithTemplateLiterals.types -+++ new.controlFlowWithTemplateLiterals.types -@@= skipped -11, +11 lines =@@ - - envVar.slice(0) - >envVar.slice(0) : string -->envVar.slice : (start?: number, end?: number) => string -+>envVar.slice : (start?: number | undefined, end?: number | undefined) => string - >envVar : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - >0 : 0 - } - -@@= skipped -17, +17 lines =@@ - - obj.test.slice(0) - >obj.test.slice(0) : string -->obj.test.slice : (start?: number, end?: number) => string -+>obj.test.slice : (start?: number | undefined, end?: number | undefined) => string - >obj.test : string - >obj : { test: string; } - >test : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - >0 : 0 - } diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlFileWithinDeclarationFile.types b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlFileWithinDeclarationFile.types index 15f978f22b0..2d3871023ba 100644 --- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlFileWithinDeclarationFile.types +++ b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlFileWithinDeclarationFile.types @@ -32,11 +32,11 @@ import { mod } from "./file.js"; window.customElements.define("my-html5-element", mod.HTML5Element); >window.customElements.define("my-html5-element", mod.HTML5Element) : void ->window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void +>window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void >window.customElements : CustomElementRegistry >window : Window & typeof globalThis >customElements : CustomElementRegistry ->define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void +>define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void >"my-html5-element" : "my-html5-element" >mod.HTML5Element : typeof mod.HTML5Element >mod : typeof mod diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlFileWithinDeclarationFile.types.diff b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlFileWithinDeclarationFile.types.diff deleted file mode 100644 index 6177f984306..00000000000 --- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlFileWithinDeclarationFile.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.declarationFileForHtmlFileWithinDeclarationFile.types -+++ new.declarationFileForHtmlFileWithinDeclarationFile.types -@@= skipped -31, +31 lines =@@ - - window.customElements.define("my-html5-element", mod.HTML5Element); - >window.customElements.define("my-html5-element", mod.HTML5Element) : void -->window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -+>window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void - >window.customElements : CustomElementRegistry - >window : Window & typeof globalThis - >customElements : CustomElementRegistry -->define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -+>define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void - >"my-html5-element" : "my-html5-element" - >mod.HTML5Element : typeof mod.HTML5Element - >mod : typeof mod \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types index 7cf89edba00..0fce08e7904 100644 --- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types +++ b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types @@ -28,11 +28,11 @@ import * as mod from "./component.html"; window.customElements.define("my-html5-element", mod.HTML5Element); >window.customElements.define("my-html5-element", mod.HTML5Element) : void ->window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void +>window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void >window.customElements : CustomElementRegistry >window : Window & typeof globalThis >customElements : CustomElementRegistry ->define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void +>define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void >"my-html5-element" : "my-html5-element" >mod.HTML5Element : any >mod : any diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types.diff b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types.diff deleted file mode 100644 index 712dc44f16e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.declarationFileForHtmlImport(allowarbitraryextensions=false).types -+++ new.declarationFileForHtmlImport(allowarbitraryextensions=false).types -@@= skipped -27, +27 lines =@@ - - window.customElements.define("my-html5-element", mod.HTML5Element); - >window.customElements.define("my-html5-element", mod.HTML5Element) : void -->window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -+>window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void - >window.customElements : CustomElementRegistry - >window : Window & typeof globalThis - >customElements : CustomElementRegistry -->define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -+>define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void - >"my-html5-element" : "my-html5-element" - >mod.HTML5Element : any - >mod : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=true).types b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=true).types index 7d416239e17..76a136254a0 100644 --- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=true).types +++ b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=true).types @@ -28,11 +28,11 @@ import * as mod from "./component.html"; window.customElements.define("my-html5-element", mod.HTML5Element); >window.customElements.define("my-html5-element", mod.HTML5Element) : void ->window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void +>window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void >window.customElements : CustomElementRegistry >window : Window & typeof globalThis >customElements : CustomElementRegistry ->define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void +>define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void >"my-html5-element" : "my-html5-element" >mod.HTML5Element : typeof mod.HTML5Element >mod : typeof mod diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=true).types.diff b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=true).types.diff deleted file mode 100644 index 1f12579f808..00000000000 --- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=true).types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.declarationFileForHtmlImport(allowarbitraryextensions=true).types -+++ new.declarationFileForHtmlImport(allowarbitraryextensions=true).types -@@= skipped -27, +27 lines =@@ - - window.customElements.define("my-html5-element", mod.HTML5Element); - >window.customElements.define("my-html5-element", mod.HTML5Element) : void -->window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -+>window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void - >window.customElements : CustomElementRegistry - >window : Window & typeof globalThis - >customElements : CustomElementRegistry -->define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -+>define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions | undefined) => void - >"my-html5-element" : "my-html5-element" - >mod.HTML5Element : typeof mod.HTML5Element - >mod : typeof mod \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/declarationFiles.errors.txt b/testdata/baselines/reference/submodule/conformance/declarationFiles.errors.txt index 40590fb18dd..1f3733711db 100644 --- a/testdata/baselines/reference/submodule/conformance/declarationFiles.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/declarationFiles.errors.txt @@ -12,13 +12,11 @@ declarationFiles.ts(23,5): error TS2564: Property 'g' has no initializer and is declarationFiles.ts(24,5): error TS2564: Property 'h' has no initializer and is not definitely assigned in the constructor. declarationFiles.ts(25,5): error TS2564: Property 'i' has no initializer and is not definitely assigned in the constructor. declarationFiles.ts(26,5): error TS2564: Property 'j' has no initializer and is not definitely assigned in the constructor. -declarationFiles.ts(30,5): error TS2527: The inferred type of 'x1' references an inaccessible 'this' type. A type annotation is necessary. declarationFiles.ts(32,5): error TS2527: The inferred type of 'x3' references an inaccessible 'this' type. A type annotation is necessary. -declarationFiles.ts(34,5): error TS2527: The inferred type of 'f1' references an inaccessible 'this' type. A type annotation is necessary. declarationFiles.ts(40,5): error TS2527: The inferred type of 'f3' references an inaccessible 'this' type. A type annotation is necessary. -==== declarationFiles.ts (17 errors) ==== +==== declarationFiles.ts (15 errors) ==== class C1 { x: this; ~ @@ -76,16 +74,12 @@ declarationFiles.ts(40,5): error TS2527: The inferred type of 'f3' references an class C4 { x1 = { a: this }; - ~~ -!!! error TS2527: The inferred type of 'x1' references an inaccessible 'this' type. A type annotation is necessary. x2 = [this]; x3 = [{ a: this }]; ~~ !!! error TS2527: The inferred type of 'x3' references an inaccessible 'this' type. A type annotation is necessary. x4 = () => this; f1() { - ~~ -!!! error TS2527: The inferred type of 'f1' references an inaccessible 'this' type. A type annotation is necessary. return { a: this }; } f2() { diff --git a/testdata/baselines/reference/submodule/conformance/declarationFiles.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/declarationFiles.errors.txt.diff new file mode 100644 index 00000000000..f6aca05327a --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/declarationFiles.errors.txt.diff @@ -0,0 +1,34 @@ +--- old.declarationFiles.errors.txt ++++ new.declarationFiles.errors.txt +@@= skipped -11, +11 lines =@@ + declarationFiles.ts(24,5): error TS2564: Property 'h' has no initializer and is not definitely assigned in the constructor. + declarationFiles.ts(25,5): error TS2564: Property 'i' has no initializer and is not definitely assigned in the constructor. + declarationFiles.ts(26,5): error TS2564: Property 'j' has no initializer and is not definitely assigned in the constructor. +-declarationFiles.ts(30,5): error TS2527: The inferred type of 'x1' references an inaccessible 'this' type. A type annotation is necessary. + declarationFiles.ts(32,5): error TS2527: The inferred type of 'x3' references an inaccessible 'this' type. A type annotation is necessary. +-declarationFiles.ts(34,5): error TS2527: The inferred type of 'f1' references an inaccessible 'this' type. A type annotation is necessary. + declarationFiles.ts(40,5): error TS2527: The inferred type of 'f3' references an inaccessible 'this' type. A type annotation is necessary. + + +-==== declarationFiles.ts (17 errors) ==== ++==== declarationFiles.ts (15 errors) ==== + class C1 { + x: this; + ~ +@@= skipped -64, +62 lines =@@ + + class C4 { + x1 = { a: this }; +- ~~ +-!!! error TS2527: The inferred type of 'x1' references an inaccessible 'this' type. A type annotation is necessary. + x2 = [this]; + x3 = [{ a: this }]; + ~~ + !!! error TS2527: The inferred type of 'x3' references an inaccessible 'this' type. A type annotation is necessary. + x4 = () => this; + f1() { +- ~~ +-!!! error TS2527: The inferred type of 'f1' references an inaccessible 'this' type. A type annotation is necessary. + return { a: this }; + } + f2() { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/declarationFiles.js b/testdata/baselines/reference/submodule/conformance/declarationFiles.js index d01095320e8..e2180ed0696 100644 --- a/testdata/baselines/reference/submodule/conformance/declarationFiles.js +++ b/testdata/baselines/reference/submodule/conformance/declarationFiles.js @@ -107,11 +107,15 @@ declare class C3 { j: (x: any) => x is this; } declare class C4 { - x1: any; + x1: { + a: this; + }; x2: this[]; x3: any; x4: () => this; - f1(): any; + f1(): { + a: this; + }; f2(): this[]; f3(): any; f4(): () => this; diff --git a/testdata/baselines/reference/submodule/conformance/declarationFiles.js.diff b/testdata/baselines/reference/submodule/conformance/declarationFiles.js.diff index c4273fd30d9..e48b2bd16da 100644 --- a/testdata/baselines/reference/submodule/conformance/declarationFiles.js.diff +++ b/testdata/baselines/reference/submodule/conformance/declarationFiles.js.diff @@ -32,11 +32,15 @@ + j: (x: any) => x is this; +} +declare class C4 { -+ x1: any; ++ x1: { ++ a: this; ++ }; + x2: this[]; + x3: any; + x4: () => this; -+ f1(): any; ++ f1(): { ++ a: this; ++ }; + f2(): this[]; + f3(): any; + f4(): () => this; diff --git a/testdata/baselines/reference/submodule/conformance/definiteAssignmentAssertionsWithObjectShortHand.js b/testdata/baselines/reference/submodule/conformance/definiteAssignmentAssertionsWithObjectShortHand.js index 7b9b377137f..bc103c65ad5 100644 --- a/testdata/baselines/reference/submodule/conformance/definiteAssignmentAssertionsWithObjectShortHand.js +++ b/testdata/baselines/reference/submodule/conformance/definiteAssignmentAssertionsWithObjectShortHand.js @@ -23,5 +23,5 @@ declare const foo: { a: string; }; declare const bar: { - a?(): void; + a(): void; }; diff --git a/testdata/baselines/reference/submodule/conformance/definiteAssignmentAssertionsWithObjectShortHand.js.diff b/testdata/baselines/reference/submodule/conformance/definiteAssignmentAssertionsWithObjectShortHand.js.diff new file mode 100644 index 00000000000..8b7727ff2ee --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/definiteAssignmentAssertionsWithObjectShortHand.js.diff @@ -0,0 +1,9 @@ +--- old.definiteAssignmentAssertionsWithObjectShortHand.js ++++ new.definiteAssignmentAssertionsWithObjectShortHand.js +@@= skipped -22, +22 lines =@@ + a: string; + }; + declare const bar: { +- a?(): void; ++ a(): void; + }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/deleteChain.types b/testdata/baselines/reference/submodule/conformance/deleteChain.types index 44de3492cb8..d765a7d1eb8 100644 --- a/testdata/baselines/reference/submodule/conformance/deleteChain.types +++ b/testdata/baselines/reference/submodule/conformance/deleteChain.types @@ -41,7 +41,7 @@ delete (o2?.b.c); >c : string | undefined declare const o3: { b: undefined | { c: string } }; ->o3 : { b: { c: string; } | undefined; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } | undefined >c : string @@ -49,7 +49,7 @@ delete o3.b?.c; >delete o3.b?.c : boolean >o3.b?.c : string | undefined >o3.b : { c: string; } | undefined ->o3 : { b: { c: string; } | undefined; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } | undefined >c : string | undefined @@ -58,14 +58,14 @@ delete (o3.b?.c); >(o3.b?.c) : string | undefined >o3.b?.c : string | undefined >o3.b : { c: string; } | undefined ->o3 : { b: { c: string; } | undefined; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } | undefined >c : string | undefined declare const o4: { b?: { c: { d?: { e: string } } } }; ->o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined ->c : { d?: { e: string; } | undefined; } +>o4 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined +>c : { d?: { e: string; }; } >d : { e: string; } | undefined >e : string @@ -73,11 +73,11 @@ delete o4.b?.c.d?.e; >delete o4.b?.c.d?.e : boolean >o4.b?.c.d?.e : string | undefined >o4.b?.c.d : { e: string; } | undefined ->o4.b?.c : { d?: { e: string; } | undefined; } | undefined ->o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined ->o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined ->c : { d?: { e: string; } | undefined; } | undefined +>o4.b?.c : { d?: { e: string; }; } | undefined +>o4.b : { c: { d?: { e: string; }; }; } | undefined +>o4 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined +>c : { d?: { e: string; }; } | undefined >d : { e: string; } | undefined >e : string | undefined @@ -86,11 +86,11 @@ delete (o4.b?.c.d)?.e; >(o4.b?.c.d)?.e : string | undefined >(o4.b?.c.d) : { e: string; } | undefined >o4.b?.c.d : { e: string; } | undefined ->o4.b?.c : { d?: { e: string; } | undefined; } | undefined ->o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined ->o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined ->c : { d?: { e: string; } | undefined; } | undefined +>o4.b?.c : { d?: { e: string; }; } | undefined +>o4.b : { c: { d?: { e: string; }; }; } | undefined +>o4 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined +>c : { d?: { e: string; }; } | undefined >d : { e: string; } | undefined >e : string | undefined @@ -99,18 +99,18 @@ delete (o4.b?.c.d?.e); >(o4.b?.c.d?.e) : string | undefined >o4.b?.c.d?.e : string | undefined >o4.b?.c.d : { e: string; } | undefined ->o4.b?.c : { d?: { e: string; } | undefined; } | undefined ->o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined ->o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined ->c : { d?: { e: string; } | undefined; } | undefined +>o4.b?.c : { d?: { e: string; }; } | undefined +>o4.b : { c: { d?: { e: string; }; }; } | undefined +>o4 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined +>c : { d?: { e: string; }; } | undefined >d : { e: string; } | undefined >e : string | undefined declare const o5: { b?(): { c: { d?: { e: string } } } }; ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } ->b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->c : { d?: { e: string; } | undefined; } +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } +>b : (() => { c: { d?: { e: string; }; }; }) | undefined +>c : { d?: { e: string; }; } >d : { e: string; } | undefined >e : string @@ -118,12 +118,12 @@ delete o5.b?.().c.d?.e; >delete o5.b?.().c.d?.e : boolean >o5.b?.().c.d?.e : string | undefined >o5.b?.().c.d : { e: string; } | undefined ->o5.b?.().c : { d?: { e: string; } | undefined; } | undefined ->o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined ->o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } ->b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->c : { d?: { e: string; } | undefined; } | undefined +>o5.b?.().c : { d?: { e: string; }; } | undefined +>o5.b?.() : { c: { d?: { e: string; }; }; } | undefined +>o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } +>b : (() => { c: { d?: { e: string; }; }; }) | undefined +>c : { d?: { e: string; }; } | undefined >d : { e: string; } | undefined >e : string | undefined @@ -132,19 +132,19 @@ delete (o5.b?.().c.d?.e); >(o5.b?.().c.d?.e) : string | undefined >o5.b?.().c.d?.e : string | undefined >o5.b?.().c.d : { e: string; } | undefined ->o5.b?.().c : { d?: { e: string; } | undefined; } | undefined ->o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined ->o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } ->b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->c : { d?: { e: string; } | undefined; } | undefined +>o5.b?.().c : { d?: { e: string; }; } | undefined +>o5.b?.() : { c: { d?: { e: string; }; }; } | undefined +>o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } +>b : (() => { c: { d?: { e: string; }; }; }) | undefined +>c : { d?: { e: string; }; } | undefined >d : { e: string; } | undefined >e : string | undefined declare const o6: { b?: { c: { d?: { e: string } } } }; ->o6 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined ->c : { d?: { e: string; } | undefined; } +>o6 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined +>c : { d?: { e: string; }; } >d : { e: string; } | undefined >e : string @@ -152,10 +152,10 @@ delete o6.b?.['c'].d?.['e']; >delete o6.b?.['c'].d?.['e'] : boolean >o6.b?.['c'].d?.['e'] : string | undefined >o6.b?.['c'].d : { e: string; } | undefined ->o6.b?.['c'] : { d?: { e: string; } | undefined; } | undefined ->o6.b : { c: { d?: { e: string; } | undefined; }; } | undefined ->o6 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined +>o6.b?.['c'] : { d?: { e: string; }; } | undefined +>o6.b : { c: { d?: { e: string; }; }; } | undefined +>o6 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined >'c' : "c" >d : { e: string; } | undefined >'e' : "e" @@ -165,10 +165,10 @@ delete (o6.b?.['c'].d?.['e']); >(o6.b?.['c'].d?.['e']) : string | undefined >o6.b?.['c'].d?.['e'] : string | undefined >o6.b?.['c'].d : { e: string; } | undefined ->o6.b?.['c'] : { d?: { e: string; } | undefined; } | undefined ->o6.b : { c: { d?: { e: string; } | undefined; }; } | undefined ->o6 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined +>o6.b?.['c'] : { d?: { e: string; }; } | undefined +>o6.b : { c: { d?: { e: string; }; }; } | undefined +>o6 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined >'c' : "c" >d : { e: string; } | undefined >'e' : "e" diff --git a/testdata/baselines/reference/submodule/conformance/deleteChain.types.diff b/testdata/baselines/reference/submodule/conformance/deleteChain.types.diff deleted file mode 100644 index 01bd641c51e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/deleteChain.types.diff +++ /dev/null @@ -1,178 +0,0 @@ ---- old.deleteChain.types -+++ new.deleteChain.types -@@= skipped -40, +40 lines =@@ - >c : string | undefined - - declare const o3: { b: undefined | { c: string } }; -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; } | undefined; } - >b : { c: string; } | undefined - >c : string - -@@= skipped -8, +8 lines =@@ - >delete o3.b?.c : boolean - >o3.b?.c : string | undefined - >o3.b : { c: string; } | undefined -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; } | undefined; } - >b : { c: string; } | undefined - >c : string | undefined - -@@= skipped -9, +9 lines =@@ - >(o3.b?.c) : string | undefined - >o3.b?.c : string | undefined - >o3.b : { c: string; } | undefined -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; } | undefined; } - >b : { c: string; } | undefined - >c : string | undefined - - declare const o4: { b?: { c: { d?: { e: string } } } }; -->o4 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -->c : { d?: { e: string; }; } -+>o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>c : { d?: { e: string; } | undefined; } - >d : { e: string; } | undefined - >e : string - -@@= skipped -15, +15 lines =@@ - >delete o4.b?.c.d?.e : boolean - >o4.b?.c.d?.e : string | undefined - >o4.b?.c.d : { e: string; } | undefined -->o4.b?.c : { d?: { e: string; }; } | undefined -->o4.b : { c: { d?: { e: string; }; }; } | undefined -->o4 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -->c : { d?: { e: string; }; } | undefined -+>o4.b?.c : { d?: { e: string; } | undefined; } | undefined -+>o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>c : { d?: { e: string; } | undefined; } | undefined - >d : { e: string; } | undefined - >e : string | undefined - -@@= skipped -13, +13 lines =@@ - >(o4.b?.c.d)?.e : string | undefined - >(o4.b?.c.d) : { e: string; } | undefined - >o4.b?.c.d : { e: string; } | undefined -->o4.b?.c : { d?: { e: string; }; } | undefined -->o4.b : { c: { d?: { e: string; }; }; } | undefined -->o4 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -->c : { d?: { e: string; }; } | undefined -+>o4.b?.c : { d?: { e: string; } | undefined; } | undefined -+>o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>c : { d?: { e: string; } | undefined; } | undefined - >d : { e: string; } | undefined - >e : string | undefined - -@@= skipped -13, +13 lines =@@ - >(o4.b?.c.d?.e) : string | undefined - >o4.b?.c.d?.e : string | undefined - >o4.b?.c.d : { e: string; } | undefined -->o4.b?.c : { d?: { e: string; }; } | undefined -->o4.b : { c: { d?: { e: string; }; }; } | undefined -->o4 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -->c : { d?: { e: string; }; } | undefined -+>o4.b?.c : { d?: { e: string; } | undefined; } | undefined -+>o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>c : { d?: { e: string; } | undefined; } | undefined - >d : { e: string; } | undefined - >e : string | undefined - - declare const o5: { b?(): { c: { d?: { e: string } } } }; -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -->b : (() => { c: { d?: { e: string; }; }; }) | undefined -->c : { d?: { e: string; }; } -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } -+>b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>c : { d?: { e: string; } | undefined; } - >d : { e: string; } | undefined - >e : string - -@@= skipped -19, +19 lines =@@ - >delete o5.b?.().c.d?.e : boolean - >o5.b?.().c.d?.e : string | undefined - >o5.b?.().c.d : { e: string; } | undefined -->o5.b?.().c : { d?: { e: string; }; } | undefined -->o5.b?.() : { c: { d?: { e: string; }; }; } | undefined -->o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -->b : (() => { c: { d?: { e: string; }; }; }) | undefined -->c : { d?: { e: string; }; } | undefined -+>o5.b?.().c : { d?: { e: string; } | undefined; } | undefined -+>o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } -+>b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>c : { d?: { e: string; } | undefined; } | undefined - >d : { e: string; } | undefined - >e : string | undefined - -@@= skipped -14, +14 lines =@@ - >(o5.b?.().c.d?.e) : string | undefined - >o5.b?.().c.d?.e : string | undefined - >o5.b?.().c.d : { e: string; } | undefined -->o5.b?.().c : { d?: { e: string; }; } | undefined -->o5.b?.() : { c: { d?: { e: string; }; }; } | undefined -->o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -->b : (() => { c: { d?: { e: string; }; }; }) | undefined -->c : { d?: { e: string; }; } | undefined -+>o5.b?.().c : { d?: { e: string; } | undefined; } | undefined -+>o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } -+>b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>c : { d?: { e: string; } | undefined; } | undefined - >d : { e: string; } | undefined - >e : string | undefined - - declare const o6: { b?: { c: { d?: { e: string } } } }; -->o6 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -->c : { d?: { e: string; }; } -+>o6 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>c : { d?: { e: string; } | undefined; } - >d : { e: string; } | undefined - >e : string - -@@= skipped -20, +20 lines =@@ - >delete o6.b?.['c'].d?.['e'] : boolean - >o6.b?.['c'].d?.['e'] : string | undefined - >o6.b?.['c'].d : { e: string; } | undefined -->o6.b?.['c'] : { d?: { e: string; }; } | undefined -->o6.b : { c: { d?: { e: string; }; }; } | undefined -->o6 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -+>o6.b?.['c'] : { d?: { e: string; } | undefined; } | undefined -+>o6.b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o6 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined - >'c' : "c" - >d : { e: string; } | undefined - >'e' : "e" -@@= skipped -13, +13 lines =@@ - >(o6.b?.['c'].d?.['e']) : string | undefined - >o6.b?.['c'].d?.['e'] : string | undefined - >o6.b?.['c'].d : { e: string; } | undefined -->o6.b?.['c'] : { d?: { e: string; }; } | undefined -->o6.b : { c: { d?: { e: string; }; }; } | undefined -->o6 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -+>o6.b?.['c'] : { d?: { e: string; } | undefined; } | undefined -+>o6.b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o6 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined - >'c' : "c" - >d : { e: string; } | undefined - >'e' : "e" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/dependentDestructuredVariables.types b/testdata/baselines/reference/submodule/conformance/dependentDestructuredVariables.types index 6c3010adca5..6f4a7c76006 100644 --- a/testdata/baselines/reference/submodule/conformance/dependentDestructuredVariables.types +++ b/testdata/baselines/reference/submodule/conformance/dependentDestructuredVariables.types @@ -24,9 +24,9 @@ function f10({ kind, payload }: Action) { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -57,9 +57,9 @@ function f11(action: Action) { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -87,9 +87,9 @@ function f12({ kind, payload }: Action) { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string break; case 'B': @@ -121,9 +121,9 @@ function f13({ kind, payload }: T) { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -154,9 +154,9 @@ function f14(t: T) { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -197,9 +197,9 @@ function f20({ kind, payload }: Action2) { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -234,9 +234,9 @@ function f21(action: Action2) { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -273,9 +273,9 @@ function f22(action: Action2) { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -307,9 +307,9 @@ function f23({ kind, payload }: Action2) { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string break; case 'B': @@ -403,9 +403,9 @@ function f40(...[kind, data]: Args) { data.toFixed(); >data.toFixed() : string ->data.toFixed : (fractionDigits?: number | undefined) => string +>data.toFixed : (fractionDigits?: number) => string >data : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -438,7 +438,7 @@ declare function printValue(t: T): void; >t : T declare function printValueList(t: Array): void; ->printValueList : (t: T[]) => void +>printValueList : (t: Array) => void >t : T[] function unrefined1(ab: AB): void { @@ -463,7 +463,7 @@ function unrefined1(ab: AB): void { else { printValueList(value); >printValueList(value) : void ->printValueList : (t: T_1[]) => void +>printValueList : (t: Array) => void >value : T[] } } @@ -557,9 +557,9 @@ f50((kind, data) => { data.toFixed(); >data.toFixed() : string ->data.toFixed : (fractionDigits?: number | undefined) => string +>data.toFixed : (fractionDigits?: number) => string >data : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -575,7 +575,7 @@ f50((kind, data) => { }); const f51: (...args: ['A', number] | ['B', string]) => void = (kind, payload) => { ->f51 : (...args: ["A", number] | ["B", string]) => void +>f51 : (...args: ['A', number] | ['B', string]) => void >args : ["A", number] | ["B", string] >(kind, payload) => { if (kind === 'A') { payload.toFixed(); } if (kind === 'B') { payload.toUpperCase(); }} : (kind: "A" | "B", payload: string | number) => void >kind : "A" | "B" @@ -588,9 +588,9 @@ const f51: (...args: ['A', number] | ['B', string]) => void = (kind, payload) => payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === 'B') { >kind === 'B' : boolean @@ -606,7 +606,7 @@ const f51: (...args: ['A', number] | ['B', string]) => void = (kind, payload) => }; const f52: (...args: ['A', number] | ['B']) => void = (kind, payload?) => { ->f52 : (...args: ["B"] | ["A", number]) => void +>f52 : (...args: ['A', number] | ['B']) => void >args : ["B"] | ["A", number] >(kind, payload?) => { if (kind === 'A') { payload.toFixed(); } else { payload; // undefined }} : (kind: "A" | "B", payload?: number | undefined) => void >kind : "A" | "B" @@ -619,9 +619,9 @@ const f52: (...args: ['A', number] | ['B']) => void = (kind, payload?) => { payload.toFixed(); >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } else { payload; // undefined @@ -746,7 +746,7 @@ type FooMethod = { >FooMethod : FooMethod method(...args: ->method : (...args: [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void]) => void +>method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => void >args : [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void] [type: "str", cb: (e: string) => void] | @@ -790,7 +790,7 @@ type FooAsyncMethod = { >FooAsyncMethod : FooAsyncMethod method(...args: ->method : (...args: [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void]) => Promise +>method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => Promise >args : [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void] [type: "str", cb: (e: string) => void] | @@ -834,7 +834,7 @@ type FooGenMethod = { >FooGenMethod : FooGenMethod method(...args: ->method : (...args: [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void]) => Generator +>method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => Generator >args : [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void] [type: "str", cb: (e: string) => void] | @@ -878,7 +878,7 @@ type FooAsyncGenMethod = { >FooAsyncGenMethod : FooAsyncGenMethod method(...args: ->method : (...args: [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void]) => AsyncGenerator +>method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => AsyncGenerator >args : [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void] [type: "str", cb: (e: string) => void] | @@ -937,9 +937,9 @@ const f60: Func = (kind, payload) => { payload.toFixed(); // error >payload.toFixed() : string ->payload.toFixed : (fractionDigits?: number | undefined) => string +>payload.toFixed : (fractionDigits?: number) => string >payload : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } if (kind === "b") { >kind === "b" : boolean @@ -1021,7 +1021,7 @@ function foo({ // Repro from #49772 function fa1(x: [true, number] | [false, string]) { ->fa1 : (x: [false, string] | [true, number]) => void +>fa1 : (x: [true, number] | [false, string]) => void >x : [false, string] | [true, number] >true : true >false : false @@ -1087,7 +1087,7 @@ function fa2(x: { guard: true, value: number } | { guard: false, value: string } } const fa3: (...args: [true, number] | [false, string]) => void = (guard, value) => { ->fa3 : (...args: [false, string] | [true, number]) => void +>fa3 : (...args: [true, number] | [false, string]) => void >args : [false, string] | [true, number] >true : true >false : false @@ -1191,7 +1191,7 @@ bot.on("shardDisconnect", event => console.log(`${event.code} ${event.wasClean} // Destructuring tuple types with different arities function fz1([x, y]: [1, 2] | [3, 4] | [5]) { ->fz1 : ([x, y]: [5] | [1, 2] | [3, 4]) => void +>fz1 : ([x, y]: [1, 2] | [3, 4] | [5]) => void >x : 1 | 3 | 5 >y : 2 | 4 | undefined @@ -1248,7 +1248,7 @@ function fz1([x, y]: [1, 2] | [3, 4] | [5]) { // Repro from #55661 function tooNarrow([x, y]: [1, 1] | [1, 2] | [1]) { ->tooNarrow : ([x, y]: [1] | [1, 1] | [1, 2]) => void +>tooNarrow : ([x, y]: [1, 1] | [1, 2] | [1]) => void >x : 1 >y : 1 | 2 | undefined diff --git a/testdata/baselines/reference/submodule/conformance/dependentDestructuredVariables.types.diff b/testdata/baselines/reference/submodule/conformance/dependentDestructuredVariables.types.diff index 2886271de8a..ef3253d9f10 100644 --- a/testdata/baselines/reference/submodule/conformance/dependentDestructuredVariables.types.diff +++ b/testdata/baselines/reference/submodule/conformance/dependentDestructuredVariables.types.diff @@ -1,268 +1,20 @@ --- old.dependentDestructuredVariables.types +++ new.dependentDestructuredVariables.types -@@= skipped -23, +23 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean -@@= skipped -33, +33 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean -@@= skipped -30, +30 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - break; - case 'B': -@@= skipped -34, +34 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean -@@= skipped -33, +33 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean -@@= skipped -43, +43 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean -@@= skipped -37, +37 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean -@@= skipped -39, +39 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean -@@= skipped -34, +34 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - break; - case 'B': -@@= skipped -96, +96 lines =@@ - - data.toFixed(); - >data.toFixed() : string -->data.toFixed : (fractionDigits?: number) => string -+>data.toFixed : (fractionDigits?: number | undefined) => string - >data : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean -@@= skipped -35, +35 lines =@@ - >t : T - - declare function printValueList(t: Array): void; -->printValueList : (t: Array) => void -+>printValueList : (t: T[]) => void - >t : T[] - - function unrefined1(ab: AB): void { -@@= skipped -25, +25 lines =@@ - else { - printValueList(value); - >printValueList(value) : void -->printValueList : (t: Array) => void -+>printValueList : (t: T_1[]) => void - >value : T[] - } - } -@@= skipped -94, +94 lines =@@ - - data.toFixed(); - >data.toFixed() : string -->data.toFixed : (fractionDigits?: number) => string -+>data.toFixed : (fractionDigits?: number | undefined) => string - >data : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean +@@= skipped -574, +574 lines =@@ + }); + + const f51: (...args: ['A', number] | ['B', string]) => void = (kind, payload) => { +->f51 : (...args: ["A", number] | ["B", string]) => void ++>f51 : (...args: ['A', number] | ['B', string]) => void + >args : ["A", number] | ["B", string] + >(kind, payload) => { if (kind === 'A') { payload.toFixed(); } if (kind === 'B') { payload.toUpperCase(); }} : (kind: "A" | "B", payload: string | number) => void + >kind : "A" | "B" @@= skipped -31, +31 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === 'B') { - >kind === 'B' : boolean -@@= skipped -18, +18 lines =@@ }; const f52: (...args: ['A', number] | ['B']) => void = (kind, payload?) => { ->f52 : (...args: ["A", number] | ["B"]) => void -+>f52 : (...args: ["B"] | ["A", number]) => void ++>f52 : (...args: ['A', number] | ['B']) => void >args : ["B"] | ["A", number] >(kind, payload?) => { if (kind === 'A') { payload.toFixed(); } else { payload; // undefined }} : (kind: "A" | "B", payload?: number | undefined) => void - >kind : "A" | "B" -@@= skipped -13, +13 lines =@@ - - payload.toFixed(); - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - else { - payload; // undefined -@@= skipped -127, +127 lines =@@ - >FooMethod : FooMethod - - method(...args: -->method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => void -+>method : (...args: [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void]) => void - >args : [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void] - - [type: "str", cb: (e: string) => void] | -@@= skipped -44, +44 lines =@@ - >FooAsyncMethod : FooAsyncMethod - - method(...args: -->method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => Promise -+>method : (...args: [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void]) => Promise - >args : [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void] - - [type: "str", cb: (e: string) => void] | -@@= skipped -44, +44 lines =@@ - >FooGenMethod : FooGenMethod - - method(...args: -->method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => Generator -+>method : (...args: [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void]) => Generator - >args : [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void] - - [type: "str", cb: (e: string) => void] | -@@= skipped -44, +44 lines =@@ - >FooAsyncGenMethod : FooAsyncGenMethod - - method(...args: -->method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => AsyncGenerator -+>method : (...args: [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void]) => AsyncGenerator - >args : [type: "num", cb: (e: number) => void] | [type: "str", cb: (e: string) => void] - - [type: "str", cb: (e: string) => void] | -@@= skipped -59, +59 lines =@@ - - payload.toFixed(); // error - >payload.toFixed() : string -->payload.toFixed : (fractionDigits?: number) => string -+>payload.toFixed : (fractionDigits?: number | undefined) => string - >payload : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - if (kind === "b") { - >kind === "b" : boolean -@@= skipped -84, +84 lines =@@ - // Repro from #49772 - - function fa1(x: [true, number] | [false, string]) { -->fa1 : (x: [true, number] | [false, string]) => void -+>fa1 : (x: [false, string] | [true, number]) => void - >x : [false, string] | [true, number] - >true : true - >false : false -@@= skipped -66, +66 lines =@@ - } - - const fa3: (...args: [true, number] | [false, string]) => void = (guard, value) => { -->fa3 : (...args: [true, number] | [false, string]) => void -+>fa3 : (...args: [false, string] | [true, number]) => void - >args : [false, string] | [true, number] - >true : true - >false : false -@@= skipped -104, +104 lines =@@ - // Destructuring tuple types with different arities - - function fz1([x, y]: [1, 2] | [3, 4] | [5]) { -->fz1 : ([x, y]: [1, 2] | [3, 4] | [5]) => void -+>fz1 : ([x, y]: [5] | [1, 2] | [3, 4]) => void - >x : 1 | 3 | 5 - >y : 2 | 4 | undefined - -@@= skipped -57, +57 lines =@@ - // Repro from #55661 - - function tooNarrow([x, y]: [1, 1] | [1, 2] | [1]) { -->tooNarrow : ([x, y]: [1, 1] | [1, 2] | [1]) => void -+>tooNarrow : ([x, y]: [1] | [1, 1] | [1, 2]) => void - >x : 1 - >y : 1 | 2 | undefined + >kind : "A" | "B" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).errors.txt b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).errors.txt index 03b965b93a9..a7a1bbd7f1c 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).errors.txt +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).errors.txt @@ -2,7 +2,7 @@ derivedClassOverridesProtectedMembers.ts(5,15): error TS2564: Property 'a' has n derivedClassOverridesProtectedMembers.ts(9,15): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. derivedClassOverridesProtectedMembers.ts(21,15): error TS2564: Property 'a' has no initializer and is not definitely assigned in the constructor. derivedClassOverridesProtectedMembers.ts(25,15): error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. - Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. + Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. Types of parameters 'a' and 'a' are incompatible. Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. derivedClassOverridesProtectedMembers.ts(25,15): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. @@ -42,7 +42,7 @@ derivedClassOverridesProtectedMembers.ts(25,15): error TS2564: Property 'd' has protected d: (a: typeof y) => void; ~ !!! error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. -!!! error TS2416: Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. +!!! error TS2416: Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. !!! error TS2416: Types of parameters 'a' and 'a' are incompatible. !!! error TS2416: Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. !!! related TS2728 derivedClassOverridesProtectedMembers.ts:2:23: 'bar' is declared here. diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).errors.txt.diff b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).errors.txt.diff new file mode 100644 index 00000000000..15fc23026dd --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).errors.txt.diff @@ -0,0 +1,20 @@ +--- old.derivedClassOverridesProtectedMembers(target=es2015).errors.txt ++++ new.derivedClassOverridesProtectedMembers(target=es2015).errors.txt +@@= skipped -1, +1 lines =@@ + derivedClassOverridesProtectedMembers.ts(9,15): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. + derivedClassOverridesProtectedMembers.ts(21,15): error TS2564: Property 'a' has no initializer and is not definitely assigned in the constructor. + derivedClassOverridesProtectedMembers.ts(25,15): error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. +- Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. ++ Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. + Types of parameters 'a' and 'a' are incompatible. + Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. + derivedClassOverridesProtectedMembers.ts(25,15): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. +@@= skipped -40, +40 lines =@@ + protected d: (a: typeof y) => void; + ~ + !!! error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. +-!!! error TS2416: Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. ++!!! error TS2416: Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. + !!! error TS2416: Types of parameters 'a' and 'a' are incompatible. + !!! error TS2416: Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. + !!! related TS2728 derivedClassOverridesProtectedMembers.ts:2:23: 'bar' is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).types b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).types index 5b6aa785a59..d580df08b4f 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).types @@ -18,7 +18,7 @@ class Base { >x : { foo: string; } protected b(a: typeof x) { } ->b : (a: { foo: string; }) => void +>b : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -32,7 +32,7 @@ class Base { >x : { foo: string; } protected d: (a: typeof x) => void; ->d : (a: { foo: string; }) => void +>d : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -41,7 +41,7 @@ class Base { >x : { foo: string; } protected static s(a: typeof x) { } ->s : (a: { foo: string; }) => void +>s : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -55,7 +55,7 @@ class Base { >x : { foo: string; } protected static u: (a: typeof x) => void; ->u : (a: { foo: string; }) => void +>u : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -73,7 +73,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } protected b(a: typeof y) { } ->b : (a: { foo: string; bar: string; }) => void +>b : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -87,7 +87,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } protected d: (a: typeof y) => void; ->d : (a: { foo: string; bar: string; }) => void +>d : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -96,7 +96,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } protected static s(a: typeof y) { } ->s : (a: { foo: string; bar: string; }) => void +>s : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -110,7 +110,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } protected static u: (a: typeof y) => void; ->u : (a: { foo: string; bar: string; }) => void +>u : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).types.diff deleted file mode 100644 index 6193b37d117..00000000000 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers(target=es2015).types.diff +++ /dev/null @@ -1,73 +0,0 @@ ---- old.derivedClassOverridesProtectedMembers(target=es2015).types -+++ new.derivedClassOverridesProtectedMembers(target=es2015).types -@@= skipped -17, +17 lines =@@ - >x : { foo: string; } - - protected b(a: typeof x) { } -->b : (a: typeof x) => void -+>b : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -14, +14 lines =@@ - >x : { foo: string; } - - protected d: (a: typeof x) => void; -->d : (a: typeof x) => void -+>d : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -9, +9 lines =@@ - >x : { foo: string; } - - protected static s(a: typeof x) { } -->s : (a: typeof x) => void -+>s : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -14, +14 lines =@@ - >x : { foo: string; } - - protected static u: (a: typeof x) => void; -->u : (a: typeof x) => void -+>u : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -18, +18 lines =@@ - >y : { foo: string; bar: string; } - - protected b(a: typeof y) { } -->b : (a: typeof y) => void -+>b : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -14, +14 lines =@@ - >y : { foo: string; bar: string; } - - protected d: (a: typeof y) => void; -->d : (a: typeof y) => void -+>d : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -9, +9 lines =@@ - >y : { foo: string; bar: string; } - - protected static s(a: typeof y) { } -->s : (a: typeof y) => void -+>s : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -14, +14 lines =@@ - >y : { foo: string; bar: string; } - - protected static u: (a: typeof y) => void; -->u : (a: typeof y) => void -+>u : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).errors.txt b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).errors.txt index 33f72cff268..2a08903470d 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).errors.txt +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).errors.txt @@ -2,7 +2,7 @@ derivedClassOverridesProtectedMembers2.ts(5,15): error TS2564: Property 'a' has derivedClassOverridesProtectedMembers2.ts(9,15): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. derivedClassOverridesProtectedMembers2.ts(22,5): error TS2564: Property 'a' has no initializer and is not definitely assigned in the constructor. derivedClassOverridesProtectedMembers2.ts(26,5): error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. - Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. + Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. Types of parameters 'a' and 'a' are incompatible. Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. derivedClassOverridesProtectedMembers2.ts(26,5): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. @@ -50,7 +50,7 @@ derivedClassOverridesProtectedMembers2.ts(61,10): error TS2454: Variable 'd2' is d: (a: typeof y) => void; ~ !!! error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. -!!! error TS2416: Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. +!!! error TS2416: Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. !!! error TS2416: Types of parameters 'a' and 'a' are incompatible. !!! error TS2416: Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. !!! related TS2728 derivedClassOverridesProtectedMembers2.ts:2:23: 'bar' is declared here. diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).errors.txt.diff b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).errors.txt.diff new file mode 100644 index 00000000000..73ccf1ed7c8 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).errors.txt.diff @@ -0,0 +1,20 @@ +--- old.derivedClassOverridesProtectedMembers2(target=es2015).errors.txt ++++ new.derivedClassOverridesProtectedMembers2(target=es2015).errors.txt +@@= skipped -1, +1 lines =@@ + derivedClassOverridesProtectedMembers2.ts(9,15): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. + derivedClassOverridesProtectedMembers2.ts(22,5): error TS2564: Property 'a' has no initializer and is not definitely assigned in the constructor. + derivedClassOverridesProtectedMembers2.ts(26,5): error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. +- Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. ++ Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. + Types of parameters 'a' and 'a' are incompatible. + Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. + derivedClassOverridesProtectedMembers2.ts(26,5): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. +@@= skipped -48, +48 lines =@@ + d: (a: typeof y) => void; + ~ + !!! error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. +-!!! error TS2416: Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. ++!!! error TS2416: Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. + !!! error TS2416: Types of parameters 'a' and 'a' are incompatible. + !!! error TS2416: Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. + !!! related TS2728 derivedClassOverridesProtectedMembers2.ts:2:23: 'bar' is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).types b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).types index 9ed84b4ce5e..27bd48d5f7b 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).types @@ -18,7 +18,7 @@ class Base { >x : { foo: string; } protected b(a: typeof x) { } ->b : (a: { foo: string; }) => void +>b : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -32,7 +32,7 @@ class Base { >x : { foo: string; } protected d: (a: typeof x) => void ; ->d : (a: { foo: string; }) => void +>d : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -41,7 +41,7 @@ class Base { >x : { foo: string; } protected static s(a: typeof x) { } ->s : (a: { foo: string; }) => void +>s : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -55,7 +55,7 @@ class Base { >x : { foo: string; } protected static u: (a: typeof x) => void ; ->u : (a: { foo: string; }) => void +>u : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -74,7 +74,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } b(a: typeof y) { } ->b : (a: { foo: string; bar: string; }) => void +>b : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -88,7 +88,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } d: (a: typeof y) => void; ->d : (a: { foo: string; bar: string; }) => void +>d : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -97,7 +97,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } static s(a: typeof y) { } ->s : (a: { foo: string; bar: string; }) => void +>s : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -111,7 +111,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } static u: (a: typeof y) => void; ->u : (a: { foo: string; bar: string; }) => void +>u : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -138,9 +138,9 @@ var r1 = d.a; var r2 = d.b(y); >r2 : void >d.b(y) : void ->d.b : (a: { foo: string; bar: string; }) => void +>d.b : (a: typeof y) => void >d : Derived ->b : (a: { foo: string; bar: string; }) => void +>b : (a: typeof y) => void >y : { foo: string; bar: string; } var r3 = d.c; @@ -150,10 +150,10 @@ var r3 = d.c; >c : { foo: string; bar: string; } var r3a = d.d; ->r3a : (a: { foo: string; bar: string; }) => void ->d.d : (a: { foo: string; bar: string; }) => void +>r3a : (a: typeof y) => void +>d.d : (a: typeof y) => void >d : Derived ->d : (a: { foo: string; bar: string; }) => void +>d : (a: typeof y) => void d.c = y; >d.c = y : { foo: string; bar: string; } @@ -171,9 +171,9 @@ var r4 = Derived.r; var r5 = Derived.s(y); >r5 : void >Derived.s(y) : void ->Derived.s : (a: { foo: string; bar: string; }) => void +>Derived.s : (a: typeof y) => void >Derived : typeof Derived ->s : (a: { foo: string; bar: string; }) => void +>s : (a: typeof y) => void >y : { foo: string; bar: string; } var r6 = Derived.t; @@ -183,10 +183,10 @@ var r6 = Derived.t; >t : { foo: string; bar: string; } var r6a = Derived.u; ->r6a : (a: { foo: string; bar: string; }) => void ->Derived.u : (a: { foo: string; bar: string; }) => void +>r6a : (a: typeof y) => void +>Derived.u : (a: typeof y) => void >Derived : typeof Derived ->u : (a: { foo: string; bar: string; }) => void +>u : (a: typeof y) => void Derived.t = y; >Derived.t = y : { foo: string; bar: string; } diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).types.diff deleted file mode 100644 index 3f7b0c85582..00000000000 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers2(target=es2015).types.diff +++ /dev/null @@ -1,126 +0,0 @@ ---- old.derivedClassOverridesProtectedMembers2(target=es2015).types -+++ new.derivedClassOverridesProtectedMembers2(target=es2015).types -@@= skipped -17, +17 lines =@@ - >x : { foo: string; } - - protected b(a: typeof x) { } -->b : (a: typeof x) => void -+>b : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -14, +14 lines =@@ - >x : { foo: string; } - - protected d: (a: typeof x) => void ; -->d : (a: typeof x) => void -+>d : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -9, +9 lines =@@ - >x : { foo: string; } - - protected static s(a: typeof x) { } -->s : (a: typeof x) => void -+>s : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -14, +14 lines =@@ - >x : { foo: string; } - - protected static u: (a: typeof x) => void ; -->u : (a: typeof x) => void -+>u : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -19, +19 lines =@@ - >y : { foo: string; bar: string; } - - b(a: typeof y) { } -->b : (a: typeof y) => void -+>b : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -14, +14 lines =@@ - >y : { foo: string; bar: string; } - - d: (a: typeof y) => void; -->d : (a: typeof y) => void -+>d : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -9, +9 lines =@@ - >y : { foo: string; bar: string; } - - static s(a: typeof y) { } -->s : (a: typeof y) => void -+>s : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -14, +14 lines =@@ - >y : { foo: string; bar: string; } - - static u: (a: typeof y) => void; -->u : (a: typeof y) => void -+>u : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -27, +27 lines =@@ - var r2 = d.b(y); - >r2 : void - >d.b(y) : void -->d.b : (a: typeof y) => void -+>d.b : (a: { foo: string; bar: string; }) => void - >d : Derived -->b : (a: typeof y) => void -+>b : (a: { foo: string; bar: string; }) => void - >y : { foo: string; bar: string; } - - var r3 = d.c; -@@= skipped -12, +12 lines =@@ - >c : { foo: string; bar: string; } - - var r3a = d.d; -->r3a : (a: typeof y) => void -->d.d : (a: typeof y) => void -+>r3a : (a: { foo: string; bar: string; }) => void -+>d.d : (a: { foo: string; bar: string; }) => void - >d : Derived -->d : (a: typeof y) => void -+>d : (a: { foo: string; bar: string; }) => void - - d.c = y; - >d.c = y : { foo: string; bar: string; } -@@= skipped -21, +21 lines =@@ - var r5 = Derived.s(y); - >r5 : void - >Derived.s(y) : void -->Derived.s : (a: typeof y) => void -+>Derived.s : (a: { foo: string; bar: string; }) => void - >Derived : typeof Derived -->s : (a: typeof y) => void -+>s : (a: { foo: string; bar: string; }) => void - >y : { foo: string; bar: string; } - - var r6 = Derived.t; -@@= skipped -12, +12 lines =@@ - >t : { foo: string; bar: string; } - - var r6a = Derived.u; -->r6a : (a: typeof y) => void -->Derived.u : (a: typeof y) => void -+>r6a : (a: { foo: string; bar: string; }) => void -+>Derived.u : (a: { foo: string; bar: string; }) => void - >Derived : typeof Derived -->u : (a: typeof y) => void -+>u : (a: { foo: string; bar: string; }) => void - - Derived.t = y; - >Derived.t = y : { foo: string; bar: string; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers3(target=es2015).types b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers3(target=es2015).types index 8faf543d3fe..f87f033d422 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers3(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers3(target=es2015).types @@ -18,7 +18,7 @@ class Base { >x : { foo: string; } b(a: typeof x) { } ->b : (a: { foo: string; }) => void +>b : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -32,7 +32,7 @@ class Base { >x : { foo: string; } d: (a: typeof x) => void; ->d : (a: { foo: string; }) => void +>d : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -41,7 +41,7 @@ class Base { >x : { foo: string; } static s(a: typeof x) { } ->s : (a: { foo: string; }) => void +>s : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -55,7 +55,7 @@ class Base { >x : { foo: string; } static u: (a: typeof x) => void; ->u : (a: { foo: string; }) => void +>u : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -87,7 +87,7 @@ class Derived2 extends Base { >Base : Base protected b(a: typeof x) { } ->b : (a: { foo: string; }) => void +>b : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -137,7 +137,7 @@ class Derived5 extends Base { >Base : Base protected d: (a: typeof x) => void ; ->d : (a: { foo: string; }) => void +>d : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -170,7 +170,7 @@ class Derived7 extends Base { >Base : Base protected static s(a: typeof x) { } ->s : (a: { foo: string; }) => void +>s : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -220,7 +220,7 @@ class Derived10 extends Base { >Base : Base protected static u: (a: typeof x) => void ; ->u : (a: { foo: string; }) => void +>u : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers3(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers3(target=es2015).types.diff deleted file mode 100644 index faab35d5fdd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesProtectedMembers3(target=es2015).types.diff +++ /dev/null @@ -1,73 +0,0 @@ ---- old.derivedClassOverridesProtectedMembers3(target=es2015).types -+++ new.derivedClassOverridesProtectedMembers3(target=es2015).types -@@= skipped -17, +17 lines =@@ - >x : { foo: string; } - - b(a: typeof x) { } -->b : (a: typeof x) => void -+>b : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -14, +14 lines =@@ - >x : { foo: string; } - - d: (a: typeof x) => void; -->d : (a: typeof x) => void -+>d : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -9, +9 lines =@@ - >x : { foo: string; } - - static s(a: typeof x) { } -->s : (a: typeof x) => void -+>s : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -14, +14 lines =@@ - >x : { foo: string; } - - static u: (a: typeof x) => void; -->u : (a: typeof x) => void -+>u : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -32, +32 lines =@@ - >Base : Base - - protected b(a: typeof x) { } -->b : (a: typeof x) => void -+>b : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -50, +50 lines =@@ - >Base : Base - - protected d: (a: typeof x) => void ; -->d : (a: typeof x) => void -+>d : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -33, +33 lines =@@ - >Base : Base - - protected static s(a: typeof x) { } -->s : (a: typeof x) => void -+>s : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -50, +50 lines =@@ - >Base : Base - - protected static u: (a: typeof x) => void ; -->u : (a: typeof x) => void -+>u : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.errors.txt b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.errors.txt index a612755d12e..9d8d96fcd77 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.errors.txt @@ -2,7 +2,7 @@ derivedClassOverridesPublicMembers.ts(5,5): error TS2564: Property 'a' has no in derivedClassOverridesPublicMembers.ts(9,5): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. derivedClassOverridesPublicMembers.ts(21,5): error TS2564: Property 'a' has no initializer and is not definitely assigned in the constructor. derivedClassOverridesPublicMembers.ts(25,5): error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. - Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. + Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. Types of parameters 'a' and 'a' are incompatible. Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. derivedClassOverridesPublicMembers.ts(25,5): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. @@ -49,7 +49,7 @@ derivedClassOverridesPublicMembers.ts(60,10): error TS2454: Variable 'd2' is use d: (a: typeof y) => void; ~ !!! error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. -!!! error TS2416: Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. +!!! error TS2416: Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. !!! error TS2416: Types of parameters 'a' and 'a' are incompatible. !!! error TS2416: Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. !!! related TS2728 derivedClassOverridesPublicMembers.ts:2:23: 'bar' is declared here. diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.errors.txt.diff new file mode 100644 index 00000000000..02ec7dc9760 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.errors.txt.diff @@ -0,0 +1,20 @@ +--- old.derivedClassOverridesPublicMembers.errors.txt ++++ new.derivedClassOverridesPublicMembers.errors.txt +@@= skipped -1, +1 lines =@@ + derivedClassOverridesPublicMembers.ts(9,5): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. + derivedClassOverridesPublicMembers.ts(21,5): error TS2564: Property 'a' has no initializer and is not definitely assigned in the constructor. + derivedClassOverridesPublicMembers.ts(25,5): error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. +- Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. ++ Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. + Types of parameters 'a' and 'a' are incompatible. + Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. + derivedClassOverridesPublicMembers.ts(25,5): error TS2564: Property 'd' has no initializer and is not definitely assigned in the constructor. +@@= skipped -47, +47 lines =@@ + d: (a: typeof y) => void; + ~ + !!! error TS2416: Property 'd' in type 'Derived' is not assignable to the same property in base type 'Base'. +-!!! error TS2416: Type '(a: { foo: string; bar: string; }) => void' is not assignable to type '(a: { foo: string; }) => void'. ++!!! error TS2416: Type '(a: typeof y) => void' is not assignable to type '(a: typeof x) => void'. + !!! error TS2416: Types of parameters 'a' and 'a' are incompatible. + !!! error TS2416: Property 'bar' is missing in type '{ foo: string; }' but required in type '{ foo: string; bar: string; }'. + !!! related TS2728 derivedClassOverridesPublicMembers.ts:2:23: 'bar' is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.types b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.types index 825295c1c1a..98d2ee818de 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.types +++ b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.types @@ -18,7 +18,7 @@ class Base { >x : { foo: string; } b(a: typeof x) { } ->b : (a: { foo: string; }) => void +>b : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -32,7 +32,7 @@ class Base { >x : { foo: string; } d: (a: typeof x) => void; ->d : (a: { foo: string; }) => void +>d : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -41,7 +41,7 @@ class Base { >x : { foo: string; } static s(a: typeof x) { } ->s : (a: { foo: string; }) => void +>s : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -55,7 +55,7 @@ class Base { >x : { foo: string; } static u: (a: typeof x) => void; ->u : (a: { foo: string; }) => void +>u : (a: typeof x) => void >a : { foo: string; } >x : { foo: string; } @@ -73,7 +73,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } b(a: typeof y) { } ->b : (a: { foo: string; bar: string; }) => void +>b : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -87,7 +87,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } d: (a: typeof y) => void; ->d : (a: { foo: string; bar: string; }) => void +>d : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -96,7 +96,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } static s(a: typeof y) { } ->s : (a: { foo: string; bar: string; }) => void +>s : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -110,7 +110,7 @@ class Derived extends Base { >y : { foo: string; bar: string; } static u: (a: typeof y) => void; ->u : (a: { foo: string; bar: string; }) => void +>u : (a: typeof y) => void >a : { foo: string; bar: string; } >y : { foo: string; bar: string; } @@ -137,9 +137,9 @@ var r1 = d.a; var r2 = d.b(y); >r2 : void >d.b(y) : void ->d.b : (a: { foo: string; bar: string; }) => void +>d.b : (a: typeof y) => void >d : Derived ->b : (a: { foo: string; bar: string; }) => void +>b : (a: typeof y) => void >y : { foo: string; bar: string; } var r3 = d.c; @@ -149,10 +149,10 @@ var r3 = d.c; >c : { foo: string; bar: string; } var r3a = d.d; ->r3a : (a: { foo: string; bar: string; }) => void ->d.d : (a: { foo: string; bar: string; }) => void +>r3a : (a: typeof y) => void +>d.d : (a: typeof y) => void >d : Derived ->d : (a: { foo: string; bar: string; }) => void +>d : (a: typeof y) => void d.c = y; >d.c = y : { foo: string; bar: string; } @@ -170,9 +170,9 @@ var r4 = Derived.r; var r5 = Derived.s(y); >r5 : void >Derived.s(y) : void ->Derived.s : (a: { foo: string; bar: string; }) => void +>Derived.s : (a: typeof y) => void >Derived : typeof Derived ->s : (a: { foo: string; bar: string; }) => void +>s : (a: typeof y) => void >y : { foo: string; bar: string; } var r6 = Derived.t; @@ -182,10 +182,10 @@ var r6 = Derived.t; >t : { foo: string; bar: string; } var r6a = Derived.u; ->r6a : (a: { foo: string; bar: string; }) => void ->Derived.u : (a: { foo: string; bar: string; }) => void +>r6a : (a: typeof y) => void +>Derived.u : (a: typeof y) => void >Derived : typeof Derived ->u : (a: { foo: string; bar: string; }) => void +>u : (a: typeof y) => void Derived.t = y; >Derived.t = y : { foo: string; bar: string; } diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.types.diff b/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.types.diff deleted file mode 100644 index e361c646d67..00000000000 --- a/testdata/baselines/reference/submodule/conformance/derivedClassOverridesPublicMembers.types.diff +++ /dev/null @@ -1,126 +0,0 @@ ---- old.derivedClassOverridesPublicMembers.types -+++ new.derivedClassOverridesPublicMembers.types -@@= skipped -17, +17 lines =@@ - >x : { foo: string; } - - b(a: typeof x) { } -->b : (a: typeof x) => void -+>b : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -14, +14 lines =@@ - >x : { foo: string; } - - d: (a: typeof x) => void; -->d : (a: typeof x) => void -+>d : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -9, +9 lines =@@ - >x : { foo: string; } - - static s(a: typeof x) { } -->s : (a: typeof x) => void -+>s : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -14, +14 lines =@@ - >x : { foo: string; } - - static u: (a: typeof x) => void; -->u : (a: typeof x) => void -+>u : (a: { foo: string; }) => void - >a : { foo: string; } - >x : { foo: string; } - -@@= skipped -18, +18 lines =@@ - >y : { foo: string; bar: string; } - - b(a: typeof y) { } -->b : (a: typeof y) => void -+>b : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -14, +14 lines =@@ - >y : { foo: string; bar: string; } - - d: (a: typeof y) => void; -->d : (a: typeof y) => void -+>d : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -9, +9 lines =@@ - >y : { foo: string; bar: string; } - - static s(a: typeof y) { } -->s : (a: typeof y) => void -+>s : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -14, +14 lines =@@ - >y : { foo: string; bar: string; } - - static u: (a: typeof y) => void; -->u : (a: typeof y) => void -+>u : (a: { foo: string; bar: string; }) => void - >a : { foo: string; bar: string; } - >y : { foo: string; bar: string; } - -@@= skipped -27, +27 lines =@@ - var r2 = d.b(y); - >r2 : void - >d.b(y) : void -->d.b : (a: typeof y) => void -+>d.b : (a: { foo: string; bar: string; }) => void - >d : Derived -->b : (a: typeof y) => void -+>b : (a: { foo: string; bar: string; }) => void - >y : { foo: string; bar: string; } - - var r3 = d.c; -@@= skipped -12, +12 lines =@@ - >c : { foo: string; bar: string; } - - var r3a = d.d; -->r3a : (a: typeof y) => void -->d.d : (a: typeof y) => void -+>r3a : (a: { foo: string; bar: string; }) => void -+>d.d : (a: { foo: string; bar: string; }) => void - >d : Derived -->d : (a: typeof y) => void -+>d : (a: { foo: string; bar: string; }) => void - - d.c = y; - >d.c = y : { foo: string; bar: string; } -@@= skipped -21, +21 lines =@@ - var r5 = Derived.s(y); - >r5 : void - >Derived.s(y) : void -->Derived.s : (a: typeof y) => void -+>Derived.s : (a: { foo: string; bar: string; }) => void - >Derived : typeof Derived -->s : (a: typeof y) => void -+>s : (a: { foo: string; bar: string; }) => void - >y : { foo: string; bar: string; } - - var r6 = Derived.t; -@@= skipped -12, +12 lines =@@ - >t : { foo: string; bar: string; } - - var r6a = Derived.u; -->r6a : (a: typeof y) => void -->Derived.u : (a: typeof y) => void -+>r6a : (a: { foo: string; bar: string; }) => void -+>Derived.u : (a: { foo: string; bar: string; }) => void - >Derived : typeof Derived -->u : (a: typeof y) => void -+>u : (a: { foo: string; bar: string; }) => void - - Derived.t = y; - >Derived.t = y : { foo: string; bar: string; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.errors.txt b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.errors.txt index 31583147105..a486c4bcca2 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.errors.txt @@ -1,6 +1,6 @@ derivedClassTransitivity.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. - Type '(x?: string | undefined) => void' is not assignable to type '(x: number) => void'. + Type '(x?: string) => void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. Type 'number' is not assignable to type 'string'. @@ -27,7 +27,7 @@ derivedClassTransitivity.ts(18,1): error TS2322: Type 'E' is not assignable to t ~ !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. -!!! error TS2322: Type '(x?: string | undefined) => void' is not assignable to type '(x: number) => void'. +!!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. var r = c.foo(1); diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.errors.txt.diff new file mode 100644 index 00000000000..ef56a5c480d --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.errors.txt.diff @@ -0,0 +1,19 @@ +--- old.derivedClassTransitivity.errors.txt ++++ new.derivedClassTransitivity.errors.txt +@@= skipped -0, +0 lines =@@ + derivedClassTransitivity.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. + Types of property 'foo' are incompatible. +- Type '(x?: string | undefined) => void' is not assignable to type '(x: number) => void'. ++ Type '(x?: string) => void' is not assignable to type '(x: number) => void'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'string'. + +@@= skipped -26, +26 lines =@@ + ~ + !!! error TS2322: Type 'E' is not assignable to type 'C'. + !!! error TS2322: Types of property 'foo' are incompatible. +-!!! error TS2322: Type '(x?: string | undefined) => void' is not assignable to type '(x: number) => void'. ++!!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number' is not assignable to type 'string'. + var r = c.foo(1); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.types b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.types index a1af060dba1..e748c2dff91 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.types +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.types @@ -24,7 +24,7 @@ class E extends D { >D : D foo(x?: string) { } // ok to add optional parameters ->foo : (x?: string | undefined) => void +>foo : (x?: string) => void >x : string | undefined } @@ -53,8 +53,8 @@ var r = c.foo(1); var r2 = e.foo(''); >r2 : void >e.foo('') : void ->e.foo : (x?: string | undefined) => void +>e.foo : (x?: string) => void >e : E ->foo : (x?: string | undefined) => void +>foo : (x?: string) => void >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.types.diff b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.types.diff deleted file mode 100644 index 50b0eef584f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity.types.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.derivedClassTransitivity.types -+++ new.derivedClassTransitivity.types -@@= skipped -23, +23 lines =@@ - >D : D - - foo(x?: string) { } // ok to add optional parameters -->foo : (x?: string) => void -+>foo : (x?: string | undefined) => void - >x : string | undefined - } - -@@= skipped -29, +29 lines =@@ - var r2 = e.foo(''); - >r2 : void - >e.foo('') : void -->e.foo : (x?: string) => void -+>e.foo : (x?: string | undefined) => void - >e : E -->foo : (x?: string) => void -+>foo : (x?: string | undefined) => void - >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.errors.txt b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.errors.txt index 0b1e497ce4d..836c261ade7 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.errors.txt @@ -1,6 +1,6 @@ derivedClassTransitivity2.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. - Type '(x: number, y?: string | undefined) => void' is not assignable to type '(x: number, y: number) => void'. + Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. Types of parameters 'y' and 'y' are incompatible. Type 'number' is not assignable to type 'string'. @@ -27,7 +27,7 @@ derivedClassTransitivity2.ts(18,1): error TS2322: Type 'E' is not assignable to ~ !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. -!!! error TS2322: Type '(x: number, y?: string | undefined) => void' is not assignable to type '(x: number, y: number) => void'. +!!! error TS2322: Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. var r = c.foo(1, 1); diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.errors.txt.diff new file mode 100644 index 00000000000..6f4467a9efa --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.errors.txt.diff @@ -0,0 +1,19 @@ +--- old.derivedClassTransitivity2.errors.txt ++++ new.derivedClassTransitivity2.errors.txt +@@= skipped -0, +0 lines =@@ + derivedClassTransitivity2.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. + Types of property 'foo' are incompatible. +- Type '(x: number, y?: string | undefined) => void' is not assignable to type '(x: number, y: number) => void'. ++ Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. + +@@= skipped -26, +26 lines =@@ + ~ + !!! error TS2322: Type 'E' is not assignable to type 'C'. + !!! error TS2322: Types of property 'foo' are incompatible. +-!!! error TS2322: Type '(x: number, y?: string | undefined) => void' is not assignable to type '(x: number, y: number) => void'. ++!!! error TS2322: Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. + !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2322: Type 'number' is not assignable to type 'string'. + var r = c.foo(1, 1); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.types b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.types index 1270e779b2c..1715fc45900 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.types +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.types @@ -26,7 +26,7 @@ class E extends D { >D : D foo(x: number, y?: string) { } // ok to add optional parameters ->foo : (x: number, y?: string | undefined) => void +>foo : (x: number, y?: string) => void >x : number >y : string | undefined } @@ -57,9 +57,9 @@ var r = c.foo(1, 1); var r2 = e.foo(1, ''); >r2 : void >e.foo(1, '') : void ->e.foo : (x: number, y?: string | undefined) => void +>e.foo : (x: number, y?: string) => void >e : E ->foo : (x: number, y?: string | undefined) => void +>foo : (x: number, y?: string) => void >1 : 1 >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.types.diff b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.types.diff deleted file mode 100644 index 64f59f68a60..00000000000 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity2.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.derivedClassTransitivity2.types -+++ new.derivedClassTransitivity2.types -@@= skipped -25, +25 lines =@@ - >D : D - - foo(x: number, y?: string) { } // ok to add optional parameters -->foo : (x: number, y?: string) => void -+>foo : (x: number, y?: string | undefined) => void - >x : number - >y : string | undefined - } -@@= skipped -31, +31 lines =@@ - var r2 = e.foo(1, ''); - >r2 : void - >e.foo(1, '') : void -->e.foo : (x: number, y?: string) => void -+>e.foo : (x: number, y?: string | undefined) => void - >e : E -->foo : (x: number, y?: string) => void -+>foo : (x: number, y?: string | undefined) => void - >1 : 1 - >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.errors.txt b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.errors.txt index e217468e3f2..b4f48ad37d5 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.errors.txt @@ -1,6 +1,6 @@ derivedClassTransitivity3.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. - Type '(x: string, y?: number | undefined) => void' is not assignable to type '(x: string, y: string) => void'. + Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. Types of parameters 'y' and 'y' are incompatible. Type 'string' is not assignable to type 'number'. @@ -27,7 +27,7 @@ derivedClassTransitivity3.ts(18,1): error TS2322: Type 'E' is not assign ~ !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. -!!! error TS2322: Type '(x: string, y?: number | undefined) => void' is not assignable to type '(x: string, y: string) => void'. +!!! error TS2322: Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. !!! error TS2322: Type 'string' is not assignable to type 'number'. var r = c.foo('', ''); diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.errors.txt.diff new file mode 100644 index 00000000000..62b47b6bac1 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.errors.txt.diff @@ -0,0 +1,19 @@ +--- old.derivedClassTransitivity3.errors.txt ++++ new.derivedClassTransitivity3.errors.txt +@@= skipped -0, +0 lines =@@ + derivedClassTransitivity3.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. + Types of property 'foo' are incompatible. +- Type '(x: string, y?: number | undefined) => void' is not assignable to type '(x: string, y: string) => void'. ++ Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. + Types of parameters 'y' and 'y' are incompatible. + Type 'string' is not assignable to type 'number'. + +@@= skipped -26, +26 lines =@@ + ~ + !!! error TS2322: Type 'E' is not assignable to type 'C'. + !!! error TS2322: Types of property 'foo' are incompatible. +-!!! error TS2322: Type '(x: string, y?: number | undefined) => void' is not assignable to type '(x: string, y: string) => void'. ++!!! error TS2322: Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. + !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2322: Type 'string' is not assignable to type 'number'. + var r = c.foo('', ''); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.types b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.types index 4b703a662c8..3142673c41c 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.types +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.types @@ -26,7 +26,7 @@ class E extends D { >D : D foo(x: T, y?: number) { } // ok to add optional parameters ->foo : (x: T, y?: number | undefined) => void +>foo : (x: T, y?: number) => void >x : T >y : number | undefined } @@ -57,9 +57,9 @@ var r = c.foo('', ''); var r2 = e.foo('', 1); >r2 : void >e.foo('', 1) : void ->e.foo : (x: string, y?: number | undefined) => void +>e.foo : (x: string, y?: number) => void >e : E ->foo : (x: string, y?: number | undefined) => void +>foo : (x: string, y?: number) => void >'' : "" >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.types.diff b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.types.diff deleted file mode 100644 index 6dcd33f22d1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity3.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.derivedClassTransitivity3.types -+++ new.derivedClassTransitivity3.types -@@= skipped -25, +25 lines =@@ - >D : D - - foo(x: T, y?: number) { } // ok to add optional parameters -->foo : (x: T, y?: number) => void -+>foo : (x: T, y?: number | undefined) => void - >x : T - >y : number | undefined - } -@@= skipped -31, +31 lines =@@ - var r2 = e.foo('', 1); - >r2 : void - >e.foo('', 1) : void -->e.foo : (x: string, y?: number) => void -+>e.foo : (x: string, y?: number | undefined) => void - >e : E -->foo : (x: string, y?: number) => void -+>foo : (x: string, y?: number | undefined) => void - >'' : "" - >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.errors.txt b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.errors.txt index 6c00db08816..bfe3dbbfbc4 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.errors.txt @@ -1,6 +1,6 @@ derivedClassTransitivity4.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. - Type '(x?: string | undefined) => void' is not assignable to type '(x: number) => void'. + Type '(x?: string) => void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. Type 'number' is not assignable to type 'string'. derivedClassTransitivity4.ts(19,11): error TS2445: Property 'foo' is protected and only accessible within class 'C' and its subclasses. @@ -28,7 +28,7 @@ derivedClassTransitivity4.ts(19,11): error TS2445: Property 'foo' is protected a ~ !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. -!!! error TS2322: Type '(x?: string | undefined) => void' is not assignable to type '(x: number) => void'. +!!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. var r = c.foo(1); diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.errors.txt.diff new file mode 100644 index 00000000000..d4b19c6b531 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.errors.txt.diff @@ -0,0 +1,19 @@ +--- old.derivedClassTransitivity4.errors.txt ++++ new.derivedClassTransitivity4.errors.txt +@@= skipped -0, +0 lines =@@ + derivedClassTransitivity4.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. + Types of property 'foo' are incompatible. +- Type '(x?: string | undefined) => void' is not assignable to type '(x: number) => void'. ++ Type '(x?: string) => void' is not assignable to type '(x: number) => void'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'string'. + derivedClassTransitivity4.ts(19,11): error TS2445: Property 'foo' is protected and only accessible within class 'C' and its subclasses. +@@= skipped -27, +27 lines =@@ + ~ + !!! error TS2322: Type 'E' is not assignable to type 'C'. + !!! error TS2322: Types of property 'foo' are incompatible. +-!!! error TS2322: Type '(x?: string | undefined) => void' is not assignable to type '(x: number) => void'. ++!!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. + !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2322: Type 'number' is not assignable to type 'string'. + var r = c.foo(1); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.types b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.types index d3b178dcf3b..b6336edc8bc 100644 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.types +++ b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.types @@ -24,7 +24,7 @@ class E extends D { >D : D public foo(x?: string) { } // ok to add optional parameters ->foo : (x?: string | undefined) => void +>foo : (x?: string) => void >x : string | undefined } @@ -53,8 +53,8 @@ var r = c.foo(1); var r2 = e.foo(''); >r2 : void >e.foo('') : void ->e.foo : (x?: string | undefined) => void +>e.foo : (x?: string) => void >e : E ->foo : (x?: string | undefined) => void +>foo : (x?: string) => void >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.types.diff b/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.types.diff deleted file mode 100644 index d7274f7ccf3..00000000000 --- a/testdata/baselines/reference/submodule/conformance/derivedClassTransitivity4.types.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.derivedClassTransitivity4.types -+++ new.derivedClassTransitivity4.types -@@= skipped -23, +23 lines =@@ - >D : D - - public foo(x?: string) { } // ok to add optional parameters -->foo : (x?: string) => void -+>foo : (x?: string | undefined) => void - >x : string | undefined - } - -@@= skipped -29, +29 lines =@@ - var r2 = e.foo(''); - >r2 : void - >e.foo('') : void -->e.foo : (x?: string) => void -+>e.foo : (x?: string | undefined) => void - >e : E -->foo : (x?: string) => void -+>foo : (x?: string | undefined) => void - >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/destructuringControlFlow.types b/testdata/baselines/reference/submodule/conformance/destructuringControlFlow.types index 040c446e04e..72a3920e2fb 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringControlFlow.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringControlFlow.types @@ -2,36 +2,36 @@ === destructuringControlFlow.ts === function f1(obj: { a?: string }) { ->f1 : (obj: { a?: string | undefined; }) => void ->obj : { a?: string | undefined; } +>f1 : (obj: { a?: string; }) => void +>obj : { a?: string; } >a : string | undefined if (obj.a) { >obj.a : string | undefined ->obj : { a?: string | undefined; } +>obj : { a?: string; } >a : string | undefined obj = {}; >obj = {} : {} ->obj : { a?: string | undefined; } +>obj : { a?: string; } >{} : {} let a1 = obj["a"]; // string | undefined >a1 : string | undefined >obj["a"] : string | undefined ->obj : { a?: string | undefined; } +>obj : { a?: string; } >"a" : "a" let a2 = obj.a; // string | undefined >a2 : string | undefined >obj.a : string | undefined ->obj : { a?: string | undefined; } +>obj : { a?: string; } >a : string | undefined } } function f2(obj: [number, string] | null[]) { ->f2 : (obj: null[] | [number, string]) => void +>f2 : (obj: [number, string] | null[]) => void >obj : null[] | [number, string] let a0 = obj[0]; // number | null @@ -96,32 +96,32 @@ function f2(obj: [number, string] | null[]) { } function f3(obj: { a?: number, b?: string }) { ->f3 : (obj: { a?: number | undefined; b?: string | undefined; }) => void ->obj : { a?: number | undefined; b?: string | undefined; } +>f3 : (obj: { a?: number; b?: string; }) => void +>obj : { a?: number; b?: string; } >a : number | undefined >b : string | undefined if (obj.a && obj.b) { >obj.a && obj.b : string | 0 | undefined >obj.a : number | undefined ->obj : { a?: number | undefined; b?: string | undefined; } +>obj : { a?: number; b?: string; } >a : number | undefined >obj.b : string | undefined ->obj : { a?: number | undefined; b?: string | undefined; } +>obj : { a?: number; b?: string; } >b : string | undefined let { a, b } = obj; // number, string >a : number >b : string ->obj : { a?: number | undefined; b?: string | undefined; } +>obj : { a?: number; b?: string; } ({ a, b } = obj); ->({ a, b } = obj) : { a?: number | undefined; b?: string | undefined; } ->{ a, b } = obj : { a?: number | undefined; b?: string | undefined; } +>({ a, b } = obj) : { a?: number; b?: string; } +>{ a, b } = obj : { a?: number; b?: string; } >{ a, b } : { a: number; b: string; } >a : number >b : string ->obj : { a?: number | undefined; b?: string | undefined; } +>obj : { a?: number; b?: string; } } } diff --git a/testdata/baselines/reference/submodule/conformance/destructuringControlFlow.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringControlFlow.types.diff deleted file mode 100644 index 69dd6d16034..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringControlFlow.types.diff +++ /dev/null @@ -1,86 +0,0 @@ ---- old.destructuringControlFlow.types -+++ new.destructuringControlFlow.types -@@= skipped -1, +1 lines =@@ - - === destructuringControlFlow.ts === - function f1(obj: { a?: string }) { -->f1 : (obj: { a?: string; }) => void -->obj : { a?: string; } -+>f1 : (obj: { a?: string | undefined; }) => void -+>obj : { a?: string | undefined; } - >a : string | undefined - - if (obj.a) { - >obj.a : string | undefined -->obj : { a?: string; } -+>obj : { a?: string | undefined; } - >a : string | undefined - - obj = {}; - >obj = {} : {} -->obj : { a?: string; } -+>obj : { a?: string | undefined; } - >{} : {} - - let a1 = obj["a"]; // string | undefined - >a1 : string | undefined - >obj["a"] : string | undefined -->obj : { a?: string; } -+>obj : { a?: string | undefined; } - >"a" : "a" - - let a2 = obj.a; // string | undefined - >a2 : string | undefined - >obj.a : string | undefined -->obj : { a?: string; } -+>obj : { a?: string | undefined; } - >a : string | undefined - } - } - - function f2(obj: [number, string] | null[]) { -->f2 : (obj: [number, string] | null[]) => void -+>f2 : (obj: null[] | [number, string]) => void - >obj : null[] | [number, string] - - let a0 = obj[0]; // number | null -@@= skipped -94, +94 lines =@@ - } - - function f3(obj: { a?: number, b?: string }) { -->f3 : (obj: { a?: number; b?: string; }) => void -->obj : { a?: number; b?: string; } -+>f3 : (obj: { a?: number | undefined; b?: string | undefined; }) => void -+>obj : { a?: number | undefined; b?: string | undefined; } - >a : number | undefined - >b : string | undefined - - if (obj.a && obj.b) { - >obj.a && obj.b : string | 0 | undefined - >obj.a : number | undefined -->obj : { a?: number; b?: string; } -+>obj : { a?: number | undefined; b?: string | undefined; } - >a : number | undefined - >obj.b : string | undefined -->obj : { a?: number; b?: string; } -+>obj : { a?: number | undefined; b?: string | undefined; } - >b : string | undefined - - let { a, b } = obj; // number, string - >a : number - >b : string -->obj : { a?: number; b?: string; } -+>obj : { a?: number | undefined; b?: string | undefined; } - - ({ a, b } = obj); -->({ a, b } = obj) : { a?: number; b?: string; } -->{ a, b } = obj : { a?: number; b?: string; } -+>({ a, b } = obj) : { a?: number | undefined; b?: string | undefined; } -+>{ a, b } = obj : { a?: number | undefined; b?: string | undefined; } - >{ a, b } : { a: number; b: string; } - >a : number - >b : string -->obj : { a?: number; b?: string; } -+>obj : { a?: number | undefined; b?: string | undefined; } - } - } diff --git a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types b/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types index f7e6e9f9b8e..3a98ec825b9 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types @@ -77,7 +77,7 @@ function f3() { // Based on comment: // - https://github.com/microsoft/TypeScript/issues/49989#issuecomment-1852694486 declare const yadda: { a?: number, b?: number } | undefined ->yadda : { a?: number | undefined; b?: number | undefined; } | undefined +>yadda : { a?: number; b?: number; } | undefined >a : number | undefined >b : number | undefined @@ -88,8 +88,8 @@ function f4() { >a : number | undefined >b : number | undefined >a : number | undefined ->yadda ?? {} : { a?: number | undefined; b?: number | undefined; } ->yadda : { a?: number | undefined; b?: number | undefined; } | undefined +>yadda ?? {} : { a?: number; b?: number; } +>yadda : { a?: number; b?: number; } | undefined >{} : {} } diff --git a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types.diff deleted file mode 100644 index 4b391e291ea..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types -+++ new.destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types -@@= skipped -76, +76 lines =@@ - // Based on comment: - // - https://github.com/microsoft/TypeScript/issues/49989#issuecomment-1852694486 - declare const yadda: { a?: number, b?: number } | undefined -->yadda : { a?: number; b?: number; } | undefined -+>yadda : { a?: number | undefined; b?: number | undefined; } | undefined - >a : number | undefined - >b : number | undefined - -@@= skipped -11, +11 lines =@@ - >a : number | undefined - >b : number | undefined - >a : number | undefined -->yadda ?? {} : { a?: number; b?: number; } -->yadda : { a?: number; b?: number; } | undefined -+>yadda ?? {} : { a?: number | undefined; b?: number | undefined; } -+>yadda : { a?: number | undefined; b?: number | undefined; } | undefined - >{} : {} - } diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=false).types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=false).types index 8fae0eb8c5c..2f5543a356d 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=false).types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=false).types @@ -2,7 +2,7 @@ === destructuringParameterDeclaration10.ts === export function prepareConfig({ ->prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void +>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { >additionalFiles : any @@ -46,14 +46,14 @@ export function prepareConfigWithoutAnnotation({ } export const prepareConfigWithContextualSignature: (param:{ ->prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void ->param : { additionalFiles?: Partial>; } +>prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void +>param : { additionalFiles?: Partial>; } additionalFiles?: Partial>; >additionalFiles : Partial> }) => void = ({ ->({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void +>({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { >additionalFiles : any diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=false).types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=false).types.diff deleted file mode 100644 index fd246398494..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=false).types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.destructuringParameterDeclaration10(strict=false).types -+++ new.destructuringParameterDeclaration10(strict=false).types -@@= skipped -1, +1 lines =@@ - - === destructuringParameterDeclaration10.ts === - export function prepareConfig({ -->prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void -+>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void - - additionalFiles: { - >additionalFiles : any -@@= skipped -44, +44 lines =@@ - } - - export const prepareConfigWithContextualSignature: (param:{ -->prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void -->param : { additionalFiles?: Partial>; } -+>prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void -+>param : { additionalFiles?: Partial>; } - - additionalFiles?: Partial>; - >additionalFiles : Partial> - - }) => void = ({ -->({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void -+>({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void - - additionalFiles: { - >additionalFiles : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=true).types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=true).types index ca566ffe73c..aa840475afb 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=true).types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=true).types @@ -2,7 +2,7 @@ === destructuringParameterDeclaration10.ts === export function prepareConfig({ ->prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void +>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { >additionalFiles : any @@ -46,14 +46,14 @@ export function prepareConfigWithoutAnnotation({ } export const prepareConfigWithContextualSignature: (param:{ ->prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial> | undefined; }) => void ->param : { additionalFiles?: Partial> | undefined; } +>prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void +>param : { additionalFiles?: Partial>; } additionalFiles?: Partial>; >additionalFiles : Partial> | undefined }) => void = ({ ->({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void +>({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { >additionalFiles : any diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=true).types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=true).types.diff deleted file mode 100644 index b0f4b772e26..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration10(strict=true).types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.destructuringParameterDeclaration10(strict=true).types -+++ new.destructuringParameterDeclaration10(strict=true).types -@@= skipped -1, +1 lines =@@ - - === destructuringParameterDeclaration10.ts === - export function prepareConfig({ -->prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void -+>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void - - additionalFiles: { - >additionalFiles : any -@@= skipped -44, +44 lines =@@ - } - - export const prepareConfigWithContextualSignature: (param:{ -->prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void -->param : { additionalFiles?: Partial>; } -+>prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial> | undefined; }) => void -+>param : { additionalFiles?: Partial> | undefined; } - - additionalFiles?: Partial>; - >additionalFiles : Partial> | undefined - - }) => void = ({ -->({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void -+>({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void - - additionalFiles: { - >additionalFiles : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5.types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5.types index f942a6ae05d..9daeec760c2 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5.types @@ -19,7 +19,7 @@ function a2(o: { x: number, a: number }) { } >a : number function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boolean, n: number }, q: (number|string)[] }) { }; ->a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (string | number)[]; }) => void +>a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (number | string)[]; }) => void >j : number >k : string >l : any @@ -211,7 +211,7 @@ function c2({z = 10}) { } >10 : 10 function c3({b}: { b: number|string} = { b: "hello" }) { } ->c3 : ({ b }?: { b: string | number; }) => void +>c3 : ({ b }?: { b: number | string; }) => void >b : string | number >b : string | number >{ b: "hello" } : { b: string; } @@ -282,7 +282,7 @@ c2({z:1}); // Implied type is {z?: number} c3({ b: 1 }); // Implied type is { b: number|string }. >c3({ b: 1 }) : void ->c3 : ({ b }?: { b: string | number; }) => void +>c3 : ({ b }?: { b: number | string; }) => void >{ b: 1 } : { b: number; } >b : number >1 : 1 @@ -410,7 +410,7 @@ function e2({x}: { x: number }) { } // x is type number >x : number function e3({x}: { x?: number }) { } // x is an optional with type number ->e3 : ({ x }: { x?: number | undefined; }) => void +>e3 : ({ x }: { x?: number; }) => void >x : number | undefined >x : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5.types.diff deleted file mode 100644 index 1a5fe5cc8af..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.destructuringParameterDeclaration1ES5.types -+++ new.destructuringParameterDeclaration1ES5.types -@@= skipped -18, +18 lines =@@ - >a : number - - function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boolean, n: number }, q: (number|string)[] }) { }; -->a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (number | string)[]; }) => void -+>a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (string | number)[]; }) => void - >j : number - >k : string - >l : any -@@= skipped -192, +192 lines =@@ - >10 : 10 - - function c3({b}: { b: number|string} = { b: "hello" }) { } -->c3 : ({ b }?: { b: number | string; }) => void -+>c3 : ({ b }?: { b: string | number; }) => void - >b : string | number - >b : string | number - >{ b: "hello" } : { b: string; } -@@= skipped -71, +71 lines =@@ - - c3({ b: 1 }); // Implied type is { b: number|string }. - >c3({ b: 1 }) : void -->c3 : ({ b }?: { b: number | string; }) => void -+>c3 : ({ b }?: { b: string | number; }) => void - >{ b: 1 } : { b: number; } - >b : number - >1 : 1 -@@= skipped -128, +128 lines =@@ - >x : number - - function e3({x}: { x?: number }) { } // x is an optional with type number -->e3 : ({ x }: { x?: number; }) => void -+>e3 : ({ x }: { x?: number | undefined; }) => void - >x : number | undefined - >x : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5iterable.types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5iterable.types index ffb2d81395b..75ef36dce68 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5iterable.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5iterable.types @@ -19,7 +19,7 @@ function a2(o: { x: number, a: number }) { } >a : number function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boolean, n: number }, q: (number|string)[] }) { }; ->a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (string | number)[]; }) => void +>a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (number | string)[]; }) => void >j : number >k : string >l : any @@ -211,7 +211,7 @@ function c2({z = 10}) { } >10 : 10 function c3({b}: { b: number|string} = { b: "hello" }) { } ->c3 : ({ b }?: { b: string | number; }) => void +>c3 : ({ b }?: { b: number | string; }) => void >b : string | number >b : string | number >{ b: "hello" } : { b: string; } @@ -282,7 +282,7 @@ c2({z:1}); // Implied type is {z?: number} c3({ b: 1 }); // Implied type is { b: number|string }. >c3({ b: 1 }) : void ->c3 : ({ b }?: { b: string | number; }) => void +>c3 : ({ b }?: { b: number | string; }) => void >{ b: 1 } : { b: number; } >b : number >1 : 1 @@ -410,7 +410,7 @@ function e2({x}: { x: number }) { } // x is type number >x : number function e3({x}: { x?: number }) { } // x is an optional with type number ->e3 : ({ x }: { x?: number | undefined; }) => void +>e3 : ({ x }: { x?: number; }) => void >x : number | undefined >x : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5iterable.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5iterable.types.diff deleted file mode 100644 index ea762d440dd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES5iterable.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.destructuringParameterDeclaration1ES5iterable.types -+++ new.destructuringParameterDeclaration1ES5iterable.types -@@= skipped -18, +18 lines =@@ - >a : number - - function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boolean, n: number }, q: (number|string)[] }) { }; -->a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (number | string)[]; }) => void -+>a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (string | number)[]; }) => void - >j : number - >k : string - >l : any -@@= skipped -192, +192 lines =@@ - >10 : 10 - - function c3({b}: { b: number|string} = { b: "hello" }) { } -->c3 : ({ b }?: { b: number | string; }) => void -+>c3 : ({ b }?: { b: string | number; }) => void - >b : string | number - >b : string | number - >{ b: "hello" } : { b: string; } -@@= skipped -71, +71 lines =@@ - - c3({ b: 1 }); // Implied type is { b: number|string }. - >c3({ b: 1 }) : void -->c3 : ({ b }?: { b: number | string; }) => void -+>c3 : ({ b }?: { b: string | number; }) => void - >{ b: 1 } : { b: number; } - >b : number - >1 : 1 -@@= skipped -128, +128 lines =@@ - >x : number - - function e3({x}: { x?: number }) { } // x is an optional with type number -->e3 : ({ x }: { x?: number; }) => void -+>e3 : ({ x }: { x?: number | undefined; }) => void - >x : number | undefined - >x : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES6.types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES6.types index bc1b719bdbd..e7afccd9115 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES6.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES6.types @@ -21,7 +21,7 @@ function a2(o: { x: number, a: number }) { } >a : number function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boolean, n: number }, q: (number|string)[] }) { }; ->a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (string | number)[]; }) => void +>a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (number | string)[]; }) => void >j : number >k : string >l : any @@ -194,7 +194,7 @@ function c2({z = 10}) { } >10 : 10 function c3({b}: { b: number|string} = { b: "hello" }) { } ->c3 : ({ b }?: { b: string | number; }) => void +>c3 : ({ b }?: { b: number | string; }) => void >b : string | number >b : string | number >{ b: "hello" } : { b: string; } @@ -265,7 +265,7 @@ c2({z:1}); // Implied type is {z?: number} c3({ b: 1 }); // Implied type is { b: number|string }. >c3({ b: 1 }) : void ->c3 : ({ b }?: { b: string | number; }) => void +>c3 : ({ b }?: { b: number | string; }) => void >{ b: 1 } : { b: number; } >b : number >1 : 1 @@ -384,7 +384,7 @@ function e2({x}: { x: number }) { } // x is type number >x : number function e3({x}: { x?: number }) { } // x is an optional with type number ->e3 : ({ x }: { x?: number | undefined; }) => void +>e3 : ({ x }: { x?: number; }) => void >x : number | undefined >x : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES6.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES6.types.diff deleted file mode 100644 index a8510f976b8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration1ES6.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.destructuringParameterDeclaration1ES6.types -+++ new.destructuringParameterDeclaration1ES6.types -@@= skipped -20, +20 lines =@@ - >a : number - - function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boolean, n: number }, q: (number|string)[] }) { }; -->a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (number | string)[]; }) => void -+>a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (string | number)[]; }) => void - >j : number - >k : string - >l : any -@@= skipped -173, +173 lines =@@ - >10 : 10 - - function c3({b}: { b: number|string} = { b: "hello" }) { } -->c3 : ({ b }?: { b: number | string; }) => void -+>c3 : ({ b }?: { b: string | number; }) => void - >b : string | number - >b : string | number - >{ b: "hello" } : { b: string; } -@@= skipped -71, +71 lines =@@ - - c3({ b: 1 }); // Implied type is { b: number|string }. - >c3({ b: 1 }) : void -->c3 : ({ b }?: { b: number | string; }) => void -+>c3 : ({ b }?: { b: string | number; }) => void - >{ b: 1 } : { b: number; } - >b : number - >1 : 1 -@@= skipped -119, +119 lines =@@ - >x : number - - function e3({x}: { x?: number }) { } // x is an optional with type number -->e3 : ({ x }: { x?: number; }) => void -+>e3 : ({ x }: { x?: number | undefined; }) => void - >x : number | undefined - >x : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration2.types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration2.types index aa7547d4a6d..e6fb9049945 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration2.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration2.types @@ -122,7 +122,7 @@ function c2({z = 10}) { } >10 : 10 function c3({b}: { b: number|string } = { b: "hello" }) { } ->c3 : ({ b }?: { b: string | number; }) => void +>c3 : ({ b }?: { b: number | string; }) => void >b : string | number >b : string | number >{ b: "hello" } : { b: string; } @@ -175,7 +175,7 @@ c2({ z: false }); // Error, implied type is {z?: number} c3({ b: true }); // Error, implied type is { b: number|string }. >c3({ b: true }) : void ->c3 : ({ b }?: { b: string | number; }) => void +>c3 : ({ b }?: { b: number | string; }) => void >{ b: true } : { b: boolean; } >b : boolean >true : true diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration2.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration2.types.diff deleted file mode 100644 index bce5e49f89b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration2.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.destructuringParameterDeclaration2.types -+++ new.destructuringParameterDeclaration2.types -@@= skipped -121, +121 lines =@@ - >10 : 10 - - function c3({b}: { b: number|string } = { b: "hello" }) { } -->c3 : ({ b }?: { b: number | string; }) => void -+>c3 : ({ b }?: { b: string | number; }) => void - >b : string | number - >b : string | number - >{ b: "hello" } : { b: string; } -@@= skipped -53, +53 lines =@@ - - c3({ b: true }); // Error, implied type is { b: number|string }. - >c3({ b: true }) : void -->c3 : ({ b }?: { b: number | string; }) => void -+>c3 : ({ b }?: { b: string | number; }) => void - >{ b: true } : { b: boolean; } - >b : boolean - >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5.types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5.types index 5391d787d9c..ffc57f00eb7 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5.types @@ -17,7 +17,7 @@ type stringOrNumArray = Array; >stringOrNumArray : stringOrNumArray function a1(...x: (number|string)[]) { } ->a1 : (...x: (string | number)[]) => void +>a1 : (...x: (number | string)[]) => void >x : (string | number)[] function a2(...a) { } @@ -25,7 +25,7 @@ function a2(...a) { } >a : any[] function a3(...a: Array) { } ->a3 : (...a: String[]) => void +>a3 : (...a: Array) => void >a : String[] function a4(...a: arrayString) { } @@ -80,7 +80,7 @@ a2([...array]); a1(...array); >a1(...array) : void ->a1 : (...x: (string | number)[]) => void +>a1 : (...x: (number | string)[]) => void >...array : number >array : number[] diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5.types.diff deleted file mode 100644 index df6d9c948ff..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.destructuringParameterDeclaration3ES5.types -+++ new.destructuringParameterDeclaration3ES5.types -@@= skipped -16, +16 lines =@@ - >stringOrNumArray : stringOrNumArray - - function a1(...x: (number|string)[]) { } -->a1 : (...x: (number | string)[]) => void -+>a1 : (...x: (string | number)[]) => void - >x : (string | number)[] - - function a2(...a) { } -@@= skipped -8, +8 lines =@@ - >a : any[] - - function a3(...a: Array) { } -->a3 : (...a: Array) => void -+>a3 : (...a: String[]) => void - >a : String[] - - function a4(...a: arrayString) { } -@@= skipped -55, +55 lines =@@ - - a1(...array); - >a1(...array) : void -->a1 : (...x: (number | string)[]) => void -+>a1 : (...x: (string | number)[]) => void - >...array : number - >array : number[] diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5iterable(target=es2015).types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5iterable(target=es2015).types index c1123928f62..8fcf2a40fd1 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5iterable(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5iterable(target=es2015).types @@ -17,7 +17,7 @@ type stringOrNumArray = Array; >stringOrNumArray : stringOrNumArray function a1(...x: (number|string)[]) { } ->a1 : (...x: (string | number)[]) => void +>a1 : (...x: (number | string)[]) => void >x : (string | number)[] function a2(...a) { } @@ -25,7 +25,7 @@ function a2(...a) { } >a : any[] function a3(...a: Array) { } ->a3 : (...a: String[]) => void +>a3 : (...a: Array) => void >a : String[] function a4(...a: arrayString) { } @@ -80,7 +80,7 @@ a2([...array]); a1(...array); >a1(...array) : void ->a1 : (...x: (string | number)[]) => void +>a1 : (...x: (number | string)[]) => void >...array : number >array : number[] diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5iterable(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5iterable(target=es2015).types.diff deleted file mode 100644 index 61ca2c5ec0a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES5iterable(target=es2015).types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.destructuringParameterDeclaration3ES5iterable(target=es2015).types -+++ new.destructuringParameterDeclaration3ES5iterable(target=es2015).types -@@= skipped -16, +16 lines =@@ - >stringOrNumArray : stringOrNumArray - - function a1(...x: (number|string)[]) { } -->a1 : (...x: (number | string)[]) => void -+>a1 : (...x: (string | number)[]) => void - >x : (string | number)[] - - function a2(...a) { } -@@= skipped -8, +8 lines =@@ - >a : any[] - - function a3(...a: Array) { } -->a3 : (...a: Array) => void -+>a3 : (...a: String[]) => void - >a : String[] - - function a4(...a: arrayString) { } -@@= skipped -55, +55 lines =@@ - - a1(...array); - >a1(...array) : void -->a1 : (...x: (number | string)[]) => void -+>a1 : (...x: (string | number)[]) => void - >...array : number - >array : number[] diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES6.types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES6.types index 98e0cff54ad..a410b12390b 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES6.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES6.types @@ -17,7 +17,7 @@ type stringOrNumArray = Array; >stringOrNumArray : stringOrNumArray function a1(...x: (number|string)[]) { } ->a1 : (...x: (string | number)[]) => void +>a1 : (...x: (number | string)[]) => void >x : (string | number)[] function a2(...a) { } @@ -25,7 +25,7 @@ function a2(...a) { } >a : any[] function a3(...a: Array) { } ->a3 : (...a: String[]) => void +>a3 : (...a: Array) => void >a : String[] function a4(...a: arrayString) { } @@ -80,7 +80,7 @@ a2([...array]); a1(...array); >a1(...array) : void ->a1 : (...x: (string | number)[]) => void +>a1 : (...x: (number | string)[]) => void >...array : number >array : number[] diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES6.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES6.types.diff deleted file mode 100644 index ea97b75d2aa..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration3ES6.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.destructuringParameterDeclaration3ES6.types -+++ new.destructuringParameterDeclaration3ES6.types -@@= skipped -16, +16 lines =@@ - >stringOrNumArray : stringOrNumArray - - function a1(...x: (number|string)[]) { } -->a1 : (...x: (number | string)[]) => void -+>a1 : (...x: (string | number)[]) => void - >x : (string | number)[] - - function a2(...a) { } -@@= skipped -8, +8 lines =@@ - >a : any[] - - function a3(...a: Array) { } -->a3 : (...a: Array) => void -+>a3 : (...a: String[]) => void - >a : String[] - - function a4(...a: arrayString) { } -@@= skipped -55, +55 lines =@@ - - a1(...array); - >a1(...array) : void -->a1 : (...x: (number | string)[]) => void -+>a1 : (...x: (string | number)[]) => void - >...array : number - >array : number[] diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration4.types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration4.types index a846667c5ad..2078adc80c4 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration4.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration4.types @@ -21,7 +21,7 @@ function a0(...x: [number, number, string]) { } // Error, rest parameter must b >x : [number, number, string] function a1(...x: (number|string)[]) { } ->a1 : (...x: (string | number)[]) => void +>a1 : (...x: (number | string)[]) => void >x : (string | number)[] function a2(...a: someArray) { } // Error, rest parameter must be array type @@ -56,7 +56,7 @@ function a6([a, b, c, ...x]: number[]) { } a1(1, 2, "hello", true); // Error, parameter type is (number|string)[] >a1(1, 2, "hello", true) : void ->a1 : (...x: (string | number)[]) => void +>a1 : (...x: (number | string)[]) => void >1 : 1 >2 : 2 >"hello" : "hello" @@ -64,7 +64,7 @@ a1(1, 2, "hello", true); // Error, parameter type is (number|string)[] a1(...array2); // Error parameter type is (number|string)[] >a1(...array2) : void ->a1 : (...x: (string | number)[]) => void +>a1 : (...x: (number | string)[]) => void >...array2 : any >array2 : any diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration4.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration4.types.diff deleted file mode 100644 index b109301f04a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration4.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.destructuringParameterDeclaration4.types -+++ new.destructuringParameterDeclaration4.types -@@= skipped -20, +20 lines =@@ - >x : [number, number, string] - - function a1(...x: (number|string)[]) { } -->a1 : (...x: (number | string)[]) => void -+>a1 : (...x: (string | number)[]) => void - >x : (string | number)[] - - function a2(...a: someArray) { } // Error, rest parameter must be array type -@@= skipped -35, +35 lines =@@ - - a1(1, 2, "hello", true); // Error, parameter type is (number|string)[] - >a1(1, 2, "hello", true) : void -->a1 : (...x: (number | string)[]) => void -+>a1 : (...x: (string | number)[]) => void - >1 : 1 - >2 : 2 - >"hello" : "hello" -@@= skipped -8, +8 lines =@@ - - a1(...array2); // Error parameter type is (number|string)[] - >a1(...array2) : void -->a1 : (...x: (number | string)[]) => void -+>a1 : (...x: (string | number)[]) => void - >...array2 : any - >array2 : any diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.errors.txt b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.errors.txt index daf46dc1aee..37427aebf0a 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.errors.txt @@ -1,5 +1,5 @@ destructuringParameterDeclaration8.ts(4,5): error TS2322: Type '"z"' is not assignable to type '"x" | "y"'. -destructuringParameterDeclaration8.ts(5,15): error TS2339: Property 'p' does not exist on type '{ p: "a" | "b"; } | undefined'. +destructuringParameterDeclaration8.ts(5,15): error TS2339: Property 'p' does not exist on type '{ p: 'a' | 'b'; } | undefined'. destructuringParameterDeclaration8.ts(17,8): error TS2322: Type '"z"' is not assignable to type '"x" | "y" | undefined'. destructuringParameterDeclaration8.ts(18,8): error TS2322: Type '"one"' is not assignable to type '"x" | "y" | undefined'. @@ -13,7 +13,7 @@ destructuringParameterDeclaration8.ts(18,8): error TS2322: Type '"one"' is not a !!! error TS2322: Type '"z"' is not assignable to type '"x" | "y"'. nested: { p = 'c' } ~ -!!! error TS2339: Property 'p' does not exist on type '{ p: "a" | "b"; } | undefined'. +!!! error TS2339: Property 'p' does not exist on type '{ p: 'a' | 'b'; } | undefined'. }: { method?: 'x' | 'y', nested?: { p: 'a' | 'b' } @@ -28,9 +28,9 @@ destructuringParameterDeclaration8.ts(18,8): error TS2322: Type '"one"' is not a test({ method: 'z', nested: { p: 'b' } }) ~~~~~~ !!! error TS2322: Type '"z"' is not assignable to type '"x" | "y" | undefined'. -!!! related TS6500 destructuringParameterDeclaration8.ts:7:5: The expected type comes from property 'method' which is declared here on type '{ method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }' +!!! related TS6500 destructuringParameterDeclaration8.ts:7:5: The expected type comes from property 'method' which is declared here on type '{ method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }' test({ method: 'one', nested: { p: 'a' } }) ~~~~~~ !!! error TS2322: Type '"one"' is not assignable to type '"x" | "y" | undefined'. -!!! related TS6500 destructuringParameterDeclaration8.ts:7:5: The expected type comes from property 'method' which is declared here on type '{ method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }' +!!! related TS6500 destructuringParameterDeclaration8.ts:7:5: The expected type comes from property 'method' which is declared here on type '{ method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.errors.txt.diff new file mode 100644 index 00000000000..84469d2d0c9 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.errors.txt.diff @@ -0,0 +1,30 @@ +--- old.destructuringParameterDeclaration8.errors.txt ++++ new.destructuringParameterDeclaration8.errors.txt +@@= skipped -0, +0 lines =@@ + destructuringParameterDeclaration8.ts(4,5): error TS2322: Type '"z"' is not assignable to type '"x" | "y"'. +-destructuringParameterDeclaration8.ts(5,15): error TS2339: Property 'p' does not exist on type '{ p: "a" | "b"; } | undefined'. ++destructuringParameterDeclaration8.ts(5,15): error TS2339: Property 'p' does not exist on type '{ p: 'a' | 'b'; } | undefined'. + destructuringParameterDeclaration8.ts(17,8): error TS2322: Type '"z"' is not assignable to type '"x" | "y" | undefined'. + destructuringParameterDeclaration8.ts(18,8): error TS2322: Type '"one"' is not assignable to type '"x" | "y" | undefined'. + +@@= skipped -12, +12 lines =@@ + !!! error TS2322: Type '"z"' is not assignable to type '"x" | "y"'. + nested: { p = 'c' } + ~ +-!!! error TS2339: Property 'p' does not exist on type '{ p: "a" | "b"; } | undefined'. ++!!! error TS2339: Property 'p' does not exist on type '{ p: 'a' | 'b'; } | undefined'. + }: { + method?: 'x' | 'y', + nested?: { p: 'a' | 'b' } +@@= skipped -15, +15 lines =@@ + test({ method: 'z', nested: { p: 'b' } }) + ~~~~~~ + !!! error TS2322: Type '"z"' is not assignable to type '"x" | "y" | undefined'. +-!!! related TS6500 destructuringParameterDeclaration8.ts:7:5: The expected type comes from property 'method' which is declared here on type '{ method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }' ++!!! related TS6500 destructuringParameterDeclaration8.ts:7:5: The expected type comes from property 'method' which is declared here on type '{ method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }' + test({ method: 'one', nested: { p: 'a' } }) + ~~~~~~ + !!! error TS2322: Type '"one"' is not assignable to type '"x" | "y" | undefined'. +-!!! related TS6500 destructuringParameterDeclaration8.ts:7:5: The expected type comes from property 'method' which is declared here on type '{ method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }' ++!!! related TS6500 destructuringParameterDeclaration8.ts:7:5: The expected type comes from property 'method' which is declared here on type '{ method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }' + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.types index 6f6e015202e..9735461561e 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.types @@ -4,7 +4,7 @@ // explicit type annotation should cause `method` to have type 'x' | 'y' // both inside and outside `test`. function test({ ->test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void +>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void method = 'z', >method : "x" | "y" @@ -20,7 +20,7 @@ function test({ >method : "x" | "y" | undefined nested?: { p: 'a' | 'b' } ->nested : { p: "a" | "b"; } | undefined +>nested : { p: 'a' | 'b'; } | undefined >p : "a" | "b" }) @@ -34,12 +34,12 @@ function test({ test({}); >test({}) : void ->test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void +>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void >{} : {} test({ method: 'x', nested: { p: 'a' } }) >test({ method: 'x', nested: { p: 'a' } }) : void ->test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void +>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void >{ method: 'x', nested: { p: 'a' } } : { method: "x"; nested: { p: "a"; }; } >method : "x" >'x' : "x" @@ -50,7 +50,7 @@ test({ method: 'x', nested: { p: 'a' } }) test({ method: 'z', nested: { p: 'b' } }) >test({ method: 'z', nested: { p: 'b' } }) : void ->test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void +>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void >{ method: 'z', nested: { p: 'b' } } : { method: "z"; nested: { p: "b"; }; } >method : "z" >'z' : "z" @@ -61,7 +61,7 @@ test({ method: 'z', nested: { p: 'b' } }) test({ method: 'one', nested: { p: 'a' } }) >test({ method: 'one', nested: { p: 'a' } }) : void ->test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void +>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void >{ method: 'one', nested: { p: 'a' } } : { method: "one"; nested: { p: "a"; }; } >method : "one" >'one' : "one" diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.types.diff index 9bed5a3ffb8..65216bcff25 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.types.diff +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration8.types.diff @@ -5,22 +5,31 @@ // both inside and outside `test`. function test({ ->test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void -+>test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void ++>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void method = 'z', >method : "x" | "y" -@@= skipped -30, +30 lines =@@ +@@= skipped -16, +16 lines =@@ + >method : "x" | "y" | undefined + + nested?: { p: 'a' | 'b' } +->nested : { p: "a" | "b"; } | undefined ++>nested : { p: 'a' | 'b'; } | undefined + >p : "a" | "b" + + }) +@@= skipped -14, +14 lines =@@ test({}); >test({}) : void ->test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void -+>test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void ++>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void >{} : {} test({ method: 'x', nested: { p: 'a' } }) >test({ method: 'x', nested: { p: 'a' } }) : void ->test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void -+>test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void ++>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void >{ method: 'x', nested: { p: 'a' } } : { method: "x"; nested: { p: "a"; }; } >method : "x" >'x' : "x" @@ -29,7 +38,7 @@ test({ method: 'z', nested: { p: 'b' } }) >test({ method: 'z', nested: { p: 'b' } }) : void ->test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void -+>test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void ++>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void >{ method: 'z', nested: { p: 'b' } } : { method: "z"; nested: { p: "b"; }; } >method : "z" >'z' : "z" @@ -38,7 +47,7 @@ test({ method: 'one', nested: { p: 'a' } }) >test({ method: 'one', nested: { p: 'a' } }) : void ->test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void -+>test : ({ method, nested: { p } }: { method?: "x" | "y" | undefined; nested?: { p: "a" | "b"; } | undefined; }) => void ++>test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void >{ method: 'one', nested: { p: 'a' } } : { method: "one"; nested: { p: "a"; }; } >method : "one" >'one' : "one" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=false).types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=false).types index 0815c2fcd8a..a4567f7b24b 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=false).types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=false).types @@ -6,7 +6,7 @@ * @param {Partial>} [config.additionalFiles] */ export function prepareConfig({ ->prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void +>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { >additionalFiles : any @@ -49,8 +49,8 @@ export function prepareConfigWithoutAnnotation({ additionalFiles?: Partial>; }) => void} */ export const prepareConfigWithContextualSignature = ({ ->prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void ->({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void +>prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void +>({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { >additionalFiles : any diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=false).types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=false).types.diff index b7dca7fe81b..65e91149244 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=false).types.diff +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=false).types.diff @@ -5,18 +5,7 @@ */ export function prepareConfig({ ->prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>;}) => void -+>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void - - additionalFiles: { - >additionalFiles : any -@@= skipped -43, +43 lines =@@ - additionalFiles?: Partial>; - }) => void} */ - export const prepareConfigWithContextualSignature = ({ -->prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void -->({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void -+>prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void -+>({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void ++>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { >additionalFiles : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=true).types b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=true).types index bc46e800480..c5658b4eb4d 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=true).types +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=true).types @@ -6,7 +6,7 @@ * @param {Partial>} [config.additionalFiles] */ export function prepareConfig({ ->prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void +>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { >additionalFiles : any @@ -49,8 +49,8 @@ export function prepareConfigWithoutAnnotation({ additionalFiles?: Partial>; }) => void} */ export const prepareConfigWithContextualSignature = ({ ->prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial> | undefined; }) => void ->({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void +>prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void +>({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { >additionalFiles : any @@ -75,7 +75,7 @@ export const prepareConfigWithContextualSignature = ({ * @param {{ a?: { json?: string[] }}} [config] */ function f1({ a: { json = [] } = {} } = {}) { return json } ->f1 : ({ a: { json } }?: { a?: { json?: string[] | undefined; } | undefined; }) => string[] +>f1 : ({ a: { json } }?: { a?: { json?: string[]; }; }) => string[] >a : any >json : string[] >[] : never[] @@ -87,7 +87,7 @@ function f1({ a: { json = [] } = {} } = {}) { return json } * @param {[[string[]?]?]} [x] */ function f2([[json = []] = []] = []) { return json } ->f2 : ([[json]]?: [([(string[] | undefined)?] | undefined)?]) => string[] +>f2 : ([[json]]?: [[string[]?]?]) => string[] >json : string[] >[] : never[] >[] : [] diff --git a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=true).types.diff b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=true).types.diff index 0e5282cd84a..779f07a8f4d 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=true).types.diff +++ b/testdata/baselines/reference/submodule/conformance/destructuringParameterDeclaration9(strict=true).types.diff @@ -5,36 +5,7 @@ */ export function prepareConfig({ ->prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined;}) => void -+>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void ++>prepareConfig : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void additionalFiles: { - >additionalFiles : any -@@= skipped -43, +43 lines =@@ - additionalFiles?: Partial>; - }) => void} */ - export const prepareConfigWithContextualSignature = ({ -->prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void -->({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void -+>prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial> | undefined; }) => void -+>({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void - - additionalFiles: { - >additionalFiles : any -@@= skipped -26, +26 lines =@@ - * @param {{ a?: { json?: string[] }}} [config] - */ - function f1({ a: { json = [] } = {} } = {}) { return json } -->f1 : ({ a: { json } }?: { a?: { json?: string[]; }; }) => string[] -+>f1 : ({ a: { json } }?: { a?: { json?: string[] | undefined; } | undefined; }) => string[] - >a : any - >json : string[] - >[] : never[] -@@= skipped -12, +12 lines =@@ - * @param {[[string[]?]?]} [x] - */ - function f2([[json = []] = []] = []) { return json } -->f2 : ([[json]]?: [[string[]?]?]) => string[] -+>f2 : ([[json]]?: [([(string[] | undefined)?] | undefined)?]) => string[] - >json : string[] - >[] : never[] - >[] : [] \ No newline at end of file + >additionalFiles : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes2.types b/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes2.types index 74a13972eed..8c56cc579e1 100644 --- a/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes2.types +++ b/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes2.types @@ -318,7 +318,7 @@ type abc = a | b | c; >abc : abc function f(problem: abc & (b | c)) { ->f : (problem: b | c) => void +>f : (problem: abc & (b | c)) => void >problem : b | c if (problem.type === 'b') { @@ -357,52 +357,52 @@ type RuntimeValue = >value : boolean function foo1(x: RuntimeValue & { type: 'number' }) { ->foo1 : (x: { type: "number"; value: number; } & { type: "number"; }) => void ->x : { type: "number"; value: number; } & { type: "number"; } +>foo1 : (x: RuntimeValue & { type: 'number'; }) => void +>x : { type: 'number'; value: number; } & { type: 'number'; } >type : "number" if (x.type === 'number') { >x.type === 'number' : boolean >x.type : "number" ->x : { type: "number"; value: number; } & { type: "number"; } +>x : { type: 'number'; value: number; } & { type: 'number'; } >type : "number" >'number' : "number" x.value; // number >x.value : number ->x : { type: "number"; value: number; } & { type: "number"; } +>x : { type: 'number'; value: number; } & { type: 'number'; } >value : number } else { x.value; // number >x.value : number ->x : { type: "number"; value: number; } & { type: "number"; } +>x : { type: 'number'; value: number; } & { type: 'number'; } >value : number } } function foo2(x: RuntimeValue & ({ type: 'number' } | { type: 'string' })) { ->foo2 : (x: ({ type: "number"; value: number; } & { type: "number"; }) | ({ type: "string"; value: string; } & { type: "string"; })) => void ->x : ({ type: "number"; value: number; } & { type: "number"; }) | ({ type: "string"; value: string; } & { type: "string"; }) +>foo2 : (x: RuntimeValue & ({ type: 'number'; } | { type: 'string'; })) => void +>x : ({ type: 'number'; value: number; } & { type: 'number'; }) | ({ type: 'string'; value: string; } & { type: 'string'; }) >type : "number" >type : "string" if (x.type === 'number') { >x.type === 'number' : boolean >x.type : "number" | "string" ->x : ({ type: "number"; value: number; } & { type: "number"; }) | ({ type: "string"; value: string; } & { type: "string"; }) +>x : ({ type: 'number'; value: number; } & { type: 'number'; }) | ({ type: 'string'; value: string; } & { type: 'string'; }) >type : "number" | "string" >'number' : "number" x.value; // number >x.value : number ->x : { type: "number"; value: number; } & { type: "number"; } +>x : { type: 'number'; value: number; } & { type: 'number'; } >value : number } else { x.value; // string >x.value : string ->x : { type: "string"; value: string; } & { type: "string"; } +>x : { type: 'string'; value: string; } & { type: 'string'; } >value : string } } diff --git a/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes2.types.diff b/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes2.types.diff index dbb863f62a3..5113a82d072 100644 --- a/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes2.types.diff @@ -1,29 +1,65 @@ --- old.discriminatedUnionTypes2.types +++ new.discriminatedUnionTypes2.types -@@= skipped -317, +317 lines =@@ - >abc : abc - - function f(problem: abc & (b | c)) { -->f : (problem: abc & (b | c)) => void -+>f : (problem: b | c) => void - >problem : b | c - - if (problem.type === 'b') { -@@= skipped -39, +39 lines =@@ +@@= skipped -356, +356 lines =@@ >value : boolean function foo1(x: RuntimeValue & { type: 'number' }) { ->foo1 : (x: RuntimeValue & { type: "number"; }) => void -+>foo1 : (x: { type: "number"; value: number; } & { type: "number"; }) => void - >x : { type: "number"; value: number; } & { type: "number"; } +->x : { type: "number"; value: number; } & { type: "number"; } ++>foo1 : (x: RuntimeValue & { type: 'number'; }) => void ++>x : { type: 'number'; value: number; } & { type: 'number'; } + >type : "number" + + if (x.type === 'number') { + >x.type === 'number' : boolean + >x.type : "number" +->x : { type: "number"; value: number; } & { type: "number"; } ++>x : { type: 'number'; value: number; } & { type: 'number'; } >type : "number" + >'number' : "number" -@@= skipped -25, +25 lines =@@ + x.value; // number + >x.value : number +->x : { type: "number"; value: number; } & { type: "number"; } ++>x : { type: 'number'; value: number; } & { type: 'number'; } + >value : number + } + else { + x.value; // number + >x.value : number +->x : { type: "number"; value: number; } & { type: "number"; } ++>x : { type: 'number'; value: number; } & { type: 'number'; } + >value : number + } } function foo2(x: RuntimeValue & ({ type: 'number' } | { type: 'string' })) { ->foo2 : (x: RuntimeValue & ({ type: "number"; } | { type: "string"; })) => void -+>foo2 : (x: ({ type: "number"; value: number; } & { type: "number"; }) | ({ type: "string"; value: string; } & { type: "string"; })) => void - >x : ({ type: "number"; value: number; } & { type: "number"; }) | ({ type: "string"; value: string; } & { type: "string"; }) +->x : ({ type: "number"; value: number; } & { type: "number"; }) | ({ type: "string"; value: string; } & { type: "string"; }) ++>foo2 : (x: RuntimeValue & ({ type: 'number'; } | { type: 'string'; })) => void ++>x : ({ type: 'number'; value: number; } & { type: 'number'; }) | ({ type: 'string'; value: string; } & { type: 'string'; }) >type : "number" - >type : "string" \ No newline at end of file + >type : "string" + + if (x.type === 'number') { + >x.type === 'number' : boolean + >x.type : "number" | "string" +->x : ({ type: "number"; value: number; } & { type: "number"; }) | ({ type: "string"; value: string; } & { type: "string"; }) ++>x : ({ type: 'number'; value: number; } & { type: 'number'; }) | ({ type: 'string'; value: string; } & { type: 'string'; }) + >type : "number" | "string" + >'number' : "number" + + x.value; // number + >x.value : number +->x : { type: "number"; value: number; } & { type: "number"; } ++>x : { type: 'number'; value: number; } & { type: 'number'; } + >value : number + } + else { + x.value; // string + >x.value : string +->x : { type: "string"; value: string; } & { type: "string"; } ++>x : { type: 'string'; value: string; } & { type: 'string'; } + >value : string + } + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes4.types b/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes4.types index fe74a149506..0d988424730 100644 --- a/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes4.types +++ b/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes4.types @@ -65,13 +65,13 @@ function action1(animal: Animal) { >console : Console >log : (...data: any[]) => void >animal.meow : string ->animal : { type: "cat"; meow: string; } +>animal : { type: `${AnimalType.cat}`; meow: string; } >meow : string } else if (animal.type === AnimalType.dog) { >animal.type === AnimalType.dog : boolean >animal.type : "dog" ->animal : { type: "dog"; bark: string; } +>animal : { type: `${AnimalType.dog}`; bark: string; } >type : "dog" >AnimalType.dog : AnimalType.dog >AnimalType : typeof AnimalType @@ -83,7 +83,7 @@ function action1(animal: Animal) { >console : Console >log : (...data: any[]) => void >animal.bark : string ->animal : { type: "dog"; bark: string; } +>animal : { type: `${AnimalType.dog}`; bark: string; } >bark : string } else { @@ -115,7 +115,7 @@ function action2(animal: Animal) { >console : Console >log : (...data: any[]) => void >animal.meow : string ->animal : { type: "cat"; meow: string; } +>animal : { type: `${AnimalType.cat}`; meow: string; } >meow : string break; @@ -131,7 +131,7 @@ function action2(animal: Animal) { >console : Console >log : (...data: any[]) => void >animal.bark : string ->animal : { type: "dog"; bark: string; } +>animal : { type: `${AnimalType.dog}`; bark: string; } >bark : string break; @@ -163,7 +163,7 @@ function action3(animal: Animal) { >console : Console >log : (...data: any[]) => void >animal.meow : string ->animal : { type: "cat"; meow: string; } +>animal : { type: `${AnimalType.cat}`; meow: string; } >meow : string break; @@ -178,7 +178,7 @@ function action3(animal: Animal) { >console : Console >log : (...data: any[]) => void >animal.bark : string ->animal : { type: "dog"; bark: string; } +>animal : { type: `${AnimalType.dog}`; bark: string; } >bark : string break; diff --git a/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes4.types.diff b/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes4.types.diff deleted file mode 100644 index 0e08c89373b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/discriminatedUnionTypes4.types.diff +++ /dev/null @@ -1,63 +0,0 @@ ---- old.discriminatedUnionTypes4.types -+++ new.discriminatedUnionTypes4.types -@@= skipped -64, +64 lines =@@ - >console : Console - >log : (...data: any[]) => void - >animal.meow : string -->animal : { type: `${AnimalType.cat}`; meow: string; } -+>animal : { type: "cat"; meow: string; } - >meow : string - - } else if (animal.type === AnimalType.dog) { - >animal.type === AnimalType.dog : boolean - >animal.type : "dog" -->animal : { type: `${AnimalType.dog}`; bark: string; } -+>animal : { type: "dog"; bark: string; } - >type : "dog" - >AnimalType.dog : AnimalType.dog - >AnimalType : typeof AnimalType -@@= skipped -18, +18 lines =@@ - >console : Console - >log : (...data: any[]) => void - >animal.bark : string -->animal : { type: `${AnimalType.dog}`; bark: string; } -+>animal : { type: "dog"; bark: string; } - >bark : string - - } else { -@@= skipped -32, +32 lines =@@ - >console : Console - >log : (...data: any[]) => void - >animal.meow : string -->animal : { type: `${AnimalType.cat}`; meow: string; } -+>animal : { type: "cat"; meow: string; } - >meow : string - - break; -@@= skipped -16, +16 lines =@@ - >console : Console - >log : (...data: any[]) => void - >animal.bark : string -->animal : { type: `${AnimalType.dog}`; bark: string; } -+>animal : { type: "dog"; bark: string; } - >bark : string - - break; -@@= skipped -32, +32 lines =@@ - >console : Console - >log : (...data: any[]) => void - >animal.meow : string -->animal : { type: `${AnimalType.cat}`; meow: string; } -+>animal : { type: "cat"; meow: string; } - >meow : string - - break; -@@= skipped -15, +15 lines =@@ - >console : Console - >log : (...data: any[]) => void - >animal.bark : string -->animal : { type: `${AnimalType.dog}`; bark: string; } -+>animal : { type: "dog"; bark: string; } - >bark : string - - break; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions01.js b/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions01.js index 64266476b19..e5a2e9acc0e 100644 --- a/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions01.js +++ b/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions01.js @@ -11,4 +11,5 @@ let x = {}; //// [duplicatePropertiesInTypeAssertions01.d.ts] declare let x: { a: number; + a: number; }; diff --git a/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions01.js.diff b/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions01.js.diff deleted file mode 100644 index 58f200b6401..00000000000 --- a/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions01.js.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.duplicatePropertiesInTypeAssertions01.js -+++ new.duplicatePropertiesInTypeAssertions01.js -@@= skipped -10, +10 lines =@@ - //// [duplicatePropertiesInTypeAssertions01.d.ts] - declare let x: { - a: number; -- a: number; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions02.js b/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions02.js index 7ef7e9cb2e0..6d82cdd5dea 100644 --- a/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions02.js +++ b/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions02.js @@ -11,4 +11,5 @@ let x = {}; //// [duplicatePropertiesInTypeAssertions02.d.ts] declare let x: { a: number; + a: number; }; diff --git a/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions02.js.diff b/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions02.js.diff deleted file mode 100644 index 2a5fe4a6a64..00000000000 --- a/testdata/baselines/reference/submodule/conformance/duplicatePropertiesInTypeAssertions02.js.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.duplicatePropertiesInTypeAssertions02.js -+++ new.duplicatePropertiesInTypeAssertions02.js -@@= skipped -10, +10 lines =@@ - //// [duplicatePropertiesInTypeAssertions02.d.ts] - declare let x: { - a: number; -- a: number; - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/elementAccessChain.2.types b/testdata/baselines/reference/submodule/conformance/elementAccessChain.2.types index 7185d6f664a..867a4fe3a13 100644 --- a/testdata/baselines/reference/submodule/conformance/elementAccessChain.2.types +++ b/testdata/baselines/reference/submodule/conformance/elementAccessChain.2.types @@ -30,21 +30,21 @@ o2?.b["c"]; >"c" : "c" declare const o3: { b: undefined | { c: string } }; ->o3 : { b: { c: string; }; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } >c : string o3["b"]?.c; >o3["b"]?.c : string >o3["b"] : { c: string; } ->o3 : { b: { c: string; }; } +>o3 : { b: undefined | { c: string; }; } >"b" : "b" >c : string o3.b?.["c"]; >o3.b?.["c"] : string >o3.b : { c: string; } ->o3 : { b: { c: string; }; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } >"c" : "c" diff --git a/testdata/baselines/reference/submodule/conformance/elementAccessChain.2.types.diff b/testdata/baselines/reference/submodule/conformance/elementAccessChain.2.types.diff deleted file mode 100644 index ca27927850e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/elementAccessChain.2.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.elementAccessChain.2.types -+++ new.elementAccessChain.2.types -@@= skipped -29, +29 lines =@@ - >"c" : "c" - - declare const o3: { b: undefined | { c: string } }; -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; }; } - >b : { c: string; } - >c : string - - o3["b"]?.c; - >o3["b"]?.c : string - >o3["b"] : { c: string; } -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; }; } - >"b" : "b" - >c : string - - o3.b?.["c"]; - >o3.b?.["c"] : string - >o3.b : { c: string; } -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; }; } - >b : { c: string; } - >"c" : "c" diff --git a/testdata/baselines/reference/submodule/conformance/elementAccessChain.types b/testdata/baselines/reference/submodule/conformance/elementAccessChain.types index ecded956d92..54619ae42e6 100644 --- a/testdata/baselines/reference/submodule/conformance/elementAccessChain.types +++ b/testdata/baselines/reference/submodule/conformance/elementAccessChain.types @@ -30,38 +30,38 @@ o2?.b["c"]; >"c" : "c" declare const o3: { b: undefined | { c: string } }; ->o3 : { b: { c: string; } | undefined; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } | undefined >c : string o3["b"]?.c; >o3["b"]?.c : string | undefined >o3["b"] : { c: string; } | undefined ->o3 : { b: { c: string; } | undefined; } +>o3 : { b: undefined | { c: string; }; } >"b" : "b" >c : string | undefined o3.b?.["c"]; >o3.b?.["c"] : string | undefined >o3.b : { c: string; } | undefined ->o3 : { b: { c: string; } | undefined; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } | undefined >"c" : "c" declare const o4: { b?: { c: { d?: { e: string } } } }; ->o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined ->c : { d?: { e: string; } | undefined; } +>o4 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined +>c : { d?: { e: string; }; } >d : { e: string; } | undefined >e : string o4.b?.["c"].d?.e; >o4.b?.["c"].d?.e : string | undefined >o4.b?.["c"].d : { e: string; } | undefined ->o4.b?.["c"] : { d?: { e: string; } | undefined; } | undefined ->o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined ->o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined +>o4.b?.["c"] : { d?: { e: string; }; } | undefined +>o4.b : { c: { d?: { e: string; }; }; } | undefined +>o4 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined >"c" : "c" >d : { e: string; } | undefined >e : string | undefined @@ -69,29 +69,29 @@ o4.b?.["c"].d?.e; o4.b?.["c"].d?.["e"]; >o4.b?.["c"].d?.["e"] : string | undefined >o4.b?.["c"].d : { e: string; } | undefined ->o4.b?.["c"] : { d?: { e: string; } | undefined; } | undefined ->o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined ->o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined +>o4.b?.["c"] : { d?: { e: string; }; } | undefined +>o4.b : { c: { d?: { e: string; }; }; } | undefined +>o4 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined >"c" : "c" >d : { e: string; } | undefined >"e" : "e" declare const o5: { b?(): { c: { d?: { e: string } } } }; ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } ->b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->c : { d?: { e: string; } | undefined; } +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } +>b : (() => { c: { d?: { e: string; }; }; }) | undefined +>c : { d?: { e: string; }; } >d : { e: string; } | undefined >e : string o5.b?.()["c"].d?.e; >o5.b?.()["c"].d?.e : string | undefined >o5.b?.()["c"].d : { e: string; } | undefined ->o5.b?.()["c"] : { d?: { e: string; } | undefined; } | undefined ->o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined ->o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } ->b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined +>o5.b?.()["c"] : { d?: { e: string; }; } | undefined +>o5.b?.() : { c: { d?: { e: string; }; }; } | undefined +>o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } +>b : (() => { c: { d?: { e: string; }; }; }) | undefined >"c" : "c" >d : { e: string; } | undefined >e : string | undefined @@ -99,11 +99,11 @@ o5.b?.()["c"].d?.e; o5.b?.()["c"].d?.["e"]; >o5.b?.()["c"].d?.["e"] : string | undefined >o5.b?.()["c"].d : { e: string; } | undefined ->o5.b?.()["c"] : { d?: { e: string; } | undefined; } | undefined ->o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined ->o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } ->b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined +>o5.b?.()["c"] : { d?: { e: string; }; } | undefined +>o5.b?.() : { c: { d?: { e: string; }; }; } | undefined +>o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } +>b : (() => { c: { d?: { e: string; }; }; }) | undefined >"c" : "c" >d : { e: string; } | undefined >"e" : "e" @@ -111,10 +111,10 @@ o5.b?.()["c"].d?.["e"]; o5["b"]?.()["c"].d?.e; >o5["b"]?.()["c"].d?.e : string | undefined >o5["b"]?.()["c"].d : { e: string; } | undefined ->o5["b"]?.()["c"] : { d?: { e: string; } | undefined; } | undefined ->o5["b"]?.() : { c: { d?: { e: string; } | undefined; }; } | undefined ->o5["b"] : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } +>o5["b"]?.()["c"] : { d?: { e: string; }; } | undefined +>o5["b"]?.() : { c: { d?: { e: string; }; }; } | undefined +>o5["b"] : (() => { c: { d?: { e: string; }; }; }) | undefined +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } >"b" : "b" >"c" : "c" >d : { e: string; } | undefined @@ -123,10 +123,10 @@ o5["b"]?.()["c"].d?.e; o5["b"]?.()["c"].d?.["e"]; >o5["b"]?.()["c"].d?.["e"] : string | undefined >o5["b"]?.()["c"].d : { e: string; } | undefined ->o5["b"]?.()["c"] : { d?: { e: string; } | undefined; } | undefined ->o5["b"]?.() : { c: { d?: { e: string; } | undefined; }; } | undefined ->o5["b"] : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } +>o5["b"]?.()["c"] : { d?: { e: string; }; } | undefined +>o5["b"]?.() : { c: { d?: { e: string; }; }; } | undefined +>o5["b"] : (() => { c: { d?: { e: string; }; }; }) | undefined +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } >"b" : "b" >"c" : "c" >d : { e: string; } | undefined @@ -134,13 +134,13 @@ o5["b"]?.()["c"].d?.["e"]; // GH#33744 declare const o6: () => undefined | ({ x: number }); ->o6 : () => { x: number; } | undefined +>o6 : () => undefined | ({ x: number; }) >x : number o6()?.["x"]; >o6()?.["x"] : number | undefined >o6() : { x: number; } | undefined ->o6 : () => { x: number; } | undefined +>o6 : () => undefined | ({ x: number; }) >"x" : "x" // GH#36031 diff --git a/testdata/baselines/reference/submodule/conformance/elementAccessChain.types.diff b/testdata/baselines/reference/submodule/conformance/elementAccessChain.types.diff deleted file mode 100644 index daba972b651..00000000000 --- a/testdata/baselines/reference/submodule/conformance/elementAccessChain.types.diff +++ /dev/null @@ -1,156 +0,0 @@ ---- old.elementAccessChain.types -+++ new.elementAccessChain.types -@@= skipped -29, +29 lines =@@ - >"c" : "c" - - declare const o3: { b: undefined | { c: string } }; -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; } | undefined; } - >b : { c: string; } | undefined - >c : string - - o3["b"]?.c; - >o3["b"]?.c : string | undefined - >o3["b"] : { c: string; } | undefined -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; } | undefined; } - >"b" : "b" - >c : string | undefined - - o3.b?.["c"]; - >o3.b?.["c"] : string | undefined - >o3.b : { c: string; } | undefined -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; } | undefined; } - >b : { c: string; } | undefined - >"c" : "c" - - declare const o4: { b?: { c: { d?: { e: string } } } }; -->o4 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -->c : { d?: { e: string; }; } -+>o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>c : { d?: { e: string; } | undefined; } - >d : { e: string; } | undefined - >e : string - - o4.b?.["c"].d?.e; - >o4.b?.["c"].d?.e : string | undefined - >o4.b?.["c"].d : { e: string; } | undefined -->o4.b?.["c"] : { d?: { e: string; }; } | undefined -->o4.b : { c: { d?: { e: string; }; }; } | undefined -->o4 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -+>o4.b?.["c"] : { d?: { e: string; } | undefined; } | undefined -+>o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined - >"c" : "c" - >d : { e: string; } | undefined - >e : string | undefined -@@= skipped -39, +39 lines =@@ - o4.b?.["c"].d?.["e"]; - >o4.b?.["c"].d?.["e"] : string | undefined - >o4.b?.["c"].d : { e: string; } | undefined -->o4.b?.["c"] : { d?: { e: string; }; } | undefined -->o4.b : { c: { d?: { e: string; }; }; } | undefined -->o4 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -+>o4.b?.["c"] : { d?: { e: string; } | undefined; } | undefined -+>o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined - >"c" : "c" - >d : { e: string; } | undefined - >"e" : "e" - - declare const o5: { b?(): { c: { d?: { e: string } } } }; -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -->b : (() => { c: { d?: { e: string; }; }; }) | undefined -->c : { d?: { e: string; }; } -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } -+>b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>c : { d?: { e: string; } | undefined; } - >d : { e: string; } | undefined - >e : string - - o5.b?.()["c"].d?.e; - >o5.b?.()["c"].d?.e : string | undefined - >o5.b?.()["c"].d : { e: string; } | undefined -->o5.b?.()["c"] : { d?: { e: string; }; } | undefined -->o5.b?.() : { c: { d?: { e: string; }; }; } | undefined -->o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -->b : (() => { c: { d?: { e: string; }; }; }) | undefined -+>o5.b?.()["c"] : { d?: { e: string; } | undefined; } | undefined -+>o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } -+>b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined - >"c" : "c" - >d : { e: string; } | undefined - >e : string | undefined -@@= skipped -30, +30 lines =@@ - o5.b?.()["c"].d?.["e"]; - >o5.b?.()["c"].d?.["e"] : string | undefined - >o5.b?.()["c"].d : { e: string; } | undefined -->o5.b?.()["c"] : { d?: { e: string; }; } | undefined -->o5.b?.() : { c: { d?: { e: string; }; }; } | undefined -->o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -->b : (() => { c: { d?: { e: string; }; }; }) | undefined -+>o5.b?.()["c"] : { d?: { e: string; } | undefined; } | undefined -+>o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } -+>b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined - >"c" : "c" - >d : { e: string; } | undefined - >"e" : "e" -@@= skipped -12, +12 lines =@@ - o5["b"]?.()["c"].d?.e; - >o5["b"]?.()["c"].d?.e : string | undefined - >o5["b"]?.()["c"].d : { e: string; } | undefined -->o5["b"]?.()["c"] : { d?: { e: string; }; } | undefined -->o5["b"]?.() : { c: { d?: { e: string; }; }; } | undefined -->o5["b"] : (() => { c: { d?: { e: string; }; }; }) | undefined -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -+>o5["b"]?.()["c"] : { d?: { e: string; } | undefined; } | undefined -+>o5["b"]?.() : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o5["b"] : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } - >"b" : "b" - >"c" : "c" - >d : { e: string; } | undefined -@@= skipped -12, +12 lines =@@ - o5["b"]?.()["c"].d?.["e"]; - >o5["b"]?.()["c"].d?.["e"] : string | undefined - >o5["b"]?.()["c"].d : { e: string; } | undefined -->o5["b"]?.()["c"] : { d?: { e: string; }; } | undefined -->o5["b"]?.() : { c: { d?: { e: string; }; }; } | undefined -->o5["b"] : (() => { c: { d?: { e: string; }; }; }) | undefined -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -+>o5["b"]?.()["c"] : { d?: { e: string; } | undefined; } | undefined -+>o5["b"]?.() : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o5["b"] : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } - >"b" : "b" - >"c" : "c" - >d : { e: string; } | undefined -@@= skipped -11, +11 lines =@@ - - // GH#33744 - declare const o6: () => undefined | ({ x: number }); -->o6 : () => undefined | ({ x: number; }) -+>o6 : () => { x: number; } | undefined - >x : number - - o6()?.["x"]; - >o6()?.["x"] : number | undefined - >o6() : { x: number; } | undefined -->o6 : () => undefined | ({ x: number; }) -+>o6 : () => { x: number; } | undefined - >"x" : "x" - - // GH#36031 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionProperty(target=es2015).types b/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionProperty(target=es2015).types index b0a048771c9..14396eab0a2 100644 --- a/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionProperty(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionProperty(target=es2015).types @@ -2,7 +2,7 @@ === emitRestParametersFunctionProperty.ts === var obj: { ->obj : { func1: (...rest: any[]) => void; } +>obj : { func1: (...rest: any) => void; } func1: (...rest) => void >func1 : (...rest: any[]) => void diff --git a/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionProperty(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionProperty(target=es2015).types.diff deleted file mode 100644 index 6fe866417eb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionProperty(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.emitRestParametersFunctionProperty(target=es2015).types -+++ new.emitRestParametersFunctionProperty(target=es2015).types -@@= skipped -1, +1 lines =@@ - - === emitRestParametersFunctionProperty.ts === - var obj: { -->obj : { func1: (...rest: any) => void; } -+>obj : { func1: (...rest: any[]) => void; } - - func1: (...rest) => void - >func1 : (...rest: any[]) => void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionPropertyES6.types b/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionPropertyES6.types index 16d508a5043..d2ddf645da0 100644 --- a/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionPropertyES6.types +++ b/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionPropertyES6.types @@ -2,7 +2,7 @@ === emitRestParametersFunctionPropertyES6.ts === var obj: { ->obj : { func1: (...rest: any[]) => void; } +>obj : { func1: (...rest: any) => void; } func1: (...rest) => void >func1 : (...rest: any[]) => void diff --git a/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionPropertyES6.types.diff b/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionPropertyES6.types.diff deleted file mode 100644 index be8672aa511..00000000000 --- a/testdata/baselines/reference/submodule/conformance/emitRestParametersFunctionPropertyES6.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.emitRestParametersFunctionPropertyES6.types -+++ new.emitRestParametersFunctionPropertyES6.types -@@= skipped -1, +1 lines =@@ - - === emitRestParametersFunctionPropertyES6.ts === - var obj: { -->obj : { func1: (...rest: any) => void; } -+>obj : { func1: (...rest: any[]) => void; } - - func1: (...rest) => void - >func1 : (...rest: any[]) => void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/enumLiteralTypes3.types b/testdata/baselines/reference/submodule/conformance/enumLiteralTypes3.types index 176405611a7..f30b706f98e 100644 --- a/testdata/baselines/reference/submodule/conformance/enumLiteralTypes3.types +++ b/testdata/baselines/reference/submodule/conformance/enumLiteralTypes3.types @@ -28,7 +28,7 @@ type UnknownYesNo = Choice.Unknown | Choice.Yes | Choice.No; >Choice : any function f1(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f1 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f1 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -56,7 +56,7 @@ function f1(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f2(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f2 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f2 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -84,7 +84,7 @@ function f2(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f3(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f3 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f3 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -112,7 +112,7 @@ function f3(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f4(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f4 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f4 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -140,7 +140,7 @@ function f4(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f5(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f5 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f5 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -232,7 +232,7 @@ function f5(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f6(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f6 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f6 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -324,7 +324,7 @@ function f6(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f7(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f7 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f7 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -412,7 +412,7 @@ function f7(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f10(x: Yes): Yes { ->f10 : (x: Choice.Yes) => Choice.Yes +>f10 : (x: Yes) => Yes >x : Choice.Yes switch (x) { diff --git a/testdata/baselines/reference/submodule/conformance/enumLiteralTypes3.types.diff b/testdata/baselines/reference/submodule/conformance/enumLiteralTypes3.types.diff deleted file mode 100644 index 37249f463a6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/enumLiteralTypes3.types.diff +++ /dev/null @@ -1,74 +0,0 @@ ---- old.enumLiteralTypes3.types -+++ new.enumLiteralTypes3.types -@@= skipped -27, +27 lines =@@ - >Choice : any - - function f1(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f1 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f1 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -28, +28 lines =@@ - } - - function f2(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f2 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f2 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -28, +28 lines =@@ - } - - function f3(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f3 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f3 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -28, +28 lines =@@ - } - - function f4(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f4 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f4 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -28, +28 lines =@@ - } - - function f5(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f5 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f5 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -92, +92 lines =@@ - } - - function f6(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f6 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f6 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -92, +92 lines =@@ - } - - function f7(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f7 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f7 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -88, +88 lines =@@ - } - - function f10(x: Yes): Yes { -->f10 : (x: Yes) => Yes -+>f10 : (x: Choice.Yes) => Choice.Yes - >x : Choice.Yes - - switch (x) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/equalityStrictNulls.types b/testdata/baselines/reference/submodule/conformance/equalityStrictNulls.types index 471bc398953..a36ad9ba21b 100644 --- a/testdata/baselines/reference/submodule/conformance/equalityStrictNulls.types +++ b/testdata/baselines/reference/submodule/conformance/equalityStrictNulls.types @@ -101,7 +101,7 @@ function f2() { } function f3(a: number, b: boolean, c: { x: number }, d: number | string) { ->f3 : (a: number, b: boolean, c: { x: number; }, d: string | number) => void +>f3 : (a: number, b: boolean, c: { x: number; }, d: number | string) => void >a : number >b : boolean >c : { x: number; } diff --git a/testdata/baselines/reference/submodule/conformance/equalityStrictNulls.types.diff b/testdata/baselines/reference/submodule/conformance/equalityStrictNulls.types.diff deleted file mode 100644 index d4ec428d3bb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/equalityStrictNulls.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.equalityStrictNulls.types -+++ new.equalityStrictNulls.types -@@= skipped -100, +100 lines =@@ - } - - function f3(a: number, b: boolean, c: { x: number }, d: number | string) { -->f3 : (a: number, b: boolean, c: { x: number; }, d: number | string) => void -+>f3 : (a: number, b: boolean, c: { x: number; }, d: string | number) => void - >a : number - >b : boolean - >c : { x: number; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/equalityWithtNullishCoalescingAssignment(strict=true).types b/testdata/baselines/reference/submodule/conformance/equalityWithtNullishCoalescingAssignment(strict=true).types index f7737fe484d..8bc63003800 100644 --- a/testdata/baselines/reference/submodule/conformance/equalityWithtNullishCoalescingAssignment(strict=true).types +++ b/testdata/baselines/reference/submodule/conformance/equalityWithtNullishCoalescingAssignment(strict=true).types @@ -2,7 +2,7 @@ === equalityWithtNullishCoalescingAssignment.ts === function f1(a?: boolean): void { ->f1 : (a?: boolean | undefined) => void +>f1 : (a?: boolean) => void >a : boolean | undefined a ??= true; @@ -25,7 +25,7 @@ function f1(a?: boolean): void { } f1(false); >f1(false) : void ->f1 : (a?: boolean | undefined) => void +>f1 : (a?: boolean) => void >false : false function f2() { diff --git a/testdata/baselines/reference/submodule/conformance/equalityWithtNullishCoalescingAssignment(strict=true).types.diff b/testdata/baselines/reference/submodule/conformance/equalityWithtNullishCoalescingAssignment(strict=true).types.diff deleted file mode 100644 index 8246d715064..00000000000 --- a/testdata/baselines/reference/submodule/conformance/equalityWithtNullishCoalescingAssignment(strict=true).types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.equalityWithtNullishCoalescingAssignment(strict=true).types -+++ new.equalityWithtNullishCoalescingAssignment(strict=true).types -@@= skipped -1, +1 lines =@@ - - === equalityWithtNullishCoalescingAssignment.ts === - function f1(a?: boolean): void { -->f1 : (a?: boolean) => void -+>f1 : (a?: boolean | undefined) => void - >a : boolean | undefined - - a ??= true; -@@= skipped -23, +23 lines =@@ - } - f1(false); - >f1(false) : void -->f1 : (a?: boolean) => void -+>f1 : (a?: boolean | undefined) => void - >false : false - - function f2() { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/es2016IntlAPIs.types b/testdata/baselines/reference/submodule/conformance/es2016IntlAPIs.types index 273e3024cf9..86eacd7d0de 100644 --- a/testdata/baselines/reference/submodule/conformance/es2016IntlAPIs.types +++ b/testdata/baselines/reference/submodule/conformance/es2016IntlAPIs.types @@ -9,9 +9,9 @@ console.log(Intl.getCanonicalLocales('EN-US')); >console : Console >log : (...data: any[]) => void >Intl.getCanonicalLocales('EN-US') : string[] ->Intl.getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] +>Intl.getCanonicalLocales : (locale?: string | readonly string[]) => string[] >Intl : typeof Intl ->getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] +>getCanonicalLocales : (locale?: string | readonly string[]) => string[] >'EN-US' : "EN-US" // Expected output: Array ["en-US"] @@ -22,9 +22,9 @@ console.log(Intl.getCanonicalLocales(['EN-US', 'Fr'])); >console : Console >log : (...data: any[]) => void >Intl.getCanonicalLocales(['EN-US', 'Fr']) : string[] ->Intl.getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] +>Intl.getCanonicalLocales : (locale?: string | readonly string[]) => string[] >Intl : typeof Intl ->getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] +>getCanonicalLocales : (locale?: string | readonly string[]) => string[] >['EN-US', 'Fr'] : string[] >'EN-US' : "EN-US" >'Fr' : "Fr" @@ -34,9 +34,9 @@ console.log(Intl.getCanonicalLocales(['EN-US', 'Fr'])); try { Intl.getCanonicalLocales('EN_US'); >Intl.getCanonicalLocales('EN_US') : string[] ->Intl.getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] +>Intl.getCanonicalLocales : (locale?: string | readonly string[]) => string[] >Intl : typeof Intl ->getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] +>getCanonicalLocales : (locale?: string | readonly string[]) => string[] >'EN_US' : "EN_US" } catch (err) { diff --git a/testdata/baselines/reference/submodule/conformance/es2016IntlAPIs.types.diff b/testdata/baselines/reference/submodule/conformance/es2016IntlAPIs.types.diff deleted file mode 100644 index c6aa0b65727..00000000000 --- a/testdata/baselines/reference/submodule/conformance/es2016IntlAPIs.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.es2016IntlAPIs.types -+++ new.es2016IntlAPIs.types -@@= skipped -8, +8 lines =@@ - >console : Console - >log : (...data: any[]) => void - >Intl.getCanonicalLocales('EN-US') : string[] -->Intl.getCanonicalLocales : (locale?: string | readonly string[]) => string[] -+>Intl.getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] - >Intl : typeof Intl -->getCanonicalLocales : (locale?: string | readonly string[]) => string[] -+>getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] - >'EN-US' : "EN-US" - - // Expected output: Array ["en-US"] -@@= skipped -13, +13 lines =@@ - >console : Console - >log : (...data: any[]) => void - >Intl.getCanonicalLocales(['EN-US', 'Fr']) : string[] -->Intl.getCanonicalLocales : (locale?: string | readonly string[]) => string[] -+>Intl.getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] - >Intl : typeof Intl -->getCanonicalLocales : (locale?: string | readonly string[]) => string[] -+>getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] - >['EN-US', 'Fr'] : string[] - >'EN-US' : "EN-US" - >'Fr' : "Fr" -@@= skipped -12, +12 lines =@@ - try { - Intl.getCanonicalLocales('EN_US'); - >Intl.getCanonicalLocales('EN_US') : string[] -->Intl.getCanonicalLocales : (locale?: string | readonly string[]) => string[] -+>Intl.getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] - >Intl : typeof Intl -->getCanonicalLocales : (locale?: string | readonly string[]) => string[] -+>getCanonicalLocales : (locale?: string | readonly string[] | undefined) => string[] - >'EN_US' : "EN_US" - - } catch (err) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/es2017DateAPIs.types b/testdata/baselines/reference/submodule/conformance/es2017DateAPIs.types index b3d7215aaba..d363b3bf99a 100644 --- a/testdata/baselines/reference/submodule/conformance/es2017DateAPIs.types +++ b/testdata/baselines/reference/submodule/conformance/es2017DateAPIs.types @@ -3,8 +3,8 @@ === es2017DateAPIs.ts === Date.UTC(2017); >Date.UTC(2017) : number ->Date.UTC : { (year: number, monthIndex: number, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined): number; (year: number, monthIndex?: number | undefined, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined): number; } +>Date.UTC : { (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; (year: number, monthIndex?: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; } >Date : DateConstructor ->UTC : { (year: number, monthIndex: number, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined): number; (year: number, monthIndex?: number | undefined, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined): number; } +>UTC : { (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; (year: number, monthIndex?: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; } >2017 : 2017 diff --git a/testdata/baselines/reference/submodule/conformance/es2017DateAPIs.types.diff b/testdata/baselines/reference/submodule/conformance/es2017DateAPIs.types.diff deleted file mode 100644 index 9c74da124c9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/es2017DateAPIs.types.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.es2017DateAPIs.types -+++ new.es2017DateAPIs.types -@@= skipped -2, +2 lines =@@ - === es2017DateAPIs.ts === - Date.UTC(2017); - >Date.UTC(2017) : number -->Date.UTC : { (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; (year: number, monthIndex?: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; } -+>Date.UTC : { (year: number, monthIndex: number, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined): number; (year: number, monthIndex?: number | undefined, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined): number; } - >Date : DateConstructor -->UTC : { (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; (year: number, monthIndex?: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; } -+>UTC : { (year: number, monthIndex: number, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined): number; (year: number, monthIndex?: number | undefined, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined): number; } - >2017 : 2017 diff --git a/testdata/baselines/reference/submodule/conformance/es2018IntlAPIs.types b/testdata/baselines/reference/submodule/conformance/es2018IntlAPIs.types index 6d02639b2b8..b3bd6655afb 100644 --- a/testdata/baselines/reference/submodule/conformance/es2018IntlAPIs.types +++ b/testdata/baselines/reference/submodule/conformance/es2018IntlAPIs.types @@ -11,9 +11,9 @@ const locales = ['ban', 'id-u-co-pinyin', 'de-ID']; >'de-ID' : "de-ID" const options = { localeMatcher: 'lookup' } as const; ->options : { readonly localeMatcher: "lookup"; } ->{ localeMatcher: 'lookup' } as const : { readonly localeMatcher: "lookup"; } ->{ localeMatcher: 'lookup' } : { readonly localeMatcher: "lookup"; } +>options : { readonly localeMatcher: 'lookup'; } +>{ localeMatcher: 'lookup' } as const : { readonly localeMatcher: 'lookup'; } +>{ localeMatcher: 'lookup' } : { readonly localeMatcher: 'lookup'; } >localeMatcher : "lookup" >'lookup' : "lookup" @@ -23,27 +23,27 @@ console.log(Intl.PluralRules.supportedLocalesOf(locales, options).join(', ')); >console : Console >log : (...data: any[]) => void >Intl.PluralRules.supportedLocalesOf(locales, options).join(', ') : string ->Intl.PluralRules.supportedLocalesOf(locales, options).join : (separator?: string | undefined) => string +>Intl.PluralRules.supportedLocalesOf(locales, options).join : (separator?: string) => string >Intl.PluralRules.supportedLocalesOf(locales, options) : string[] ->Intl.PluralRules.supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined) => string[] +>Intl.PluralRules.supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }) => string[] >Intl.PluralRules : Intl.PluralRulesConstructor >Intl : typeof Intl >PluralRules : Intl.PluralRulesConstructor ->supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined) => string[] +>supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }) => string[] >locales : string[] ->options : { readonly localeMatcher: "lookup"; } ->join : (separator?: string | undefined) => string +>options : { readonly localeMatcher: 'lookup'; } +>join : (separator?: string) => string >', ' : ", " const [ part ] = new Intl.NumberFormat().formatToParts(); >part : Intl.NumberFormatPart >new Intl.NumberFormat().formatToParts() : Intl.NumberFormatPart[] ->new Intl.NumberFormat().formatToParts : (number?: number | bigint | undefined) => Intl.NumberFormatPart[] +>new Intl.NumberFormat().formatToParts : (number?: number | bigint) => Intl.NumberFormatPart[] >new Intl.NumberFormat() : Intl.NumberFormat >Intl.NumberFormat : Intl.NumberFormatConstructor >Intl : typeof Intl >NumberFormat : Intl.NumberFormatConstructor ->formatToParts : (number?: number | bigint | undefined) => Intl.NumberFormatPart[] +>formatToParts : (number?: number | bigint) => Intl.NumberFormatPart[] console.log(part.type, part.value); >console.log(part.type, part.value) : void diff --git a/testdata/baselines/reference/submodule/conformance/es2018IntlAPIs.types.diff b/testdata/baselines/reference/submodule/conformance/es2018IntlAPIs.types.diff index efa8047ea73..5f8d499678b 100644 --- a/testdata/baselines/reference/submodule/conformance/es2018IntlAPIs.types.diff +++ b/testdata/baselines/reference/submodule/conformance/es2018IntlAPIs.types.diff @@ -1,36 +1,23 @@ --- old.es2018IntlAPIs.types +++ new.es2018IntlAPIs.types -@@= skipped -22, +22 lines =@@ - >console : Console - >log : (...data: any[]) => void - >Intl.PluralRules.supportedLocalesOf(locales, options).join(', ') : string -->Intl.PluralRules.supportedLocalesOf(locales, options).join : (separator?: string) => string -+>Intl.PluralRules.supportedLocalesOf(locales, options).join : (separator?: string | undefined) => string - >Intl.PluralRules.supportedLocalesOf(locales, options) : string[] -->Intl.PluralRules.supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }) => string[] -+>Intl.PluralRules.supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined) => string[] - >Intl.PluralRules : Intl.PluralRulesConstructor - >Intl : typeof Intl +@@= skipped -10, +10 lines =@@ + >'de-ID' : "de-ID" + + const options = { localeMatcher: 'lookup' } as const; +->options : { readonly localeMatcher: "lookup"; } +->{ localeMatcher: 'lookup' } as const : { readonly localeMatcher: "lookup"; } +->{ localeMatcher: 'lookup' } : { readonly localeMatcher: "lookup"; } ++>options : { readonly localeMatcher: 'lookup'; } ++>{ localeMatcher: 'lookup' } as const : { readonly localeMatcher: 'lookup'; } ++>{ localeMatcher: 'lookup' } : { readonly localeMatcher: 'lookup'; } + >localeMatcher : "lookup" + >'lookup' : "lookup" + +@@= skipped -20, +20 lines =@@ >PluralRules : Intl.PluralRulesConstructor -->supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }) => string[] -+>supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined) => string[] + >supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }) => string[] >locales : string[] - >options : { readonly localeMatcher: "lookup"; } -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string +->options : { readonly localeMatcher: "lookup"; } ++>options : { readonly localeMatcher: 'lookup'; } + >join : (separator?: string) => string >', ' : ", " - - const [ part ] = new Intl.NumberFormat().formatToParts(); - >part : Intl.NumberFormatPart - >new Intl.NumberFormat().formatToParts() : Intl.NumberFormatPart[] -->new Intl.NumberFormat().formatToParts : (number?: number | bigint) => Intl.NumberFormatPart[] -+>new Intl.NumberFormat().formatToParts : (number?: number | bigint | undefined) => Intl.NumberFormatPart[] - >new Intl.NumberFormat() : Intl.NumberFormat - >Intl.NumberFormat : Intl.NumberFormatConstructor - >Intl : typeof Intl - >NumberFormat : Intl.NumberFormatConstructor -->formatToParts : (number?: number | bigint) => Intl.NumberFormatPart[] -+>formatToParts : (number?: number | bigint | undefined) => Intl.NumberFormatPart[] - - console.log(part.type, part.value); - >console.log(part.type, part.value) : void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/es2020IntlAPIs.types b/testdata/baselines/reference/submodule/conformance/es2020IntlAPIs.types index 7e478c26851..682d2f8fe26 100644 --- a/testdata/baselines/reference/submodule/conformance/es2020IntlAPIs.types +++ b/testdata/baselines/reference/submodule/conformance/es2020IntlAPIs.types @@ -25,13 +25,13 @@ function log(locale: string) { `${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat(locale).format(count)}` >`${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat(locale).format(count)}` : string >new Intl.DateTimeFormat(locale).format(date) : string ->new Intl.DateTimeFormat(locale).format : (date?: number | Date | undefined) => string +>new Intl.DateTimeFormat(locale).format : (date?: Date | number) => string >new Intl.DateTimeFormat(locale) : Intl.DateTimeFormat >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor >Intl : typeof Intl >DateTimeFormat : Intl.DateTimeFormatConstructor >locale : string ->format : (date?: number | Date | undefined) => string +>format : (date?: Date | number) => string >date : Date >new Intl.NumberFormat(locale).format(count) : string >new Intl.NumberFormat(locale).format : { (value: number): string; (value: number | bigint): string; } @@ -64,9 +64,9 @@ log("de-DE"); const rtf1 = new Intl.RelativeTimeFormat('en', { style: 'narrow' }); >rtf1 : Intl.RelativeTimeFormat >new Intl.RelativeTimeFormat('en', { style: 'narrow' }) : Intl.RelativeTimeFormat ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >'en' : "en" >{ style: 'narrow' } : { style: "narrow"; } >style : "narrow" @@ -104,9 +104,9 @@ console.log(rtf1.format(-1, 'day')); const rtf2 = new Intl.RelativeTimeFormat('es', { numeric: 'auto' }); >rtf2 : Intl.RelativeTimeFormat >new Intl.RelativeTimeFormat('es', { numeric: 'auto' }) : Intl.RelativeTimeFormat ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >'es' : "es" >{ numeric: 'auto' } : { numeric: "auto"; } >numeric : "auto" @@ -130,9 +130,9 @@ console.log(rtf2.format(2, 'day')); const regionNamesInEnglish = new Intl.DisplayNames(['en'], { type: 'region' }); >regionNamesInEnglish : Intl.DisplayNames >new Intl.DisplayNames(['en'], { type: 'region' }) : Intl.DisplayNames ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >['en'] : string[] >'en' : "en" >{ type: 'region' } : { type: "region"; } @@ -142,9 +142,9 @@ const regionNamesInEnglish = new Intl.DisplayNames(['en'], { type: 'region' }); const regionNamesInTraditionalChinese = new Intl.DisplayNames(['zh-Hant'], { type: 'region' }); >regionNamesInTraditionalChinese : Intl.DisplayNames >new Intl.DisplayNames(['zh-Hant'], { type: 'region' }) : Intl.DisplayNames ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >['zh-Hant'] : string[] >'zh-Hant' : "zh-Hant" >{ type: 'region' } : { type: "region"; } @@ -185,9 +185,9 @@ const locales1 = ['ban', 'id-u-co-pinyin', 'de-ID']; >'de-ID' : "de-ID" const options1 = { localeMatcher: 'lookup' } as const; ->options1 : { readonly localeMatcher: "lookup"; } ->{ localeMatcher: 'lookup' } as const : { readonly localeMatcher: "lookup"; } ->{ localeMatcher: 'lookup' } : { readonly localeMatcher: "lookup"; } +>options1 : { readonly localeMatcher: 'lookup'; } +>{ localeMatcher: 'lookup' } as const : { readonly localeMatcher: 'lookup'; } +>{ localeMatcher: 'lookup' } : { readonly localeMatcher: 'lookup'; } >localeMatcher : "lookup" >'lookup' : "lookup" @@ -197,53 +197,53 @@ console.log(Intl.DisplayNames.supportedLocalesOf(locales1, options1).join(', ')) >console : Console >log : (...data: any[]) => void >Intl.DisplayNames.supportedLocalesOf(locales1, options1).join(', ') : string ->Intl.DisplayNames.supportedLocalesOf(locales1, options1).join : (separator?: string | undefined) => string +>Intl.DisplayNames.supportedLocalesOf(locales1, options1).join : (separator?: string) => string >Intl.DisplayNames.supportedLocalesOf(locales1, options1) : string[] ->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] >locales1 : string[] ->options1 : { readonly localeMatcher: "lookup"; } ->join : (separator?: string | undefined) => string +>options1 : { readonly localeMatcher: 'lookup'; } +>join : (separator?: string) => string >', ' : ", " new Intl.Locale(); // should error >new Intl.Locale() : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale new Intl.Locale(new Intl.Locale('en-US')); >new Intl.Locale(new Intl.Locale('en-US')) : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >new Intl.Locale('en-US') : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >'en-US' : "en-US" new Intl.DisplayNames(); // TypeError: invalid_argument >new Intl.DisplayNames() : Intl.DisplayNames ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } new Intl.DisplayNames('en'); // TypeError: invalid_argument >new Intl.DisplayNames('en') : Intl.DisplayNames ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >'en' : "en" new Intl.DisplayNames('en', {}); // TypeError: invalid_argument >new Intl.DisplayNames('en', {}) : Intl.DisplayNames ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >'en' : "en" >{} : {} @@ -256,9 +256,9 @@ console.log((new Intl.DisplayNames(undefined, {type: 'language'})).of('en-GB')); >(new Intl.DisplayNames(undefined, {type: 'language'})).of : (code: string) => string | undefined >(new Intl.DisplayNames(undefined, {type: 'language'})) : Intl.DisplayNames >new Intl.DisplayNames(undefined, {type: 'language'}) : Intl.DisplayNames ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >undefined : undefined >{type: 'language'} : { type: "language"; } >type : "language" @@ -271,9 +271,9 @@ const localesArg = ["es-ES", new Intl.Locale("en-US")]; >["es-ES", new Intl.Locale("en-US")] : (string | Intl.Locale)[] >"es-ES" : "es-ES" >new Intl.Locale("en-US") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"en-US" : "en-US" console.log((new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOptions().locale); // "es-ES" @@ -286,9 +286,9 @@ console.log((new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOpti >(new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOptions : () => Intl.ResolvedDisplayNamesOptions >(new Intl.DisplayNames(localesArg, {type: 'language'})) : Intl.DisplayNames >new Intl.DisplayNames(localesArg, {type: 'language'}) : Intl.DisplayNames ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >localesArg : (string | Intl.Locale)[] >{type: 'language'} : { type: "language"; } >type : "language" @@ -302,11 +302,11 @@ console.log(Intl.DisplayNames.supportedLocalesOf(localesArg)); // ["es-ES", "en- >console : Console >log : (...data: any[]) => void >Intl.DisplayNames.supportedLocalesOf(localesArg) : string[] ->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] >localesArg : (string | Intl.Locale)[] console.log(Intl.DisplayNames.supportedLocalesOf()); // [] @@ -315,11 +315,11 @@ console.log(Intl.DisplayNames.supportedLocalesOf()); // [] >console : Console >log : (...data: any[]) => void >Intl.DisplayNames.supportedLocalesOf() : string[] ->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] console.log(Intl.DisplayNames.supportedLocalesOf(localesArg, {})); // ["es-ES", "en-US"] >console.log(Intl.DisplayNames.supportedLocalesOf(localesArg, {})) : void @@ -327,11 +327,11 @@ console.log(Intl.DisplayNames.supportedLocalesOf(localesArg, {})); // ["es-ES", >console : Console >log : (...data: any[]) => void >Intl.DisplayNames.supportedLocalesOf(localesArg, {}) : string[] ->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] +>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] >localesArg : (string | Intl.Locale)[] >{} : {} diff --git a/testdata/baselines/reference/submodule/conformance/es2020IntlAPIs.types.diff b/testdata/baselines/reference/submodule/conformance/es2020IntlAPIs.types.diff index 134fcc234cc..49703a0711e 100644 --- a/testdata/baselines/reference/submodule/conformance/es2020IntlAPIs.types.diff +++ b/testdata/baselines/reference/submodule/conformance/es2020IntlAPIs.types.diff @@ -1,221 +1,23 @@ --- old.es2020IntlAPIs.types +++ new.es2020IntlAPIs.types -@@= skipped -24, +24 lines =@@ - `${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat(locale).format(count)}` - >`${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat(locale).format(count)}` : string - >new Intl.DateTimeFormat(locale).format(date) : string -->new Intl.DateTimeFormat(locale).format : (date?: Date | number) => string -+>new Intl.DateTimeFormat(locale).format : (date?: number | Date | undefined) => string - >new Intl.DateTimeFormat(locale) : Intl.DateTimeFormat - >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor - >Intl : typeof Intl - >DateTimeFormat : Intl.DateTimeFormatConstructor - >locale : string -->format : (date?: Date | number) => string -+>format : (date?: number | Date | undefined) => string - >date : Date - >new Intl.NumberFormat(locale).format(count) : string - >new Intl.NumberFormat(locale).format : { (value: number): string; (value: number | bigint): string; } -@@= skipped -39, +39 lines =@@ - const rtf1 = new Intl.RelativeTimeFormat('en', { style: 'narrow' }); - >rtf1 : Intl.RelativeTimeFormat - >new Intl.RelativeTimeFormat('en', { style: 'narrow' }) : Intl.RelativeTimeFormat -->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >Intl : typeof Intl -->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >'en' : "en" - >{ style: 'narrow' } : { style: "narrow"; } - >style : "narrow" -@@= skipped -40, +40 lines =@@ - const rtf2 = new Intl.RelativeTimeFormat('es', { numeric: 'auto' }); - >rtf2 : Intl.RelativeTimeFormat - >new Intl.RelativeTimeFormat('es', { numeric: 'auto' }) : Intl.RelativeTimeFormat -->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >Intl : typeof Intl -->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >'es' : "es" - >{ numeric: 'auto' } : { numeric: "auto"; } - >numeric : "auto" -@@= skipped -26, +26 lines =@@ - const regionNamesInEnglish = new Intl.DisplayNames(['en'], { type: 'region' }); - >regionNamesInEnglish : Intl.DisplayNames - >new Intl.DisplayNames(['en'], { type: 'region' }) : Intl.DisplayNames -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >['en'] : string[] - >'en' : "en" - >{ type: 'region' } : { type: "region"; } -@@= skipped -12, +12 lines =@@ - const regionNamesInTraditionalChinese = new Intl.DisplayNames(['zh-Hant'], { type: 'region' }); - >regionNamesInTraditionalChinese : Intl.DisplayNames - >new Intl.DisplayNames(['zh-Hant'], { type: 'region' }) : Intl.DisplayNames -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >['zh-Hant'] : string[] - >'zh-Hant' : "zh-Hant" - >{ type: 'region' } : { type: "region"; } -@@= skipped -55, +55 lines =@@ - >console : Console - >log : (...data: any[]) => void - >Intl.DisplayNames.supportedLocalesOf(locales1, options1).join(', ') : string -->Intl.DisplayNames.supportedLocalesOf(locales1, options1).join : (separator?: string) => string -+>Intl.DisplayNames.supportedLocalesOf(locales1, options1).join : (separator?: string | undefined) => string - >Intl.DisplayNames.supportedLocalesOf(locales1, options1) : string[] -->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } -+>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] +@@= skipped -184, +184 lines =@@ + >'de-ID' : "de-ID" + + const options1 = { localeMatcher: 'lookup' } as const; +->options1 : { readonly localeMatcher: "lookup"; } +->{ localeMatcher: 'lookup' } as const : { readonly localeMatcher: "lookup"; } +->{ localeMatcher: 'lookup' } : { readonly localeMatcher: "lookup"; } ++>options1 : { readonly localeMatcher: 'lookup'; } ++>{ localeMatcher: 'lookup' } as const : { readonly localeMatcher: 'lookup'; } ++>{ localeMatcher: 'lookup' } : { readonly localeMatcher: 'lookup'; } + >localeMatcher : "lookup" + >'lookup' : "lookup" + +@@= skipped -20, +20 lines =@@ + >DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } + >supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] >locales1 : string[] - >options1 : { readonly localeMatcher: "lookup"; } -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string +->options1 : { readonly localeMatcher: "lookup"; } ++>options1 : { readonly localeMatcher: 'lookup'; } + >join : (separator?: string) => string >', ' : ", " - - new Intl.Locale(); // should error - >new Intl.Locale() : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - - new Intl.Locale(new Intl.Locale('en-US')); - >new Intl.Locale(new Intl.Locale('en-US')) : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >new Intl.Locale('en-US') : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >'en-US' : "en-US" - - new Intl.DisplayNames(); // TypeError: invalid_argument - >new Intl.DisplayNames() : Intl.DisplayNames -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - - new Intl.DisplayNames('en'); // TypeError: invalid_argument - >new Intl.DisplayNames('en') : Intl.DisplayNames -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >'en' : "en" - - new Intl.DisplayNames('en', {}); // TypeError: invalid_argument - >new Intl.DisplayNames('en', {}) : Intl.DisplayNames -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >'en' : "en" - >{} : {} - -@@= skipped -59, +59 lines =@@ - >(new Intl.DisplayNames(undefined, {type: 'language'})).of : (code: string) => string | undefined - >(new Intl.DisplayNames(undefined, {type: 'language'})) : Intl.DisplayNames - >new Intl.DisplayNames(undefined, {type: 'language'}) : Intl.DisplayNames -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >undefined : undefined - >{type: 'language'} : { type: "language"; } - >type : "language" -@@= skipped -15, +15 lines =@@ - >["es-ES", new Intl.Locale("en-US")] : (string | Intl.Locale)[] - >"es-ES" : "es-ES" - >new Intl.Locale("en-US") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"en-US" : "en-US" - - console.log((new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOptions().locale); // "es-ES" -@@= skipped -15, +15 lines =@@ - >(new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOptions : () => Intl.ResolvedDisplayNamesOptions - >(new Intl.DisplayNames(localesArg, {type: 'language'})) : Intl.DisplayNames - >new Intl.DisplayNames(localesArg, {type: 'language'}) : Intl.DisplayNames -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >localesArg : (string | Intl.Locale)[] - >{type: 'language'} : { type: "language"; } - >type : "language" -@@= skipped -16, +16 lines =@@ - >console : Console - >log : (...data: any[]) => void - >Intl.DisplayNames.supportedLocalesOf(localesArg) : string[] -->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } -+>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] - >localesArg : (string | Intl.Locale)[] - - console.log(Intl.DisplayNames.supportedLocalesOf()); // [] -@@= skipped -13, +13 lines =@@ - >console : Console - >log : (...data: any[]) => void - >Intl.DisplayNames.supportedLocalesOf() : string[] -->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } -+>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] - - console.log(Intl.DisplayNames.supportedLocalesOf(localesArg, {})); // ["es-ES", "en-US"] - >console.log(Intl.DisplayNames.supportedLocalesOf(localesArg, {})) : void -@@= skipped -12, +12 lines =@@ - >console : Console - >log : (...data: any[]) => void - >Intl.DisplayNames.supportedLocalesOf(localesArg, {}) : string[] -->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] -+>Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => Intl.UnicodeBCP47LocaleIdentifier[] -+>DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined): string[]; } -+>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher | undefined; } | undefined) => string[] - >localesArg : (string | Intl.Locale)[] - >{} : {} diff --git a/testdata/baselines/reference/submodule/conformance/es2021LocalesObjectArgument.types b/testdata/baselines/reference/submodule/conformance/es2021LocalesObjectArgument.types index 82dce10c900..108c39a5080 100644 --- a/testdata/baselines/reference/submodule/conformance/es2021LocalesObjectArgument.types +++ b/testdata/baselines/reference/submodule/conformance/es2021LocalesObjectArgument.types @@ -4,59 +4,59 @@ const enUS = new Intl.Locale("en-US"); >enUS : Intl.Locale >new Intl.Locale("en-US") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"en-US" : "en-US" const deDE = new Intl.Locale("de-DE"); >deDE : Intl.Locale >new Intl.Locale("de-DE") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"de-DE" : "de-DE" const jaJP = new Intl.Locale("ja-JP"); >jaJP : Intl.Locale >new Intl.Locale("ja-JP") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"ja-JP" : "ja-JP" new Intl.ListFormat(enUS); >new Intl.ListFormat(enUS) : Intl.ListFormat ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >enUS : Intl.Locale new Intl.ListFormat([deDE, jaJP]); >new Intl.ListFormat([deDE, jaJP]) : Intl.ListFormat ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale Intl.ListFormat.supportedLocalesOf(enUS); >Intl.ListFormat.supportedLocalesOf(enUS) : string[] ->Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } ->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] +>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] >enUS : Intl.Locale Intl.ListFormat.supportedLocalesOf([deDE, jaJP]); >Intl.ListFormat.supportedLocalesOf([deDE, jaJP]) : string[] ->Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } ->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] +>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale diff --git a/testdata/baselines/reference/submodule/conformance/es2021LocalesObjectArgument.types.diff b/testdata/baselines/reference/submodule/conformance/es2021LocalesObjectArgument.types.diff deleted file mode 100644 index 4c1341299b1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/es2021LocalesObjectArgument.types.diff +++ /dev/null @@ -1,80 +0,0 @@ ---- old.es2021LocalesObjectArgument.types -+++ new.es2021LocalesObjectArgument.types -@@= skipped -3, +3 lines =@@ - const enUS = new Intl.Locale("en-US"); - >enUS : Intl.Locale - >new Intl.Locale("en-US") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"en-US" : "en-US" - - const deDE = new Intl.Locale("de-DE"); - >deDE : Intl.Locale - >new Intl.Locale("de-DE") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"de-DE" : "de-DE" - - const jaJP = new Intl.Locale("ja-JP"); - >jaJP : Intl.Locale - >new Intl.Locale("ja-JP") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"ja-JP" : "ja-JP" - - new Intl.ListFormat(enUS); - >new Intl.ListFormat(enUS) : Intl.ListFormat -->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >enUS : Intl.Locale - - new Intl.ListFormat([deDE, jaJP]); - >new Intl.ListFormat([deDE, jaJP]) : Intl.ListFormat -->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - Intl.ListFormat.supportedLocalesOf(enUS); - >Intl.ListFormat.supportedLocalesOf(enUS) : string[] -->Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] -+>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] -+>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } -+>supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] - >enUS : Intl.Locale - - Intl.ListFormat.supportedLocalesOf([deDE, jaJP]); - >Intl.ListFormat.supportedLocalesOf([deDE, jaJP]) : string[] -->Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] -+>Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] -+>ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions | undefined): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } -+>supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/es2022LocalesObjectArgument.types b/testdata/baselines/reference/submodule/conformance/es2022LocalesObjectArgument.types index 722fe6cc8be..4cb709c2bde 100644 --- a/testdata/baselines/reference/submodule/conformance/es2022LocalesObjectArgument.types +++ b/testdata/baselines/reference/submodule/conformance/es2022LocalesObjectArgument.types @@ -4,59 +4,59 @@ const enUS = new Intl.Locale("en-US"); >enUS : Intl.Locale >new Intl.Locale("en-US") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"en-US" : "en-US" const deDE = new Intl.Locale("de-DE"); >deDE : Intl.Locale >new Intl.Locale("de-DE") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"de-DE" : "de-DE" const jaJP = new Intl.Locale("ja-JP"); >jaJP : Intl.Locale >new Intl.Locale("ja-JP") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"ja-JP" : "ja-JP" new Intl.Segmenter(enUS); >new Intl.Segmenter(enUS) : Intl.Segmenter ->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >enUS : Intl.Locale new Intl.Segmenter([deDE, jaJP]); >new Intl.Segmenter([deDE, jaJP]) : Intl.Segmenter ->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale Intl.Segmenter.supportedLocalesOf(enUS); >Intl.Segmenter.supportedLocalesOf(enUS) : string[] ->Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] ->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } ->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] +>Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] >enUS : Intl.Locale Intl.Segmenter.supportedLocalesOf([deDE, jaJP]); >Intl.Segmenter.supportedLocalesOf([deDE, jaJP]) : string[] ->Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] ->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } +>Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } ->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] +>Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale diff --git a/testdata/baselines/reference/submodule/conformance/es2022LocalesObjectArgument.types.diff b/testdata/baselines/reference/submodule/conformance/es2022LocalesObjectArgument.types.diff deleted file mode 100644 index 354db41ffe9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/es2022LocalesObjectArgument.types.diff +++ /dev/null @@ -1,80 +0,0 @@ ---- old.es2022LocalesObjectArgument.types -+++ new.es2022LocalesObjectArgument.types -@@= skipped -3, +3 lines =@@ - const enUS = new Intl.Locale("en-US"); - >enUS : Intl.Locale - >new Intl.Locale("en-US") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"en-US" : "en-US" - - const deDE = new Intl.Locale("de-DE"); - >deDE : Intl.Locale - >new Intl.Locale("de-DE") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"de-DE" : "de-DE" - - const jaJP = new Intl.Locale("ja-JP"); - >jaJP : Intl.Locale - >new Intl.Locale("ja-JP") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"ja-JP" : "ja-JP" - - new Intl.Segmenter(enUS); - >new Intl.Segmenter(enUS) : Intl.Segmenter -->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >enUS : Intl.Locale - - new Intl.Segmenter([deDE, jaJP]); - >new Intl.Segmenter([deDE, jaJP]) : Intl.Segmenter -->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - Intl.Segmenter.supportedLocalesOf(enUS); - >Intl.Segmenter.supportedLocalesOf(enUS) : string[] -->Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] -+>Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] -+>Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } -+>supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] - >enUS : Intl.Locale - - Intl.Segmenter.supportedLocalesOf([deDE, jaJP]); - >Intl.Segmenter.supportedLocalesOf([deDE, jaJP]) : string[] -->Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] -+>Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } - >Intl : typeof Intl -->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => Intl.UnicodeBCP47LocaleIdentifier[] -+>Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions | undefined): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick | undefined): string[]; } -+>supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick | undefined) => string[] - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/es2024SharedMemory.types b/testdata/baselines/reference/submodule/conformance/es2024SharedMemory.types index 18233acbdaf..518fb900445 100644 --- a/testdata/baselines/reference/submodule/conformance/es2024SharedMemory.types +++ b/testdata/baselines/reference/submodule/conformance/es2024SharedMemory.types @@ -40,9 +40,9 @@ const int64 = new BigInt64Array(sab64); const waitValue = Atomics.wait(int32, 0, 0); >waitValue : "not-equal" | "ok" | "timed-out" >Atomics.wait(int32, 0, 0) : "not-equal" | "ok" | "timed-out" ->Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; } +>Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } >Atomics : Atomics ->wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; } +>wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } >int32 : Int32Array >0 : 0 >0 : 0 diff --git a/testdata/baselines/reference/submodule/conformance/es2024SharedMemory.types.diff b/testdata/baselines/reference/submodule/conformance/es2024SharedMemory.types.diff deleted file mode 100644 index 5a4a4857d13..00000000000 --- a/testdata/baselines/reference/submodule/conformance/es2024SharedMemory.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.es2024SharedMemory.types -+++ new.es2024SharedMemory.types -@@= skipped -39, +39 lines =@@ - const waitValue = Atomics.wait(int32, 0, 0); - >waitValue : "not-equal" | "ok" | "timed-out" - >Atomics.wait(int32, 0, 0) : "not-equal" | "ok" | "timed-out" -->Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } -+>Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; } - >Atomics : Atomics -->wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } -+>wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; } - >int32 : Int32Array - >0 : 0 - >0 : 0 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/es5DateAPIs(target=es2015).types b/testdata/baselines/reference/submodule/conformance/es5DateAPIs(target=es2015).types index c0ebe140388..56e61a2ab14 100644 --- a/testdata/baselines/reference/submodule/conformance/es5DateAPIs(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/es5DateAPIs(target=es2015).types @@ -3,8 +3,8 @@ === es5DateAPIs.ts === Date.UTC(2017); // should error >Date.UTC(2017) : number ->Date.UTC : (year: number, monthIndex: number, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined) => number +>Date.UTC : (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number) => number >Date : DateConstructor ->UTC : (year: number, monthIndex: number, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined) => number +>UTC : (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number) => number >2017 : 2017 diff --git a/testdata/baselines/reference/submodule/conformance/es5DateAPIs(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/es5DateAPIs(target=es2015).types.diff deleted file mode 100644 index 922de899f50..00000000000 --- a/testdata/baselines/reference/submodule/conformance/es5DateAPIs(target=es2015).types.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.es5DateAPIs(target=es2015).types -+++ new.es5DateAPIs(target=es2015).types -@@= skipped -2, +2 lines =@@ - === es5DateAPIs.ts === - Date.UTC(2017); // should error - >Date.UTC(2017) : number -->Date.UTC : (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number) => number -+>Date.UTC : (year: number, monthIndex: number, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined) => number - >Date : DateConstructor -->UTC : (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number) => number -+>UTC : (year: number, monthIndex: number, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, ms?: number | undefined) => number - >2017 : 2017 diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).js.map b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).js.map index 1c2849fc114..807d241a22a 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).js.map +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).js.map @@ -3,5 +3,5 @@ //// https://sokra.github.io/source-map-visualization#base64,InVzZSBzdHJpY3QiOw0KdmFyIF9fcnVuSW5pdGlhbGl6ZXJzID0gKHRoaXMgJiYgdGhpcy5fX3J1bkluaXRpYWxpemVycykgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHsNCiAgICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjsNCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykgew0KICAgICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7DQogICAgfQ0KICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwOw0KfTsNCnZhciBfX2VzRGVjb3JhdGUgPSAodGhpcyAmJiB0aGlzLl9fZXNEZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7DQogICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gImZ1bmN0aW9uIikgdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTsgcmV0dXJuIGY7IH0NCiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSAiZ2V0dGVyIiA/ICJnZXQiIDoga2luZCA9PT0gInNldHRlciIgPyAic2V0IiA6ICJ2YWx1ZSI7DQogICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJblsic3RhdGljIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsOw0KICAgIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pOw0KICAgIHZhciBfLCBkb25lID0gZmFsc2U7DQogICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsNCiAgICAgICAgdmFyIGNvbnRleHQgPSB7fTsNCiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSAiYWNjZXNzIiA/IHt9IDogY29udGV4dEluW3BdOw0KICAgICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTsNCiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07DQogICAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gImFjY2Vzc29yIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTsNCiAgICAgICAgaWYgKGtpbmQgPT09ICJhY2Nlc3NvciIpIHsNCiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7DQogICAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09ICJvYmplY3QiKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsNCiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87DQogICAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfOw0KICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHsNCiAgICAgICAgICAgIGlmIChraW5kID09PSAiZmllbGQiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTsNCiAgICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7DQogICAgZG9uZSA9IHRydWU7DQp9Ow0KdmFyIF9fc2V0RnVuY3Rpb25OYW1lID0gKHRoaXMgJiYgdGhpcy5fX3NldEZ1bmN0aW9uTmFtZSkgfHwgZnVuY3Rpb24gKGYsIG5hbWUsIHByZWZpeCkgew0KICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gInN5bWJvbCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gIlsiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCAiXSIpIDogIiI7DQogICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCAibmFtZSIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gIiIuY29uY2F0KHByZWZpeCwgIiAiLCBuYW1lKSA6IG5hbWUgfSk7DQp9Ow0KdmFyIF9fY2xhc3NQcml2YXRlRmllbGRHZXQgPSAodGhpcyAmJiB0aGlzLl9fY2xhc3NQcml2YXRlRmllbGRHZXQpIHx8IGZ1bmN0aW9uIChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHsNCiAgICBpZiAoa2luZCA9PT0gImEiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXIiKTsNCiAgICBpZiAodHlwZW9mIHN0YXRlID09PSAiZnVuY3Rpb24iID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdCIpOw0KICAgIHJldHVybiBraW5kID09PSAibSIgPyBmIDoga2luZCA9PT0gImEiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTsNCn07DQp2YXIgX19jbGFzc1ByaXZhdGVGaWVsZFNldCA9ICh0aGlzICYmIHRoaXMuX19jbGFzc1ByaXZhdGVGaWVsZFNldCkgfHwgZnVuY3Rpb24gKHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHsNCiAgICBpZiAoa2luZCA9PT0gIm0iKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGUiKTsNCiAgICBpZiAoa2luZCA9PT0gImEiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXIiKTsNCiAgICBpZiAodHlwZW9mIHN0YXRlID09PSAiZnVuY3Rpb24iID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0Iik7DQogICAgcmV0dXJuIChraW5kID09PSAiYSIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlOw0KfTsNCnZhciBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4gPSAodGhpcyAmJiB0aGlzLl9fY2xhc3NQcml2YXRlRmllbGRJbikgfHwgZnVuY3Rpb24oc3RhdGUsIHJlY2VpdmVyKSB7DQogICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09ICJvYmplY3QiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gImZ1bmN0aW9uIikpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0Iik7DQogICAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gImZ1bmN0aW9uIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7DQp9Ow0KbGV0IEMgPSAoKCkgPT4gew0KICAgIHZhciBfQ19tZXRob2RfZ2V0LCBfQ194X2dldCwgX0NfeF9zZXQsIF9DX3ksIF9DX3pfYWNjZXNzb3Jfc3RvcmFnZSwgX0Nfel9nZXQsIF9DX3pfc2V0LCBfQ196XzFfYWNjZXNzb3Jfc3RvcmFnZTsNCiAgICBsZXQgX2NsYXNzRGVjb3JhdG9ycyA9IFtkZWMsIGRlY107DQogICAgbGV0IF9jbGFzc0Rlc2NyaXB0b3I7DQogICAgbGV0IF9jbGFzc0V4dHJhSW5pdGlhbGl6ZXJzID0gW107DQogICAgbGV0IF9jbGFzc1RoaXM7DQogICAgbGV0IF9zdGF0aWNFeHRyYUluaXRpYWxpemVycyA9IFtdOw0KICAgIGxldCBfaW5zdGFuY2VFeHRyYUluaXRpYWxpemVycyA9IFtdOw0KICAgIGxldCBfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2RlY29yYXRvcnM7DQogICAgbGV0IF9zdGF0aWNfcHJpdmF0ZV9tZXRob2RfZGVzY3JpcHRvcjsNCiAgICBsZXQgX3N0YXRpY19wcml2YXRlX2dldF94X2RlY29yYXRvcnM7DQogICAgbGV0IF9zdGF0aWNfcHJpdmF0ZV9nZXRfeF9kZXNjcmlwdG9yOw0KICAgIGxldCBfc3RhdGljX3ByaXZhdGVfc2V0X3hfZGVjb3JhdG9yczsNCiAgICBsZXQgX3N0YXRpY19wcml2YXRlX3NldF94X2Rlc2NyaXB0b3I7DQogICAgbGV0IF9zdGF0aWNfcHJpdmF0ZV95X2RlY29yYXRvcnM7DQogICAgbGV0IF9zdGF0aWNfcHJpdmF0ZV95X2luaXRpYWxpemVycyA9IFtdOw0KICAgIGxldCBfc3RhdGljX3ByaXZhdGVfeV9leHRyYUluaXRpYWxpemVycyA9IFtdOw0KICAgIGxldCBfc3RhdGljX3ByaXZhdGVfel9kZWNvcmF0b3JzOw0KICAgIGxldCBfc3RhdGljX3ByaXZhdGVfel9pbml0aWFsaXplcnMgPSBbXTsNCiAgICBsZXQgX3N0YXRpY19wcml2YXRlX3pfZXh0cmFJbml0aWFsaXplcnMgPSBbXTsNCiAgICBsZXQgX3N0YXRpY19wcml2YXRlX3pfZGVzY3JpcHRvcjsNCiAgICBsZXQgX21ldGhvZF9kZWNvcmF0b3JzOw0KICAgIGxldCBfZ2V0X3hfZGVjb3JhdG9yczsNCiAgICBsZXQgX3NldF94X2RlY29yYXRvcnM7DQogICAgbGV0IF95X2RlY29yYXRvcnM7DQogICAgbGV0IF95X2luaXRpYWxpemVycyA9IFtdOw0KICAgIGxldCBfeV9leHRyYUluaXRpYWxpemVycyA9IFtdOw0KICAgIGxldCBfel9kZWNvcmF0b3JzOw0KICAgIGxldCBfel9pbml0aWFsaXplcnMgPSBbXTsNCiAgICBsZXQgX3pfZXh0cmFJbml0aWFsaXplcnMgPSBbXTsNCiAgICB2YXIgQyA9IF9jbGFzc1RoaXMgPSBjbGFzcyB7DQogICAgICAgIG1ldGhvZCgpIHsgfQ0KICAgICAgICBnZXQgeCgpIHsgcmV0dXJuIDE7IH0NCiAgICAgICAgc2V0IHgodmFsdWUpIHsgfQ0KICAgICAgICBnZXQgeigpIHsgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0Nfel8xX2FjY2Vzc29yX3N0b3JhZ2UsICJmIik7IH0NCiAgICAgICAgc2V0IHoodmFsdWUpIHsgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfQ196XzFfYWNjZXNzb3Jfc3RvcmFnZSwgdmFsdWUsICJmIik7IH0NCiAgICAgICAgY29uc3RydWN0b3IoKSB7DQogICAgICAgICAgICB0aGlzLnkgPSAoX19ydW5Jbml0aWFsaXplcnModGhpcywgX2luc3RhbmNlRXh0cmFJbml0aWFsaXplcnMpLCBfX3J1bkluaXRpYWxpemVycyh0aGlzLCBfeV9pbml0aWFsaXplcnMsIDEpKTsNCiAgICAgICAgICAgIF9DX3pfMV9hY2Nlc3Nvcl9zdG9yYWdlLnNldCh0aGlzLCAoX19ydW5Jbml0aWFsaXplcnModGhpcywgX3lfZXh0cmFJbml0aWFsaXplcnMpLCBfX3J1bkluaXRpYWxpemVycyh0aGlzLCBfel9pbml0aWFsaXplcnMsIDEpKSk7DQogICAgICAgICAgICBfX3J1bkluaXRpYWxpemVycyh0aGlzLCBfel9leHRyYUluaXRpYWxpemVycyk7DQogICAgICAgIH0NCiAgICB9Ow0KICAgIF9DX3pfMV9hY2Nlc3Nvcl9zdG9yYWdlID0gbmV3IFdlYWtNYXAoKTsNCiAgICBfQ19tZXRob2RfZ2V0ID0gZnVuY3Rpb24gX0NfbWV0aG9kX2dldCgpIHsgcmV0dXJuIF9zdGF0aWNfcHJpdmF0ZV9tZXRob2RfZGVzY3JpcHRvci52YWx1ZTsgfTsNCiAgICBfQ194X2dldCA9IGZ1bmN0aW9uIF9DX3hfZ2V0KCkgeyByZXR1cm4gX3N0YXRpY19wcml2YXRlX2dldF94X2Rlc2NyaXB0b3IuZ2V0LmNhbGwodGhpcyk7IH07DQogICAgX0NfeF9zZXQgPSBmdW5jdGlvbiBfQ194X3NldCh2YWx1ZSkgeyByZXR1cm4gX3N0YXRpY19wcml2YXRlX3NldF94X2Rlc2NyaXB0b3Iuc2V0LmNhbGwodGhpcywgdmFsdWUpOyB9Ow0KICAgIF9DX3pfZ2V0ID0gZnVuY3Rpb24gX0Nfel9nZXQoKSB7IHJldHVybiBfc3RhdGljX3ByaXZhdGVfel9kZXNjcmlwdG9yLmdldC5jYWxsKHRoaXMpOyB9Ow0KICAgIF9DX3pfc2V0ID0gZnVuY3Rpb24gX0Nfel9zZXQodmFsdWUpIHsgcmV0dXJuIF9zdGF0aWNfcHJpdmF0ZV96X2Rlc2NyaXB0b3Iuc2V0LmNhbGwodGhpcywgdmFsdWUpOyB9Ow0KICAgIF9fc2V0RnVuY3Rpb25OYW1lKF9jbGFzc1RoaXMsICJDIik7DQogICAgKCgpID0+IHsNCiAgICAgICAgY29uc3QgX21ldGFkYXRhID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wubWV0YWRhdGEgPyBPYmplY3QuY3JlYXRlKG51bGwpIDogdm9pZCAwOw0KICAgICAgICBfbWV0aG9kX2RlY29yYXRvcnMgPSBbZGVjLCBkZWNdOw0KICAgICAgICBfZ2V0X3hfZGVjb3JhdG9ycyA9IFtkZWMsIGRlY107DQogICAgICAgIF9zZXRfeF9kZWNvcmF0b3JzID0gW2RlYywgZGVjXTsNCiAgICAgICAgX3lfZGVjb3JhdG9ycyA9IFtkZWMsIGRlY107DQogICAgICAgIF96X2RlY29yYXRvcnMgPSBbZGVjLCBkZWNdOw0KICAgICAgICBfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2RlY29yYXRvcnMgPSBbZGVjLCBkZWNdOw0KICAgICAgICBfc3RhdGljX3ByaXZhdGVfZ2V0X3hfZGVjb3JhdG9ycyA9IFtkZWMsIGRlY107DQogICAgICAgIF9zdGF0aWNfcHJpdmF0ZV9zZXRfeF9kZWNvcmF0b3JzID0gW2RlYywgZGVjXTsNCiAgICAgICAgX3N0YXRpY19wcml2YXRlX3lfZGVjb3JhdG9ycyA9IFtkZWMsIGRlY107DQogICAgICAgIF9zdGF0aWNfcHJpdmF0ZV96X2RlY29yYXRvcnMgPSBbZGVjLCBkZWNdOw0KICAgICAgICBfX2VzRGVjb3JhdGUoX2NsYXNzVGhpcywgX3N0YXRpY19wcml2YXRlX21ldGhvZF9kZXNjcmlwdG9yID0geyB2YWx1ZTogX19zZXRGdW5jdGlvbk5hbWUoZnVuY3Rpb24gKCkgeyB9LCAiI21ldGhvZCIpIH0sIF9zdGF0aWNfcHJpdmF0ZV9tZXRob2RfZGVjb3JhdG9ycywgeyBraW5kOiAibWV0aG9kIiwgbmFtZTogIiNtZXRob2QiLCBzdGF0aWM6IHRydWUsIHByaXZhdGU6IHRydWUsIGFjY2VzczogeyBoYXM6IG9iaiA9PiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oX2NsYXNzVGhpcywgb2JqKSwgZ2V0OiBvYmogPT4gX19jbGFzc1ByaXZhdGVGaWVsZEdldChvYmosIF9jbGFzc1RoaXMsICJhIiwgX0NfbWV0aG9kX2dldCkgfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBudWxsLCBfc3RhdGljRXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICBfX2VzRGVjb3JhdGUoX2NsYXNzVGhpcywgX3N0YXRpY19wcml2YXRlX2dldF94X2Rlc2NyaXB0b3IgPSB7IGdldDogX19zZXRGdW5jdGlvbk5hbWUoZnVuY3Rpb24gKCkgeyByZXR1cm4gMTsgfSwgIiN4IiwgImdldCIpIH0sIF9zdGF0aWNfcHJpdmF0ZV9nZXRfeF9kZWNvcmF0b3JzLCB7IGtpbmQ6ICJnZXR0ZXIiLCBuYW1lOiAiI3giLCBzdGF0aWM6IHRydWUsIHByaXZhdGU6IHRydWUsIGFjY2VzczogeyBoYXM6IG9iaiA9PiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oX2NsYXNzVGhpcywgb2JqKSwgZ2V0OiBvYmogPT4gX19jbGFzc1ByaXZhdGVGaWVsZEdldChvYmosIF9jbGFzc1RoaXMsICJhIiwgX0NfeF9nZXQpIH0sIG1ldGFkYXRhOiBfbWV0YWRhdGEgfSwgbnVsbCwgX3N0YXRpY0V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgX19lc0RlY29yYXRlKF9jbGFzc1RoaXMsIF9zdGF0aWNfcHJpdmF0ZV9zZXRfeF9kZXNjcmlwdG9yID0geyBzZXQ6IF9fc2V0RnVuY3Rpb25OYW1lKGZ1bmN0aW9uICh2YWx1ZSkgeyB9LCAiI3giLCAic2V0IikgfSwgX3N0YXRpY19wcml2YXRlX3NldF94X2RlY29yYXRvcnMsIHsga2luZDogInNldHRlciIsIG5hbWU6ICIjeCIsIHN0YXRpYzogdHJ1ZSwgcHJpdmF0ZTogdHJ1ZSwgYWNjZXNzOiB7IGhhczogb2JqID0+IF9fY2xhc3NQcml2YXRlRmllbGRJbihfY2xhc3NUaGlzLCBvYmopLCBzZXQ6IChvYmosIHZhbHVlKSA9PiB7IF9fY2xhc3NQcml2YXRlRmllbGRTZXQob2JqLCBfY2xhc3NUaGlzLCB2YWx1ZSwgImEiLCBfQ194X3NldCk7IH0gfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBudWxsLCBfc3RhdGljRXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICBfX2VzRGVjb3JhdGUoX2NsYXNzVGhpcywgX3N0YXRpY19wcml2YXRlX3pfZGVzY3JpcHRvciA9IHsgZ2V0OiBfX3NldEZ1bmN0aW9uTmFtZShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KF9jbGFzc1RoaXMsIF9jbGFzc1RoaXMsICJmIiwgX0Nfel9hY2Nlc3Nvcl9zdG9yYWdlKTsgfSwgIiN6IiwgImdldCIpLCBzZXQ6IF9fc2V0RnVuY3Rpb25OYW1lKGZ1bmN0aW9uICh2YWx1ZSkgeyBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KF9jbGFzc1RoaXMsIF9jbGFzc1RoaXMsIHZhbHVlLCAiZiIsIF9DX3pfYWNjZXNzb3Jfc3RvcmFnZSk7IH0sICIjeiIsICJzZXQiKSB9LCBfc3RhdGljX3ByaXZhdGVfel9kZWNvcmF0b3JzLCB7IGtpbmQ6ICJhY2Nlc3NvciIsIG5hbWU6ICIjeiIsIHN0YXRpYzogdHJ1ZSwgcHJpdmF0ZTogdHJ1ZSwgYWNjZXNzOiB7IGhhczogb2JqID0+IF9fY2xhc3NQcml2YXRlRmllbGRJbihfY2xhc3NUaGlzLCBvYmopLCBnZXQ6IG9iaiA9PiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KG9iaiwgX2NsYXNzVGhpcywgImEiLCBfQ196X2dldCksIHNldDogKG9iaiwgdmFsdWUpID0+IHsgX19jbGFzc1ByaXZhdGVGaWVsZFNldChvYmosIF9jbGFzc1RoaXMsIHZhbHVlLCAiYSIsIF9DX3pfc2V0KTsgfSB9LCBtZXRhZGF0YTogX21ldGFkYXRhIH0sIF9zdGF0aWNfcHJpdmF0ZV96X2luaXRpYWxpemVycywgX3N0YXRpY19wcml2YXRlX3pfZXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICBfX2VzRGVjb3JhdGUoX2NsYXNzVGhpcywgbnVsbCwgX21ldGhvZF9kZWNvcmF0b3JzLCB7IGtpbmQ6ICJtZXRob2QiLCBuYW1lOiAibWV0aG9kIiwgc3RhdGljOiBmYWxzZSwgcHJpdmF0ZTogZmFsc2UsIGFjY2VzczogeyBoYXM6IG9iaiA9PiAibWV0aG9kIiBpbiBvYmosIGdldDogb2JqID0+IG9iai5tZXRob2QgfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBudWxsLCBfaW5zdGFuY2VFeHRyYUluaXRpYWxpemVycyk7DQogICAgICAgIF9fZXNEZWNvcmF0ZShfY2xhc3NUaGlzLCBudWxsLCBfZ2V0X3hfZGVjb3JhdG9ycywgeyBraW5kOiAiZ2V0dGVyIiwgbmFtZTogIngiLCBzdGF0aWM6IGZhbHNlLCBwcml2YXRlOiBmYWxzZSwgYWNjZXNzOiB7IGhhczogb2JqID0+ICJ4IiBpbiBvYmosIGdldDogb2JqID0+IG9iai54IH0sIG1ldGFkYXRhOiBfbWV0YWRhdGEgfSwgbnVsbCwgX2luc3RhbmNlRXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICBfX2VzRGVjb3JhdGUoX2NsYXNzVGhpcywgbnVsbCwgX3NldF94X2RlY29yYXRvcnMsIHsga2luZDogInNldHRlciIsIG5hbWU6ICJ4Iiwgc3RhdGljOiBmYWxzZSwgcHJpdmF0ZTogZmFsc2UsIGFjY2VzczogeyBoYXM6IG9iaiA9PiAieCIgaW4gb2JqLCBzZXQ6IChvYmosIHZhbHVlKSA9PiB7IG9iai54ID0gdmFsdWU7IH0gfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBudWxsLCBfaW5zdGFuY2VFeHRyYUluaXRpYWxpemVycyk7DQogICAgICAgIF9fZXNEZWNvcmF0ZShfY2xhc3NUaGlzLCBudWxsLCBfel9kZWNvcmF0b3JzLCB7IGtpbmQ6ICJhY2Nlc3NvciIsIG5hbWU6ICJ6Iiwgc3RhdGljOiBmYWxzZSwgcHJpdmF0ZTogZmFsc2UsIGFjY2VzczogeyBoYXM6IG9iaiA9PiAieiIgaW4gb2JqLCBnZXQ6IG9iaiA9PiBvYmoueiwgc2V0OiAob2JqLCB2YWx1ZSkgPT4geyBvYmoueiA9IHZhbHVlOyB9IH0sIG1ldGFkYXRhOiBfbWV0YWRhdGEgfSwgX3pfaW5pdGlhbGl6ZXJzLCBfel9leHRyYUluaXRpYWxpemVycyk7DQogICAgICAgIF9fZXNEZWNvcmF0ZShudWxsLCBudWxsLCBfc3RhdGljX3ByaXZhdGVfeV9kZWNvcmF0b3JzLCB7IGtpbmQ6ICJmaWVsZCIsIG5hbWU6ICIjeSIsIHN0YXRpYzogdHJ1ZSwgcHJpdmF0ZTogdHJ1ZSwgYWNjZXNzOiB7IGhhczogb2JqID0+IF9fY2xhc3NQcml2YXRlRmllbGRJbihfY2xhc3NUaGlzLCBvYmopLCBnZXQ6IG9iaiA9PiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KG9iaiwgX2NsYXNzVGhpcywgImYiLCBfQ195KSwgc2V0OiAob2JqLCB2YWx1ZSkgPT4geyBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KG9iaiwgX2NsYXNzVGhpcywgdmFsdWUsICJmIiwgX0NfeSk7IH0gfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBfc3RhdGljX3ByaXZhdGVfeV9pbml0aWFsaXplcnMsIF9zdGF0aWNfcHJpdmF0ZV95X2V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgX19lc0RlY29yYXRlKG51bGwsIG51bGwsIF95X2RlY29yYXRvcnMsIHsga2luZDogImZpZWxkIiwgbmFtZTogInkiLCBzdGF0aWM6IGZhbHNlLCBwcml2YXRlOiBmYWxzZSwgYWNjZXNzOiB7IGhhczogb2JqID0+ICJ5IiBpbiBvYmosIGdldDogb2JqID0+IG9iai55LCBzZXQ6IChvYmosIHZhbHVlKSA9PiB7IG9iai55ID0gdmFsdWU7IH0gfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBfeV9pbml0aWFsaXplcnMsIF95X2V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgX19lc0RlY29yYXRlKG51bGwsIF9jbGFzc0Rlc2NyaXB0b3IgPSB7IHZhbHVlOiBfY2xhc3NUaGlzIH0sIF9jbGFzc0RlY29yYXRvcnMsIHsga2luZDogImNsYXNzIiwgbmFtZTogX2NsYXNzVGhpcy5uYW1lLCBtZXRhZGF0YTogX21ldGFkYXRhIH0sIG51bGwsIF9jbGFzc0V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgQyA9IF9jbGFzc1RoaXMgPSBfY2xhc3NEZXNjcmlwdG9yLnZhbHVlOw0KICAgICAgICBpZiAoX21ldGFkYXRhKSBPYmplY3QuZGVmaW5lUHJvcGVydHkoX2NsYXNzVGhpcywgU3ltYm9sLm1ldGFkYXRhLCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlOiBfbWV0YWRhdGEgfSk7DQogICAgfSkoKTsNCiAgICBfQ195ID0geyB2YWx1ZTogKF9fcnVuSW5pdGlhbGl6ZXJzKF9jbGFzc1RoaXMsIF9zdGF0aWNFeHRyYUluaXRpYWxpemVycyksIF9fcnVuSW5pdGlhbGl6ZXJzKF9jbGFzc1RoaXMsIF9zdGF0aWNfcHJpdmF0ZV95X2luaXRpYWxpemVycywgMSkpIH07DQogICAgX0Nfel9hY2Nlc3Nvcl9zdG9yYWdlID0geyB2YWx1ZTogKF9fcnVuSW5pdGlhbGl6ZXJzKF9jbGFzc1RoaXMsIF9zdGF0aWNfcHJpdmF0ZV95X2V4dHJhSW5pdGlhbGl6ZXJzKSwgX19ydW5Jbml0aWFsaXplcnMoX2NsYXNzVGhpcywgX3N0YXRpY19wcml2YXRlX3pfaW5pdGlhbGl6ZXJzLCAxKSkgfTsNCiAgICAoKCkgPT4gew0KICAgICAgICBfX3J1bkluaXRpYWxpemVycyhfY2xhc3NUaGlzLCBfc3RhdGljX3ByaXZhdGVfel9leHRyYUluaXRpYWxpemVycyk7DQogICAgICAgIF9fcnVuSW5pdGlhbGl6ZXJzKF9jbGFzc1RoaXMsIF9jbGFzc0V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICB9KSgpOw0KICAgIHJldHVybiBDID0gX2NsYXNzVGhpczsNCn0pKCk7DQovLyMgc291cmNlTWFwcGluZ1VSTD1lc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAuanMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUlNLENBQUM7OzRCQUZOLEdBQUcsRUFDSCxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQUlBLE1BQU0sS0FBSSxDQUFDO1FBSVgsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSXJCLElBQUksQ0FBQyxDQUFDLEtBQWEsSUFBSSxDQUFDO1FBUXhCLElBQVMsQ0FBQyx5RUFBSztRQUFmLElBQVMsQ0FBQyw4RUFBSzs7WUFKZixNQUFDLElBZkMsbURBQUMsMkNBZUMsQ0FBQyxHQUFDO1lBSUcsMkhBQUksQ0FBQyxJQUFDOzs7Ozs7Ozs7Ozs7OzhCQWxCZCxHQUFHLEVBQ0gsR0FBRzs2QkFHSCxHQUFHLEVBQ0gsR0FBRzs2QkFHSCxHQUFHLEVBQ0gsR0FBRzt5QkFHSCxHQUFHLEVBQ0gsR0FBRzt5QkFHSCxHQUFHLEVBQ0gsR0FBRzs2Q0FHSCxHQUFHLEVBQ0gsR0FBRzs0Q0FHSCxHQUFHLEVBQ0gsR0FBRzs0Q0FHSCxHQUFHLEVBQ0gsR0FBRzt3Q0FHSCxHQUFHLEVBQ0gsR0FBRzt3Q0FHSCxHQUFHLEVBQ0gsR0FBRztRQWZKLCtEQUFBLHlCQUFBLGNBQWtCLENBQUMsWUFBQSx1U0FBQTtRQUluQiw4REFBQSx1QkFBQSxjQUFrQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBQSw0UkFBQTtRQUk3Qiw4REFBQSx1QkFBQSxVQUFjLEtBQWEsSUFBSSxDQUFDLGNBQUEsaVRBQUE7UUFRaEMsMERBQUEsdUJBQUEsa0dBQXVCLGNBQUEsRUFBdkIsdUJBQUEsdUdBQXVCLGNBQUEsd1pBQUE7UUFwQ3ZCLDJLQUFBLE1BQU0sNkRBQUs7UUFJWCxnS0FBSSxDQUFDLDZEQUFnQjtRQUlyQiwyS0FBSSxDQUFDLHdFQUFtQjtRQVF4Qiw4SkFBUyxDQUFDLDZCQUFELENBQUMsNkVBQUs7UUFnQmYsa2FBQWM7UUFwQmQscUpBQUEsQ0FBQyw2QkFBRCxDQUFDLDZFQUFLO1FBZlYsNktBd0NDOzs7O0lBTFUsaUJBbkNMLHVEQUFDLGdFQW1DUyxDQUFDLElBQUosQ0FBSztJQUlFLG9LQUFLLENBQUMsSUFBSixDQUFLOzs7UUF2Q3JCLHVEQUFDIn0=,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== //// [esDecorators-classDeclaration-sourceMap.d.ts.map] -{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,WAAgB;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} -//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLFdBQWdCO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== +{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,IAIQ,MAAM,CAJE;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} +//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLElBSVEsTUFBTSxDQUpFO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).js.map.diff b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).js.map.diff index dca4f10b73c..d4b37453982 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).js.map.diff +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).js.map.diff @@ -6,5 +6,5 @@ //// [esDecorators-classDeclaration-sourceMap.d.ts.map] -{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM;IAEN,IAEI,CAAC,IAIQ,MAAM,CAJE;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} -//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTTtJQUVOLElBRUksQ0FBQyxJQUlRLE1BQU0sQ0FKRTtJQUVyQixJQUVJLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFLO0lBSXhCLENBQUMsU0FBSztJQUlOLFFBQVEsQ0FBQyxDQUFDLFNBQUs7Q0FxQmxCIn0=,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== -+{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,WAAgB;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} -+//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLFdBQWdCO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== \ No newline at end of file ++{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,IAIQ,MAAM,CAJE;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} ++//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLElBSVEsTUFBTSxDQUpFO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).sourcemap.txt b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).sourcemap.txt index 1f0f29ec571..1dc711f765d 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).sourcemap.txt +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).sourcemap.txt @@ -968,8 +968,10 @@ sourceFile:esDecorators-classDeclaration-sourceMap.ts 1->^^^^ 2 > ^^^^ 3 > ^ -4 > ^^^^^^^^^^^ -5 > ^^^^^^-> +4 > ^^^^ +5 > ^^^^^^ +6 > ^ +7 > ^^^^^^-> 1-> > > @@ -977,11 +979,19 @@ sourceFile:esDecorators-classDeclaration-sourceMap.ts > @dec > get 3 > x -4 > () { return 1; } +4 > () { return 1; } + > + > @dec + > @dec + > set x(value: +5 > number +6 > 1->Emitted(5, 5) Source(10, 5) + SourceIndex(0) 2 >Emitted(5, 9) Source(12, 9) + SourceIndex(0) 3 >Emitted(5, 10) Source(12, 10) + SourceIndex(0) -4 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) +4 >Emitted(5, 14) Source(16, 18) + SourceIndex(0) +5 >Emitted(5, 20) Source(16, 24) + SourceIndex(0) +6 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) --- >>> set x(value: number); 1->^^^^ diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).sourcemap.txt.diff b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).sourcemap.txt.diff index 1223ae2269d..d799ebadcbb 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).sourcemap.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2015).sourcemap.txt.diff @@ -19,36 +19,12 @@ --- >>> get x(): number; 1->^^^^ - 2 > ^^^^ - 3 > ^ --4 > ^^^^ --5 > ^^^^^^ --6 > ^ --7 > ^^^^^^-> +@@= skipped -17, +20 lines =@@ + 5 > ^^^^^^ + 6 > ^ + 7 > ^^^^^^-> -1->() {} -+4 > ^^^^^^^^^^^ -+5 > ^^^^^^-> +1-> > > - 2 > @dec -@@= skipped -25, +26 lines =@@ - > get - 3 > x - 4 > () { return 1; } -- > -- > @dec -- > @dec -- > set x(value: --5 > number --6 > - 1->Emitted(5, 5) Source(10, 5) + SourceIndex(0) - 2 >Emitted(5, 9) Source(12, 9) + SourceIndex(0) - 3 >Emitted(5, 10) Source(12, 10) + SourceIndex(0) --4 >Emitted(5, 14) Source(16, 18) + SourceIndex(0) --5 >Emitted(5, 20) Source(16, 24) + SourceIndex(0) --6 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) -+4 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) - --- - >>> set x(value: number); - 1->^^^^ \ No newline at end of file + 2 > @dec \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).js.map b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).js.map index 31b40fd46ab..dbf10f963d3 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).js.map +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).js.map @@ -3,5 +3,5 @@ //// https://sokra.github.io/source-map-visualization#base64,InVzZSBzdHJpY3QiOw0KdmFyIF9fcnVuSW5pdGlhbGl6ZXJzID0gKHRoaXMgJiYgdGhpcy5fX3J1bkluaXRpYWxpemVycykgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHsNCiAgICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjsNCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykgew0KICAgICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7DQogICAgfQ0KICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwOw0KfTsNCnZhciBfX2VzRGVjb3JhdGUgPSAodGhpcyAmJiB0aGlzLl9fZXNEZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7DQogICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gImZ1bmN0aW9uIikgdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTsgcmV0dXJuIGY7IH0NCiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSAiZ2V0dGVyIiA/ICJnZXQiIDoga2luZCA9PT0gInNldHRlciIgPyAic2V0IiA6ICJ2YWx1ZSI7DQogICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJblsic3RhdGljIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsOw0KICAgIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pOw0KICAgIHZhciBfLCBkb25lID0gZmFsc2U7DQogICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsNCiAgICAgICAgdmFyIGNvbnRleHQgPSB7fTsNCiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSAiYWNjZXNzIiA/IHt9IDogY29udGV4dEluW3BdOw0KICAgICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTsNCiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07DQogICAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gImFjY2Vzc29yIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTsNCiAgICAgICAgaWYgKGtpbmQgPT09ICJhY2Nlc3NvciIpIHsNCiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7DQogICAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09ICJvYmplY3QiKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsNCiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87DQogICAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfOw0KICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHsNCiAgICAgICAgICAgIGlmIChraW5kID09PSAiZmllbGQiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTsNCiAgICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7DQogICAgZG9uZSA9IHRydWU7DQp9Ow0KdmFyIF9fc2V0RnVuY3Rpb25OYW1lID0gKHRoaXMgJiYgdGhpcy5fX3NldEZ1bmN0aW9uTmFtZSkgfHwgZnVuY3Rpb24gKGYsIG5hbWUsIHByZWZpeCkgew0KICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gInN5bWJvbCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gIlsiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCAiXSIpIDogIiI7DQogICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCAibmFtZSIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gIiIuY29uY2F0KHByZWZpeCwgIiAiLCBuYW1lKSA6IG5hbWUgfSk7DQp9Ow0KdmFyIF9fY2xhc3NQcml2YXRlRmllbGRJbiA9ICh0aGlzICYmIHRoaXMuX19jbGFzc1ByaXZhdGVGaWVsZEluKSB8fCBmdW5jdGlvbihzdGF0ZSwgcmVjZWl2ZXIpIHsNCiAgICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gIm9iamVjdCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSAiZnVuY3Rpb24iKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3QiKTsNCiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSAiZnVuY3Rpb24iID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTsNCn07DQp2YXIgX19jbGFzc1ByaXZhdGVGaWVsZEdldCA9ICh0aGlzICYmIHRoaXMuX19jbGFzc1ByaXZhdGVGaWVsZEdldCkgfHwgZnVuY3Rpb24gKHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikgew0KICAgIGlmIChraW5kID09PSAiYSIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlciIpOw0KICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09ICJmdW5jdGlvbiIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0Iik7DQogICAgcmV0dXJuIGtpbmQgPT09ICJtIiA/IGYgOiBraW5kID09PSAiYSIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpOw0KfTsNCnZhciBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0ID0gKHRoaXMgJiYgdGhpcy5fX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KSB8fCBmdW5jdGlvbiAocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikgew0KICAgIGlmIChraW5kID09PSAibSIpIHRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZSIpOw0KICAgIGlmIChraW5kID09PSAiYSIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlciIpOw0KICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09ICJmdW5jdGlvbiIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXQiKTsNCiAgICByZXR1cm4gKGtpbmQgPT09ICJhIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7DQp9Ow0KbGV0IEMgPSAoKCkgPT4gew0KICAgIHZhciBfQ19tZXRob2RfZ2V0LCBfQ194X2dldCwgX0NfeF9zZXQsIF9DX3ksIF9DX3pfYWNjZXNzb3Jfc3RvcmFnZSwgX0Nfel9nZXQsIF9DX3pfc2V0Ow0KICAgIGxldCBfY2xhc3NEZWNvcmF0b3JzID0gW2RlYywgZGVjXTsNCiAgICBsZXQgX2NsYXNzRGVzY3JpcHRvcjsNCiAgICBsZXQgX2NsYXNzRXh0cmFJbml0aWFsaXplcnMgPSBbXTsNCiAgICBsZXQgX2NsYXNzVGhpczsNCiAgICBsZXQgX3N0YXRpY0V4dHJhSW5pdGlhbGl6ZXJzID0gW107DQogICAgbGV0IF9pbnN0YW5jZUV4dHJhSW5pdGlhbGl6ZXJzID0gW107DQogICAgbGV0IF9zdGF0aWNfcHJpdmF0ZV9tZXRob2RfZGVjb3JhdG9yczsNCiAgICBsZXQgX3N0YXRpY19wcml2YXRlX21ldGhvZF9kZXNjcmlwdG9yOw0KICAgIGxldCBfc3RhdGljX3ByaXZhdGVfZ2V0X3hfZGVjb3JhdG9yczsNCiAgICBsZXQgX3N0YXRpY19wcml2YXRlX2dldF94X2Rlc2NyaXB0b3I7DQogICAgbGV0IF9zdGF0aWNfcHJpdmF0ZV9zZXRfeF9kZWNvcmF0b3JzOw0KICAgIGxldCBfc3RhdGljX3ByaXZhdGVfc2V0X3hfZGVzY3JpcHRvcjsNCiAgICBsZXQgX3N0YXRpY19wcml2YXRlX3lfZGVjb3JhdG9yczsNCiAgICBsZXQgX3N0YXRpY19wcml2YXRlX3lfaW5pdGlhbGl6ZXJzID0gW107DQogICAgbGV0IF9zdGF0aWNfcHJpdmF0ZV95X2V4dHJhSW5pdGlhbGl6ZXJzID0gW107DQogICAgbGV0IF9zdGF0aWNfcHJpdmF0ZV96X2RlY29yYXRvcnM7DQogICAgbGV0IF9zdGF0aWNfcHJpdmF0ZV96X2luaXRpYWxpemVycyA9IFtdOw0KICAgIGxldCBfc3RhdGljX3ByaXZhdGVfel9leHRyYUluaXRpYWxpemVycyA9IFtdOw0KICAgIGxldCBfc3RhdGljX3ByaXZhdGVfel9kZXNjcmlwdG9yOw0KICAgIGxldCBfbWV0aG9kX2RlY29yYXRvcnM7DQogICAgbGV0IF9nZXRfeF9kZWNvcmF0b3JzOw0KICAgIGxldCBfc2V0X3hfZGVjb3JhdG9yczsNCiAgICBsZXQgX3lfZGVjb3JhdG9yczsNCiAgICBsZXQgX3lfaW5pdGlhbGl6ZXJzID0gW107DQogICAgbGV0IF95X2V4dHJhSW5pdGlhbGl6ZXJzID0gW107DQogICAgbGV0IF96X2RlY29yYXRvcnM7DQogICAgbGV0IF96X2luaXRpYWxpemVycyA9IFtdOw0KICAgIGxldCBfel9leHRyYUluaXRpYWxpemVycyA9IFtdOw0KICAgIHZhciBDID0gY2xhc3Mgew0KICAgICAgICBzdGF0aWMgeyBfY2xhc3NUaGlzID0gdGhpczsgfQ0KICAgICAgICBzdGF0aWMgeyBfX3NldEZ1bmN0aW9uTmFtZSh0aGlzLCAiQyIpOyB9DQogICAgICAgIHN0YXRpYyB7IF9DX21ldGhvZF9nZXQgPSBmdW5jdGlvbiBfQ19tZXRob2RfZ2V0KCkgeyByZXR1cm4gX3N0YXRpY19wcml2YXRlX21ldGhvZF9kZXNjcmlwdG9yLnZhbHVlOyB9LCBfQ194X2dldCA9IGZ1bmN0aW9uIF9DX3hfZ2V0KCkgeyByZXR1cm4gX3N0YXRpY19wcml2YXRlX2dldF94X2Rlc2NyaXB0b3IuZ2V0LmNhbGwodGhpcyk7IH0sIF9DX3hfc2V0ID0gZnVuY3Rpb24gX0NfeF9zZXQodmFsdWUpIHsgcmV0dXJuIF9zdGF0aWNfcHJpdmF0ZV9zZXRfeF9kZXNjcmlwdG9yLnNldC5jYWxsKHRoaXMsIHZhbHVlKTsgfSwgX0Nfel9nZXQgPSBmdW5jdGlvbiBfQ196X2dldCgpIHsgcmV0dXJuIF9zdGF0aWNfcHJpdmF0ZV96X2Rlc2NyaXB0b3IuZ2V0LmNhbGwodGhpcyk7IH0sIF9DX3pfc2V0ID0gZnVuY3Rpb24gX0Nfel9zZXQodmFsdWUpIHsgcmV0dXJuIF9zdGF0aWNfcHJpdmF0ZV96X2Rlc2NyaXB0b3Iuc2V0LmNhbGwodGhpcywgdmFsdWUpOyB9OyB9DQogICAgICAgIHN0YXRpYyB7DQogICAgICAgICAgICBjb25zdCBfbWV0YWRhdGEgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5tZXRhZGF0YSA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB2b2lkIDA7DQogICAgICAgICAgICBfbWV0aG9kX2RlY29yYXRvcnMgPSBbZGVjLCBkZWNdOw0KICAgICAgICAgICAgX2dldF94X2RlY29yYXRvcnMgPSBbZGVjLCBkZWNdOw0KICAgICAgICAgICAgX3NldF94X2RlY29yYXRvcnMgPSBbZGVjLCBkZWNdOw0KICAgICAgICAgICAgX3lfZGVjb3JhdG9ycyA9IFtkZWMsIGRlY107DQogICAgICAgICAgICBfel9kZWNvcmF0b3JzID0gW2RlYywgZGVjXTsNCiAgICAgICAgICAgIF9zdGF0aWNfcHJpdmF0ZV9tZXRob2RfZGVjb3JhdG9ycyA9IFtkZWMsIGRlY107DQogICAgICAgICAgICBfc3RhdGljX3ByaXZhdGVfZ2V0X3hfZGVjb3JhdG9ycyA9IFtkZWMsIGRlY107DQogICAgICAgICAgICBfc3RhdGljX3ByaXZhdGVfc2V0X3hfZGVjb3JhdG9ycyA9IFtkZWMsIGRlY107DQogICAgICAgICAgICBfc3RhdGljX3ByaXZhdGVfeV9kZWNvcmF0b3JzID0gW2RlYywgZGVjXTsNCiAgICAgICAgICAgIF9zdGF0aWNfcHJpdmF0ZV96X2RlY29yYXRvcnMgPSBbZGVjLCBkZWNdOw0KICAgICAgICAgICAgX19lc0RlY29yYXRlKHRoaXMsIF9zdGF0aWNfcHJpdmF0ZV9tZXRob2RfZGVzY3JpcHRvciA9IHsgdmFsdWU6IF9fc2V0RnVuY3Rpb25OYW1lKGZ1bmN0aW9uICgpIHsgfSwgIiNtZXRob2QiKSB9LCBfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2RlY29yYXRvcnMsIHsga2luZDogIm1ldGhvZCIsIG5hbWU6ICIjbWV0aG9kIiwgc3RhdGljOiB0cnVlLCBwcml2YXRlOiB0cnVlLCBhY2Nlc3M6IHsgaGFzOiBvYmogPT4gX19jbGFzc1ByaXZhdGVGaWVsZEluKF9jbGFzc1RoaXMsIG9iaiksIGdldDogb2JqID0+IF9fY2xhc3NQcml2YXRlRmllbGRHZXQob2JqLCBfY2xhc3NUaGlzLCAiYSIsIF9DX21ldGhvZF9nZXQpIH0sIG1ldGFkYXRhOiBfbWV0YWRhdGEgfSwgbnVsbCwgX3N0YXRpY0V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgICAgIF9fZXNEZWNvcmF0ZSh0aGlzLCBfc3RhdGljX3ByaXZhdGVfZ2V0X3hfZGVzY3JpcHRvciA9IHsgZ2V0OiBfX3NldEZ1bmN0aW9uTmFtZShmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9LCAiI3giLCAiZ2V0IikgfSwgX3N0YXRpY19wcml2YXRlX2dldF94X2RlY29yYXRvcnMsIHsga2luZDogImdldHRlciIsIG5hbWU6ICIjeCIsIHN0YXRpYzogdHJ1ZSwgcHJpdmF0ZTogdHJ1ZSwgYWNjZXNzOiB7IGhhczogb2JqID0+IF9fY2xhc3NQcml2YXRlRmllbGRJbihfY2xhc3NUaGlzLCBvYmopLCBnZXQ6IG9iaiA9PiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KG9iaiwgX2NsYXNzVGhpcywgImEiLCBfQ194X2dldCkgfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBudWxsLCBfc3RhdGljRXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICAgICAgX19lc0RlY29yYXRlKHRoaXMsIF9zdGF0aWNfcHJpdmF0ZV9zZXRfeF9kZXNjcmlwdG9yID0geyBzZXQ6IF9fc2V0RnVuY3Rpb25OYW1lKGZ1bmN0aW9uICh2YWx1ZSkgeyB9LCAiI3giLCAic2V0IikgfSwgX3N0YXRpY19wcml2YXRlX3NldF94X2RlY29yYXRvcnMsIHsga2luZDogInNldHRlciIsIG5hbWU6ICIjeCIsIHN0YXRpYzogdHJ1ZSwgcHJpdmF0ZTogdHJ1ZSwgYWNjZXNzOiB7IGhhczogb2JqID0+IF9fY2xhc3NQcml2YXRlRmllbGRJbihfY2xhc3NUaGlzLCBvYmopLCBzZXQ6IChvYmosIHZhbHVlKSA9PiB7IF9fY2xhc3NQcml2YXRlRmllbGRTZXQob2JqLCBfY2xhc3NUaGlzLCB2YWx1ZSwgImEiLCBfQ194X3NldCk7IH0gfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBudWxsLCBfc3RhdGljRXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICAgICAgX19lc0RlY29yYXRlKHRoaXMsIF9zdGF0aWNfcHJpdmF0ZV96X2Rlc2NyaXB0b3IgPSB7IGdldDogX19zZXRGdW5jdGlvbk5hbWUoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfY2xhc3NUaGlzLCAiZiIsIF9DX3pfYWNjZXNzb3Jfc3RvcmFnZSk7IH0sICIjeiIsICJnZXQiKSwgc2V0OiBfX3NldEZ1bmN0aW9uTmFtZShmdW5jdGlvbiAodmFsdWUpIHsgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfY2xhc3NUaGlzLCB2YWx1ZSwgImYiLCBfQ196X2FjY2Vzc29yX3N0b3JhZ2UpOyB9LCAiI3oiLCAic2V0IikgfSwgX3N0YXRpY19wcml2YXRlX3pfZGVjb3JhdG9ycywgeyBraW5kOiAiYWNjZXNzb3IiLCBuYW1lOiAiI3oiLCBzdGF0aWM6IHRydWUsIHByaXZhdGU6IHRydWUsIGFjY2VzczogeyBoYXM6IG9iaiA9PiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oX2NsYXNzVGhpcywgb2JqKSwgZ2V0OiBvYmogPT4gX19jbGFzc1ByaXZhdGVGaWVsZEdldChvYmosIF9jbGFzc1RoaXMsICJhIiwgX0Nfel9nZXQpLCBzZXQ6IChvYmosIHZhbHVlKSA9PiB7IF9fY2xhc3NQcml2YXRlRmllbGRTZXQob2JqLCBfY2xhc3NUaGlzLCB2YWx1ZSwgImEiLCBfQ196X3NldCk7IH0gfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBfc3RhdGljX3ByaXZhdGVfel9pbml0aWFsaXplcnMsIF9zdGF0aWNfcHJpdmF0ZV96X2V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgICAgIF9fZXNEZWNvcmF0ZSh0aGlzLCBudWxsLCBfbWV0aG9kX2RlY29yYXRvcnMsIHsga2luZDogIm1ldGhvZCIsIG5hbWU6ICJtZXRob2QiLCBzdGF0aWM6IGZhbHNlLCBwcml2YXRlOiBmYWxzZSwgYWNjZXNzOiB7IGhhczogb2JqID0+ICJtZXRob2QiIGluIG9iaiwgZ2V0OiBvYmogPT4gb2JqLm1ldGhvZCB9LCBtZXRhZGF0YTogX21ldGFkYXRhIH0sIG51bGwsIF9pbnN0YW5jZUV4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgICAgIF9fZXNEZWNvcmF0ZSh0aGlzLCBudWxsLCBfZ2V0X3hfZGVjb3JhdG9ycywgeyBraW5kOiAiZ2V0dGVyIiwgbmFtZTogIngiLCBzdGF0aWM6IGZhbHNlLCBwcml2YXRlOiBmYWxzZSwgYWNjZXNzOiB7IGhhczogb2JqID0+ICJ4IiBpbiBvYmosIGdldDogb2JqID0+IG9iai54IH0sIG1ldGFkYXRhOiBfbWV0YWRhdGEgfSwgbnVsbCwgX2luc3RhbmNlRXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICAgICAgX19lc0RlY29yYXRlKHRoaXMsIG51bGwsIF9zZXRfeF9kZWNvcmF0b3JzLCB7IGtpbmQ6ICJzZXR0ZXIiLCBuYW1lOiAieCIsIHN0YXRpYzogZmFsc2UsIHByaXZhdGU6IGZhbHNlLCBhY2Nlc3M6IHsgaGFzOiBvYmogPT4gIngiIGluIG9iaiwgc2V0OiAob2JqLCB2YWx1ZSkgPT4geyBvYmoueCA9IHZhbHVlOyB9IH0sIG1ldGFkYXRhOiBfbWV0YWRhdGEgfSwgbnVsbCwgX2luc3RhbmNlRXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICAgICAgX19lc0RlY29yYXRlKHRoaXMsIG51bGwsIF96X2RlY29yYXRvcnMsIHsga2luZDogImFjY2Vzc29yIiwgbmFtZTogInoiLCBzdGF0aWM6IGZhbHNlLCBwcml2YXRlOiBmYWxzZSwgYWNjZXNzOiB7IGhhczogb2JqID0+ICJ6IiBpbiBvYmosIGdldDogb2JqID0+IG9iai56LCBzZXQ6IChvYmosIHZhbHVlKSA9PiB7IG9iai56ID0gdmFsdWU7IH0gfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBfel9pbml0aWFsaXplcnMsIF96X2V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgICAgIF9fZXNEZWNvcmF0ZShudWxsLCBudWxsLCBfc3RhdGljX3ByaXZhdGVfeV9kZWNvcmF0b3JzLCB7IGtpbmQ6ICJmaWVsZCIsIG5hbWU6ICIjeSIsIHN0YXRpYzogdHJ1ZSwgcHJpdmF0ZTogdHJ1ZSwgYWNjZXNzOiB7IGhhczogb2JqID0+IF9fY2xhc3NQcml2YXRlRmllbGRJbihfY2xhc3NUaGlzLCBvYmopLCBnZXQ6IG9iaiA9PiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KG9iaiwgX2NsYXNzVGhpcywgImYiLCBfQ195KSwgc2V0OiAob2JqLCB2YWx1ZSkgPT4geyBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KG9iaiwgX2NsYXNzVGhpcywgdmFsdWUsICJmIiwgX0NfeSk7IH0gfSwgbWV0YWRhdGE6IF9tZXRhZGF0YSB9LCBfc3RhdGljX3ByaXZhdGVfeV9pbml0aWFsaXplcnMsIF9zdGF0aWNfcHJpdmF0ZV95X2V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgICAgIF9fZXNEZWNvcmF0ZShudWxsLCBudWxsLCBfeV9kZWNvcmF0b3JzLCB7IGtpbmQ6ICJmaWVsZCIsIG5hbWU6ICJ5Iiwgc3RhdGljOiBmYWxzZSwgcHJpdmF0ZTogZmFsc2UsIGFjY2VzczogeyBoYXM6IG9iaiA9PiAieSIgaW4gb2JqLCBnZXQ6IG9iaiA9PiBvYmoueSwgc2V0OiAob2JqLCB2YWx1ZSkgPT4geyBvYmoueSA9IHZhbHVlOyB9IH0sIG1ldGFkYXRhOiBfbWV0YWRhdGEgfSwgX3lfaW5pdGlhbGl6ZXJzLCBfeV9leHRyYUluaXRpYWxpemVycyk7DQogICAgICAgICAgICBfX2VzRGVjb3JhdGUobnVsbCwgX2NsYXNzRGVzY3JpcHRvciA9IHsgdmFsdWU6IF9jbGFzc1RoaXMgfSwgX2NsYXNzRGVjb3JhdG9ycywgeyBraW5kOiAiY2xhc3MiLCBuYW1lOiBfY2xhc3NUaGlzLm5hbWUsIG1ldGFkYXRhOiBfbWV0YWRhdGEgfSwgbnVsbCwgX2NsYXNzRXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICAgICAgQyA9IF9jbGFzc1RoaXMgPSBfY2xhc3NEZXNjcmlwdG9yLnZhbHVlOw0KICAgICAgICAgICAgaWYgKF9tZXRhZGF0YSkgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9jbGFzc1RoaXMsIFN5bWJvbC5tZXRhZGF0YSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZTogX21ldGFkYXRhIH0pOw0KICAgICAgICB9DQogICAgICAgIG1ldGhvZCgpIHsgfQ0KICAgICAgICBnZXQgeCgpIHsgcmV0dXJuIDE7IH0NCiAgICAgICAgc2V0IHgodmFsdWUpIHsgfQ0KICAgICAgICB5ID0gKF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXMsIF9pbnN0YW5jZUV4dHJhSW5pdGlhbGl6ZXJzKSwgX19ydW5Jbml0aWFsaXplcnModGhpcywgX3lfaW5pdGlhbGl6ZXJzLCAxKSk7DQogICAgICAgICN6XzFfYWNjZXNzb3Jfc3RvcmFnZSA9IChfX3J1bkluaXRpYWxpemVycyh0aGlzLCBfeV9leHRyYUluaXRpYWxpemVycyksIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXMsIF96X2luaXRpYWxpemVycywgMSkpOw0KICAgICAgICBnZXQgeigpIHsgcmV0dXJuIHRoaXMuI3pfMV9hY2Nlc3Nvcl9zdG9yYWdlOyB9DQogICAgICAgIHNldCB6KHZhbHVlKSB7IHRoaXMuI3pfMV9hY2Nlc3Nvcl9zdG9yYWdlID0gdmFsdWU7IH0NCiAgICAgICAgc3RhdGljIHsNCiAgICAgICAgICAgIF9DX3kgPSB7IHZhbHVlOiAoX19ydW5Jbml0aWFsaXplcnMoX2NsYXNzVGhpcywgX3N0YXRpY0V4dHJhSW5pdGlhbGl6ZXJzKSwgX19ydW5Jbml0aWFsaXplcnMoX2NsYXNzVGhpcywgX3N0YXRpY19wcml2YXRlX3lfaW5pdGlhbGl6ZXJzLCAxKSkgfTsNCiAgICAgICAgfQ0KICAgICAgICBzdGF0aWMgew0KICAgICAgICAgICAgX0Nfel9hY2Nlc3Nvcl9zdG9yYWdlID0geyB2YWx1ZTogKF9fcnVuSW5pdGlhbGl6ZXJzKF9jbGFzc1RoaXMsIF9zdGF0aWNfcHJpdmF0ZV95X2V4dHJhSW5pdGlhbGl6ZXJzKSwgX19ydW5Jbml0aWFsaXplcnMoX2NsYXNzVGhpcywgX3N0YXRpY19wcml2YXRlX3pfaW5pdGlhbGl6ZXJzLCAxKSkgfTsNCiAgICAgICAgfQ0KICAgICAgICBjb25zdHJ1Y3RvcigpIHsNCiAgICAgICAgICAgIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXMsIF96X2V4dHJhSW5pdGlhbGl6ZXJzKTsNCiAgICAgICAgfQ0KICAgICAgICBzdGF0aWMgew0KICAgICAgICAgICAgX19ydW5Jbml0aWFsaXplcnMoX2NsYXNzVGhpcywgX3N0YXRpY19wcml2YXRlX3pfZXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICAgICAgX19ydW5Jbml0aWFsaXplcnMoX2NsYXNzVGhpcywgX2NsYXNzRXh0cmFJbml0aWFsaXplcnMpOw0KICAgICAgICB9DQogICAgfTsNCiAgICByZXR1cm4gQyA9IF9jbGFzc1RoaXM7DQp9KSgpOw0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmpzLm1hcA==,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUlNLENBQUM7OzRCQUZOLEdBQUcsRUFDSCxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQUVDLEdBQUcsRUFDSCxHQUFHO2lDQUdILEdBQUcsRUFDSCxHQUFHO2lDQUdILEdBQUcsRUFDSCxHQUFHOzZCQUdILEdBQUcsRUFDSCxHQUFHOzZCQUdILEdBQUcsRUFDSCxHQUFHO2lEQUdILEdBQUcsRUFDSCxHQUFHO2dEQUdILEdBQUcsRUFDSCxHQUFHO2dEQUdILEdBQUcsRUFDSCxHQUFHOzRDQUdILEdBQUcsRUFDSCxHQUFHOzRDQUdILEdBQUcsRUFDSCxHQUFHO1lBZkoseURBQUEseUJBQUEsY0FBa0IsQ0FBQyxZQUFBLHVTQUFBO1lBSW5CLHdEQUFBLHVCQUFBLGNBQWtCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFBLDRSQUFBO1lBSTdCLHdEQUFBLHVCQUFBLFVBQWMsS0FBYSxJQUFJLENBQUMsY0FBQSxpVEFBQTtZQVFoQyxvREFBQSx1QkFBQSw0RkFBdUIsY0FBQSxFQUF2Qix1QkFBQSxpR0FBdUIsY0FBQSx3WkFBQTtZQXBDdkIscUtBQUEsTUFBTSw2REFBSztZQUlYLDBKQUFJLENBQUMsNkRBQWdCO1lBSXJCLHFLQUFJLENBQUMsd0VBQW1CO1lBUXhCLHdKQUFTLENBQUMsNkJBQUQsQ0FBQyw2RUFBSztZQWdCZixrYUFBYztZQXBCZCxxSkFBQSxDQUFDLDZCQUFELENBQUMsNkVBQUs7WUFmViw2S0F3Q0M7Ozs7UUFyQ0csTUFBTSxLQUFJLENBQUM7UUFJWCxJQUFJLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFJckIsSUFBSSxDQUFDLENBQUMsS0FBYSxJQUFJLENBQUM7UUFJeEIsQ0FBQyxJQWZDLG1EQUFDLDJDQWVDLENBQUMsR0FBQztRQUlOLGlIQUFhLENBQUMsR0FBQztRQUFmLElBQVMsQ0FBQyx5Q0FBSztRQUFmLElBQVMsQ0FBQywrQ0FBSzs7WUFnQlIsaUJBbkNMLHVEQUFDLGdFQW1DUyxDQUFDLElBQUosQ0FBSzs7O1lBSUUsb0tBQUssQ0FBQyxJQUFKLENBQUs7Ozs7Ozs7WUF2Q3JCLHVEQUFDIn0=,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== //// [esDecorators-classDeclaration-sourceMap.d.ts.map] -{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,WAAgB;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} -//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLFdBQWdCO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== +{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,IAIQ,MAAM,CAJE;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} +//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLElBSVEsTUFBTSxDQUpFO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).js.map.diff b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).js.map.diff index 6a185ca6ae4..a24cf9b5f70 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).js.map.diff +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).js.map.diff @@ -6,5 +6,5 @@ //// [esDecorators-classDeclaration-sourceMap.d.ts.map] -{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM;IAEN,IAEI,CAAC,IAIQ,MAAM,CAJE;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} -//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTTtJQUVOLElBRUksQ0FBQyxJQUlRLE1BQU0sQ0FKRTtJQUVyQixJQUVJLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFLO0lBSXhCLENBQUMsU0FBSztJQUlOLFFBQVEsQ0FBQyxDQUFDLFNBQUs7Q0FxQmxCIn0=,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== -+{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,WAAgB;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} -+//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLFdBQWdCO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== \ No newline at end of file ++{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,IAIQ,MAAM,CAJE;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} ++//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLElBSVEsTUFBTSxDQUpFO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).sourcemap.txt b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).sourcemap.txt index bc527d702e6..933f361965b 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).sourcemap.txt +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).sourcemap.txt @@ -977,8 +977,10 @@ sourceFile:esDecorators-classDeclaration-sourceMap.ts 1->^^^^ 2 > ^^^^ 3 > ^ -4 > ^^^^^^^^^^^ -5 > ^^^^^^-> +4 > ^^^^ +5 > ^^^^^^ +6 > ^ +7 > ^^^^^^-> 1-> > > @@ -986,11 +988,19 @@ sourceFile:esDecorators-classDeclaration-sourceMap.ts > @dec > get 3 > x -4 > () { return 1; } +4 > () { return 1; } + > + > @dec + > @dec + > set x(value: +5 > number +6 > 1->Emitted(5, 5) Source(10, 5) + SourceIndex(0) 2 >Emitted(5, 9) Source(12, 9) + SourceIndex(0) 3 >Emitted(5, 10) Source(12, 10) + SourceIndex(0) -4 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) +4 >Emitted(5, 14) Source(16, 18) + SourceIndex(0) +5 >Emitted(5, 20) Source(16, 24) + SourceIndex(0) +6 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) --- >>> set x(value: number); 1->^^^^ diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).sourcemap.txt.diff b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).sourcemap.txt.diff index 445698ec1cd..958141451c6 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).sourcemap.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=es2022).sourcemap.txt.diff @@ -19,36 +19,12 @@ --- >>> get x(): number; 1->^^^^ - 2 > ^^^^ - 3 > ^ --4 > ^^^^ --5 > ^^^^^^ --6 > ^ --7 > ^^^^^^-> +@@= skipped -17, +20 lines =@@ + 5 > ^^^^^^ + 6 > ^ + 7 > ^^^^^^-> -1->() {} -+4 > ^^^^^^^^^^^ -+5 > ^^^^^^-> +1-> > > - 2 > @dec -@@= skipped -25, +26 lines =@@ - > get - 3 > x - 4 > () { return 1; } -- > -- > @dec -- > @dec -- > set x(value: --5 > number --6 > - 1->Emitted(5, 5) Source(10, 5) + SourceIndex(0) - 2 >Emitted(5, 9) Source(12, 9) + SourceIndex(0) - 3 >Emitted(5, 10) Source(12, 10) + SourceIndex(0) --4 >Emitted(5, 14) Source(16, 18) + SourceIndex(0) --5 >Emitted(5, 20) Source(16, 24) + SourceIndex(0) --6 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) -+4 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) - --- - >>> set x(value: number); - 1->^^^^ \ No newline at end of file + 2 > @dec \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).js.map b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).js.map index b0f992c0bb7..1b0f9893a34 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).js.map +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).js.map @@ -3,5 +3,5 @@ //// https://sokra.github.io/source-map-visualization#base64,InVzZSBzdHJpY3QiOw0KQGRlYw0KQGRlYw0KY2xhc3MgQyB7DQogICAgQGRlYw0KICAgIEBkZWMNCiAgICBtZXRob2QoKSB7IH0NCiAgICBAZGVjDQogICAgQGRlYw0KICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQ0KICAgIEBkZWMNCiAgICBAZGVjDQogICAgc2V0IHgodmFsdWUpIHsgfQ0KICAgIEBkZWMNCiAgICBAZGVjDQogICAgeSA9IDE7DQogICAgQGRlYw0KICAgIEBkZWMNCiAgICBhY2Nlc3NvciB6ID0gMTsNCiAgICBAZGVjDQogICAgQGRlYw0KICAgIHN0YXRpYyAjbWV0aG9kKCkgeyB9DQogICAgQGRlYw0KICAgIEBkZWMNCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQ0KICAgIEBkZWMNCiAgICBAZGVjDQogICAgc3RhdGljIHNldCAjeCh2YWx1ZSkgeyB9DQogICAgQGRlYw0KICAgIEBkZWMNCiAgICBzdGF0aWMgI3kgPSAxOw0KICAgIEBkZWMNCiAgICBAZGVjDQogICAgc3RhdGljIGFjY2Vzc29yICN6ID0gMTsNCn0NCi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVzRGVjb3JhdG9ycy1jbGFzc0RlY2xhcmF0aW9uLXNvdXJjZU1hcC5qcy5tYXA=,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxDQUFDLEdBQUc7QUFDSixDQUFDLEdBQUc7TUFDRSxDQUFDO0lBQ0gsQ0FBQyxHQUFHO0lBQ0osQ0FBQyxHQUFHO0lBQ0osTUFBTSxLQUFJLENBQUM7SUFFWCxDQUFDLEdBQUc7SUFDSixDQUFDLEdBQUc7UUFDQSxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXJCLENBQUMsR0FBRztJQUNKLENBQUMsR0FBRztRQUNBLENBQUMsQ0FBQyxLQUFhLElBQUksQ0FBQztJQUV4QixDQUFDLEdBQUc7SUFDSixDQUFDLEdBQUc7SUFDSixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRU4sQ0FBQyxHQUFHO0lBQ0osQ0FBQyxHQUFHO0lBQ0osUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFZixDQUFDLEdBQUc7SUFDSixDQUFDLEdBQUc7SUFDSixNQUFNLENBQUMsT0FBTyxLQUFJLENBQUM7SUFFbkIsQ0FBQyxHQUFHO0lBQ0osQ0FBQyxHQUFHO0lBQ0osTUFBTSxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0IsQ0FBQyxHQUFHO0lBQ0osQ0FBQyxHQUFHO0lBQ0osTUFBTSxLQUFLLEVBQUUsQ0FBQyxLQUFhLElBQUksQ0FBQztJQUVoQyxDQUFDLEdBQUc7SUFDSixDQUFDLEdBQUc7SUFDSixNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVkLENBQUMsR0FBRztJQUNKLENBQUMsR0FBRztJQUNKLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztDQUMxQiJ9,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== //// [esDecorators-classDeclaration-sourceMap.d.ts.map] -{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,WAAgB;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} -//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLFdBQWdCO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== +{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,IAIQ,MAAM,CAJE;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} +//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLElBSVEsTUFBTSxDQUpFO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).js.map.diff b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).js.map.diff index 5cb3130c245..54fa4dc087d 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).js.map.diff +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).js.map.diff @@ -10,5 +10,5 @@ //// [esDecorators-classDeclaration-sourceMap.d.ts.map] -{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM;IAEN,IAEI,CAAC,IAIQ,MAAM,CAJE;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} -//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTTtJQUVOLElBRUksQ0FBQyxJQUlRLE1BQU0sQ0FKRTtJQUVyQixJQUVJLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFLO0lBSXhCLENBQUMsU0FBSztJQUlOLFFBQVEsQ0FBQyxDQUFDLFNBQUs7Q0FxQmxCIn0=,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== -+{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,WAAgB;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} -+//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLFdBQWdCO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== \ No newline at end of file ++{"version":3,"file":"esDecorators-classDeclaration-sourceMap.d.ts","sourceRoot":"","sources":["esDecorators-classDeclaration-sourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;AAErB,cAEM,CAAC;;IAGH,MAAM,SAAK;IAEX,IAEI,CAAC,IAIQ,MAAM,CAJE;IAErB,IAEI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAK;IAIxB,CAAC,SAAK;IAIN,QAAQ,CAAC,CAAC,SAAK;CAqBlB"} ++//// https://sokra.github.io/source-map-visualization#base64,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7DQpkZWNsYXJlIGNsYXNzIEMgew0KICAgICNwcml2YXRlOw0KICAgIG1ldGhvZCgpOiB2b2lkOw0KICAgIGdldCB4KCk6IG51bWJlcjsNCiAgICBzZXQgeCh2YWx1ZTogbnVtYmVyKTsNCiAgICB5OiBudW1iZXI7DQogICAgYWNjZXNzb3IgejogbnVtYmVyOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNEZWNvcmF0b3JzLWNsYXNzRGVjbGFyYXRpb24tc291cmNlTWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlc0RlY29yYXRvcnMtY2xhc3NEZWNsYXJhdGlvbi1zb3VyY2VNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUVyQixjQUVNLENBQUM7O0lBR0gsTUFBTSxTQUFLO0lBRVgsSUFFSSxDQUFDLElBSVEsTUFBTSxDQUpFO0lBRXJCLElBRUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUs7SUFJeEIsQ0FBQyxTQUFLO0lBSU4sUUFBUSxDQUFDLENBQUMsU0FBSztDQXFCbEIifQ==,ZGVjbGFyZSB2YXIgZGVjOiBhbnk7CgpAZGVjCkBkZWMKY2xhc3MgQyB7CiAgICBAZGVjCiAgICBAZGVjCiAgICBtZXRob2QoKSB7fQoKICAgIEBkZWMKICAgIEBkZWMKICAgIGdldCB4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHNldCB4KHZhbHVlOiBudW1iZXIpIHsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHkgPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIGFjY2Vzc29yIHogPSAxOwoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyAjbWV0aG9kKCkge30KCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgZ2V0ICN4KCkgeyByZXR1cm4gMTsgfQoKICAgIEBkZWMKICAgIEBkZWMKICAgIHN0YXRpYyBzZXQgI3godmFsdWU6IG51bWJlcikgeyB9CgogICAgQGRlYwogICAgQGRlYwogICAgc3RhdGljICN5ID0gMTsKCiAgICBAZGVjCiAgICBAZGVjCiAgICBzdGF0aWMgYWNjZXNzb3IgI3ogPSAxOwp9Cg== \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).sourcemap.txt b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).sourcemap.txt index e1d24aaab43..6e14258672d 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).sourcemap.txt +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).sourcemap.txt @@ -633,8 +633,10 @@ sourceFile:esDecorators-classDeclaration-sourceMap.ts 1->^^^^ 2 > ^^^^ 3 > ^ -4 > ^^^^^^^^^^^ -5 > ^^^^^^-> +4 > ^^^^ +5 > ^^^^^^ +6 > ^ +7 > ^^^^^^-> 1-> > > @@ -642,11 +644,19 @@ sourceFile:esDecorators-classDeclaration-sourceMap.ts > @dec > get 3 > x -4 > () { return 1; } +4 > () { return 1; } + > + > @dec + > @dec + > set x(value: +5 > number +6 > 1->Emitted(5, 5) Source(10, 5) + SourceIndex(0) 2 >Emitted(5, 9) Source(12, 9) + SourceIndex(0) 3 >Emitted(5, 10) Source(12, 10) + SourceIndex(0) -4 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) +4 >Emitted(5, 14) Source(16, 18) + SourceIndex(0) +5 >Emitted(5, 20) Source(16, 24) + SourceIndex(0) +6 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) --- >>> set x(value: number); 1->^^^^ diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).sourcemap.txt.diff b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).sourcemap.txt.diff index 2e4102f7cdb..408e8fe5e9b 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).sourcemap.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-classDeclaration-sourceMap(target=esnext).sourcemap.txt.diff @@ -32,36 +32,12 @@ --- >>> get x(): number; 1->^^^^ - 2 > ^^^^ - 3 > ^ --4 > ^^^^ --5 > ^^^^^^ --6 > ^ --7 > ^^^^^^-> +@@= skipped -17, +20 lines =@@ + 5 > ^^^^^^ + 6 > ^ + 7 > ^^^^^^-> -1->() {} -+4 > ^^^^^^^^^^^ -+5 > ^^^^^^-> +1-> > > - 2 > @dec -@@= skipped -25, +26 lines =@@ - > get - 3 > x - 4 > () { return 1; } -- > -- > @dec -- > @dec -- > set x(value: --5 > number --6 > - 1->Emitted(5, 5) Source(10, 5) + SourceIndex(0) - 2 >Emitted(5, 9) Source(12, 9) + SourceIndex(0) - 3 >Emitted(5, 10) Source(12, 10) + SourceIndex(0) --4 >Emitted(5, 14) Source(16, 18) + SourceIndex(0) --5 >Emitted(5, 20) Source(16, 24) + SourceIndex(0) --6 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) -+4 >Emitted(5, 21) Source(12, 26) + SourceIndex(0) - --- - >>> set x(value: number); - 1->^^^^ \ No newline at end of file + 2 > @dec \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-contextualTypes.2.types b/testdata/baselines/reference/submodule/conformance/esDecorators-contextualTypes.2.types index 812de53f2ac..a33087b44b9 100644 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-contextualTypes.2.types +++ b/testdata/baselines/reference/submodule/conformance/esDecorators-contextualTypes.2.types @@ -6,7 +6,7 @@ class C { @boundMethodLogger("Yadda", /*bound*/ true) >boundMethodLogger("Yadda", /*bound*/ true) : (target: (this: C) => void, context: ClassMethodDecoratorContext void>) => (this: C) => void ->boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return +>boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) >"Yadda" : "Yadda" >true : true @@ -35,14 +35,14 @@ export { C }; >C : typeof C function boundMethodLogger(source: string, bound = true) { ->boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return +>boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) >source : string >bound : boolean >true : true return function loggedDecorator( ->function loggedDecorator( target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return> ): ((this: This, ...args: Args) => Return) { if (bound) { context.addInitializer(function () { (this as any)[context.name] = (this as any)[context.name].bind(this); }); } return function (this, ...args) { console.log(`<${source}>: I'm logging stuff from ${context.name.toString()}!`); return target.apply(this, args); } } : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return ->loggedDecorator : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return +>function loggedDecorator( target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return> ): ((this: This, ...args: Args) => Return) { if (bound) { context.addInitializer(function () { (this as any)[context.name] = (this as any)[context.name].bind(this); }); } return function (this, ...args) { console.log(`<${source}>: I'm logging stuff from ${context.name.toString()}!`); return target.apply(this, args); } } : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) +>loggedDecorator : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) target: (this: This, ...args: Args) => Return, >target : (this: This, ...args: Args) => Return diff --git a/testdata/baselines/reference/submodule/conformance/esDecorators-contextualTypes.2.types.diff b/testdata/baselines/reference/submodule/conformance/esDecorators-contextualTypes.2.types.diff deleted file mode 100644 index 50fdec57063..00000000000 --- a/testdata/baselines/reference/submodule/conformance/esDecorators-contextualTypes.2.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.esDecorators-contextualTypes.2.types -+++ new.esDecorators-contextualTypes.2.types -@@= skipped -5, +5 lines =@@ - - @boundMethodLogger("Yadda", /*bound*/ true) - >boundMethodLogger("Yadda", /*bound*/ true) : (target: (this: C) => void, context: ClassMethodDecoratorContext void>) => (this: C) => void -->boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) -+>boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return - >"Yadda" : "Yadda" - >true : true - -@@= skipped -29, +29 lines =@@ - >C : typeof C - - function boundMethodLogger(source: string, bound = true) { -->boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) -+>boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return - >source : string - >bound : boolean - >true : true - - return function loggedDecorator( -->function loggedDecorator( target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return> ): ((this: This, ...args: Args) => Return) { if (bound) { context.addInitializer(function () { (this as any)[context.name] = (this as any)[context.name].bind(this); }); } return function (this, ...args) { console.log(`<${source}>: I'm logging stuff from ${context.name.toString()}!`); return target.apply(this, args); } } : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) -->loggedDecorator : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) -+>function loggedDecorator( target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return> ): ((this: This, ...args: Args) => Return) { if (bound) { context.addInitializer(function () { (this as any)[context.name] = (this as any)[context.name].bind(this); }); } return function (this, ...args) { console.log(`<${source}>: I'm logging stuff from ${context.name.toString()}!`); return target.apply(this, args); } } : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return -+>loggedDecorator : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return - - target: (this: This, ...args: Args) => Return, - >target : (this: This, ...args: Args) => Return \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/esnextSharedMemory.types b/testdata/baselines/reference/submodule/conformance/esnextSharedMemory.types index 0a5607641a3..83f2bc68c86 100644 --- a/testdata/baselines/reference/submodule/conformance/esnextSharedMemory.types +++ b/testdata/baselines/reference/submodule/conformance/esnextSharedMemory.types @@ -3,14 +3,14 @@ === esnextSharedMemory.ts === Atomics.pause(); >Atomics.pause() : void ->Atomics.pause : (n?: number | undefined) => void +>Atomics.pause : (n?: number) => void >Atomics : Atomics ->pause : (n?: number | undefined) => void +>pause : (n?: number) => void Atomics.pause(1); >Atomics.pause(1) : void ->Atomics.pause : (n?: number | undefined) => void +>Atomics.pause : (n?: number) => void >Atomics : Atomics ->pause : (n?: number | undefined) => void +>pause : (n?: number) => void >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/esnextSharedMemory.types.diff b/testdata/baselines/reference/submodule/conformance/esnextSharedMemory.types.diff deleted file mode 100644 index 04bb54d6c53..00000000000 --- a/testdata/baselines/reference/submodule/conformance/esnextSharedMemory.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.esnextSharedMemory.types -+++ new.esnextSharedMemory.types -@@= skipped -2, +2 lines =@@ - === esnextSharedMemory.ts === - Atomics.pause(); - >Atomics.pause() : void -->Atomics.pause : (n?: number) => void -+>Atomics.pause : (n?: number | undefined) => void - >Atomics : Atomics -->pause : (n?: number) => void -+>pause : (n?: number | undefined) => void - - Atomics.pause(1); - >Atomics.pause(1) : void -->Atomics.pause : (n?: number) => void -+>Atomics.pause : (n?: number | undefined) => void - >Atomics : Atomics -->pause : (n?: number) => void -+>pause : (n?: number | undefined) => void - >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInitializer.types b/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInitializer.types index 1982c4394d5..c28c7b27f5c 100644 --- a/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInitializer.types +++ b/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInitializer.types @@ -45,9 +45,9 @@ namespace M { >F2 : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } var aNumber: number = 9.9; diff --git a/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInitializer.types.diff b/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInitializer.types.diff deleted file mode 100644 index 9302871f8a6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInitializer.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.everyTypeWithAnnotationAndInitializer.types -+++ new.everyTypeWithAnnotationAndInitializer.types -@@= skipped -44, +44 lines =@@ - >F2 : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - - var aNumber: number = 9.9; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInvalidInitializer.types b/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInvalidInitializer.types index c90522f3628..e6199241121 100644 --- a/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInvalidInitializer.types +++ b/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInvalidInitializer.types @@ -52,9 +52,9 @@ namespace M { >F2 : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } namespace N { @@ -71,9 +71,9 @@ namespace N { >F2 : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } var aNumber: number = 'this is a string'; diff --git a/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInvalidInitializer.types.diff b/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInvalidInitializer.types.diff deleted file mode 100644 index b29def7cacf..00000000000 --- a/testdata/baselines/reference/submodule/conformance/everyTypeWithAnnotationAndInvalidInitializer.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.everyTypeWithAnnotationAndInvalidInitializer.types -+++ new.everyTypeWithAnnotationAndInvalidInitializer.types -@@= skipped -51, +51 lines =@@ - >F2 : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - - namespace N { -@@= skipped -19, +19 lines =@@ - >F2 : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - - var aNumber: number = 'this is a string'; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/for-of29.errors.txt b/testdata/baselines/reference/submodule/conformance/for-of29.errors.txt index a3e558be961..8abde9a24ab 100644 --- a/testdata/baselines/reference/submodule/conformance/for-of29.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/for-of29.errors.txt @@ -1,4 +1,4 @@ -for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. ==== for-of29.ts (1 errors) ==== @@ -8,5 +8,5 @@ for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/for-of29.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/for-of29.errors.txt.diff new file mode 100644 index 00000000000..3abd7f0a37e --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/for-of29.errors.txt.diff @@ -0,0 +1,15 @@ +--- old.for-of29.errors.txt ++++ new.for-of29.errors.txt +@@= skipped -0, +0 lines =@@ +-for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. ++for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. + + + ==== for-of29.ts (1 errors) ==== +@@= skipped -7, +7 lines =@@ + + for (var v of iterableWithOptionalIterator) { } + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-!!! error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. ++!!! error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/for-of29.types b/testdata/baselines/reference/submodule/conformance/for-of29.types index 1bfb13f3a2e..7c46d471a11 100644 --- a/testdata/baselines/reference/submodule/conformance/for-of29.types +++ b/testdata/baselines/reference/submodule/conformance/for-of29.types @@ -2,10 +2,10 @@ === for-of29.ts === declare var iterableWithOptionalIterator: { ->iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } +>iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } [Symbol.iterator]?(): Iterator ->[Symbol.iterator] : (() => Iterator) | undefined +>[Symbol.iterator] : (() => Iterator) | undefined >Symbol.iterator : unique symbol >Symbol : SymbolConstructor >iterator : unique symbol @@ -14,5 +14,5 @@ declare var iterableWithOptionalIterator: { for (var v of iterableWithOptionalIterator) { } >v : any ->iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } +>iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } diff --git a/testdata/baselines/reference/submodule/conformance/for-of29.types.diff b/testdata/baselines/reference/submodule/conformance/for-of29.types.diff deleted file mode 100644 index fb74ac1ddcc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/for-of29.types.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.for-of29.types -+++ new.for-of29.types -@@= skipped -1, +1 lines =@@ - - === for-of29.ts === - declare var iterableWithOptionalIterator: { -->iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } -+>iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } - - [Symbol.iterator]?(): Iterator -->[Symbol.iterator] : (() => Iterator) | undefined -+>[Symbol.iterator] : (() => Iterator) | undefined - >Symbol.iterator : unique symbol - >Symbol : SymbolConstructor - >iterator : unique symbol -@@= skipped -12, +12 lines =@@ - - for (var v of iterableWithOptionalIterator) { } - >v : any -->iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } -+>iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } diff --git a/testdata/baselines/reference/submodule/conformance/forStatements.types b/testdata/baselines/reference/submodule/conformance/forStatements.types index 36ab289c2bf..2a054245eca 100644 --- a/testdata/baselines/reference/submodule/conformance/forStatements.types +++ b/testdata/baselines/reference/submodule/conformance/forStatements.types @@ -45,9 +45,9 @@ namespace M { >F2 : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } for(var aNumber: number = 9.9;;){} diff --git a/testdata/baselines/reference/submodule/conformance/forStatements.types.diff b/testdata/baselines/reference/submodule/conformance/forStatements.types.diff deleted file mode 100644 index 45696e1a4f5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/forStatements.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.forStatements.types -+++ new.forStatements.types -@@= skipped -44, +44 lines =@@ - >F2 : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - - for(var aNumber: number = 9.9;;){} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/forStatementsMultipleInvalidDecl.types b/testdata/baselines/reference/submodule/conformance/forStatementsMultipleInvalidDecl.types index b7535e4aee1..3d555f08286 100644 --- a/testdata/baselines/reference/submodule/conformance/forStatementsMultipleInvalidDecl.types +++ b/testdata/baselines/reference/submodule/conformance/forStatementsMultipleInvalidDecl.types @@ -56,9 +56,9 @@ namespace M { >F2 : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } // all of these are errors diff --git a/testdata/baselines/reference/submodule/conformance/forStatementsMultipleInvalidDecl.types.diff b/testdata/baselines/reference/submodule/conformance/forStatementsMultipleInvalidDecl.types.diff deleted file mode 100644 index a5c2069baee..00000000000 --- a/testdata/baselines/reference/submodule/conformance/forStatementsMultipleInvalidDecl.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.forStatementsMultipleInvalidDecl.types -+++ new.forStatementsMultipleInvalidDecl.types -@@= skipped -55, +55 lines =@@ - >F2 : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - - // all of these are errors \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction.types b/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction.types index 5f2f7c150dd..0a5295fc1f5 100644 --- a/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction.types +++ b/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction.types @@ -192,7 +192,7 @@ var r17 = foo(f2); >f2 : F2 function foo2(x: T, y: U) { ->foo2 : void, U extends () => void>(x: T, y: U) => void +>foo2 : (x: T, y: U) => void >x : T >y : U diff --git a/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction.types.diff b/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction.types.diff deleted file mode 100644 index bd070ba151f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.functionConstraintSatisfaction.types -+++ new.functionConstraintSatisfaction.types -@@= skipped -191, +191 lines =@@ - >f2 : F2 - - function foo2(x: T, y: U) { -->foo2 : (x: T, y: U) => void -+>foo2 : void, U extends () => void>(x: T, y: U) => void - >x : T - >y : U diff --git a/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction2.types b/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction2.types index 978d1183b93..6b8bb796c76 100644 --- a/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction2.types +++ b/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction2.types @@ -122,7 +122,7 @@ var r16 = foo2(f2); >f2 : F2 function fff(x: T, y: U) { ->fff : void, U extends T>(x: T, y: U) => void +>fff : (x: T, y: U) => void >x : T >y : U diff --git a/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction2.types.diff b/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction2.types.diff deleted file mode 100644 index 6d6e39e7141..00000000000 --- a/testdata/baselines/reference/submodule/conformance/functionConstraintSatisfaction2.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.functionConstraintSatisfaction2.types -+++ new.functionConstraintSatisfaction2.types -@@= skipped -121, +121 lines =@@ - >f2 : F2 - - function fff(x: T, y: U) { -->fff : (x: T, y: U) => void -+>fff : void, U extends T>(x: T, y: U) => void - >x : T - >y : U diff --git a/testdata/baselines/reference/submodule/conformance/functionExpressionContextualTyping3.types b/testdata/baselines/reference/submodule/conformance/functionExpressionContextualTyping3.types index 9e53d93904f..e2069f4cc6f 100644 --- a/testdata/baselines/reference/submodule/conformance/functionExpressionContextualTyping3.types +++ b/testdata/baselines/reference/submodule/conformance/functionExpressionContextualTyping3.types @@ -3,12 +3,12 @@ === functionExpressionContextualTyping3.ts === // #31114 declare function f(value: T | number): void; ->f : (value: number | T) => void +>f : (value: T | number) => void >value : number | T f((a: any) => "") >f((a: any) => "") : void ->f : (value: number | T) => void +>f : (value: T | number) => void >(a: any) => "" : (a: any) => "" >a : any >"" : "" diff --git a/testdata/baselines/reference/submodule/conformance/functionExpressionContextualTyping3.types.diff b/testdata/baselines/reference/submodule/conformance/functionExpressionContextualTyping3.types.diff deleted file mode 100644 index 57cfaa1d4fd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/functionExpressionContextualTyping3.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.functionExpressionContextualTyping3.types -+++ new.functionExpressionContextualTyping3.types -@@= skipped -2, +2 lines =@@ - === functionExpressionContextualTyping3.ts === - // #31114 - declare function f(value: T | number): void; -->f : (value: T | number) => void -+>f : (value: number | T) => void - >value : number | T - - f((a: any) => "") - >f((a: any) => "") : void -->f : (value: T | number) => void -+>f : (value: number | T) => void - >(a: any) => "" : (a: any) => "" - >a : any - >"" : "" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/functionLiterals.types b/testdata/baselines/reference/submodule/conformance/functionLiterals.types index 67fdf33fec6..f3da29cd122 100644 --- a/testdata/baselines/reference/submodule/conformance/functionLiterals.types +++ b/testdata/baselines/reference/submodule/conformance/functionLiterals.types @@ -4,7 +4,7 @@ // PropName(ParamList):ReturnType is equivalent to PropName: { (ParamList): ReturnType } var b: { ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } func1(x: number): number; // Method signature >func1 : (x: number) => number @@ -23,55 +23,55 @@ var b: { b.func1 = b.func2; >b.func1 = b.func2 : (x: number) => number >b.func1 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func1 : (x: number) => number >b.func2 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func2 : (x: number) => number b.func1 = b.func3; >b.func1 = b.func3 : (x: number) => number >b.func1 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func1 : (x: number) => number >b.func3 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func3 : (x: number) => number b.func2 = b.func1; >b.func2 = b.func1 : (x: number) => number >b.func2 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func2 : (x: number) => number >b.func1 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func1 : (x: number) => number b.func2 = b.func3; >b.func2 = b.func3 : (x: number) => number >b.func2 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func2 : (x: number) => number >b.func3 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func3 : (x: number) => number b.func3 = b.func1; >b.func3 = b.func1 : (x: number) => number >b.func3 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func3 : (x: number) => number >b.func1 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func1 : (x: number) => number b.func3 = b.func2; >b.func3 = b.func2 : (x: number) => number >b.func3 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func3 : (x: number) => number >b.func2 : (x: number) => number ->b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } +>b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } >func2 : (x: number) => number var c: { @@ -118,7 +118,7 @@ c.func5 = c.func4; // generic versions var b2: { ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } func1(x: T): number; // Method signature >func1 : (x: T) => number @@ -137,55 +137,55 @@ var b2: { b2.func1 = b2.func2; >b2.func1 = b2.func2 : (x: T) => number >b2.func1 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func1 : (x: T) => number >b2.func2 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func2 : (x: T) => number b2.func1 = b2.func3; >b2.func1 = b2.func3 : (x: T) => number >b2.func1 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func1 : (x: T) => number >b2.func3 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func3 : (x: T) => number b2.func2 = b2.func1; >b2.func2 = b2.func1 : (x: T) => number >b2.func2 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func2 : (x: T) => number >b2.func1 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func1 : (x: T) => number b2.func2 = b2.func3; >b2.func2 = b2.func3 : (x: T) => number >b2.func2 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func2 : (x: T) => number >b2.func3 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func3 : (x: T) => number b2.func3 = b2.func1; >b2.func3 = b2.func1 : (x: T) => number >b2.func3 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func3 : (x: T) => number >b2.func1 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func1 : (x: T) => number b2.func3 = b2.func2; >b2.func3 = b2.func2 : (x: T) => number >b2.func3 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func3 : (x: T) => number >b2.func2 : (x: T) => number ->b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } +>b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } >func2 : (x: T) => number var c2: { diff --git a/testdata/baselines/reference/submodule/conformance/functionLiterals.types.diff b/testdata/baselines/reference/submodule/conformance/functionLiterals.types.diff index e741358f177..a3a6231341b 100644 --- a/testdata/baselines/reference/submodule/conformance/functionLiterals.types.diff +++ b/testdata/baselines/reference/submodule/conformance/functionLiterals.types.diff @@ -1,159 +1,6 @@ --- old.functionLiterals.types +++ new.functionLiterals.types -@@= skipped -3, +3 lines =@@ - // PropName(ParamList):ReturnType is equivalent to PropName: { (ParamList): ReturnType } - - var b: { -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - - func1(x: number): number; // Method signature - >func1 : (x: number) => number -@@= skipped -19, +19 lines =@@ - b.func1 = b.func2; - >b.func1 = b.func2 : (x: number) => number - >b.func1 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func1 : (x: number) => number - >b.func2 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func2 : (x: number) => number - - b.func1 = b.func3; - >b.func1 = b.func3 : (x: number) => number - >b.func1 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func1 : (x: number) => number - >b.func3 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func3 : (x: number) => number - - b.func2 = b.func1; - >b.func2 = b.func1 : (x: number) => number - >b.func2 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func2 : (x: number) => number - >b.func1 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func1 : (x: number) => number - - b.func2 = b.func3; - >b.func2 = b.func3 : (x: number) => number - >b.func2 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func2 : (x: number) => number - >b.func3 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func3 : (x: number) => number - - b.func3 = b.func1; - >b.func3 = b.func1 : (x: number) => number - >b.func3 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func3 : (x: number) => number - >b.func1 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func1 : (x: number) => number - - b.func3 = b.func2; - >b.func3 = b.func2 : (x: number) => number - >b.func3 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func3 : (x: number) => number - >b.func2 : (x: number) => number -->b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -+>b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } - >func2 : (x: number) => number - - var c: { -@@= skipped -95, +95 lines =@@ - - // generic versions - var b2: { -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - - func1(x: T): number; // Method signature - >func1 : (x: T) => number -@@= skipped -19, +19 lines =@@ - b2.func1 = b2.func2; - >b2.func1 = b2.func2 : (x: T) => number - >b2.func1 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func1 : (x: T) => number - >b2.func2 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func2 : (x: T) => number - - b2.func1 = b2.func3; - >b2.func1 = b2.func3 : (x: T) => number - >b2.func1 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func1 : (x: T) => number - >b2.func3 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func3 : (x: T) => number - - b2.func2 = b2.func1; - >b2.func2 = b2.func1 : (x: T) => number - >b2.func2 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func2 : (x: T) => number - >b2.func1 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func1 : (x: T) => number - - b2.func2 = b2.func3; - >b2.func2 = b2.func3 : (x: T) => number - >b2.func2 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func2 : (x: T) => number - >b2.func3 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func3 : (x: T) => number - - b2.func3 = b2.func1; - >b2.func3 = b2.func1 : (x: T) => number - >b2.func3 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func3 : (x: T) => number - >b2.func1 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func1 : (x: T) => number - - b2.func3 = b2.func2; - >b2.func3 = b2.func2 : (x: T) => number - >b2.func3 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func3 : (x: T) => number - >b2.func2 : (x: T) => number -->b2 : { func1(x: T): number; func2: (x: T) => number; func3: { (x: T): number; }; } -+>b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; } - >func2 : (x: T) => number - - var c2: { +@@= skipped -191, +191 lines =@@ >c2 : { func4(x: T): number; func4(s: T): string; func5: { (x: T): number; (s: T): string; }; } func4(x: T): number; diff --git a/testdata/baselines/reference/submodule/conformance/functionOverloadErrors.types b/testdata/baselines/reference/submodule/conformance/functionOverloadErrors.types index 02fbe7300c5..a6bc4e10717 100644 --- a/testdata/baselines/reference/submodule/conformance/functionOverloadErrors.types +++ b/testdata/baselines/reference/submodule/conformance/functionOverloadErrors.types @@ -22,15 +22,15 @@ function fn2a() { } function fn2b(n: number[]); ->fn2b : { (n: number[]): any; (n: number[]): any; } +>fn2b : { (n: number[]): any; (n: Array): any; } >n : number[] function fn2b(n: Array); ->fn2b : { (n: number[]): any; (n: number[]): any; } +>fn2b : { (n: number[]): any; (n: Array): any; } >n : number[] function fn2b() { ->fn2b : { (n: number[]): any; (n: number[]): any; } +>fn2b : { (n: number[]): any; (n: Array): any; } } //Multiple function overload signatures that differ only by return type @@ -112,14 +112,14 @@ function fn10() { } //Function overloads that differ only by type parameter constraints where constraints are structually identical function fn11(); ->fn11 : { (): any; (): any; } +>fn11 : { (): any; (): any; } function fn11(); ->fn11 : { (): any; (): any; } +>fn11 : { (): any; (): any; } >window : Window & typeof globalThis function fn11() { } ->fn11 : { (): any; (): any; } +>fn11 : { (): any; (): any; } //Function overloads that differ only by type parameter constraints where constraints include infinitely recursive type reference interface List { diff --git a/testdata/baselines/reference/submodule/conformance/functionOverloadErrors.types.diff b/testdata/baselines/reference/submodule/conformance/functionOverloadErrors.types.diff deleted file mode 100644 index 8085afa175f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/functionOverloadErrors.types.diff +++ /dev/null @@ -1,39 +0,0 @@ ---- old.functionOverloadErrors.types -+++ new.functionOverloadErrors.types -@@= skipped -21, +21 lines =@@ - - } - function fn2b(n: number[]); -->fn2b : { (n: number[]): any; (n: Array): any; } -+>fn2b : { (n: number[]): any; (n: number[]): any; } - >n : number[] - - function fn2b(n: Array); -->fn2b : { (n: number[]): any; (n: Array): any; } -+>fn2b : { (n: number[]): any; (n: number[]): any; } - >n : number[] - - function fn2b() { -->fn2b : { (n: number[]): any; (n: Array): any; } -+>fn2b : { (n: number[]): any; (n: number[]): any; } - } - - //Multiple function overload signatures that differ only by return type -@@= skipped -90, +90 lines =@@ - - //Function overloads that differ only by type parameter constraints where constraints are structually identical - function fn11(); -->fn11 : { (): any; (): any; } -+>fn11 : { (): any; (): any; } - - function fn11(); -->fn11 : { (): any; (): any; } -+>fn11 : { (): any; (): any; } - >window : Window & typeof globalThis - - function fn11() { } -->fn11 : { (): any; (): any; } -+>fn11 : { (): any; (): any; } - - //Function overloads that differ only by type parameter constraints where constraints include infinitely recursive type reference - interface List { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/functionWithMultipleReturnStatements2.types b/testdata/baselines/reference/submodule/conformance/functionWithMultipleReturnStatements2.types index 35adbc09676..ba54e465b89 100644 --- a/testdata/baselines/reference/submodule/conformance/functionWithMultipleReturnStatements2.types +++ b/testdata/baselines/reference/submodule/conformance/functionWithMultipleReturnStatements2.types @@ -91,44 +91,44 @@ function f6(x: T) { //} var a: { x: number; y?: number }; ->a : { x: number; y?: number | undefined; } +>a : { x: number; y?: number; } >x : number >y : number | undefined var b: { x: number; z?: number }; ->b : { x: number; z?: number | undefined; } +>b : { x: number; z?: number; } >x : number >z : number | undefined // returns typeof a function f9() { ->f9 : () => { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } +>f9 : () => { x: number; y?: number; } | { x: number; z?: number; } if (true) { >true : true return a; ->a : { x: number; y?: number | undefined; } +>a : { x: number; y?: number; } } else { return b; ->b : { x: number; z?: number | undefined; } +>b : { x: number; z?: number; } } } // returns typeof b function f10() { ->f10 : () => { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } +>f10 : () => { x: number; y?: number; } | { x: number; z?: number; } if (true) { >true : true return b; ->b : { x: number; z?: number | undefined; } +>b : { x: number; z?: number; } } else { return a; ->a : { x: number; y?: number | undefined; } +>a : { x: number; y?: number; } } } diff --git a/testdata/baselines/reference/submodule/conformance/functionWithMultipleReturnStatements2.types.diff b/testdata/baselines/reference/submodule/conformance/functionWithMultipleReturnStatements2.types.diff deleted file mode 100644 index 81ef338a184..00000000000 --- a/testdata/baselines/reference/submodule/conformance/functionWithMultipleReturnStatements2.types.diff +++ /dev/null @@ -1,54 +0,0 @@ ---- old.functionWithMultipleReturnStatements2.types -+++ new.functionWithMultipleReturnStatements2.types -@@= skipped -90, +90 lines =@@ - //} - - var a: { x: number; y?: number }; -->a : { x: number; y?: number; } -+>a : { x: number; y?: number | undefined; } - >x : number - >y : number | undefined - - var b: { x: number; z?: number }; -->b : { x: number; z?: number; } -+>b : { x: number; z?: number | undefined; } - >x : number - >z : number | undefined - - // returns typeof a - function f9() { -->f9 : () => { x: number; y?: number; } | { x: number; z?: number; } -+>f9 : () => { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } - - if (true) { - >true : true - - return a; -->a : { x: number; y?: number; } -+>a : { x: number; y?: number | undefined; } - - } else { - return b; -->b : { x: number; z?: number; } -+>b : { x: number; z?: number | undefined; } - } - } - - // returns typeof b - function f10() { -->f10 : () => { x: number; y?: number; } | { x: number; z?: number; } -+>f10 : () => { x: number; y?: number | undefined; } | { x: number; z?: number | undefined; } - - if (true) { - >true : true - - return b; -->b : { x: number; z?: number; } -+>b : { x: number; z?: number | undefined; } - - } else { - return a; -->a : { x: number; y?: number; } -+>a : { x: number; y?: number | undefined; } - } - } diff --git a/testdata/baselines/reference/submodule/conformance/generatedContextualTyping.types b/testdata/baselines/reference/submodule/conformance/generatedContextualTyping.types index 64a1a68da30..8d01de8831a 100644 --- a/testdata/baselines/reference/submodule/conformance/generatedContextualTyping.types +++ b/testdata/baselines/reference/submodule/conformance/generatedContextualTyping.types @@ -1054,7 +1054,7 @@ function x123(parm: () => Base[] = function named() { return [d1, d2] }) { } >d2 : Derived2 function x124(parm: { (): Base[]; } = () => [d1, d2]) { } ->x124 : (parm?: () => Base[]) => void +>x124 : (parm?: { (): Base[]; }) => void >parm : () => Base[] >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -1062,7 +1062,7 @@ function x124(parm: { (): Base[]; } = () => [d1, d2]) { } >d2 : Derived2 function x125(parm: { (): Base[]; } = function() { return [d1, d2] }) { } ->x125 : (parm?: () => Base[]) => void +>x125 : (parm?: { (): Base[]; }) => void >parm : () => Base[] >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -1070,7 +1070,7 @@ function x125(parm: { (): Base[]; } = function() { return [d1, d2] }) { } >d2 : Derived2 function x126(parm: { (): Base[]; } = function named() { return [d1, d2] }) { } ->x126 : (parm?: () => Base[]) => void +>x126 : (parm?: { (): Base[]; }) => void >parm : () => Base[] >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] @@ -1086,7 +1086,7 @@ function x127(parm: Base[] = [d1, d2]) { } >d2 : Derived2 function x128(parm: Array = [d1, d2]) { } ->x128 : (parm?: Base[]) => void +>x128 : (parm?: Array) => void >parm : Base[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -1152,21 +1152,21 @@ function x135(): () => Base[] { return function named() { return [d1, d2] }; } >d2 : Derived2 function x136(): { (): Base[]; } { return () => [d1, d2]; } ->x136 : () => () => Base[] +>x136 : () => { (): Base[]; } >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 function x137(): { (): Base[]; } { return function() { return [d1, d2] }; } ->x137 : () => () => Base[] +>x137 : () => { (): Base[]; } >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 function x138(): { (): Base[]; } { return function named() { return [d1, d2] }; } ->x138 : () => () => Base[] +>x138 : () => { (): Base[]; } >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -1180,7 +1180,7 @@ function x139(): Base[] { return [d1, d2]; } >d2 : Derived2 function x140(): Array { return [d1, d2]; } ->x140 : () => Base[] +>x140 : () => Array >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -1254,7 +1254,7 @@ function x147(): () => Base[] { return function named() { return [d1, d2] }; ret >d2 : Derived2 function x148(): { (): Base[]; } { return () => [d1, d2]; return () => [d1, d2]; } ->x148 : () => () => Base[] +>x148 : () => { (): Base[]; } >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -1265,7 +1265,7 @@ function x148(): { (): Base[]; } { return () => [d1, d2]; return () => [d1, d2]; >d2 : Derived2 function x149(): { (): Base[]; } { return function() { return [d1, d2] }; return function() { return [d1, d2] }; } ->x149 : () => () => Base[] +>x149 : () => { (): Base[]; } >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -1276,7 +1276,7 @@ function x149(): { (): Base[]; } { return function() { return [d1, d2] }; return >d2 : Derived2 function x150(): { (): Base[]; } { return function named() { return [d1, d2] }; return function named() { return [d1, d2] }; } ->x150 : () => () => Base[] +>x150 : () => { (): Base[]; } >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -1298,7 +1298,7 @@ function x151(): Base[] { return [d1, d2]; return [d1, d2]; } >d2 : Derived2 function x152(): Array { return [d1, d2]; return [d1, d2]; } ->x152 : () => Base[] +>x152 : () => Array >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -1383,7 +1383,7 @@ var x159: () => () => Base[] = () => { return function named() { return [d1, d2] >d2 : Derived2 var x160: () => { (): Base[]; } = () => { return () => [d1, d2]; }; ->x160 : () => () => Base[] +>x160 : () => { (): Base[]; } >() => { return () => [d1, d2]; } : () => () => (Derived1 | Derived2)[] >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -1391,7 +1391,7 @@ var x160: () => { (): Base[]; } = () => { return () => [d1, d2]; }; >d2 : Derived2 var x161: () => { (): Base[]; } = () => { return function() { return [d1, d2] }; }; ->x161 : () => () => Base[] +>x161 : () => { (): Base[]; } >() => { return function() { return [d1, d2] }; } : () => () => (Derived1 | Derived2)[] >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -1399,7 +1399,7 @@ var x161: () => { (): Base[]; } = () => { return function() { return [d1, d2] }; >d2 : Derived2 var x162: () => { (): Base[]; } = () => { return function named() { return [d1, d2] }; }; ->x162 : () => () => Base[] +>x162 : () => { (): Base[]; } >() => { return function named() { return [d1, d2] }; } : () => () => (Derived1 | Derived2)[] >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] @@ -1415,7 +1415,7 @@ var x163: () => Base[] = () => { return [d1, d2]; }; >d2 : Derived2 var x164: () => Array = () => { return [d1, d2]; }; ->x164 : () => Base[] +>x164 : () => Array >() => { return [d1, d2]; } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -1484,7 +1484,7 @@ var x171: () => () => Base[] = function() { return function named() { return [d1 >d2 : Derived2 var x172: () => { (): Base[]; } = function() { return () => [d1, d2]; }; ->x172 : () => () => Base[] +>x172 : () => { (): Base[]; } >function() { return () => [d1, d2]; } : () => () => (Derived1 | Derived2)[] >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -1492,7 +1492,7 @@ var x172: () => { (): Base[]; } = function() { return () => [d1, d2]; }; >d2 : Derived2 var x173: () => { (): Base[]; } = function() { return function() { return [d1, d2] }; }; ->x173 : () => () => Base[] +>x173 : () => { (): Base[]; } >function() { return function() { return [d1, d2] }; } : () => () => (Derived1 | Derived2)[] >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -1500,7 +1500,7 @@ var x173: () => { (): Base[]; } = function() { return function() { return [d1, d >d2 : Derived2 var x174: () => { (): Base[]; } = function() { return function named() { return [d1, d2] }; }; ->x174 : () => () => Base[] +>x174 : () => { (): Base[]; } >function() { return function named() { return [d1, d2] }; } : () => () => (Derived1 | Derived2)[] >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] @@ -1516,7 +1516,7 @@ var x175: () => Base[] = function() { return [d1, d2]; }; >d2 : Derived2 var x176: () => Array = function() { return [d1, d2]; }; ->x176 : () => Base[] +>x176 : () => Array >function() { return [d1, d2]; } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -2073,7 +2073,7 @@ var x239: { n: () => Base[]; } = { n: function named() { return [d1, d2] } }; >d2 : Derived2 var x240: { n: { (): Base[]; }; } = { n: () => [d1, d2] }; ->x240 : { n: () => Base[]; } +>x240 : { n: { (): Base[]; }; } >n : () => Base[] >{ n: () => [d1, d2] } : { n: () => (Derived1 | Derived2)[]; } >n : () => (Derived1 | Derived2)[] @@ -2083,7 +2083,7 @@ var x240: { n: { (): Base[]; }; } = { n: () => [d1, d2] }; >d2 : Derived2 var x241: { n: { (): Base[]; }; } = { n: function() { return [d1, d2] } }; ->x241 : { n: () => Base[]; } +>x241 : { n: { (): Base[]; }; } >n : () => Base[] >{ n: function() { return [d1, d2] } } : { n: () => (Derived1 | Derived2)[]; } >n : () => (Derived1 | Derived2)[] @@ -2093,7 +2093,7 @@ var x241: { n: { (): Base[]; }; } = { n: function() { return [d1, d2] } }; >d2 : Derived2 var x242: { n: { (): Base[]; }; } = { n: function named() { return [d1, d2] } }; ->x242 : { n: () => Base[]; } +>x242 : { n: { (): Base[]; }; } >n : () => Base[] >{ n: function named() { return [d1, d2] } } : { n: () => (Derived1 | Derived2)[]; } >n : () => (Derived1 | Derived2)[] @@ -2113,7 +2113,7 @@ var x243: { n: Base[]; } = { n: [d1, d2] }; >d2 : Derived2 var x244: { n: Array; } = { n: [d1, d2] }; ->x244 : { n: Base[]; } +>x244 : { n: Array; } >n : Base[] >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } >n : (Derived1 | Derived2)[] @@ -2925,30 +2925,30 @@ function x323(n: () => Base[]) { }; x323(function named() { return [d1, d2] }); >d2 : Derived2 function x324(n: { (): Base[]; }) { }; x324(() => [d1, d2]); ->x324 : (n: () => Base[]) => void +>x324 : (n: { (): Base[]; }) => void >n : () => Base[] >x324(() => [d1, d2]) : void ->x324 : (n: () => Base[]) => void +>x324 : (n: { (): Base[]; }) => void >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 function x325(n: { (): Base[]; }) { }; x325(function() { return [d1, d2] }); ->x325 : (n: () => Base[]) => void +>x325 : (n: { (): Base[]; }) => void >n : () => Base[] >x325(function() { return [d1, d2] }) : void ->x325 : (n: () => Base[]) => void +>x325 : (n: { (): Base[]; }) => void >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 function x326(n: { (): Base[]; }) { }; x326(function named() { return [d1, d2] }); ->x326 : (n: () => Base[]) => void +>x326 : (n: { (): Base[]; }) => void >n : () => Base[] >x326(function named() { return [d1, d2] }) : void ->x326 : (n: () => Base[]) => void +>x326 : (n: { (): Base[]; }) => void >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -2965,10 +2965,10 @@ function x327(n: Base[]) { }; x327([d1, d2]); >d2 : Derived2 function x328(n: Array) { }; x328([d1, d2]); ->x328 : (n: Base[]) => void +>x328 : (n: Array) => void >n : Base[] >x328([d1, d2]) : void ->x328 : (n: Base[]) => void +>x328 : (n: Array) => void >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -3056,36 +3056,36 @@ var x335 = (n: () => Base[]) => n; x335(function named() { return [d1, d2] }); >d2 : Derived2 var x336 = (n: { (): Base[]; }) => n; x336(() => [d1, d2]); ->x336 : (n: () => Base[]) => () => Base[] ->(n: { (): Base[]; }) => n : (n: () => Base[]) => () => Base[] +>x336 : (n: { (): Base[]; }) => () => Base[] +>(n: { (): Base[]; }) => n : (n: { (): Base[]; }) => () => Base[] >n : () => Base[] >n : () => Base[] >x336(() => [d1, d2]) : () => Base[] ->x336 : (n: () => Base[]) => () => Base[] +>x336 : (n: { (): Base[]; }) => () => Base[] >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 var x337 = (n: { (): Base[]; }) => n; x337(function() { return [d1, d2] }); ->x337 : (n: () => Base[]) => () => Base[] ->(n: { (): Base[]; }) => n : (n: () => Base[]) => () => Base[] +>x337 : (n: { (): Base[]; }) => () => Base[] +>(n: { (): Base[]; }) => n : (n: { (): Base[]; }) => () => Base[] >n : () => Base[] >n : () => Base[] >x337(function() { return [d1, d2] }) : () => Base[] ->x337 : (n: () => Base[]) => () => Base[] +>x337 : (n: { (): Base[]; }) => () => Base[] >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 var x338 = (n: { (): Base[]; }) => n; x338(function named() { return [d1, d2] }); ->x338 : (n: () => Base[]) => () => Base[] ->(n: { (): Base[]; }) => n : (n: () => Base[]) => () => Base[] +>x338 : (n: { (): Base[]; }) => () => Base[] +>(n: { (): Base[]; }) => n : (n: { (): Base[]; }) => () => Base[] >n : () => Base[] >n : () => Base[] >x338(function named() { return [d1, d2] }) : () => Base[] ->x338 : (n: () => Base[]) => () => Base[] +>x338 : (n: { (): Base[]; }) => () => Base[] >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -3104,12 +3104,12 @@ var x339 = (n: Base[]) => n; x339([d1, d2]); >d2 : Derived2 var x340 = (n: Array) => n; x340([d1, d2]); ->x340 : (n: Base[]) => Base[] ->(n: Array) => n : (n: Base[]) => Base[] +>x340 : (n: Array) => Base[] +>(n: Array) => n : (n: Array) => Base[] >n : Base[] >n : Base[] >x340([d1, d2]) : Base[] ->x340 : (n: Base[]) => Base[] +>x340 : (n: Array) => Base[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -3202,33 +3202,33 @@ var x347 = function(n: () => Base[]) { }; x347(function named() { return [d1, d2 >d2 : Derived2 var x348 = function(n: { (): Base[]; }) { }; x348(() => [d1, d2]); ->x348 : (n: () => Base[]) => void ->function(n: { (): Base[]; }) { } : (n: () => Base[]) => void +>x348 : (n: { (): Base[]; }) => void +>function(n: { (): Base[]; }) { } : (n: { (): Base[]; }) => void >n : () => Base[] >x348(() => [d1, d2]) : void ->x348 : (n: () => Base[]) => void +>x348 : (n: { (): Base[]; }) => void >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 var x349 = function(n: { (): Base[]; }) { }; x349(function() { return [d1, d2] }); ->x349 : (n: () => Base[]) => void ->function(n: { (): Base[]; }) { } : (n: () => Base[]) => void +>x349 : (n: { (): Base[]; }) => void +>function(n: { (): Base[]; }) { } : (n: { (): Base[]; }) => void >n : () => Base[] >x349(function() { return [d1, d2] }) : void ->x349 : (n: () => Base[]) => void +>x349 : (n: { (): Base[]; }) => void >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 var x350 = function(n: { (): Base[]; }) { }; x350(function named() { return [d1, d2] }); ->x350 : (n: () => Base[]) => void ->function(n: { (): Base[]; }) { } : (n: () => Base[]) => void +>x350 : (n: { (): Base[]; }) => void +>function(n: { (): Base[]; }) { } : (n: { (): Base[]; }) => void >n : () => Base[] >x350(function named() { return [d1, d2] }) : void ->x350 : (n: () => Base[]) => void +>x350 : (n: { (): Base[]; }) => void >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -3246,11 +3246,11 @@ var x351 = function(n: Base[]) { }; x351([d1, d2]); >d2 : Derived2 var x352 = function(n: Array) { }; x352([d1, d2]); ->x352 : (n: Base[]) => void ->function(n: Array) { } : (n: Base[]) => void +>x352 : (n: Array) => void +>function(n: Array) { } : (n: Array) => void >n : Base[] >x352([d1, d2]) : void ->x352 : (n: Base[]) => void +>x352 : (n: Array) => void >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 diff --git a/testdata/baselines/reference/submodule/conformance/generatedContextualTyping.types.diff b/testdata/baselines/reference/submodule/conformance/generatedContextualTyping.types.diff deleted file mode 100644 index a8556b90ae6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/generatedContextualTyping.types.diff +++ /dev/null @@ -1,386 +0,0 @@ ---- old.generatedContextualTyping.types -+++ new.generatedContextualTyping.types -@@= skipped -1053, +1053 lines =@@ - >d2 : Derived2 - - function x124(parm: { (): Base[]; } = () => [d1, d2]) { } -->x124 : (parm?: { (): Base[]; }) => void -+>x124 : (parm?: () => Base[]) => void - >parm : () => Base[] - >() => [d1, d2] : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -8, +8 lines =@@ - >d2 : Derived2 - - function x125(parm: { (): Base[]; } = function() { return [d1, d2] }) { } -->x125 : (parm?: { (): Base[]; }) => void -+>x125 : (parm?: () => Base[]) => void - >parm : () => Base[] - >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -8, +8 lines =@@ - >d2 : Derived2 - - function x126(parm: { (): Base[]; } = function named() { return [d1, d2] }) { } -->x126 : (parm?: { (): Base[]; }) => void -+>x126 : (parm?: () => Base[]) => void - >parm : () => Base[] - >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >named : () => (Derived1 | Derived2)[] -@@= skipped -16, +16 lines =@@ - >d2 : Derived2 - - function x128(parm: Array = [d1, d2]) { } -->x128 : (parm?: Array) => void -+>x128 : (parm?: Base[]) => void - >parm : Base[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 -@@= skipped -66, +66 lines =@@ - >d2 : Derived2 - - function x136(): { (): Base[]; } { return () => [d1, d2]; } -->x136 : () => { (): Base[]; } -+>x136 : () => () => Base[] - >() => [d1, d2] : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 - - function x137(): { (): Base[]; } { return function() { return [d1, d2] }; } -->x137 : () => { (): Base[]; } -+>x137 : () => () => Base[] - >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 - - function x138(): { (): Base[]; } { return function named() { return [d1, d2] }; } -->x138 : () => { (): Base[]; } -+>x138 : () => () => Base[] - >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >named : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -28, +28 lines =@@ - >d2 : Derived2 - - function x140(): Array { return [d1, d2]; } -->x140 : () => Array -+>x140 : () => Base[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 -@@= skipped -74, +74 lines =@@ - >d2 : Derived2 - - function x148(): { (): Base[]; } { return () => [d1, d2]; return () => [d1, d2]; } -->x148 : () => { (): Base[]; } -+>x148 : () => () => Base[] - >() => [d1, d2] : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 -@@= skipped -11, +11 lines =@@ - >d2 : Derived2 - - function x149(): { (): Base[]; } { return function() { return [d1, d2] }; return function() { return [d1, d2] }; } -->x149 : () => { (): Base[]; } -+>x149 : () => () => Base[] - >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 -@@= skipped -11, +11 lines =@@ - >d2 : Derived2 - - function x150(): { (): Base[]; } { return function named() { return [d1, d2] }; return function named() { return [d1, d2] }; } -->x150 : () => { (): Base[]; } -+>x150 : () => () => Base[] - >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >named : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -22, +22 lines =@@ - >d2 : Derived2 - - function x152(): Array { return [d1, d2]; return [d1, d2]; } -->x152 : () => Array -+>x152 : () => Base[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 -@@= skipped -85, +85 lines =@@ - >d2 : Derived2 - - var x160: () => { (): Base[]; } = () => { return () => [d1, d2]; }; -->x160 : () => { (): Base[]; } -+>x160 : () => () => Base[] - >() => { return () => [d1, d2]; } : () => () => (Derived1 | Derived2)[] - >() => [d1, d2] : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -8, +8 lines =@@ - >d2 : Derived2 - - var x161: () => { (): Base[]; } = () => { return function() { return [d1, d2] }; }; -->x161 : () => { (): Base[]; } -+>x161 : () => () => Base[] - >() => { return function() { return [d1, d2] }; } : () => () => (Derived1 | Derived2)[] - >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -8, +8 lines =@@ - >d2 : Derived2 - - var x162: () => { (): Base[]; } = () => { return function named() { return [d1, d2] }; }; -->x162 : () => { (): Base[]; } -+>x162 : () => () => Base[] - >() => { return function named() { return [d1, d2] }; } : () => () => (Derived1 | Derived2)[] - >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >named : () => (Derived1 | Derived2)[] -@@= skipped -16, +16 lines =@@ - >d2 : Derived2 - - var x164: () => Array = () => { return [d1, d2]; }; -->x164 : () => Array -+>x164 : () => Base[] - >() => { return [d1, d2]; } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 -@@= skipped -69, +69 lines =@@ - >d2 : Derived2 - - var x172: () => { (): Base[]; } = function() { return () => [d1, d2]; }; -->x172 : () => { (): Base[]; } -+>x172 : () => () => Base[] - >function() { return () => [d1, d2]; } : () => () => (Derived1 | Derived2)[] - >() => [d1, d2] : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -8, +8 lines =@@ - >d2 : Derived2 - - var x173: () => { (): Base[]; } = function() { return function() { return [d1, d2] }; }; -->x173 : () => { (): Base[]; } -+>x173 : () => () => Base[] - >function() { return function() { return [d1, d2] }; } : () => () => (Derived1 | Derived2)[] - >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -8, +8 lines =@@ - >d2 : Derived2 - - var x174: () => { (): Base[]; } = function() { return function named() { return [d1, d2] }; }; -->x174 : () => { (): Base[]; } -+>x174 : () => () => Base[] - >function() { return function named() { return [d1, d2] }; } : () => () => (Derived1 | Derived2)[] - >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >named : () => (Derived1 | Derived2)[] -@@= skipped -16, +16 lines =@@ - >d2 : Derived2 - - var x176: () => Array = function() { return [d1, d2]; }; -->x176 : () => Array -+>x176 : () => Base[] - >function() { return [d1, d2]; } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 -@@= skipped -557, +557 lines =@@ - >d2 : Derived2 - - var x240: { n: { (): Base[]; }; } = { n: () => [d1, d2] }; -->x240 : { n: { (): Base[]; }; } -+>x240 : { n: () => Base[]; } - >n : () => Base[] - >{ n: () => [d1, d2] } : { n: () => (Derived1 | Derived2)[]; } - >n : () => (Derived1 | Derived2)[] -@@= skipped -10, +10 lines =@@ - >d2 : Derived2 - - var x241: { n: { (): Base[]; }; } = { n: function() { return [d1, d2] } }; -->x241 : { n: { (): Base[]; }; } -+>x241 : { n: () => Base[]; } - >n : () => Base[] - >{ n: function() { return [d1, d2] } } : { n: () => (Derived1 | Derived2)[]; } - >n : () => (Derived1 | Derived2)[] -@@= skipped -10, +10 lines =@@ - >d2 : Derived2 - - var x242: { n: { (): Base[]; }; } = { n: function named() { return [d1, d2] } }; -->x242 : { n: { (): Base[]; }; } -+>x242 : { n: () => Base[]; } - >n : () => Base[] - >{ n: function named() { return [d1, d2] } } : { n: () => (Derived1 | Derived2)[]; } - >n : () => (Derived1 | Derived2)[] -@@= skipped -20, +20 lines =@@ - >d2 : Derived2 - - var x244: { n: Array; } = { n: [d1, d2] }; -->x244 : { n: Array; } -+>x244 : { n: Base[]; } - >n : Base[] - >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } - >n : (Derived1 | Derived2)[] -@@= skipped -812, +812 lines =@@ - >d2 : Derived2 - - function x324(n: { (): Base[]; }) { }; x324(() => [d1, d2]); -->x324 : (n: { (): Base[]; }) => void -+>x324 : (n: () => Base[]) => void - >n : () => Base[] - >x324(() => [d1, d2]) : void -->x324 : (n: { (): Base[]; }) => void -+>x324 : (n: () => Base[]) => void - >() => [d1, d2] : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 - - function x325(n: { (): Base[]; }) { }; x325(function() { return [d1, d2] }); -->x325 : (n: { (): Base[]; }) => void -+>x325 : (n: () => Base[]) => void - >n : () => Base[] - >x325(function() { return [d1, d2] }) : void -->x325 : (n: { (): Base[]; }) => void -+>x325 : (n: () => Base[]) => void - >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 - - function x326(n: { (): Base[]; }) { }; x326(function named() { return [d1, d2] }); -->x326 : (n: { (): Base[]; }) => void -+>x326 : (n: () => Base[]) => void - >n : () => Base[] - >x326(function named() { return [d1, d2] }) : void -->x326 : (n: { (): Base[]; }) => void -+>x326 : (n: () => Base[]) => void - >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >named : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -40, +40 lines =@@ - >d2 : Derived2 - - function x328(n: Array) { }; x328([d1, d2]); -->x328 : (n: Array) => void -+>x328 : (n: Base[]) => void - >n : Base[] - >x328([d1, d2]) : void -->x328 : (n: Array) => void -+>x328 : (n: Base[]) => void - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 -@@= skipped -91, +91 lines =@@ - >d2 : Derived2 - - var x336 = (n: { (): Base[]; }) => n; x336(() => [d1, d2]); -->x336 : (n: { (): Base[]; }) => () => Base[] -->(n: { (): Base[]; }) => n : (n: { (): Base[]; }) => () => Base[] -+>x336 : (n: () => Base[]) => () => Base[] -+>(n: { (): Base[]; }) => n : (n: () => Base[]) => () => Base[] - >n : () => Base[] - >n : () => Base[] - >x336(() => [d1, d2]) : () => Base[] -->x336 : (n: { (): Base[]; }) => () => Base[] -+>x336 : (n: () => Base[]) => () => Base[] - >() => [d1, d2] : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 - - var x337 = (n: { (): Base[]; }) => n; x337(function() { return [d1, d2] }); -->x337 : (n: { (): Base[]; }) => () => Base[] -->(n: { (): Base[]; }) => n : (n: { (): Base[]; }) => () => Base[] -+>x337 : (n: () => Base[]) => () => Base[] -+>(n: { (): Base[]; }) => n : (n: () => Base[]) => () => Base[] - >n : () => Base[] - >n : () => Base[] - >x337(function() { return [d1, d2] }) : () => Base[] -->x337 : (n: { (): Base[]; }) => () => Base[] -+>x337 : (n: () => Base[]) => () => Base[] - >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 - - var x338 = (n: { (): Base[]; }) => n; x338(function named() { return [d1, d2] }); -->x338 : (n: { (): Base[]; }) => () => Base[] -->(n: { (): Base[]; }) => n : (n: { (): Base[]; }) => () => Base[] -+>x338 : (n: () => Base[]) => () => Base[] -+>(n: { (): Base[]; }) => n : (n: () => Base[]) => () => Base[] - >n : () => Base[] - >n : () => Base[] - >x338(function named() { return [d1, d2] }) : () => Base[] -->x338 : (n: { (): Base[]; }) => () => Base[] -+>x338 : (n: () => Base[]) => () => Base[] - >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >named : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -48, +48 lines =@@ - >d2 : Derived2 - - var x340 = (n: Array) => n; x340([d1, d2]); -->x340 : (n: Array) => Base[] -->(n: Array) => n : (n: Array) => Base[] -+>x340 : (n: Base[]) => Base[] -+>(n: Array) => n : (n: Base[]) => Base[] - >n : Base[] - >n : Base[] - >x340([d1, d2]) : Base[] -->x340 : (n: Array) => Base[] -+>x340 : (n: Base[]) => Base[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 -@@= skipped -98, +98 lines =@@ - >d2 : Derived2 - - var x348 = function(n: { (): Base[]; }) { }; x348(() => [d1, d2]); -->x348 : (n: { (): Base[]; }) => void -->function(n: { (): Base[]; }) { } : (n: { (): Base[]; }) => void -+>x348 : (n: () => Base[]) => void -+>function(n: { (): Base[]; }) { } : (n: () => Base[]) => void - >n : () => Base[] - >x348(() => [d1, d2]) : void -->x348 : (n: { (): Base[]; }) => void -+>x348 : (n: () => Base[]) => void - >() => [d1, d2] : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 - - var x349 = function(n: { (): Base[]; }) { }; x349(function() { return [d1, d2] }); -->x349 : (n: { (): Base[]; }) => void -->function(n: { (): Base[]; }) { } : (n: { (): Base[]; }) => void -+>x349 : (n: () => Base[]) => void -+>function(n: { (): Base[]; }) { } : (n: () => Base[]) => void - >n : () => Base[] - >x349(function() { return [d1, d2] }) : void -->x349 : (n: { (): Base[]; }) => void -+>x349 : (n: () => Base[]) => void - >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 - - var x350 = function(n: { (): Base[]; }) { }; x350(function named() { return [d1, d2] }); -->x350 : (n: { (): Base[]; }) => void -->function(n: { (): Base[]; }) { } : (n: { (): Base[]; }) => void -+>x350 : (n: () => Base[]) => void -+>function(n: { (): Base[]; }) { } : (n: () => Base[]) => void - >n : () => Base[] - >x350(function named() { return [d1, d2] }) : void -->x350 : (n: { (): Base[]; }) => void -+>x350 : (n: () => Base[]) => void - >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] - >named : () => (Derived1 | Derived2)[] - >[d1, d2] : (Derived1 | Derived2)[] -@@= skipped -44, +44 lines =@@ - >d2 : Derived2 - - var x352 = function(n: Array) { }; x352([d1, d2]); -->x352 : (n: Array) => void -->function(n: Array) { } : (n: Array) => void -+>x352 : (n: Base[]) => void -+>function(n: Array) { } : (n: Base[]) => void - >n : Base[] - >x352([d1, d2]) : void -->x352 : (n: Array) => void -+>x352 : (n: Base[]) => void - >[d1, d2] : (Derived1 | Derived2)[] - >d1 : Derived1 - >d2 : Derived2 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.errors.txt b/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.errors.txt index c4b65c6fdea..70c086d4e0e 100644 --- a/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.errors.txt @@ -1,7 +1,7 @@ -generatorReturnContextualType.ts(29,3): error TS2322: Type '{ x: string; }' is not assignable to type '{ x: "x"; }'. +generatorReturnContextualType.ts(29,3): error TS2322: Type '{ x: string; }' is not assignable to type '{ x: 'x'; }'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '"x"'. -generatorReturnContextualType.ts(34,3): error TS2322: Type '{ x: string; }' is not assignable to type '{ x: "x"; }'. +generatorReturnContextualType.ts(34,3): error TS2322: Type '{ x: string; }' is not assignable to type '{ x: 'x'; }'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '"x"'. @@ -37,7 +37,7 @@ generatorReturnContextualType.ts(34,3): error TS2322: Type '{ x: string; }' is n const ret = { x: 'x' }; return Promise.resolve(ret); // Error ~~~~~~ -!!! error TS2322: Type '{ x: string; }' is not assignable to type '{ x: "x"; }'. +!!! error TS2322: Type '{ x: string; }' is not assignable to type '{ x: 'x'; }'. !!! error TS2322: Types of property 'x' are incompatible. !!! error TS2322: Type 'string' is not assignable to type '"x"'. } @@ -46,7 +46,7 @@ generatorReturnContextualType.ts(34,3): error TS2322: Type '{ x: string; }' is n const ret = { x: 'x' }; return Promise.resolve(ret); // Error ~~~~~~ -!!! error TS2322: Type '{ x: string; }' is not assignable to type '{ x: "x"; }'. +!!! error TS2322: Type '{ x: string; }' is not assignable to type '{ x: 'x'; }'. !!! error TS2322: Types of property 'x' are incompatible. !!! error TS2322: Type 'string' is not assignable to type '"x"'. } diff --git a/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.errors.txt.diff new file mode 100644 index 00000000000..84b82dfad61 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.errors.txt.diff @@ -0,0 +1,30 @@ +--- old.generatorReturnContextualType.errors.txt ++++ new.generatorReturnContextualType.errors.txt +@@= skipped -0, +0 lines =@@ +-generatorReturnContextualType.ts(29,3): error TS2322: Type '{ x: string; }' is not assignable to type '{ x: "x"; }'. ++generatorReturnContextualType.ts(29,3): error TS2322: Type '{ x: string; }' is not assignable to type '{ x: 'x'; }'. + Types of property 'x' are incompatible. + Type 'string' is not assignable to type '"x"'. +-generatorReturnContextualType.ts(34,3): error TS2322: Type '{ x: string; }' is not assignable to type '{ x: "x"; }'. ++generatorReturnContextualType.ts(34,3): error TS2322: Type '{ x: string; }' is not assignable to type '{ x: 'x'; }'. + Types of property 'x' are incompatible. + Type 'string' is not assignable to type '"x"'. + +@@= skipped -36, +36 lines =@@ + const ret = { x: 'x' }; + return Promise.resolve(ret); // Error + ~~~~~~ +-!!! error TS2322: Type '{ x: string; }' is not assignable to type '{ x: "x"; }'. ++!!! error TS2322: Type '{ x: string; }' is not assignable to type '{ x: 'x'; }'. + !!! error TS2322: Types of property 'x' are incompatible. + !!! error TS2322: Type 'string' is not assignable to type '"x"'. + } +@@= skipped -9, +9 lines =@@ + const ret = { x: 'x' }; + return Promise.resolve(ret); // Error + ~~~~~~ +-!!! error TS2322: Type '{ x: string; }' is not assignable to type '{ x: "x"; }'. ++!!! error TS2322: Type '{ x: string; }' is not assignable to type '{ x: 'x'; }'. + !!! error TS2322: Types of property 'x' are incompatible. + !!! error TS2322: Type 'string' is not assignable to type '"x"'. + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.types b/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.types index ec9c0d3abd2..d9f3865a72e 100644 --- a/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.types +++ b/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.types @@ -4,7 +4,7 @@ // #35995 function* f1(): Generator { ->f1 : () => Generator +>f1 : () => Generator >x : "x" return { x: 'x' }; @@ -14,7 +14,7 @@ function* f1(): Generator { } function* g1(): Iterator { ->g1 : () => Iterator +>g1 : () => Iterator >x : "x" return { x: 'x' }; @@ -24,7 +24,7 @@ function* g1(): Iterator { } async function* f2(): AsyncGenerator { ->f2 : () => AsyncGenerator +>f2 : () => AsyncGenerator >x : "x" return { x: 'x' }; @@ -34,7 +34,7 @@ async function* f2(): AsyncGenerator { } async function* g2(): AsyncIterator { ->g2 : () => AsyncIterator +>g2 : () => AsyncIterator >x : "x" return { x: 'x' }; @@ -44,7 +44,7 @@ async function* g2(): AsyncIterator { } async function* f3(): AsyncGenerator { ->f3 : () => AsyncGenerator +>f3 : () => AsyncGenerator >x : "x" return Promise.resolve({ x: 'x' }); @@ -58,7 +58,7 @@ async function* f3(): AsyncGenerator { } async function* g3(): AsyncIterator { ->g3 : () => AsyncIterator +>g3 : () => AsyncIterator >x : "x" return Promise.resolve({ x: 'x' }); @@ -72,7 +72,7 @@ async function* g3(): AsyncIterator { } async function* f4(): AsyncGenerator { ->f4 : () => AsyncGenerator +>f4 : () => AsyncGenerator >x : "x" const ret = { x: 'x' }; @@ -90,7 +90,7 @@ async function* f4(): AsyncGenerator { } async function* g4(): AsyncIterator { ->g4 : () => AsyncIterator +>g4 : () => AsyncIterator >x : "x" const ret = { x: 'x' }; diff --git a/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.types.diff b/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.types.diff new file mode 100644 index 00000000000..f83d48bc524 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/generatorReturnContextualType.types.diff @@ -0,0 +1,74 @@ +--- old.generatorReturnContextualType.types ++++ new.generatorReturnContextualType.types +@@= skipped -3, +3 lines =@@ + // #35995 + + function* f1(): Generator { +->f1 : () => Generator ++>f1 : () => Generator + >x : "x" + + return { x: 'x' }; +@@= skipped -10, +10 lines =@@ + } + + function* g1(): Iterator { +->g1 : () => Iterator ++>g1 : () => Iterator + >x : "x" + + return { x: 'x' }; +@@= skipped -10, +10 lines =@@ + } + + async function* f2(): AsyncGenerator { +->f2 : () => AsyncGenerator ++>f2 : () => AsyncGenerator + >x : "x" + + return { x: 'x' }; +@@= skipped -10, +10 lines =@@ + } + + async function* g2(): AsyncIterator { +->g2 : () => AsyncIterator ++>g2 : () => AsyncIterator + >x : "x" + + return { x: 'x' }; +@@= skipped -10, +10 lines =@@ + } + + async function* f3(): AsyncGenerator { +->f3 : () => AsyncGenerator ++>f3 : () => AsyncGenerator + >x : "x" + + return Promise.resolve({ x: 'x' }); +@@= skipped -14, +14 lines =@@ + } + + async function* g3(): AsyncIterator { +->g3 : () => AsyncIterator ++>g3 : () => AsyncIterator + >x : "x" + + return Promise.resolve({ x: 'x' }); +@@= skipped -14, +14 lines =@@ + } + + async function* f4(): AsyncGenerator { +->f4 : () => AsyncGenerator ++>f4 : () => AsyncGenerator + >x : "x" + + const ret = { x: 'x' }; +@@= skipped -18, +18 lines =@@ + } + + async function* g4(): AsyncIterator { +->g4 : () => AsyncIterator ++>g4 : () => AsyncIterator + >x : "x" + + const ret = { x: 'x' }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck1.types b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck1.types index cbffa51bd12..0df3552dbd5 100644 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck1.types +++ b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck1.types @@ -2,5 +2,5 @@ === generatorTypeCheck1.ts === function* g1(): Iterator { } ->g1 : () => Iterator +>g1 : () => Iterator diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck1.types.diff b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck1.types.diff deleted file mode 100644 index ec7b13baded..00000000000 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck1.types.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.generatorTypeCheck1.types -+++ new.generatorTypeCheck1.types -@@= skipped -1, +1 lines =@@ - - === generatorTypeCheck1.ts === - function* g1(): Iterator { } -->g1 : () => Iterator -+>g1 : () => Iterator diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck29.types b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck29.types index 180354c71d4..fc03f98cb98 100644 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck29.types +++ b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck29.types @@ -2,7 +2,7 @@ === generatorTypeCheck29.ts === function* g2(): Iterator number>> { ->g2 : () => Iterator number>, any, any> +>g2 : () => Iterator number>> >x : string yield function* () { diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck29.types.diff b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck29.types.diff deleted file mode 100644 index f2ac48e3310..00000000000 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck29.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.generatorTypeCheck29.types -+++ new.generatorTypeCheck29.types -@@= skipped -1, +1 lines =@@ - - === generatorTypeCheck29.ts === - function* g2(): Iterator number>> { -->g2 : () => Iterator number>> -+>g2 : () => Iterator number>, any, any> - >x : string - - yield function* () { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck30.types b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck30.types index a7e45baa3c6..2aab53a34f8 100644 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck30.types +++ b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck30.types @@ -2,7 +2,7 @@ === generatorTypeCheck30.ts === function* g2(): Iterator number>> { ->g2 : () => Iterator number>, any, any> +>g2 : () => Iterator number>> >x : string yield function* () { diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck30.types.diff b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck30.types.diff deleted file mode 100644 index c5b00ff2892..00000000000 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck30.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.generatorTypeCheck30.types -+++ new.generatorTypeCheck30.types -@@= skipped -1, +1 lines =@@ - - === generatorTypeCheck30.ts === - function* g2(): Iterator number>> { -->g2 : () => Iterator number>> -+>g2 : () => Iterator number>, any, any> - >x : string - - yield function* () { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck31.types b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck31.types index 5969f2522b8..98625a1a0e7 100644 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck31.types +++ b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck31.types @@ -2,7 +2,7 @@ === generatorTypeCheck31.ts === function* g2(): Iterator<() => Iterable<(x: string) => number>> { ->g2 : () => Iterator<() => Iterable<(x: string) => number>, any, any> +>g2 : () => Iterator<() => Iterable<(x: string) => number>> >x : string yield function* () { diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck31.types.diff b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck31.types.diff deleted file mode 100644 index 78937bb131e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck31.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.generatorTypeCheck31.types -+++ new.generatorTypeCheck31.types -@@= skipped -1, +1 lines =@@ - - === generatorTypeCheck31.ts === - function* g2(): Iterator<() => Iterable<(x: string) => number>> { -->g2 : () => Iterator<() => Iterable<(x: string) => number>> -+>g2 : () => Iterator<() => Iterable<(x: string) => number>, any, any> - >x : string - - yield function* () { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck45.types b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck45.types index ae682388815..b9b50c7d507 100644 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck45.types +++ b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck45.types @@ -2,16 +2,16 @@ === generatorTypeCheck45.ts === declare function foo(x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T): T; ->foo : (x: T, fun: () => Iterator<(x: T) => U, any, any>, fun2: (y: U) => T) => T +>foo : (x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T) => T >x : T ->fun : () => Iterator<(x: T) => U, any, any> +>fun : () => Iterator<(x: T) => U> >x : T >fun2 : (y: U) => T >y : U foo("", function* () { yield x => x.length }, p => undefined); // T is fixed, should be string >foo("", function* () { yield x => x.length }, p => undefined) : string ->foo : (x: T, fun: () => Iterator<(x: T) => U, any, any>, fun2: (y: U) => T) => T +>foo : (x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T) => T >"" : "" >function* () { yield x => x.length } : () => Generator<(x: string) => number, void, any> >yield x => x.length : any diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck45.types.diff b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck45.types.diff deleted file mode 100644 index b393746aede..00000000000 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck45.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.generatorTypeCheck45.types -+++ new.generatorTypeCheck45.types -@@= skipped -1, +1 lines =@@ - - === generatorTypeCheck45.ts === - declare function foo(x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T): T; -->foo : (x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T) => T -+>foo : (x: T, fun: () => Iterator<(x: T) => U, any, any>, fun2: (y: U) => T) => T - >x : T -->fun : () => Iterator<(x: T) => U> -+>fun : () => Iterator<(x: T) => U, any, any> - >x : T - >fun2 : (y: U) => T - >y : U - - foo("", function* () { yield x => x.length }, p => undefined); // T is fixed, should be string - >foo("", function* () { yield x => x.length }, p => undefined) : string -->foo : (x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T) => T -+>foo : (x: T, fun: () => Iterator<(x: T) => U, any, any>, fun2: (y: U) => T) => T - >"" : "" - >function* () { yield x => x.length } : () => Generator<(x: string) => number, void, any> - >yield x => x.length : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck64.types b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck64.types index 53756223716..cb744f9efac 100644 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck64.types +++ b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck64.types @@ -2,7 +2,7 @@ === generatorTypeCheck64.ts === function* g3(): Generator number>> { ->g3 : () => Generator number, any, any>, any, any> +>g3 : () => Generator number>> >x : string yield function* () { @@ -22,7 +22,7 @@ function* g3(): Generator number>> { } function* g4(): Iterator number>> { ->g4 : () => Iterator number>, any, any> +>g4 : () => Iterator number>> >x : string yield (function* () { diff --git a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck64.types.diff b/testdata/baselines/reference/submodule/conformance/generatorTypeCheck64.types.diff deleted file mode 100644 index b6209891268..00000000000 --- a/testdata/baselines/reference/submodule/conformance/generatorTypeCheck64.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.generatorTypeCheck64.types -+++ new.generatorTypeCheck64.types -@@= skipped -1, +1 lines =@@ - - === generatorTypeCheck64.ts === - function* g3(): Generator number>> { -->g3 : () => Generator number>> -+>g3 : () => Generator number, any, any>, any, any> - >x : string - - yield function* () { -@@= skipped -20, +20 lines =@@ - } - - function* g4(): Iterator number>> { -->g4 : () => Iterator number>> -+>g4 : () => Iterator number>, any, any> - >x : string - - yield (function* () { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/generatorYieldContextualType.types b/testdata/baselines/reference/submodule/conformance/generatorYieldContextualType.types index 7d35292e3a1..cef84f1d949 100644 --- a/testdata/baselines/reference/submodule/conformance/generatorYieldContextualType.types +++ b/testdata/baselines/reference/submodule/conformance/generatorYieldContextualType.types @@ -21,12 +21,12 @@ f1<0, 0, 1>(function* () { }); declare function f2(gen: () => Generator | AsyncGenerator): void; ->f2 : (gen: () => AsyncGenerator | Generator) => void ->gen : () => AsyncGenerator | Generator +>f2 : (gen: () => Generator | AsyncGenerator) => void +>gen : () => Generator | AsyncGenerator f2<0, 0, 1>(async function* () { >f2<0, 0, 1>(async function* () { const a = yield 0; return 0;}) : void ->f2 : (gen: () => AsyncGenerator | Generator) => void +>f2 : (gen: () => Generator | AsyncGenerator) => void >async function* () { const a = yield 0; return 0;} : () => AsyncGenerator<0, 0, 1> const a = yield 0; @@ -60,7 +60,7 @@ namespace Directive { >Directive : typeof Directive export function is(value: Directive | T): value is Directive { ->is : (value: T | Directive) => value is Directive +>is : (value: Directive | T) => value is Directive >value : T | Directive return typeof value === "number" && Directive[value] != null; @@ -192,7 +192,7 @@ type StepState> = T & { }; function canPickStepContinue( ->canPickStepContinue : >(_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType +>canPickStepContinue : (_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType _step: T, >_step : T @@ -220,7 +220,7 @@ function createPickStep( } function* showStep< ->showStep : & { counter: number; confirm?: boolean | undefined; startingStep?: number | undefined; } & { repo: any; }, Context extends { repos: any[]; title: string; status: any; }>(state: State, _context: Context) => StepResultGenerator +>showStep : (state: State, _context: Context) => StepResultGenerator State extends PartialStepState & { repo: any }, >repo : any @@ -258,7 +258,7 @@ function* showStep< return canPickStepContinue(step, state, selection) >canPickStepContinue(step, state, selection) ? selection[0] : StepResult.Break : unique symbol | QuickPickItem >canPickStepContinue(step, state, selection) : boolean ->canPickStepContinue : >(_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType +>canPickStepContinue : (_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType >step : QuickPickStep >state : State >selection : QuickPickItem[] | Directive diff --git a/testdata/baselines/reference/submodule/conformance/generatorYieldContextualType.types.diff b/testdata/baselines/reference/submodule/conformance/generatorYieldContextualType.types.diff deleted file mode 100644 index e741d04cadf..00000000000 --- a/testdata/baselines/reference/submodule/conformance/generatorYieldContextualType.types.diff +++ /dev/null @@ -1,54 +0,0 @@ ---- old.generatorYieldContextualType.types -+++ new.generatorYieldContextualType.types -@@= skipped -20, +20 lines =@@ - }); - - declare function f2(gen: () => Generator | AsyncGenerator): void; -->f2 : (gen: () => Generator | AsyncGenerator) => void -->gen : () => Generator | AsyncGenerator -+>f2 : (gen: () => AsyncGenerator | Generator) => void -+>gen : () => AsyncGenerator | Generator - - f2<0, 0, 1>(async function* () { - >f2<0, 0, 1>(async function* () { const a = yield 0; return 0;}) : void -->f2 : (gen: () => Generator | AsyncGenerator) => void -+>f2 : (gen: () => AsyncGenerator | Generator) => void - >async function* () { const a = yield 0; return 0;} : () => AsyncGenerator<0, 0, 1> - - const a = yield 0; -@@= skipped -39, +39 lines =@@ - >Directive : typeof Directive - - export function is(value: Directive | T): value is Directive { -->is : (value: Directive | T) => value is Directive -+>is : (value: T | Directive) => value is Directive - >value : T | Directive - - return typeof value === "number" && Directive[value] != null; -@@= skipped -132, +132 lines =@@ - }; - - function canPickStepContinue( -->canPickStepContinue : (_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType -+>canPickStepContinue : >(_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType - - _step: T, - >_step : T -@@= skipped -28, +28 lines =@@ - } - - function* showStep< -->showStep : (state: State, _context: Context) => StepResultGenerator -+>showStep : & { counter: number; confirm?: boolean | undefined; startingStep?: number | undefined; } & { repo: any; }, Context extends { repos: any[]; title: string; status: any; }>(state: State, _context: Context) => StepResultGenerator - - State extends PartialStepState & { repo: any }, - >repo : any -@@= skipped -38, +38 lines =@@ - return canPickStepContinue(step, state, selection) - >canPickStepContinue(step, state, selection) ? selection[0] : StepResult.Break : unique symbol | QuickPickItem - >canPickStepContinue(step, state, selection) : boolean -->canPickStepContinue : (_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType -+>canPickStepContinue : >(_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType - >step : QuickPickStep - >state : State - >selection : QuickPickItem[] | Directive \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericCallToOverloadedMethodWithOverloadedArguments.types b/testdata/baselines/reference/submodule/conformance/genericCallToOverloadedMethodWithOverloadedArguments.types index ac19f6b5e8c..4bbe0d91ae0 100644 --- a/testdata/baselines/reference/submodule/conformance/genericCallToOverloadedMethodWithOverloadedArguments.types +++ b/testdata/baselines/reference/submodule/conformance/genericCallToOverloadedMethodWithOverloadedArguments.types @@ -66,12 +66,12 @@ namespace m3 { interface Promise { then(cb: (x: T) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } +>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } +>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => Promise) | undefined @@ -101,12 +101,12 @@ namespace m4 { interface Promise { then(cb: (x: T) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } +>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } +>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => Promise) | undefined @@ -140,19 +140,19 @@ namespace m5 { interface Promise { then(cb: (x: T) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: T) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } +>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; } >cb : (x: T) => Promise >x : T then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: T) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } +>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => Promise) | undefined >error : any then(cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: T) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } +>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => U) | undefined @@ -175,9 +175,9 @@ namespace m5 { var newPromise = numPromise.then(testFunction); >newPromise : Promise >numPromise.then(testFunction) : Promise ->numPromise.then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: number) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } +>numPromise.then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: number) => Promise, error?: ((error: any) => U) | undefined, progress?: (preservation: any) => void): Promise; } >numPromise : Promise ->then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: number) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } +>then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: number) => Promise, error?: ((error: any) => U) | undefined, progress?: (preservation: any) => void): Promise; } >testFunction : { (n: number): Promise; (s: string): Promise; } } @@ -188,12 +188,12 @@ namespace m6 { interface Promise { then(cb: (x: T) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } +>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } +>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => Promise) | undefined diff --git a/testdata/baselines/reference/submodule/conformance/genericCallToOverloadedMethodWithOverloadedArguments.types.diff b/testdata/baselines/reference/submodule/conformance/genericCallToOverloadedMethodWithOverloadedArguments.types.diff index 2ca29c87f58..0a80d4f8c58 100644 --- a/testdata/baselines/reference/submodule/conformance/genericCallToOverloadedMethodWithOverloadedArguments.types.diff +++ b/testdata/baselines/reference/submodule/conformance/genericCallToOverloadedMethodWithOverloadedArguments.types.diff @@ -5,13 +5,13 @@ interface Promise { then(cb: (x: T) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -+>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } ++>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -+>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } ++>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => Promise) | undefined @@ -20,13 +20,13 @@ interface Promise { then(cb: (x: T) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -+>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } ++>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -+>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } ++>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => Promise) | undefined @@ -35,13 +35,13 @@ interface Promise { then(cb: (x: T) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U_1, progress?: (preservation: any) => void): Promise; } -+>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: T) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } ++>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; } >cb : (x: T) => Promise >x : T then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U_1, progress?: (preservation: any) => void): Promise; } -+>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: T) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } ++>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => Promise) | undefined @@ -49,34 +49,22 @@ then(cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; } -+>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: T) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } ++>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => U) | undefined -@@= skipped -35, +35 lines =@@ - var newPromise = numPromise.then(testFunction); - >newPromise : Promise - >numPromise.then(testFunction) : Promise -->numPromise.then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: number) => Promise, error?: ((error: any) => U) | undefined, progress?: (preservation: any) => void): Promise; } -+>numPromise.then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: number) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } - >numPromise : Promise -->then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: number) => Promise, error?: ((error: any) => U) | undefined, progress?: (preservation: any) => void): Promise; } -+>then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: ((error: any) => Promise) | undefined): Promise; (cb: (x: number) => Promise, error?: ((error: any) => U) | undefined, progress?: ((preservation: any) => void) | undefined): Promise; } - >testFunction : { (n: number): Promise; (s: string): Promise; } - } - -@@= skipped -13, +13 lines =@@ +@@= skipped -48, +48 lines =@@ interface Promise { then(cb: (x: T) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -+>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } ++>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; ->then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -+>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: ((error: any) => Promise) | undefined): Promise; } ++>then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } >cb : (x: T) => Promise >x : T >error : ((error: any) => Promise) | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithGenericSignatureArguments.types b/testdata/baselines/reference/submodule/conformance/genericCallWithGenericSignatureArguments.types index d32331f3d67..98e9ec59813 100644 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithGenericSignatureArguments.types +++ b/testdata/baselines/reference/submodule/conformance/genericCallWithGenericSignatureArguments.types @@ -76,11 +76,11 @@ var r4 = foo((x: typeof a) => a, (x: typeof b) => b); // typeof a => typeof a >r4 : (x: { x: number; y?: number; }) => { x: number; y?: number; } >foo((x: typeof a) => a, (x: typeof b) => b) : (x: { x: number; y?: number; }) => { x: number; y?: number; } >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T ->(x: typeof a) => a : (x: { x: number; y?: number; }) => { x: number; y?: number; } +>(x: typeof a) => a : (x: typeof a) => { x: number; y?: number; } >x : { x: number; y?: number; } >a : { x: number; y?: number; } >a : { x: number; y?: number; } ->(x: typeof b) => b : (x: { x: number; z?: number; }) => { x: number; z?: number; } +>(x: typeof b) => b : (x: typeof b) => { x: number; z?: number; } >x : { x: number; z?: number; } >b : { x: number; z?: number; } >b : { x: number; z?: number; } @@ -89,11 +89,11 @@ var r5 = foo((x: typeof b) => b, (x: typeof a) => a); // typeof b => typeof b >r5 : (x: { x: number; z?: number; }) => { x: number; z?: number; } >foo((x: typeof b) => b, (x: typeof a) => a) : (x: { x: number; z?: number; }) => { x: number; z?: number; } >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T ->(x: typeof b) => b : (x: { x: number; z?: number; }) => { x: number; z?: number; } +>(x: typeof b) => b : (x: typeof b) => { x: number; z?: number; } >x : { x: number; z?: number; } >b : { x: number; z?: number; } >b : { x: number; z?: number; } ->(x: typeof a) => a : (x: { x: number; y?: number; }) => { x: number; y?: number; } +>(x: typeof a) => a : (x: typeof a) => { x: number; y?: number; } >x : { x: number; y?: number; } >a : { x: number; y?: number; } >a : { x: number; y?: number; } diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithGenericSignatureArguments.types.diff b/testdata/baselines/reference/submodule/conformance/genericCallWithGenericSignatureArguments.types.diff deleted file mode 100644 index a68535e9a83..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithGenericSignatureArguments.types.diff +++ /dev/null @@ -1,30 +0,0 @@ ---- old.genericCallWithGenericSignatureArguments.types -+++ new.genericCallWithGenericSignatureArguments.types -@@= skipped -75, +75 lines =@@ - >r4 : (x: { x: number; y?: number; }) => { x: number; y?: number; } - >foo((x: typeof a) => a, (x: typeof b) => b) : (x: { x: number; y?: number; }) => { x: number; y?: number; } - >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -->(x: typeof a) => a : (x: typeof a) => { x: number; y?: number; } -+>(x: typeof a) => a : (x: { x: number; y?: number; }) => { x: number; y?: number; } - >x : { x: number; y?: number; } - >a : { x: number; y?: number; } - >a : { x: number; y?: number; } -->(x: typeof b) => b : (x: typeof b) => { x: number; z?: number; } -+>(x: typeof b) => b : (x: { x: number; z?: number; }) => { x: number; z?: number; } - >x : { x: number; z?: number; } - >b : { x: number; z?: number; } - >b : { x: number; z?: number; } -@@= skipped -13, +13 lines =@@ - >r5 : (x: { x: number; z?: number; }) => { x: number; z?: number; } - >foo((x: typeof b) => b, (x: typeof a) => a) : (x: { x: number; z?: number; }) => { x: number; z?: number; } - >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -->(x: typeof b) => b : (x: typeof b) => { x: number; z?: number; } -+>(x: typeof b) => b : (x: { x: number; z?: number; }) => { x: number; z?: number; } - >x : { x: number; z?: number; } - >b : { x: number; z?: number; } - >b : { x: number; z?: number; } -->(x: typeof a) => a : (x: typeof a) => { x: number; y?: number; } -+>(x: typeof a) => a : (x: { x: number; y?: number; }) => { x: number; y?: number; } - >x : { x: number; y?: number; } - >a : { x: number; y?: number; } - >a : { x: number; y?: number; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithNonSymmetricSubtypes.types b/testdata/baselines/reference/submodule/conformance/genericCallWithNonSymmetricSubtypes.types index 7f025c14b8b..dcf996eca25 100644 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithNonSymmetricSubtypes.types +++ b/testdata/baselines/reference/submodule/conformance/genericCallWithNonSymmetricSubtypes.types @@ -17,42 +17,42 @@ function foo(x: T, y: T) { } var a: { x: number; y?: number; }; ->a : { x: number; y?: number | undefined; } +>a : { x: number; y?: number; } >x : number >y : number | undefined var b: { x: number; z?: number; }; ->b : { x: number; z?: number | undefined; } +>b : { x: number; z?: number; } >x : number >z : number | undefined var r = foo(a, b); // { x: number; y?: number; }; ->r : { x: number; y?: number | undefined; } ->foo(a, b) : { x: number; y?: number | undefined; } +>r : { x: number; y?: number; } +>foo(a, b) : { x: number; y?: number; } >foo : (x: T, y: T) => T ->a : { x: number; y?: number | undefined; } ->b : { x: number; z?: number | undefined; } +>a : { x: number; y?: number; } +>b : { x: number; z?: number; } var r2 = foo(b, a); // { x: number; z?: number; }; ->r2 : { x: number; z?: number | undefined; } ->foo(b, a) : { x: number; z?: number | undefined; } +>r2 : { x: number; z?: number; } +>foo(b, a) : { x: number; z?: number; } >foo : (x: T, y: T) => T ->b : { x: number; z?: number | undefined; } ->a : { x: number; y?: number | undefined; } +>b : { x: number; z?: number; } +>a : { x: number; y?: number; } var x: { x: number; }; >x : { x: number; } >x : number var y: { x?: number; }; ->y : { x?: number | undefined; } +>y : { x?: number; } >x : number | undefined var r3 = foo(a, x); // { x: number; y?: number; }; >r3 : { x: number; } >foo(a, x) : { x: number; } >foo : (x: T, y: T) => T ->a : { x: number; y?: number | undefined; } +>a : { x: number; y?: number; } >x : { x: number; } var r4 = foo(x, a); // { x: number; }; @@ -60,34 +60,34 @@ var r4 = foo(x, a); // { x: number; }; >foo(x, a) : { x: number; } >foo : (x: T, y: T) => T >x : { x: number; } ->a : { x: number; y?: number | undefined; } +>a : { x: number; y?: number; } var r5 = foo(a, y); // { x?: number; }; ->r5 : { x?: number | undefined; } ->foo(a, y) : { x?: number | undefined; } +>r5 : { x?: number; } +>foo(a, y) : { x?: number; } >foo : (x: T, y: T) => T ->a : { x: number; y?: number | undefined; } ->y : { x?: number | undefined; } +>a : { x: number; y?: number; } +>y : { x?: number; } var r5 = foo(y, a); // { x?: number; }; ->r5 : { x?: number | undefined; } ->foo(y, a) : { x?: number | undefined; } +>r5 : { x?: number; } +>foo(y, a) : { x?: number; } >foo : (x: T, y: T) => T ->y : { x?: number | undefined; } ->a : { x: number; y?: number | undefined; } +>y : { x?: number; } +>a : { x: number; y?: number; } var r6 = foo(x, y); // { x?: number; }; ->r6 : { x?: number | undefined; } ->foo(x, y) : { x?: number | undefined; } +>r6 : { x?: number; } +>foo(x, y) : { x?: number; } >foo : (x: T, y: T) => T >x : { x: number; } ->y : { x?: number | undefined; } +>y : { x?: number; } var r6 = foo(y, x); // { x?: number; }; ->r6 : { x?: number | undefined; } ->foo(y, x) : { x?: number | undefined; } +>r6 : { x?: number; } +>foo(y, x) : { x?: number; } >foo : (x: T, y: T) => T ->y : { x?: number | undefined; } +>y : { x?: number; } >x : { x: number; } var s1: (x: Object) => string; diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithNonSymmetricSubtypes.types.diff b/testdata/baselines/reference/submodule/conformance/genericCallWithNonSymmetricSubtypes.types.diff deleted file mode 100644 index 6928890d3ba..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithNonSymmetricSubtypes.types.diff +++ /dev/null @@ -1,107 +0,0 @@ ---- old.genericCallWithNonSymmetricSubtypes.types -+++ new.genericCallWithNonSymmetricSubtypes.types -@@= skipped -16, +16 lines =@@ - } - - var a: { x: number; y?: number; }; -->a : { x: number; y?: number; } -+>a : { x: number; y?: number | undefined; } - >x : number - >y : number | undefined - - var b: { x: number; z?: number; }; -->b : { x: number; z?: number; } -+>b : { x: number; z?: number | undefined; } - >x : number - >z : number | undefined - - var r = foo(a, b); // { x: number; y?: number; }; -->r : { x: number; y?: number; } -->foo(a, b) : { x: number; y?: number; } -+>r : { x: number; y?: number | undefined; } -+>foo(a, b) : { x: number; y?: number | undefined; } - >foo : (x: T, y: T) => T -->a : { x: number; y?: number; } -->b : { x: number; z?: number; } -+>a : { x: number; y?: number | undefined; } -+>b : { x: number; z?: number | undefined; } - - var r2 = foo(b, a); // { x: number; z?: number; }; -->r2 : { x: number; z?: number; } -->foo(b, a) : { x: number; z?: number; } -+>r2 : { x: number; z?: number | undefined; } -+>foo(b, a) : { x: number; z?: number | undefined; } - >foo : (x: T, y: T) => T -->b : { x: number; z?: number; } -->a : { x: number; y?: number; } -+>b : { x: number; z?: number | undefined; } -+>a : { x: number; y?: number | undefined; } - - var x: { x: number; }; - >x : { x: number; } - >x : number - - var y: { x?: number; }; -->y : { x?: number; } -+>y : { x?: number | undefined; } - >x : number | undefined - - var r3 = foo(a, x); // { x: number; y?: number; }; - >r3 : { x: number; } - >foo(a, x) : { x: number; } - >foo : (x: T, y: T) => T -->a : { x: number; y?: number; } -+>a : { x: number; y?: number | undefined; } - >x : { x: number; } - - var r4 = foo(x, a); // { x: number; }; -@@= skipped -43, +43 lines =@@ - >foo(x, a) : { x: number; } - >foo : (x: T, y: T) => T - >x : { x: number; } -->a : { x: number; y?: number; } -+>a : { x: number; y?: number | undefined; } - - var r5 = foo(a, y); // { x?: number; }; -->r5 : { x?: number; } -->foo(a, y) : { x?: number; } -+>r5 : { x?: number | undefined; } -+>foo(a, y) : { x?: number | undefined; } - >foo : (x: T, y: T) => T -->a : { x: number; y?: number; } -->y : { x?: number; } -+>a : { x: number; y?: number | undefined; } -+>y : { x?: number | undefined; } - - var r5 = foo(y, a); // { x?: number; }; -->r5 : { x?: number; } -->foo(y, a) : { x?: number; } -+>r5 : { x?: number | undefined; } -+>foo(y, a) : { x?: number | undefined; } - >foo : (x: T, y: T) => T -->y : { x?: number; } -->a : { x: number; y?: number; } -+>y : { x?: number | undefined; } -+>a : { x: number; y?: number | undefined; } - - var r6 = foo(x, y); // { x?: number; }; -->r6 : { x?: number; } -->foo(x, y) : { x?: number; } -+>r6 : { x?: number | undefined; } -+>foo(x, y) : { x?: number | undefined; } - >foo : (x: T, y: T) => T - >x : { x: number; } -->y : { x?: number; } -+>y : { x?: number | undefined; } - - var r6 = foo(y, x); // { x?: number; }; -->r6 : { x?: number; } -->foo(y, x) : { x?: number; } -+>r6 : { x?: number | undefined; } -+>foo(y, x) : { x?: number | undefined; } - >foo : (x: T, y: T) => T -->y : { x?: number; } -+>y : { x?: number | undefined; } - >x : { x: number; } - - var s1: (x: Object) => string; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments.types b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments.types index b1ee191842e..392712218ec 100644 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments.types +++ b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments.types @@ -18,7 +18,7 @@ namespace NonGenericParameter { } function foo4(cb: typeof a) { ->foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => never +>foo4 : (cb: typeof a) => never >cb : { new (x: boolean): boolean; new (x: string): string; } >a : { new (x: boolean): boolean; new (x: string): string; } @@ -30,7 +30,7 @@ namespace NonGenericParameter { var r = foo4(a); >r : never >foo4(a) : never ->foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => never +>foo4 : (cb: typeof a) => never >a : { new (x: boolean): boolean; new (x: string): string; } var b: { new (x: T): T }; @@ -40,7 +40,7 @@ namespace NonGenericParameter { var r2 = foo4(b); >r2 : never >foo4(b) : never ->foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => never +>foo4 : (cb: typeof a) => never >b : new (x: T) => T } @@ -84,44 +84,44 @@ namespace GenericParameter { >b : { new (x: T): string; new (x: number): T; } function foo6(cb: { new(x: T): string; new(x: T, y?: T): string }) { ->foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } ->cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } +>cb : { new (x: T): string; new (x: T, y?: T): string; } >x : T >x : T >y : T | undefined return cb; ->cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } +>cb : { new (x: T): string; new (x: T, y?: T): string; } } var r8 = foo6(a); // error >r8 : { new (x: boolean): string; new (x: boolean, y?: boolean | undefined): string; } >foo6(a) : { new (x: boolean): string; new (x: boolean, y?: boolean | undefined): string; } ->foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >a : { new (x: boolean): string; new (x: number): boolean; } var r9 = foo6(b); // new any => string; new(x:any, y?:any) => string >r9 : { new (x: number): string; new (x: number, y?: number | undefined): string; } >foo6(b) : { new (x: number): string; new (x: number, y?: number | undefined): string; } ->foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >b : { new (x: T): string; new (x: number): T; } function foo7(x:T, cb: { new(x: T): string; new(x: T, y?: T): string }) { ->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >x : T ->cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } +>cb : { new (x: T): string; new (x: T, y?: T): string; } >x : T >x : T >y : T | undefined return cb; ->cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } +>cb : { new (x: T): string; new (x: T, y?: T): string; } } var r13 = foo7(1, b); // new any => string; new(x:any, y?:any) => string >r13 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } >foo7(1, b) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } ->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >1 : 1 >b : { new (x: T): string; new (x: number): T; } @@ -138,14 +138,14 @@ namespace GenericParameter { var r14 = foo7(1, c); // new any => string; new(x:any, y?:any) => string >r14 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } >foo7(1, c) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } ->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >1 : 1 >c : { (x: number): T; new (x: T): string; } var r15 = foo7(1, c2); // new any => string; new(x:any, y?:any) => string >r15 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } >foo7(1, c2) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } ->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >1 : 1 >c2 : { new (x: T): string; new (x: number): T; } } diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments.types.diff b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments.types.diff deleted file mode 100644 index dddec5ca924..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments.types.diff +++ /dev/null @@ -1,100 +0,0 @@ ---- old.genericCallWithOverloadedConstructorTypedArguments.types -+++ new.genericCallWithOverloadedConstructorTypedArguments.types -@@= skipped -17, +17 lines =@@ - } - - function foo4(cb: typeof a) { -->foo4 : (cb: typeof a) => never -+>foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => never - >cb : { new (x: boolean): boolean; new (x: string): string; } - >a : { new (x: boolean): boolean; new (x: string): string; } - -@@= skipped -12, +12 lines =@@ - var r = foo4(a); - >r : never - >foo4(a) : never -->foo4 : (cb: typeof a) => never -+>foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => never - >a : { new (x: boolean): boolean; new (x: string): string; } - - var b: { new (x: T): T }; -@@= skipped -10, +10 lines =@@ - var r2 = foo4(b); - >r2 : never - >foo4(b) : never -->foo4 : (cb: typeof a) => never -+>foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => never - >b : new (x: T) => T - } - -@@= skipped -44, +44 lines =@@ - >b : { new (x: T): string; new (x: number): T; } - - function foo6(cb: { new(x: T): string; new(x: T, y?: T): string }) { -->foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -->cb : { new (x: T): string; new (x: T, y?: T): string; } -+>foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } -+>cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } - >x : T - >x : T - >y : T | undefined - - return cb; -->cb : { new (x: T): string; new (x: T, y?: T): string; } -+>cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } - } - - var r8 = foo6(a); // error - >r8 : { new (x: boolean): string; new (x: boolean, y?: boolean | undefined): string; } - >foo6(a) : { new (x: boolean): string; new (x: boolean, y?: boolean | undefined): string; } -->foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >a : { new (x: boolean): string; new (x: number): boolean; } - - var r9 = foo6(b); // new any => string; new(x:any, y?:any) => string - >r9 : { new (x: number): string; new (x: number, y?: number | undefined): string; } - >foo6(b) : { new (x: number): string; new (x: number, y?: number | undefined): string; } -->foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >b : { new (x: T): string; new (x: number): T; } - - function foo7(x:T, cb: { new(x: T): string; new(x: T, y?: T): string }) { -->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >x : T -->cb : { new (x: T): string; new (x: T, y?: T): string; } -+>cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } - >x : T - >x : T - >y : T | undefined - - return cb; -->cb : { new (x: T): string; new (x: T, y?: T): string; } -+>cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } - } - - var r13 = foo7(1, b); // new any => string; new(x:any, y?:any) => string - >r13 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } - >foo7(1, b) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } -->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >1 : 1 - >b : { new (x: T): string; new (x: number): T; } - -@@= skipped -54, +54 lines =@@ - var r14 = foo7(1, c); // new any => string; new(x:any, y?:any) => string - >r14 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } - >foo7(1, c) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } -->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >1 : 1 - >c : { (x: number): T; new (x: T): string; } - - var r15 = foo7(1, c2); // new any => string; new(x:any, y?:any) => string - >r15 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } - >foo7(1, c2) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } -->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >1 : 1 - >c2 : { new (x: T): string; new (x: number): T; } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments2.types b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments2.types index ff960831a72..02b5b53e101 100644 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments2.types +++ b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments2.types @@ -18,7 +18,7 @@ namespace NonGenericParameter { } function foo4(cb: typeof a) { ->foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => { new (x: boolean): boolean; new (x: string): string; } +>foo4 : (cb: typeof a) => { new (x: boolean): boolean; new (x: string): string; } >cb : { new (x: boolean): boolean; new (x: string): string; } >a : { new (x: boolean): boolean; new (x: string): string; } @@ -33,7 +33,7 @@ namespace NonGenericParameter { var r3 = foo4(b); // ok >r3 : { new (x: boolean): boolean; new (x: string): string; } >foo4(b) : { new (x: boolean): boolean; new (x: string): string; } ->foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => { new (x: boolean): boolean; new (x: string): string; } +>foo4 : (cb: typeof a) => { new (x: boolean): boolean; new (x: string): string; } >b : new (x: T) => U } @@ -61,14 +61,14 @@ namespace GenericParameter { >a : new (x: T) => T function foo6(cb: { new(x: T): string; new(x: T, y?: T): string }) { ->foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } ->cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } +>cb : { new (x: T): string; new (x: T, y?: T): string; } >x : T >x : T >y : T | undefined return cb; ->cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } +>cb : { new (x: T): string; new (x: T, y?: T): string; } } declare var b: { new (x: T, y: T): string }; @@ -79,25 +79,25 @@ namespace GenericParameter { var r10 = foo6(b); // error >r10 : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } >foo6(b) : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } ->foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >b : new (x: T, y: T) => string function foo7(x:T, cb: { new(x: T): string; new(x: T, y?: T): string }) { ->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >x : T ->cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } +>cb : { new (x: T): string; new (x: T, y?: T): string; } >x : T >x : T >y : T | undefined return cb; ->cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } +>cb : { new (x: T): string; new (x: T, y?: T): string; } } var r13 = foo7(1, a); // ok >r13 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } >foo7(1, a) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } ->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >1 : 1 >a : new (x: T) => T @@ -109,7 +109,7 @@ namespace GenericParameter { var r14 = foo7(1, c); // ok >r14 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } >foo7(1, c) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } ->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } +>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } >1 : 1 >c : { new (x: T): number; new (x: number): T; } } diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments2.types.diff b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments2.types.diff deleted file mode 100644 index 190eb531d7a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedConstructorTypedArguments2.types.diff +++ /dev/null @@ -1,78 +0,0 @@ ---- old.genericCallWithOverloadedConstructorTypedArguments2.types -+++ new.genericCallWithOverloadedConstructorTypedArguments2.types -@@= skipped -17, +17 lines =@@ - } - - function foo4(cb: typeof a) { -->foo4 : (cb: typeof a) => { new (x: boolean): boolean; new (x: string): string; } -+>foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => { new (x: boolean): boolean; new (x: string): string; } - >cb : { new (x: boolean): boolean; new (x: string): string; } - >a : { new (x: boolean): boolean; new (x: string): string; } - -@@= skipped -15, +15 lines =@@ - var r3 = foo4(b); // ok - >r3 : { new (x: boolean): boolean; new (x: string): string; } - >foo4(b) : { new (x: boolean): boolean; new (x: string): string; } -->foo4 : (cb: typeof a) => { new (x: boolean): boolean; new (x: string): string; } -+>foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => { new (x: boolean): boolean; new (x: string): string; } - >b : new (x: T) => U - } - -@@= skipped -28, +28 lines =@@ - >a : new (x: T) => T - - function foo6(cb: { new(x: T): string; new(x: T, y?: T): string }) { -->foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -->cb : { new (x: T): string; new (x: T, y?: T): string; } -+>foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } -+>cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } - >x : T - >x : T - >y : T | undefined - - return cb; -->cb : { new (x: T): string; new (x: T, y?: T): string; } -+>cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } - } - - declare var b: { new (x: T, y: T): string }; -@@= skipped -18, +18 lines =@@ - var r10 = foo6(b); // error - >r10 : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } - >foo6(b) : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -->foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo6 : (cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >b : new (x: T, y: T) => string - - function foo7(x:T, cb: { new(x: T): string; new(x: T, y?: T): string }) { -->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >x : T -->cb : { new (x: T): string; new (x: T, y?: T): string; } -+>cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } - >x : T - >x : T - >y : T | undefined - - return cb; -->cb : { new (x: T): string; new (x: T, y?: T): string; } -+>cb : { new (x: T): string; new (x: T, y?: T | undefined): string; } - } - - var r13 = foo7(1, a); // ok - >r13 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } - >foo7(1, a) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } -->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >1 : 1 - >a : new (x: T) => T - -@@= skipped -30, +30 lines =@@ - var r14 = foo7(1, c); // ok - >r14 : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } - >foo7(1, c) : { new (x: 1): string; new (x: 1, y?: 1 | undefined): string; } -->foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -+>foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T | undefined): string; }) => { new (x: T): string; new (x: T, y?: T | undefined): string; } - >1 : 1 - >c : { new (x: T): number; new (x: number): T; } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments.types b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments.types index d8ef9b647a6..c7ed8c89878 100644 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments.types +++ b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments.types @@ -18,7 +18,7 @@ namespace NonGenericParameter { } function foo4(cb: typeof a) { ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } >cb : { (x: boolean): boolean; (x: string): string; } >a : { (x: boolean): boolean; (x: string): string; } @@ -29,13 +29,13 @@ namespace NonGenericParameter { var r = foo4(a); >r : { (x: boolean): boolean; (x: string): string; } >foo4(a) : { (x: boolean): boolean; (x: string): string; } ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } >a : { (x: boolean): boolean; (x: string): string; } var r2 = foo4((x: T) => x); >r2 : { (x: boolean): boolean; (x: string): string; } >foo4((x: T) => x) : { (x: boolean): boolean; (x: string): string; } ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } >(x: T) => x : (x: T) => T >x : T >x : T @@ -43,7 +43,7 @@ namespace NonGenericParameter { var r4 = foo4(x => x); >r4 : { (x: boolean): boolean; (x: string): string; } >foo4(x => x) : { (x: boolean): boolean; (x: string): string; } ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } >x => x : (x: any) => any >x : any >x : any diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments.types.diff b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments.types.diff deleted file mode 100644 index 273355096e3..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments.types.diff +++ /dev/null @@ -1,36 +0,0 @@ ---- old.genericCallWithOverloadedFunctionTypedArguments.types -+++ new.genericCallWithOverloadedFunctionTypedArguments.types -@@= skipped -17, +17 lines =@@ - } - - function foo4(cb: typeof a) { -->foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } -+>foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } - >cb : { (x: boolean): boolean; (x: string): string; } - >a : { (x: boolean): boolean; (x: string): string; } - -@@= skipped -11, +11 lines =@@ - var r = foo4(a); - >r : { (x: boolean): boolean; (x: string): string; } - >foo4(a) : { (x: boolean): boolean; (x: string): string; } -->foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } -+>foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } - >a : { (x: boolean): boolean; (x: string): string; } - - var r2 = foo4((x: T) => x); - >r2 : { (x: boolean): boolean; (x: string): string; } - >foo4((x: T) => x) : { (x: boolean): boolean; (x: string): string; } -->foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } -+>foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } - >(x: T) => x : (x: T) => T - >x : T - >x : T -@@= skipped -14, +14 lines =@@ - var r4 = foo4(x => x); - >r4 : { (x: boolean): boolean; (x: string): string; } - >foo4(x => x) : { (x: boolean): boolean; (x: string): string; } -->foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } -+>foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } - >x => x : (x: any) => any - >x : any - >x : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments2.types b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments2.types index 3af66107d8a..632805959b8 100644 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments2.types +++ b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments2.types @@ -18,7 +18,7 @@ namespace NonGenericParameter { } function foo4(cb: typeof a) { ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } >cb : { (x: boolean): boolean; (x: string): string; } >a : { (x: boolean): boolean; (x: string): string; } @@ -29,7 +29,7 @@ namespace NonGenericParameter { var r3 = foo4((x: T) => { var r!: U; return r }); // ok >r3 : { (x: boolean): boolean; (x: string): string; } >foo4((x: T) => { var r!: U; return r }) : { (x: boolean): boolean; (x: string): string; } ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } >(x: T) => { var r!: U; return r } : (x: T) => U >x : T >r : U diff --git a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments2.types.diff b/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments2.types.diff deleted file mode 100644 index 9d1aa45e86c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericCallWithOverloadedFunctionTypedArguments2.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.genericCallWithOverloadedFunctionTypedArguments2.types -+++ new.genericCallWithOverloadedFunctionTypedArguments2.types -@@= skipped -17, +17 lines =@@ - } - - function foo4(cb: typeof a) { -->foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } -+>foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } - >cb : { (x: boolean): boolean; (x: string): string; } - >a : { (x: boolean): boolean; (x: string): string; } - -@@= skipped -11, +11 lines =@@ - var r3 = foo4((x: T) => { var r!: U; return r }); // ok - >r3 : { (x: boolean): boolean; (x: string): string; } - >foo4((x: T) => { var r!: U; return r }) : { (x: boolean): boolean; (x: string): string; } -->foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } -+>foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } - >(x: T) => { var r!: U; return r } : (x: T) => U - >x : T - >r : U \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericFunctionParameters.types b/testdata/baselines/reference/submodule/conformance/genericFunctionParameters.types index 21edad90803..d21a90a996a 100644 --- a/testdata/baselines/reference/submodule/conformance/genericFunctionParameters.types +++ b/testdata/baselines/reference/submodule/conformance/genericFunctionParameters.types @@ -12,8 +12,8 @@ declare function f2(cb: (x: S) => T): T; >x : S declare function f3(cb: >(x: S) => T): T; ->f3 : (cb: (x: S) => T) => T ->cb : (x: S) => T +>f3 : (cb: >(x: S) => T) => T +>cb : >(x: S) => T >x : S let x1 = f1(x => x); // {} @@ -35,7 +35,7 @@ let x2 = f2(x => x); // number let x3 = f3(x => x); // Array >x3 : any[][] >f3(x => x) : any[][] ->f3 : (cb: (x: S) => T) => T +>f3 : (cb: >(x: S) => T) => T >x => x : (x: S) => S >x : S >x : S diff --git a/testdata/baselines/reference/submodule/conformance/genericFunctionParameters.types.diff b/testdata/baselines/reference/submodule/conformance/genericFunctionParameters.types.diff index e1fc4990deb..e1e296f657b 100644 --- a/testdata/baselines/reference/submodule/conformance/genericFunctionParameters.types.diff +++ b/testdata/baselines/reference/submodule/conformance/genericFunctionParameters.types.diff @@ -1,26 +1,13 @@ --- old.genericFunctionParameters.types +++ new.genericFunctionParameters.types -@@= skipped -11, +11 lines =@@ - >x : S - - declare function f3(cb: >(x: S) => T): T; -->f3 : (cb: >(x: S) => T) => T -->cb : >(x: S) => T -+>f3 : (cb: (x: S) => T) => T -+>cb : (x: S) => T - >x : S - - let x1 = f1(x => x); // {} -@@= skipped -21, +21 lines =@@ +@@= skipped -32, +32 lines =@@ >x : S let x3 = f3(x => x); // Array ->x3 : any[] ->f3(x => x) : any[] -->f3 : (cb: >(x: S) => T) => T +>x3 : any[][] +>f3(x => x) : any[][] -+>f3 : (cb: (x: S) => T) => T + >f3 : (cb: >(x: S) => T) => T >x => x : (x: S) => S - >x : S >x : S \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericRestParameters1.types b/testdata/baselines/reference/submodule/conformance/genericRestParameters1.types index d90d60457cf..81ad6db6562 100644 --- a/testdata/baselines/reference/submodule/conformance/genericRestParameters1.types +++ b/testdata/baselines/reference/submodule/conformance/genericRestParameters1.types @@ -572,7 +572,7 @@ f23(); >f23 : () => string[] declare const g20: (x: number, y?: string, z?: boolean) => string[]; ->g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] +>g20 : (x: number, y?: string, z?: boolean) => string[] >x : number >y : string | undefined >z : boolean | undefined @@ -581,7 +581,7 @@ const g21 = bind(g20, 42); // (y: string, z: boolean) => string[] >g21 : (y?: string | undefined, z?: boolean | undefined) => string[] >bind(g20, 42) : (y?: string | undefined, z?: boolean | undefined) => string[] >bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V ->g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] +>g20 : (x: number, y?: string, z?: boolean) => string[] >42 : 42 const g22 = bind(g21, "hello"); // (z: boolean) => string[] @@ -600,20 +600,20 @@ const g23 = bind(g22, true); // () => string[] g20(42, "hello", true); >g20(42, "hello", true) : string[] ->g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] +>g20 : (x: number, y?: string, z?: boolean) => string[] >42 : 42 >"hello" : "hello" >true : true g20(42, "hello"); >g20(42, "hello") : string[] ->g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] +>g20 : (x: number, y?: string, z?: boolean) => string[] >42 : 42 >"hello" : "hello" g20(42); >g20(42) : string[] ->g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] +>g20 : (x: number, y?: string, z?: boolean) => string[] >42 : 42 g21("hello", true); diff --git a/testdata/baselines/reference/submodule/conformance/genericRestParameters1.types.diff b/testdata/baselines/reference/submodule/conformance/genericRestParameters1.types.diff deleted file mode 100644 index bbbf4913edc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericRestParameters1.types.diff +++ /dev/null @@ -1,44 +0,0 @@ ---- old.genericRestParameters1.types -+++ new.genericRestParameters1.types -@@= skipped -571, +571 lines =@@ - >f23 : () => string[] - - declare const g20: (x: number, y?: string, z?: boolean) => string[]; -->g20 : (x: number, y?: string, z?: boolean) => string[] -+>g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] - >x : number - >y : string | undefined - >z : boolean | undefined -@@= skipped -9, +9 lines =@@ - >g21 : (y?: string | undefined, z?: boolean | undefined) => string[] - >bind(g20, 42) : (y?: string | undefined, z?: boolean | undefined) => string[] - >bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -->g20 : (x: number, y?: string, z?: boolean) => string[] -+>g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] - >42 : 42 - - const g22 = bind(g21, "hello"); // (z: boolean) => string[] -@@= skipped -19, +19 lines =@@ - - g20(42, "hello", true); - >g20(42, "hello", true) : string[] -->g20 : (x: number, y?: string, z?: boolean) => string[] -+>g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] - >42 : 42 - >"hello" : "hello" - >true : true - - g20(42, "hello"); - >g20(42, "hello") : string[] -->g20 : (x: number, y?: string, z?: boolean) => string[] -+>g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] - >42 : 42 - >"hello" : "hello" - - g20(42); - >g20(42) : string[] -->g20 : (x: number, y?: string, z?: boolean) => string[] -+>g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] - >42 : 42 - - g21("hello", true); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericRestParameters2.types b/testdata/baselines/reference/submodule/conformance/genericRestParameters2.types index 6fb9e14f28c..02ce9f094cd 100644 --- a/testdata/baselines/reference/submodule/conformance/genericRestParameters2.types +++ b/testdata/baselines/reference/submodule/conformance/genericRestParameters2.types @@ -51,7 +51,7 @@ declare let f11: (a: number, ...x: [string, ...boolean[]]) => void; >x : [string, ...boolean[]] declare let f12: (a: number, b: string, ...x: [...boolean[]]) => void; ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >a : number >b : string >x : boolean[] @@ -228,20 +228,20 @@ f11(42, "hello", true, ...t4, false, ...t3); f12(42, "hello"); >f12(42, "hello") : void ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >42 : 42 >"hello" : "hello" f12(42, "hello", true); >f12(42, "hello", true) : void ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >42 : 42 >"hello" : "hello" >true : true f12(42, "hello", true, false); >f12(42, "hello", true, false) : void ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >42 : 42 >"hello" : "hello" >true : true @@ -249,7 +249,7 @@ f12(42, "hello", true, false); f12(t1[0], t1[1], t1[2], t1[3]); >f12(t1[0], t1[1], t1[2], t1[3]) : void ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >t1[0] : number >t1 : [number, string, ...boolean[]] >0 : 0 @@ -265,20 +265,20 @@ f12(t1[0], t1[1], t1[2], t1[3]); f12(...t1); >f12(...t1) : void ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >...t1 : string | number | boolean >t1 : [number, string, ...boolean[]] f12(42, ...t2); >f12(42, ...t2) : void ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >42 : 42 >...t2 : string | boolean >t2 : [string, ...boolean[]] f12(42, "hello", ...t3); >f12(42, "hello", ...t3) : void ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >42 : 42 >"hello" : "hello" >...t3 : boolean @@ -286,7 +286,7 @@ f12(42, "hello", ...t3); f12(42, "hello", true, ...t4); >f12(42, "hello", true, ...t4) : void ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >42 : 42 >"hello" : "hello" >true : true @@ -295,7 +295,7 @@ f12(42, "hello", true, ...t4); f12(42, "hello", true, ...t4, false, ...t3); >f12(42, "hello", true, ...t4, false, ...t3) : void ->f12 : (a: number, b: string, ...x: boolean[]) => void +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void >42 : 42 >"hello" : "hello" >true : true diff --git a/testdata/baselines/reference/submodule/conformance/genericRestParameters2.types.diff b/testdata/baselines/reference/submodule/conformance/genericRestParameters2.types.diff deleted file mode 100644 index a68ad763faf..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericRestParameters2.types.diff +++ /dev/null @@ -1,86 +0,0 @@ ---- old.genericRestParameters2.types -+++ new.genericRestParameters2.types -@@= skipped -50, +50 lines =@@ - >x : [string, ...boolean[]] - - declare let f12: (a: number, b: string, ...x: [...boolean[]]) => void; -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >a : number - >b : string - >x : boolean[] -@@= skipped -177, +177 lines =@@ - - f12(42, "hello"); - >f12(42, "hello") : void -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >42 : 42 - >"hello" : "hello" - - f12(42, "hello", true); - >f12(42, "hello", true) : void -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >42 : 42 - >"hello" : "hello" - >true : true - - f12(42, "hello", true, false); - >f12(42, "hello", true, false) : void -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >42 : 42 - >"hello" : "hello" - >true : true -@@= skipped -21, +21 lines =@@ - - f12(t1[0], t1[1], t1[2], t1[3]); - >f12(t1[0], t1[1], t1[2], t1[3]) : void -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >t1[0] : number - >t1 : [number, string, ...boolean[]] - >0 : 0 -@@= skipped -16, +16 lines =@@ - - f12(...t1); - >f12(...t1) : void -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >...t1 : string | number | boolean - >t1 : [number, string, ...boolean[]] - - f12(42, ...t2); - >f12(42, ...t2) : void -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >42 : 42 - >...t2 : string | boolean - >t2 : [string, ...boolean[]] - - f12(42, "hello", ...t3); - >f12(42, "hello", ...t3) : void -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >42 : 42 - >"hello" : "hello" - >...t3 : boolean -@@= skipped -21, +21 lines =@@ - - f12(42, "hello", true, ...t4); - >f12(42, "hello", true, ...t4) : void -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >42 : 42 - >"hello" : "hello" - >true : true -@@= skipped -9, +9 lines =@@ - - f12(42, "hello", true, ...t4, false, ...t3); - >f12(42, "hello", true, ...t4, false, ...t3) : void -->f12 : (a: number, b: string, ...x: [...boolean[]]) => void -+>f12 : (a: number, b: string, ...x: boolean[]) => void - >42 : 42 - >"hello" : "hello" - >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/genericRestParameters3.types b/testdata/baselines/reference/submodule/conformance/genericRestParameters3.types index 66d87905e11..44d3d8d018a 100644 --- a/testdata/baselines/reference/submodule/conformance/genericRestParameters3.types +++ b/testdata/baselines/reference/submodule/conformance/genericRestParameters3.types @@ -262,8 +262,8 @@ ff2 = ff1; >ff1 : (...rest: [string, string] | [string, number]) => void function ff3(s1: (...args: [x: string, ...rest: A | [number]]) => void, s2: (x: string, ...rest: A | [number]) => void) { ->ff3 : (s1: (...args: [x: string, number] | [x: string, ...rest: A]) => void, s2: (x: string, ...rest: A | [number]) => void) => void ->s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void +>ff3 : (s1: (...args: [x: string, ...rest: A | [number]]) => void, s2: (x: string, ...rest: A | [number]) => void) => void +>s1 : (...args: [x: string, ...rest: A | [number]]) => void >args : [x: string, number] | [x: string, ...rest: A] >s2 : (x: string, ...rest: A | [number]) => void >x : string @@ -271,12 +271,12 @@ function ff3(s1: (...args: [x: string, ...rest: A | [number s1 = s2; >s1 = s2 : (x: string, ...rest: A | [number]) => void ->s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void +>s1 : (...args: [x: string, ...rest: A | [number]]) => void >s2 : (x: string, ...rest: A | [number]) => void s2 = s1; ->s2 = s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void +>s2 = s1 : (...args: [x: string, ...rest: A | [number]]) => void >s2 : (x: string, ...rest: A | [number]) => void ->s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void +>s1 : (...args: [x: string, ...rest: A | [number]]) => void } diff --git a/testdata/baselines/reference/submodule/conformance/genericRestParameters3.types.diff b/testdata/baselines/reference/submodule/conformance/genericRestParameters3.types.diff deleted file mode 100644 index 674b51bc9fb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericRestParameters3.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.genericRestParameters3.types -+++ new.genericRestParameters3.types -@@= skipped -261, +261 lines =@@ - >ff1 : (...rest: [string, string] | [string, number]) => void - - function ff3(s1: (...args: [x: string, ...rest: A | [number]]) => void, s2: (x: string, ...rest: A | [number]) => void) { -->ff3 : (s1: (...args: [x: string, ...rest: A | [number]]) => void, s2: (x: string, ...rest: A | [number]) => void) => void -->s1 : (...args: [x: string, ...rest: A | [number]]) => void -+>ff3 : (s1: (...args: [x: string, number] | [x: string, ...rest: A]) => void, s2: (x: string, ...rest: A | [number]) => void) => void -+>s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void - >args : [x: string, number] | [x: string, ...rest: A] - >s2 : (x: string, ...rest: A | [number]) => void - >x : string -@@= skipped -9, +9 lines =@@ - - s1 = s2; - >s1 = s2 : (x: string, ...rest: A | [number]) => void -->s1 : (...args: [x: string, ...rest: A | [number]]) => void -+>s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void - >s2 : (x: string, ...rest: A | [number]) => void - - s2 = s1; -->s2 = s1 : (...args: [x: string, ...rest: A | [number]]) => void -+>s2 = s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void - >s2 : (x: string, ...rest: A | [number]) => void -->s1 : (...args: [x: string, ...rest: A | [number]]) => void -+>s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void - } diff --git a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.d.types b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.d.types index d0c61e04d68..d0c1d1501ad 100644 --- a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.d.types +++ b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.d.types @@ -15,11 +15,11 @@ declare var c: C; >c : any declare var a: { x: C }; ->a : { x: any; } +>a : { x: C; } >x : any declare var b: { (x: C): C }; ->b : (x: any) => any +>b : (x: C) => C >x : any declare var d: { [x: C]: C }; @@ -27,7 +27,7 @@ declare var d: { [x: C]: C }; >x : any declare function f(x: C): C; ->f : (x: any) => any +>f : (x: C) => C >x : any declare class D extends C {} @@ -53,11 +53,11 @@ declare class D3 { } >M : any declare function h(x: T); ->h : (x: T) => any +>h : (x: T) => any >x : T declare function i(x: T); ->i : (x: T) => any +>i : (x: T) => any >M : any >x : T diff --git a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.d.types.diff b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.d.types.diff deleted file mode 100644 index e7d810dfa73..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.d.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.genericTypeReferenceWithoutTypeArgument.d.types -+++ new.genericTypeReferenceWithoutTypeArgument.d.types -@@= skipped -14, +14 lines =@@ - >c : any - - declare var a: { x: C }; -->a : { x: C; } -+>a : { x: any; } - >x : any - - declare var b: { (x: C): C }; -->b : (x: C) => C -+>b : (x: any) => any - >x : any - - declare var d: { [x: C]: C }; -@@= skipped -12, +12 lines =@@ - >x : any - - declare function f(x: C): C; -->f : (x: C) => C -+>f : (x: any) => any - >x : any - - declare class D extends C {} -@@= skipped -26, +26 lines =@@ - >M : any - - declare function h(x: T); -->h : (x: T) => any -+>h : (x: T) => any - >x : T - - declare function i(x: T); -->i : (x: T) => any -+>i : (x: T) => any - >M : any - >x : T diff --git a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.types b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.types index 9e966cbb8fe..443515db048 100644 --- a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.types +++ b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.types @@ -15,11 +15,11 @@ var c: C; >c : any var a: { x: C }; ->a : { x: any; } +>a : { x: C; } >x : any var b: { (x: C): C }; ->b : (x: any) => any +>b : (x: C) => C >x : any var d: { [x: C]: C }; @@ -27,22 +27,22 @@ var d: { [x: C]: C }; >x : any var e = (x: C) => { var y: C; return y; } ->e : (x: any) => any ->(x: C) => { var y: C; return y; } : (x: any) => any +>e : (x: C) => any +>(x: C) => { var y: C; return y; } : (x: C) => any >x : any >y : any >y : any function f(x: C): C { var y: C; return y; } ->f : (x: any) => any +>f : (x: C) => C >x : any >y : any >y : any var g = function f(x: C): C { var y: C; return y; } ->g : (x: any) => any ->function f(x: C): C { var y: C; return y; } : (x: any) => any ->f : (x: any) => any +>g : (x: C) => C +>function f(x: C): C { var y: C; return y; } : (x: C) => C +>f : (x: C) => C >x : any >y : any >y : any @@ -76,11 +76,11 @@ interface I2 extends M.E { } >M : typeof M function h(x: T) { } ->h : (x: T) => void +>h : (x: T) => void >x : T function i(x: T) { } ->i : (x: T) => void +>i : (x: T) => void >M : any >x : T diff --git a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.types.diff b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.types.diff deleted file mode 100644 index e6a230594bf..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument.types.diff +++ /dev/null @@ -1,58 +0,0 @@ ---- old.genericTypeReferenceWithoutTypeArgument.types -+++ new.genericTypeReferenceWithoutTypeArgument.types -@@= skipped -14, +14 lines =@@ - >c : any - - var a: { x: C }; -->a : { x: C; } -+>a : { x: any; } - >x : any - - var b: { (x: C): C }; -->b : (x: C) => C -+>b : (x: any) => any - >x : any - - var d: { [x: C]: C }; -@@= skipped -12, +12 lines =@@ - >x : any - - var e = (x: C) => { var y: C; return y; } -->e : (x: C) => any -->(x: C) => { var y: C; return y; } : (x: C) => any -+>e : (x: any) => any -+>(x: C) => { var y: C; return y; } : (x: any) => any - >x : any - >y : any - >y : any - - function f(x: C): C { var y: C; return y; } -->f : (x: C) => C -+>f : (x: any) => any - >x : any - >y : any - >y : any - - var g = function f(x: C): C { var y: C; return y; } -->g : (x: C) => C -->function f(x: C): C { var y: C; return y; } : (x: C) => C -->f : (x: C) => C -+>g : (x: any) => any -+>function f(x: C): C { var y: C; return y; } : (x: any) => any -+>f : (x: any) => any - >x : any - >y : any - >y : any -@@= skipped -49, +49 lines =@@ - >M : typeof M - - function h(x: T) { } -->h : (x: T) => void -+>h : (x: T) => void - >x : T - - function i(x: T) { } -->i : (x: T) => void -+>i : (x: T) => void - >M : any - >x : T diff --git a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument2.types b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument2.types index b247b339570..7a0234817f6 100644 --- a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument2.types +++ b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument2.types @@ -13,11 +13,11 @@ var c: I; >c : any var a: { x: I }; ->a : { x: any; } +>a : { x: I; } >x : any var b: { (x: I): I }; ->b : (x: any) => any +>b : (x: I) => I >x : any var d: { [x: I]: I }; @@ -25,22 +25,22 @@ var d: { [x: I]: I }; >x : any var e = (x: I) => { var y: I; return y; } ->e : (x: any) => any ->(x: I) => { var y: I; return y; } : (x: any) => any +>e : (x: I) => any +>(x: I) => { var y: I; return y; } : (x: I) => any >x : any >y : any >y : any function f(x: I): I { var y: I; return y; } ->f : (x: any) => any +>f : (x: I) => I >x : any >y : any >y : any var g = function f(x: I): I { var y: I; return y; } ->g : (x: any) => any ->function f(x: I): I { var y: I; return y; } : (x: any) => any ->f : (x: any) => any +>g : (x: I) => I +>function f(x: I): I { var y: I; return y; } : (x: I) => I +>f : (x: I) => I >x : any >y : any >y : any @@ -70,11 +70,11 @@ interface I2 extends M.C { } >M : any function h(x: T) { } ->h : (x: T) => void +>h : (x: T) => void >x : T function i(x: T) { } ->i : (x: T) => void +>i : (x: T) => void >M : any >x : T diff --git a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument2.types.diff b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument2.types.diff deleted file mode 100644 index e7fec85fb97..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument2.types.diff +++ /dev/null @@ -1,58 +0,0 @@ ---- old.genericTypeReferenceWithoutTypeArgument2.types -+++ new.genericTypeReferenceWithoutTypeArgument2.types -@@= skipped -12, +12 lines =@@ - >c : any - - var a: { x: I }; -->a : { x: I; } -+>a : { x: any; } - >x : any - - var b: { (x: I): I }; -->b : (x: I) => I -+>b : (x: any) => any - >x : any - - var d: { [x: I]: I }; -@@= skipped -12, +12 lines =@@ - >x : any - - var e = (x: I) => { var y: I; return y; } -->e : (x: I) => any -->(x: I) => { var y: I; return y; } : (x: I) => any -+>e : (x: any) => any -+>(x: I) => { var y: I; return y; } : (x: any) => any - >x : any - >y : any - >y : any - - function f(x: I): I { var y: I; return y; } -->f : (x: I) => I -+>f : (x: any) => any - >x : any - >y : any - >y : any - - var g = function f(x: I): I { var y: I; return y; } -->g : (x: I) => I -->function f(x: I): I { var y: I; return y; } : (x: I) => I -->f : (x: I) => I -+>g : (x: any) => any -+>function f(x: I): I { var y: I; return y; } : (x: any) => any -+>f : (x: any) => any - >x : any - >y : any - >y : any -@@= skipped -45, +45 lines =@@ - >M : any - - function h(x: T) { } -->h : (x: T) => void -+>h : (x: T) => void - >x : T - - function i(x: T) { } -->i : (x: T) => void -+>i : (x: T) => void - >M : any - >x : T diff --git a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument3.types b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument3.types index c3683bc124a..6281f267e94 100644 --- a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument3.types +++ b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument3.types @@ -15,11 +15,11 @@ declare var c: C; >c : any declare var a: { x: C }; ->a : { x: any; } +>a : { x: C; } >x : any declare var b: { (x: C): C }; ->b : (x: any) => any +>b : (x: C) => C >x : any declare var d: { [x: C]: C }; @@ -27,7 +27,7 @@ declare var d: { [x: C]: C }; >x : any declare function f(x: C): C; ->f : (x: any) => any +>f : (x: C) => C >x : any declare class D extends C {} @@ -53,11 +53,11 @@ declare class D3 { } >M : any declare function h(x: T); ->h : (x: T) => any +>h : (x: T) => any >x : T declare function i(x: T); ->i : (x: T) => any +>i : (x: T) => any >M : any >x : T diff --git a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument3.types.diff b/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument3.types.diff deleted file mode 100644 index 00cb8c01e98..00000000000 --- a/testdata/baselines/reference/submodule/conformance/genericTypeReferenceWithoutTypeArgument3.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.genericTypeReferenceWithoutTypeArgument3.types -+++ new.genericTypeReferenceWithoutTypeArgument3.types -@@= skipped -14, +14 lines =@@ - >c : any - - declare var a: { x: C }; -->a : { x: C; } -+>a : { x: any; } - >x : any - - declare var b: { (x: C): C }; -->b : (x: C) => C -+>b : (x: any) => any - >x : any - - declare var d: { [x: C]: C }; -@@= skipped -12, +12 lines =@@ - >x : any - - declare function f(x: C): C; -->f : (x: C) => C -+>f : (x: any) => any - >x : any - - declare class D extends C {} -@@= skipped -26, +26 lines =@@ - >M : any - - declare function h(x: T); -->h : (x: T) => any -+>h : (x: T) => any - >x : T - - declare function i(x: T); -->i : (x: T) => any -+>i : (x: T) => any - >M : any - >x : T diff --git a/testdata/baselines/reference/submodule/conformance/ifDoWhileStatements.types b/testdata/baselines/reference/submodule/conformance/ifDoWhileStatements.types index 9d9a927d480..e9df43a359a 100644 --- a/testdata/baselines/reference/submodule/conformance/ifDoWhileStatements.types +++ b/testdata/baselines/reference/submodule/conformance/ifDoWhileStatements.types @@ -63,9 +63,9 @@ namespace M { >F2 : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } namespace N { @@ -82,9 +82,9 @@ namespace N { >F2 : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } // literals @@ -386,29 +386,29 @@ do { }while(k) >k : { x: number; y: string; } function fn(x?: string): I { return null; } ->fn : (x?: string | undefined) => I +>fn : (x?: string) => I >x : string | undefined if (fn()) { } >fn() : I ->fn : (x?: string | undefined) => I +>fn : (x?: string) => I while (fn()) { } >fn() : I ->fn : (x?: string | undefined) => I +>fn : (x?: string) => I do { }while(fn()) >fn() : I ->fn : (x?: string | undefined) => I +>fn : (x?: string) => I if (fn) { } ->fn : (x?: string | undefined) => I +>fn : (x?: string) => I while (fn) { } ->fn : (x?: string | undefined) => I +>fn : (x?: string) => I do { }while(fn) ->fn : (x?: string | undefined) => I +>fn : (x?: string) => I diff --git a/testdata/baselines/reference/submodule/conformance/ifDoWhileStatements.types.diff b/testdata/baselines/reference/submodule/conformance/ifDoWhileStatements.types.diff deleted file mode 100644 index e15ea2c8b57..00000000000 --- a/testdata/baselines/reference/submodule/conformance/ifDoWhileStatements.types.diff +++ /dev/null @@ -1,62 +0,0 @@ ---- old.ifDoWhileStatements.types -+++ new.ifDoWhileStatements.types -@@= skipped -62, +62 lines =@@ - >F2 : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - - namespace N { -@@= skipped -19, +19 lines =@@ - >F2 : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - - // literals -@@= skipped -304, +304 lines =@@ - >k : { x: number; y: string; } - - function fn(x?: string): I { return null; } -->fn : (x?: string) => I -+>fn : (x?: string | undefined) => I - >x : string | undefined - - if (fn()) { } - >fn() : I -->fn : (x?: string) => I -+>fn : (x?: string | undefined) => I - - while (fn()) { } - >fn() : I -->fn : (x?: string) => I -+>fn : (x?: string | undefined) => I - - do { }while(fn()) - >fn() : I -->fn : (x?: string) => I -+>fn : (x?: string | undefined) => I - - if (fn) { } -->fn : (x?: string) => I -+>fn : (x?: string | undefined) => I - - while (fn) { } -->fn : (x?: string) => I -+>fn : (x?: string | undefined) => I - - do { }while(fn) -->fn : (x?: string) => I -+>fn : (x?: string | undefined) => I - - diff --git a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node18).types b/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node18).types index bb5071c0f94..89fdd52c30d 100644 --- a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node18).types +++ b/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node18).types @@ -32,7 +32,7 @@ import * as thing6 from "./mod.mjs" with { type: "json", field: 0..toString() }; >type : any >field : any >0..toString() : string ->0..toString : (radix?: number | undefined) => string +>0..toString : (radix?: number) => string >0. : 0 ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node18).types.diff b/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node18).types.diff deleted file mode 100644 index 0b662d4efa6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node18).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.importAttributes6(module=node18).types -+++ new.importAttributes6(module=node18).types -@@= skipped -31, +31 lines =@@ - >type : any - >field : any - >0..toString() : string -->0..toString : (radix?: number) => string -+>0..toString : (radix?: number | undefined) => string - >0. : 0 -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node20).types b/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node20).types index bb5071c0f94..89fdd52c30d 100644 --- a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node20).types +++ b/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node20).types @@ -32,7 +32,7 @@ import * as thing6 from "./mod.mjs" with { type: "json", field: 0..toString() }; >type : any >field : any >0..toString() : string ->0..toString : (radix?: number | undefined) => string +>0..toString : (radix?: number) => string >0. : 0 ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node20).types.diff b/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node20).types.diff deleted file mode 100644 index 8da847eb6c8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=node20).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.importAttributes6(module=node20).types -+++ new.importAttributes6(module=node20).types -@@= skipped -31, +31 lines =@@ - >type : any - >field : any - >0..toString() : string -->0..toString : (radix?: number) => string -+>0..toString : (radix?: number | undefined) => string - >0. : 0 -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=nodenext).types b/testdata/baselines/reference/submodule/conformance/importAttributes6(module=nodenext).types index bb5071c0f94..89fdd52c30d 100644 --- a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=nodenext).types +++ b/testdata/baselines/reference/submodule/conformance/importAttributes6(module=nodenext).types @@ -32,7 +32,7 @@ import * as thing6 from "./mod.mjs" with { type: "json", field: 0..toString() }; >type : any >field : any >0..toString() : string ->0..toString : (radix?: number | undefined) => string +>0..toString : (radix?: number) => string >0. : 0 ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=nodenext).types.diff b/testdata/baselines/reference/submodule/conformance/importAttributes6(module=nodenext).types.diff deleted file mode 100644 index a8f5f113575..00000000000 --- a/testdata/baselines/reference/submodule/conformance/importAttributes6(module=nodenext).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.importAttributes6(module=nodenext).types -+++ new.importAttributes6(module=nodenext).types -@@= skipped -31, +31 lines =@@ - >type : any - >field : any - >0..toString() : string -->0..toString : (radix?: number) => string -+>0..toString : (radix?: number | undefined) => string - >0. : 0 -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/importMeta(module=commonjs,target=esnext).types b/testdata/baselines/reference/submodule/conformance/importMeta(module=commonjs,target=esnext).types index c3b204d57e6..a3caad26164 100644 --- a/testdata/baselines/reference/submodule/conformance/importMeta(module=commonjs,target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/importMeta(module=commonjs,target=esnext).types @@ -11,11 +11,11 @@ >response : Response >await fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Response >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise ->fetch : (input: URL | RequestInfo, init?: RequestInit | undefined) => Promise +>fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise >new URL("../hamsters.jpg", import.meta.url).toString() : string >new URL("../hamsters.jpg", import.meta.url).toString : () => string >new URL("../hamsters.jpg", import.meta.url) : URL ->URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } +>URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } >"../hamsters.jpg" : "../hamsters.jpg" >import.meta.url : string >import.meta : ImportMeta @@ -47,7 +47,7 @@ const image = new Image(); >image : HTMLImageElement >new Image() : HTMLImageElement ->Image : new (width?: number | undefined, height?: number | undefined) => HTMLImageElement +>Image : new (width?: number, height?: number) => HTMLImageElement image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -56,7 +56,7 @@ >src : string >URL.createObjectURL(blob) : string >URL.createObjectURL : (obj: Blob | MediaSource) => string ->URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } +>URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } >createObjectURL : (obj: Blob | MediaSource) => string >blob : Blob diff --git a/testdata/baselines/reference/submodule/conformance/importMeta(module=commonjs,target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/importMeta(module=commonjs,target=esnext).types.diff deleted file mode 100644 index 71308745074..00000000000 --- a/testdata/baselines/reference/submodule/conformance/importMeta(module=commonjs,target=esnext).types.diff +++ /dev/null @@ -1,33 +0,0 @@ ---- old.importMeta(module=commonjs,target=esnext).types -+++ new.importMeta(module=commonjs,target=esnext).types -@@= skipped -10, +10 lines =@@ - >response : Response - >await fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Response - >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise -->fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -+>fetch : (input: URL | RequestInfo, init?: RequestInit | undefined) => Promise - >new URL("../hamsters.jpg", import.meta.url).toString() : string - >new URL("../hamsters.jpg", import.meta.url).toString : () => string - >new URL("../hamsters.jpg", import.meta.url) : URL -->URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } -+>URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } - >"../hamsters.jpg" : "../hamsters.jpg" - >import.meta.url : string - >import.meta : ImportMeta -@@= skipped -36, +36 lines =@@ - const image = new Image(); - >image : HTMLImageElement - >new Image() : HTMLImageElement -->Image : new (width?: number, height?: number) => HTMLImageElement -+>Image : new (width?: number | undefined, height?: number | undefined) => HTMLImageElement - - image.src = URL.createObjectURL(blob); - >image.src = URL.createObjectURL(blob) : string -@@= skipped -9, +9 lines =@@ - >src : string - >URL.createObjectURL(blob) : string - >URL.createObjectURL : (obj: Blob | MediaSource) => string -->URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } -+>URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } - >createObjectURL : (obj: Blob | MediaSource) => string - >blob : Blob diff --git a/testdata/baselines/reference/submodule/conformance/importMeta(module=es2020,target=esnext).types b/testdata/baselines/reference/submodule/conformance/importMeta(module=es2020,target=esnext).types index c3b204d57e6..a3caad26164 100644 --- a/testdata/baselines/reference/submodule/conformance/importMeta(module=es2020,target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/importMeta(module=es2020,target=esnext).types @@ -11,11 +11,11 @@ >response : Response >await fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Response >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise ->fetch : (input: URL | RequestInfo, init?: RequestInit | undefined) => Promise +>fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise >new URL("../hamsters.jpg", import.meta.url).toString() : string >new URL("../hamsters.jpg", import.meta.url).toString : () => string >new URL("../hamsters.jpg", import.meta.url) : URL ->URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } +>URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } >"../hamsters.jpg" : "../hamsters.jpg" >import.meta.url : string >import.meta : ImportMeta @@ -47,7 +47,7 @@ const image = new Image(); >image : HTMLImageElement >new Image() : HTMLImageElement ->Image : new (width?: number | undefined, height?: number | undefined) => HTMLImageElement +>Image : new (width?: number, height?: number) => HTMLImageElement image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -56,7 +56,7 @@ >src : string >URL.createObjectURL(blob) : string >URL.createObjectURL : (obj: Blob | MediaSource) => string ->URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } +>URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } >createObjectURL : (obj: Blob | MediaSource) => string >blob : Blob diff --git a/testdata/baselines/reference/submodule/conformance/importMeta(module=es2020,target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/importMeta(module=es2020,target=esnext).types.diff deleted file mode 100644 index 0327c876e9a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/importMeta(module=es2020,target=esnext).types.diff +++ /dev/null @@ -1,33 +0,0 @@ ---- old.importMeta(module=es2020,target=esnext).types -+++ new.importMeta(module=es2020,target=esnext).types -@@= skipped -10, +10 lines =@@ - >response : Response - >await fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Response - >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise -->fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -+>fetch : (input: URL | RequestInfo, init?: RequestInit | undefined) => Promise - >new URL("../hamsters.jpg", import.meta.url).toString() : string - >new URL("../hamsters.jpg", import.meta.url).toString : () => string - >new URL("../hamsters.jpg", import.meta.url) : URL -->URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } -+>URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } - >"../hamsters.jpg" : "../hamsters.jpg" - >import.meta.url : string - >import.meta : ImportMeta -@@= skipped -36, +36 lines =@@ - const image = new Image(); - >image : HTMLImageElement - >new Image() : HTMLImageElement -->Image : new (width?: number, height?: number) => HTMLImageElement -+>Image : new (width?: number | undefined, height?: number | undefined) => HTMLImageElement - - image.src = URL.createObjectURL(blob); - >image.src = URL.createObjectURL(blob) : string -@@= skipped -9, +9 lines =@@ - >src : string - >URL.createObjectURL(blob) : string - >URL.createObjectURL : (obj: Blob | MediaSource) => string -->URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } -+>URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } - >createObjectURL : (obj: Blob | MediaSource) => string - >blob : Blob diff --git a/testdata/baselines/reference/submodule/conformance/importMeta(module=esnext,target=esnext).types b/testdata/baselines/reference/submodule/conformance/importMeta(module=esnext,target=esnext).types index c3b204d57e6..a3caad26164 100644 --- a/testdata/baselines/reference/submodule/conformance/importMeta(module=esnext,target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/importMeta(module=esnext,target=esnext).types @@ -11,11 +11,11 @@ >response : Response >await fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Response >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise ->fetch : (input: URL | RequestInfo, init?: RequestInit | undefined) => Promise +>fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise >new URL("../hamsters.jpg", import.meta.url).toString() : string >new URL("../hamsters.jpg", import.meta.url).toString : () => string >new URL("../hamsters.jpg", import.meta.url) : URL ->URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } +>URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } >"../hamsters.jpg" : "../hamsters.jpg" >import.meta.url : string >import.meta : ImportMeta @@ -47,7 +47,7 @@ const image = new Image(); >image : HTMLImageElement >new Image() : HTMLImageElement ->Image : new (width?: number | undefined, height?: number | undefined) => HTMLImageElement +>Image : new (width?: number, height?: number) => HTMLImageElement image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -56,7 +56,7 @@ >src : string >URL.createObjectURL(blob) : string >URL.createObjectURL : (obj: Blob | MediaSource) => string ->URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } +>URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } >createObjectURL : (obj: Blob | MediaSource) => string >blob : Blob diff --git a/testdata/baselines/reference/submodule/conformance/importMeta(module=esnext,target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/importMeta(module=esnext,target=esnext).types.diff deleted file mode 100644 index 8815eb14458..00000000000 --- a/testdata/baselines/reference/submodule/conformance/importMeta(module=esnext,target=esnext).types.diff +++ /dev/null @@ -1,33 +0,0 @@ ---- old.importMeta(module=esnext,target=esnext).types -+++ new.importMeta(module=esnext,target=esnext).types -@@= skipped -10, +10 lines =@@ - >response : Response - >await fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Response - >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise -->fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -+>fetch : (input: URL | RequestInfo, init?: RequestInit | undefined) => Promise - >new URL("../hamsters.jpg", import.meta.url).toString() : string - >new URL("../hamsters.jpg", import.meta.url).toString : () => string - >new URL("../hamsters.jpg", import.meta.url) : URL -->URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } -+>URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } - >"../hamsters.jpg" : "../hamsters.jpg" - >import.meta.url : string - >import.meta : ImportMeta -@@= skipped -36, +36 lines =@@ - const image = new Image(); - >image : HTMLImageElement - >new Image() : HTMLImageElement -->Image : new (width?: number, height?: number) => HTMLImageElement -+>Image : new (width?: number | undefined, height?: number | undefined) => HTMLImageElement - - image.src = URL.createObjectURL(blob); - >image.src = URL.createObjectURL(blob) : string -@@= skipped -9, +9 lines =@@ - >src : string - >URL.createObjectURL(blob) : string - >URL.createObjectURL : (obj: Blob | MediaSource) => string -->URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string | URL): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL): URL | null; revokeObjectURL(url: string): void; } -+>URL : { new (url: string | URL, base?: string | URL | undefined): URL; prototype: URL; canParse(url: string | URL, base?: string | URL | undefined): boolean; createObjectURL(obj: Blob | MediaSource): string; parse(url: string | URL, base?: string | URL | undefined): URL | null; revokeObjectURL(url: string): void; } - >createObjectURL : (obj: Blob | MediaSource) => string - >blob : Blob diff --git a/testdata/baselines/reference/submodule/conformance/importTag24.types b/testdata/baselines/reference/submodule/conformance/importTag24.types index cde193037f7..8fe6d0cfdb8 100644 --- a/testdata/baselines/reference/submodule/conformance/importTag24.types +++ b/testdata/baselines/reference/submodule/conformance/importTag24.types @@ -44,6 +44,6 @@ export const foo = new Set([ 'a', 'b' ]); * @returns {Foo} */ function f4() { return 1; } ->f4 : () => string +>f4 : () => Foo >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/importTag24.types.diff b/testdata/baselines/reference/submodule/conformance/importTag24.types.diff deleted file mode 100644 index baaece57d3c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/importTag24.types.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.importTag24.types -+++ new.importTag24.types -@@= skipped -43, +43 lines =@@ - * @returns {Foo} - */ - function f4() { return 1; } -->f4 : () => Foo -+>f4 : () => string - >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/importTypeGeneric.types b/testdata/baselines/reference/submodule/conformance/importTypeGeneric.types index 1228029876b..c28f76e1ac9 100644 --- a/testdata/baselines/reference/submodule/conformance/importTypeGeneric.types +++ b/testdata/baselines/reference/submodule/conformance/importTypeGeneric.types @@ -12,7 +12,7 @@ export interface Foo { } === usage.ts === export function getFooFrom(v: T): import(T).Foo { ->getFooFrom : (v: T) => any +>getFooFrom : (v: T) => import(T).Foo >v : T return undefined as any; @@ -21,7 +21,7 @@ export function getFooFrom(v: T): import(T).Foo { } export function getFooValueFrom(v: T): import(T).Foo["a"] { ->getFooValueFrom : (v: T) => any +>getFooValueFrom : (v: T) => import(T).Foo["a"] >v : T return undefined as any; diff --git a/testdata/baselines/reference/submodule/conformance/importTypeGeneric.types.diff b/testdata/baselines/reference/submodule/conformance/importTypeGeneric.types.diff deleted file mode 100644 index 2e23d069f6d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/importTypeGeneric.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.importTypeGeneric.types -+++ new.importTypeGeneric.types -@@= skipped -11, +11 lines =@@ - } - === usage.ts === - export function getFooFrom(v: T): import(T).Foo { -->getFooFrom : (v: T) => import(T).Foo -+>getFooFrom : (v: T) => any - >v : T - - return undefined as any; -@@= skipped -9, +9 lines =@@ - } - - export function getFooValueFrom(v: T): import(T).Foo["a"] { -->getFooValueFrom : (v: T) => import(T).Foo["a"] -+>getFooValueFrom : (v: T) => any - >v : T - - return undefined as any; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.types b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.types index 9f06d141823..514885cc137 100644 --- a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.types +++ b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.types @@ -15,7 +15,7 @@ declare class MyClass { >field : string static Bar: (x: string, y?: number) => void; ->Bar : (x: string, y?: number | undefined) => void +>Bar : (x: string, y?: number) => void >x : string >y : number | undefined @@ -49,11 +49,11 @@ a = new Foo({doer: Foo.Bar}); >a : import("./externs") >new Foo({doer: Foo.Bar}) : import("./externs") >Foo : typeof import("./externs") ->{doer: Foo.Bar} : { doer: (x: string, y?: number | undefined) => void; } ->doer : (x: string, y?: number | undefined) => void ->Foo.Bar : (x: string, y?: number | undefined) => void +>{doer: Foo.Bar} : { doer: (x: string, y?: number) => void; } +>doer : (x: string, y?: number) => void +>Foo.Bar : (x: string, y?: number) => void >Foo : typeof import("./externs") ->Bar : (x: string, y?: number | undefined) => void +>Bar : (x: string, y?: number) => void const q = /** @type {import("./externs").Bar} */({ doer: q => q }); >q : import("./externs").Bar @@ -65,8 +65,8 @@ const q = /** @type {import("./externs").Bar} */({ doer: q => q }); >q : string const r = /** @type {typeof import("./externs").Bar} */(r => r); ->r : (x: string, y?: number | undefined) => void ->(r => r) : (x: string, y?: number | undefined) => void +>r : (x: string, y?: number) => void +>(r => r) : (x: string, y?: number) => void >r => r : (r: string) => string >r : string >r : string diff --git a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.types.diff b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.types.diff index 80fd6e52272..a2da13580d0 100644 --- a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.types.diff +++ b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.types.diff @@ -1,12 +1,6 @@ --- old.importTypeInJSDoc.types +++ new.importTypeInJSDoc.types -@@= skipped -14, +14 lines =@@ - >field : string - - static Bar: (x: string, y?: number) => void; -->Bar : (x: string, y?: number) => void -+>Bar : (x: string, y?: number | undefined) => void - >x : string +@@= skipped -19, +19 lines =@@ >y : number | undefined constructor(x: MyClass.Bar); @@ -14,31 +8,4 @@ +>x : import("./externs").Bar >MyClass : any } - declare global { -@@= skipped -34, +34 lines =@@ - >a : import("./externs") - >new Foo({doer: Foo.Bar}) : import("./externs") - >Foo : typeof import("./externs") -->{doer: Foo.Bar} : { doer: (x: string, y?: number) => void; } -->doer : (x: string, y?: number) => void -->Foo.Bar : (x: string, y?: number) => void -+>{doer: Foo.Bar} : { doer: (x: string, y?: number | undefined) => void; } -+>doer : (x: string, y?: number | undefined) => void -+>Foo.Bar : (x: string, y?: number | undefined) => void - >Foo : typeof import("./externs") -->Bar : (x: string, y?: number) => void -+>Bar : (x: string, y?: number | undefined) => void - - const q = /** @type {import("./externs").Bar} */({ doer: q => q }); - >q : import("./externs").Bar -@@= skipped -16, +16 lines =@@ - >q : string - - const r = /** @type {typeof import("./externs").Bar} */(r => r); -->r : (x: string, y?: number) => void -->(r => r) : (x: string, y?: number) => void -+>r : (x: string, y?: number | undefined) => void -+>(r => r) : (x: string, y?: number | undefined) => void - >r => r : (r: string) => string - >r : string - >r : string \ No newline at end of file + declare global { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/inOperatorWithValidOperands.types b/testdata/baselines/reference/submodule/conformance/inOperatorWithValidOperands.types index 37ee3a1a14a..5326b3e117a 100644 --- a/testdata/baselines/reference/submodule/conformance/inOperatorWithValidOperands.types +++ b/testdata/baselines/reference/submodule/conformance/inOperatorWithValidOperands.types @@ -100,7 +100,7 @@ function unionCase(t: T | U) { } function unionCase2(t: T | object) { ->unionCase2 : (t: object | T) => void +>unionCase2 : (t: T | object) => void >t : object | T var rb5 = x in t; diff --git a/testdata/baselines/reference/submodule/conformance/inOperatorWithValidOperands.types.diff b/testdata/baselines/reference/submodule/conformance/inOperatorWithValidOperands.types.diff deleted file mode 100644 index 81704ff5254..00000000000 --- a/testdata/baselines/reference/submodule/conformance/inOperatorWithValidOperands.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.inOperatorWithValidOperands.types -+++ new.inOperatorWithValidOperands.types -@@= skipped -99, +99 lines =@@ - } - - function unionCase2(t: T | object) { -->unionCase2 : (t: T | object) => void -+>unionCase2 : (t: object | T) => void - >t : object | T - - var rb5 = x in t; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/independentPropertyVariance.types b/testdata/baselines/reference/submodule/conformance/independentPropertyVariance.types index ae23949fb52..1463d52767a 100644 --- a/testdata/baselines/reference/submodule/conformance/independentPropertyVariance.types +++ b/testdata/baselines/reference/submodule/conformance/independentPropertyVariance.types @@ -9,12 +9,12 @@ declare const x: { a: 1, b: string }; >b : string declare const y: { a: number, b: 'a' }; ->y : { a: number; b: "a"; } +>y : { a: number; b: 'a'; } >a : number >b : "a" x === y; >x === y : boolean >x : { a: 1; b: string; } ->y : { a: number; b: "a"; } +>y : { a: number; b: 'a'; } diff --git a/testdata/baselines/reference/submodule/conformance/independentPropertyVariance.types.diff b/testdata/baselines/reference/submodule/conformance/independentPropertyVariance.types.diff new file mode 100644 index 00000000000..120480f5afc --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/independentPropertyVariance.types.diff @@ -0,0 +1,16 @@ +--- old.independentPropertyVariance.types ++++ new.independentPropertyVariance.types +@@= skipped -8, +8 lines =@@ + >b : string + + declare const y: { a: number, b: 'a' }; +->y : { a: number; b: "a"; } ++>y : { a: number; b: 'a'; } + >a : number + >b : "a" + + x === y; + >x === y : boolean + >x : { a: 1; b: string; } +->y : { a: number; b: "a"; } ++>y : { a: number; b: 'a'; } diff --git a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types index ecafe2eddc0..c25ee0ffb4e 100644 --- a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types +++ b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types @@ -849,8 +849,8 @@ const directive = Symbol('directive'); >'directive' : "directive" declare function foo(options: { [x in string]: (arg: TArg) => TRet } & { [directive]?: TDir }): void; ->foo : (options: { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => void ->options : { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; } +>foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void +>options : { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir; } >arg : TArg >[directive] : TDir | undefined >directive : unique symbol @@ -858,7 +858,7 @@ declare function foo(options: { [x in string]: (arg: TArg) => let case1 = foo({ >case1 : void >foo({ [directive]: (x: string) => 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,}) : void ->foo : (options: { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => 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; } [directive]: (x: string) => 'str', @@ -889,7 +889,7 @@ let case1 = foo({ let case2 = foo({ >case2 : void >foo({ addOne: (x: number) => x + 1, double: (x: number) => x + x, [directive]: (x: string) => 'str',}) : void ->foo : (options: { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => 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"; } addOne: (x: number) => x + 1, @@ -920,7 +920,7 @@ let case2 = foo({ let case3 = foo({ >case3 : void >foo({ [directive]: 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,}) : void ->foo : (options: { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => 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; } [directive]: 'str', diff --git a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff index 96942f00408..855867eca2f 100644 --- a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff @@ -1,44 +1,6 @@ --- old.indexSignatures1.types +++ new.indexSignatures1.types -@@= skipped -848, +848 lines =@@ - >'directive' : "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 -->options : { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir; } -+>foo : (options: { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => void -+>options : { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; } - >arg : TArg - >[directive] : TDir | undefined - >directive : unique symbol -@@= skipped -9, +9 lines =@@ - let case1 = foo({ - >case1 : void - >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: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => 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; } - - [directive]: (x: string) => 'str', -@@= skipped -31, +31 lines =@@ - let case2 = foo({ - >case2 : void - >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: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => 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"; } - - addOne: (x: number) => x + 1, -@@= skipped -31, +31 lines =@@ - let case3 = foo({ - >case3 : void - >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: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => void - >{ [directive]: 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,} : { [directive]: string; addOne: (x: number) => number; double: (x: number) => number; } - - [directive]: 'str', -@@= skipped -78, +78 lines =@@ +@@= skipped -997, +997 lines =@@ const a: A = { [id]: 'test' } >a : A diff --git a/testdata/baselines/reference/submodule/conformance/inferFromBindingPattern.types b/testdata/baselines/reference/submodule/conformance/inferFromBindingPattern.types index e4745019622..20904a3102b 100644 --- a/testdata/baselines/reference/submodule/conformance/inferFromBindingPattern.types +++ b/testdata/baselines/reference/submodule/conformance/inferFromBindingPattern.types @@ -62,24 +62,24 @@ interface Person { } declare function selectJohn(props?: SelectProps): SelectResult; ->selectJohn : (props?: SelectProps | undefined) => SelectResult +>selectJohn : (props?: SelectProps) => SelectResult >props : SelectProps | undefined const [person] = selectJohn(); >person : Person >selectJohn() : SelectResult ->selectJohn : (props?: SelectProps | undefined) => SelectResult +>selectJohn : (props?: SelectProps) => SelectResult const [any, whatever] = selectJohn(); >any : Person >whatever : Person >selectJohn() : SelectResult ->selectJohn : (props?: SelectProps | undefined) => SelectResult +>selectJohn : (props?: SelectProps) => SelectResult const john = selectJohn(); >john : SelectResult >selectJohn() : SelectResult ->selectJohn : (props?: SelectProps | undefined) => SelectResult +>selectJohn : (props?: SelectProps) => SelectResult const [personAgain, nufinspecial] = john; >personAgain : Person @@ -93,7 +93,7 @@ declare function makeTuple(arg: T1): [T1]; >arg : T1 declare function stringy(arg?: T): T; ->stringy : (arg?: T | undefined) => T +>stringy : (arg?: T) => T >arg : T | undefined const isStringTuple = makeTuple(stringy()); // [string] @@ -101,12 +101,12 @@ const isStringTuple = makeTuple(stringy()); // [string] >makeTuple(stringy()) : [string] >makeTuple : (arg: T1) => [T1] >stringy() : string ->stringy : (arg?: T | undefined) => T +>stringy : (arg?: T) => T const [isAny] = makeTuple(stringy()); // [string] >isAny : string >makeTuple(stringy()) : [string] >makeTuple : (arg: T1) => [T1] >stringy() : string ->stringy : (arg?: T | undefined) => T +>stringy : (arg?: T) => T diff --git a/testdata/baselines/reference/submodule/conformance/inferFromBindingPattern.types.diff b/testdata/baselines/reference/submodule/conformance/inferFromBindingPattern.types.diff deleted file mode 100644 index 9b2532ba5a9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/inferFromBindingPattern.types.diff +++ /dev/null @@ -1,54 +0,0 @@ ---- old.inferFromBindingPattern.types -+++ new.inferFromBindingPattern.types -@@= skipped -61, +61 lines =@@ - } - - declare function selectJohn(props?: SelectProps): SelectResult; -->selectJohn : (props?: SelectProps) => SelectResult -+>selectJohn : (props?: SelectProps | undefined) => SelectResult - >props : SelectProps | undefined - - const [person] = selectJohn(); - >person : Person - >selectJohn() : SelectResult -->selectJohn : (props?: SelectProps) => SelectResult -+>selectJohn : (props?: SelectProps | undefined) => SelectResult - - const [any, whatever] = selectJohn(); - >any : Person - >whatever : Person - >selectJohn() : SelectResult -->selectJohn : (props?: SelectProps) => SelectResult -+>selectJohn : (props?: SelectProps | undefined) => SelectResult - - const john = selectJohn(); - >john : SelectResult - >selectJohn() : SelectResult -->selectJohn : (props?: SelectProps) => SelectResult -+>selectJohn : (props?: SelectProps | undefined) => SelectResult - - const [personAgain, nufinspecial] = john; - >personAgain : Person -@@= skipped -31, +31 lines =@@ - >arg : T1 - - declare function stringy(arg?: T): T; -->stringy : (arg?: T) => T -+>stringy : (arg?: T | undefined) => T - >arg : T | undefined - - const isStringTuple = makeTuple(stringy()); // [string] -@@= skipped -8, +8 lines =@@ - >makeTuple(stringy()) : [string] - >makeTuple : (arg: T1) => [T1] - >stringy() : string -->stringy : (arg?: T) => T -+>stringy : (arg?: T | undefined) => T - - const [isAny] = makeTuple(stringy()); // [string] - >isAny : string - >makeTuple(stringy()) : [string] - >makeTuple : (arg: T1) => [T1] - >stringy() : string -->stringy : (arg?: T) => T -+>stringy : (arg?: T | undefined) => T diff --git a/testdata/baselines/reference/submodule/conformance/inferTypes1.types b/testdata/baselines/reference/submodule/conformance/inferTypes1.types index c273bed535f..f911fcc74ca 100644 --- a/testdata/baselines/reference/submodule/conformance/inferTypes1.types +++ b/testdata/baselines/reference/submodule/conformance/inferTypes1.types @@ -219,9 +219,9 @@ type T44 = X2<{ a: number, b: string, c: boolean }>; // string | number type X3 = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never; >X3 : X3 ->a : (x: U) => void +>a : (x: infer U) => void >x : U ->b : (x: U) => void +>b : (x: infer U) => void >x : U type T50 = X3<{}>; // never @@ -329,7 +329,7 @@ type Jsonified = T extends string | number | boolean | null ? T : T extends undefined | Function ? never // undefined and functions are removed : T extends { toJSON(): infer R } ? R // toJSON is called if it exists (e.g. Date) ->toJSON : () => R +>toJSON : () => infer R : T extends object ? JsonifiedObject : "what is this"; @@ -479,7 +479,7 @@ function invoker (key: K, const result = invoker('test', true)({ test: (a: boolean) => 123 }) >result : number >invoker('test', true)({ test: (a: boolean) => 123 }) : number ->invoker('test', true) : any>>(obj: T) => ReturnType +>invoker('test', true) : any>>(obj: T) => ReturnType >invoker : (key: K, ...args: A) => any>>(obj: T) => ReturnType >'test' : "test" >true : true diff --git a/testdata/baselines/reference/submodule/conformance/inferTypes1.types.diff b/testdata/baselines/reference/submodule/conformance/inferTypes1.types.diff index 6a4820eda45..872e8ed1560 100644 --- a/testdata/baselines/reference/submodule/conformance/inferTypes1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/inferTypes1.types.diff @@ -1,23 +1,11 @@ --- old.inferTypes1.types +++ new.inferTypes1.types -@@= skipped -218, +218 lines =@@ - - type X3 = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never; - >X3 : X3 -->a : (x: infer U) => void -+>a : (x: U) => void - >x : U -->b : (x: infer U) => void -+>b : (x: U) => void - >x : U - - type T50 = X3<{}>; // never -@@= skipped -110, +110 lines =@@ - T extends string | number | boolean | null ? T - : T extends undefined | Function ? never // undefined and functions are removed - : T extends { toJSON(): infer R } ? R // toJSON is called if it exists (e.g. Date) -->toJSON : () => infer R -+>toJSON : () => R - - : T extends object ? JsonifiedObject - : "what is this"; \ No newline at end of file +@@= skipped -478, +478 lines =@@ + const result = invoker('test', true)({ test: (a: boolean) => 123 }) + >result : number + >invoker('test', true)({ test: (a: boolean) => 123 }) : number +->invoker('test', true) : any>>(obj: T) => ReturnType ++>invoker('test', true) : any>>(obj: T) => ReturnType + >invoker : (key: K, ...args: A) => any>>(obj: T) => ReturnType + >'test' : "test" + >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/inferTypes2.types b/testdata/baselines/reference/submodule/conformance/inferTypes2.types index ee9de71441a..8a4f546400e 100644 --- a/testdata/baselines/reference/submodule/conformance/inferTypes2.types +++ b/testdata/baselines/reference/submodule/conformance/inferTypes2.types @@ -22,7 +22,7 @@ export type BadNested = { x: T extends number ? T : string }; >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 { x: infer P extends number ? infer P : string; } ? P : never +>foo2 : (obj: T) => T extends { [K in keyof BadNested]: BadNested[K]; } ? P : never >obj : T export function bar2(obj: T) { @@ -31,7 +31,7 @@ export function bar2(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 { 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 >obj : T } diff --git a/testdata/baselines/reference/submodule/conformance/inferTypes2.types.diff b/testdata/baselines/reference/submodule/conformance/inferTypes2.types.diff deleted file mode 100644 index e802912b42f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/inferTypes2.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.inferTypes2.types -+++ new.inferTypes2.types -@@= skipped -21, +21 lines =@@ - >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 { x: infer P extends number ? infer P : string; } ? P : never - >obj : T - - export function bar2(obj: T) { -@@= skipped -9, +9 lines =@@ - - 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_1) => T_1 extends { x: infer P extends number ? infer P : string; } ? P : never - >obj : T - } diff --git a/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.js b/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.js index 983b757b627..4809ed45888 100644 --- a/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.js +++ b/testdata/baselines/reference/submodule/conformance/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 infer U extends number ? 1 : 0; +declare function f2(): () => (T extends ExpectNumber ? 1 : 0); diff --git a/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.js.diff b/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.js.diff index 500c12f4cf4..3e5e0647c78 100644 --- a/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.js.diff +++ b/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.js.diff @@ -16,9 +16,5 @@ -type IfEquals = (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? A : B; +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 infer U extends number ? 1 : 0; \ No newline at end of file + declare function f1(): () => (T extends infer U extends number ? 1 : 0); + type ExpectNumber = T; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.types b/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.types index 24144d8f187..6be9b7606ad 100644 --- a/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.types +++ b/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.types @@ -310,24 +310,24 @@ type IfEquals = (() => T extends X ? 1 : 2) extends () => T ex >IfEquals : IfEquals 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; >ExpectNumber : T declare const x2: () => (T extends ExpectNumber ? 1 : 0); ->x2 : () => T extends infer U extends number ? 1 : 0 +>x2 : () => (T extends ExpectNumber ? 1 : 0) function f2() { ->f2 : () => () => T extends infer U extends number ? 1 : 0 +>f2 : () => () => (T extends ExpectNumber ? 1 : 0) return x2; ->x2 : () => T extends infer U extends number ? 1 : 0 +>x2 : () => (T extends ExpectNumber ? 1 : 0) } diff --git a/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.types.diff b/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.types.diff deleted file mode 100644 index accdaf75b9f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/inferTypesWithExtends1.types.diff +++ /dev/null @@ -1,33 +0,0 @@ ---- old.inferTypesWithExtends1.types -+++ new.inferTypesWithExtends1.types -@@= skipped -309, +309 lines =@@ - >IfEquals : IfEquals - - 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; - >ExpectNumber : T - - declare const x2: () => (T extends ExpectNumber ? 1 : 0); -->x2 : () => (T extends ExpectNumber ? 1 : 0) -+>x2 : () => T extends infer U extends number ? 1 : 0 - - function f2() { -->f2 : () => () => (T extends ExpectNumber ? 1 : 0) -+>f2 : () => () => T extends infer U extends number ? 1 : 0 - - return x2; -->x2 : () => (T extends ExpectNumber ? 1 : 0) -+>x2 : () => T extends infer U extends number ? 1 : 0 - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/inlineJsxFactoryDeclarationsLocalTypes.types b/testdata/baselines/reference/submodule/conformance/inlineJsxFactoryDeclarationsLocalTypes.types index 7ae50637114..8fcf7804575 100644 --- a/testdata/baselines/reference/submodule/conformance/inlineJsxFactoryDeclarationsLocalTypes.types +++ b/testdata/baselines/reference/submodule/conformance/inlineJsxFactoryDeclarationsLocalTypes.types @@ -12,7 +12,7 @@ export namespace dom { >__domBrand : void props: { ->props : { children?: Element[] | undefined; } +>props : { children?: Element[]; } children?: Element[]; >children : Element[] | undefined @@ -47,7 +47,7 @@ export namespace predom { >__predomBrand : void props: { ->props : { children?: Element[] | undefined; } +>props : { children?: Element[]; } children?: Element[]; >children : Element[] | undefined @@ -76,9 +76,9 @@ import { predom } from "./renderer2" >predom : () => predom.JSX.Element export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

; ->MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[] | undefined; }) => predom.JSX.Element ->(props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

: (props: { x: number; y: number; children?: predom.JSX.Element[] | undefined; }) => predom.JSX.Element ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element +>(props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

: (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >x : number >y : number >children : predom.JSX.Element[] | undefined @@ -87,17 +87,17 @@ export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Elemen >

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

: predom.JSX.Element >p : any >props.x : number ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >x : number >props.y : number ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >y : number >props.x + props.y : number >props.x : number ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >x : number >props.y : number ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >y : number >this.props.children : any >this.props : any @@ -116,7 +116,7 @@ export class MyClass implements predom.JSX.Element { >__predomBrand : void constructor(public props: {x: number, y: number, children?: predom.JSX.Element[]}) {} ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >x : number >y : number >children : predom.JSX.Element[] | undefined @@ -132,32 +132,32 @@ export class MyClass implements predom.JSX.Element { {this.props.x} + {this.props.y} = {this.props.x + this.props.y} >this.props.x : number ->this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: predom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >x : number >this.props.y : number ->this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: predom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >y : number >this.props.x + this.props.y : number >this.props.x : number ->this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: predom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >x : number >this.props.y : number ->this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: predom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >y : number {...this.props.children} >this.props.children : predom.JSX.Element[] | undefined ->this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: predom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: predom.JSX.Element[]; } >children : predom.JSX.Element[] | undefined

; @@ -167,7 +167,7 @@ export class MyClass implements predom.JSX.Element { export const tree = >tree : predom.JSX.Element > : predom.JSX.Element ->MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[] | undefined; }) => predom.JSX.Element +>MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element >x : number >1 : 1 >y : number @@ -184,7 +184,7 @@ export const tree = 5 : 5 >y : number >6 : 6 ->MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[] | undefined; }) => predom.JSX.Element +>MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element export default > : predom.JSX.Element @@ -198,7 +198,7 @@ import { dom } from "./renderer" import prerendered, {MySFC, MyClass, tree} from "./component"; >prerendered : import("./renderer2").predom.JSX.Element ->MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[] | undefined; }) => import("./renderer2").predom.JSX.Element +>MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[]; }) => import("./renderer2").predom.JSX.Element >MyClass : typeof MyClass >tree : import("./renderer2").predom.JSX.Element @@ -214,9 +214,9 @@ elem = ; // Expect assignability error here >h : any const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

; ->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element ->(props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

: (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element +>(props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

: (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >x : number >y : number >children : dom.JSX.Element[] | undefined @@ -225,20 +225,20 @@ const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) => >

{props.x} + {props.y} = {props.x + props.y}{props.children}

: dom.JSX.Element >p : any >props.x : number ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >x : number >props.y : number ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >y : number >props.x + props.y : number >props.x : number ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >x : number >props.y : number ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >y : number >props.children : dom.JSX.Element[] | undefined ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >children : dom.JSX.Element[] | undefined >p : any @@ -252,7 +252,7 @@ class DOMClass implements dom.JSX.Element { >__domBrand : void constructor(public props: {x: number, y: number, children?: dom.JSX.Element[]}) {} ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >x : number >y : number >children : dom.JSX.Element[] | undefined @@ -266,30 +266,30 @@ class DOMClass implements dom.JSX.Element { >

{this.props.x} + {this.props.y} = {this.props.x + this.props.y}{...this.props.children}

: dom.JSX.Element >p : any >this.props.x : number ->this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: dom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >x : number >this.props.y : number ->this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: dom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >y : number >this.props.x + this.props.y : number >this.props.x : number ->this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: dom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >x : number >this.props.y : number ->this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: dom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >y : number >this.props.children : dom.JSX.Element[] | undefined ->this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>this.props : { x: number; y: number; children?: dom.JSX.Element[]; } >this : this ->props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +>props : { x: number; y: number; children?: dom.JSX.Element[]; } >children : dom.JSX.Element[] | undefined >p : any } @@ -299,7 +299,7 @@ class DOMClass implements dom.JSX.Element { const _tree = >_tree : dom.JSX.Element > : dom.JSX.Element ->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element +>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element >x : number >1 : 1 >y : number @@ -316,13 +316,13 @@ const _tree = 5 : 5 >y : number >6 : 6 ->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element +>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element // Should fail, no dom elements const _brokenTree = >_brokenTree : dom.JSX.Element > : dom.JSX.Element ->MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[] | undefined; }) => import("./renderer2").predom.JSX.Element +>MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[]; }) => import("./renderer2").predom.JSX.Element >x : number >1 : 1 >y : number @@ -339,18 +339,18 @@ const _brokenTree = 5 : 5 >y : number >6 : 6 ->MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[] | undefined; }) => import("./renderer2").predom.JSX.Element +>MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[]; }) => import("./renderer2").predom.JSX.Element // Should fail, nondom isn't allowed as children of dom const _brokenTree2 = {tree}{tree} >_brokenTree2 : dom.JSX.Element >{tree}{tree} : dom.JSX.Element ->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element +>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element >x : number >1 : 1 >y : number >2 : 2 >tree : import("./renderer2").predom.JSX.Element >tree : import("./renderer2").predom.JSX.Element ->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element +>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element diff --git a/testdata/baselines/reference/submodule/conformance/inlineJsxFactoryDeclarationsLocalTypes.types.diff b/testdata/baselines/reference/submodule/conformance/inlineJsxFactoryDeclarationsLocalTypes.types.diff deleted file mode 100644 index 042ff16c401..00000000000 --- a/testdata/baselines/reference/submodule/conformance/inlineJsxFactoryDeclarationsLocalTypes.types.diff +++ /dev/null @@ -1,269 +0,0 @@ ---- old.inlineJsxFactoryDeclarationsLocalTypes.types -+++ new.inlineJsxFactoryDeclarationsLocalTypes.types -@@= skipped -11, +11 lines =@@ - >__domBrand : void - - props: { -->props : { children?: Element[]; } -+>props : { children?: Element[] | undefined; } - - children?: Element[]; - >children : Element[] | undefined -@@= skipped -35, +35 lines =@@ - >__predomBrand : void - - props: { -->props : { children?: Element[]; } -+>props : { children?: Element[] | undefined; } - - children?: Element[]; - >children : Element[] | undefined -@@= skipped -29, +29 lines =@@ - >predom : () => predom.JSX.Element - - export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

; -->MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element -->(props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

: (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[] | undefined; }) => predom.JSX.Element -+>(props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

: (props: { x: number; y: number; children?: predom.JSX.Element[] | undefined; }) => predom.JSX.Element -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >x : number - >y : number - >children : predom.JSX.Element[] | undefined -@@= skipped -11, +11 lines =@@ - >

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

: predom.JSX.Element - >p : any - >props.x : number -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >x : number - >props.y : number -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >y : number - >props.x + props.y : number - >props.x : number -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >x : number - >props.y : number -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >y : number - >this.props.children : any - >this.props : any -@@= skipped -29, +29 lines =@@ - >__predomBrand : void - - constructor(public props: {x: number, y: number, children?: predom.JSX.Element[]}) {} -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >x : number - >y : number - >children : predom.JSX.Element[] | undefined -@@= skipped -16, +16 lines =@@ - - {this.props.x} + {this.props.y} = {this.props.x + this.props.y} - >this.props.x : number -->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >x : number - >this.props.y : number -->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >y : number - >this.props.x + this.props.y : number - >this.props.x : number -->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >x : number - >this.props.y : number -->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >y : number - - {...this.props.children} - >this.props.children : predom.JSX.Element[] | undefined -->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: predom.JSX.Element[]; } -+>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } - >children : predom.JSX.Element[] | undefined - -

; -@@= skipped -35, +35 lines =@@ - export const tree = - >tree : predom.JSX.Element - > : predom.JSX.Element -->MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element -+>MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[] | undefined; }) => predom.JSX.Element - >x : number - >1 : 1 - >y : number -@@= skipped -17, +17 lines =@@ - >5 : 5 - >y : number - >6 : 6 -->MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element -+>MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[] | undefined; }) => predom.JSX.Element - - export default - > : predom.JSX.Element -@@= skipped -14, +14 lines =@@ - - import prerendered, {MySFC, MyClass, tree} from "./component"; - >prerendered : import("./renderer2").predom.JSX.Element -->MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[]; }) => import("./renderer2").predom.JSX.Element -+>MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[] | undefined; }) => import("./renderer2").predom.JSX.Element - >MyClass : typeof MyClass - >tree : import("./renderer2").predom.JSX.Element - -@@= skipped -16, +16 lines =@@ - >h : any - - const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

; -->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -->(props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

: (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element -+>(props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

: (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >x : number - >y : number - >children : dom.JSX.Element[] | undefined -@@= skipped -11, +11 lines =@@ - >

{props.x} + {props.y} = {props.x + props.y}{props.children}

: dom.JSX.Element - >p : any - >props.x : number -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >x : number - >props.y : number -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >y : number - >props.x + props.y : number - >props.x : number -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >x : number - >props.y : number -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >y : number - >props.children : dom.JSX.Element[] | undefined -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >children : dom.JSX.Element[] | undefined - >p : any - -@@= skipped -27, +27 lines =@@ - >__domBrand : void - - constructor(public props: {x: number, y: number, children?: dom.JSX.Element[]}) {} -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >x : number - >y : number - >children : dom.JSX.Element[] | undefined -@@= skipped -14, +14 lines =@@ - >

{this.props.x} + {this.props.y} = {this.props.x + this.props.y}{...this.props.children}

: dom.JSX.Element - >p : any - >this.props.x : number -->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >x : number - >this.props.y : number -->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >y : number - >this.props.x + this.props.y : number - >this.props.x : number -->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >x : number - >this.props.y : number -->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >y : number - >this.props.children : dom.JSX.Element[] | undefined -->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >this : this -->props : { x: number; y: number; children?: dom.JSX.Element[]; } -+>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } - >children : dom.JSX.Element[] | undefined - >p : any - } -@@= skipped -33, +33 lines =@@ - const _tree = - >_tree : dom.JSX.Element - > : dom.JSX.Element -->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -+>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element - >x : number - >1 : 1 - >y : number -@@= skipped -17, +17 lines =@@ - >5 : 5 - >y : number - >6 : 6 -->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -+>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element - - // Should fail, no dom elements - const _brokenTree = - >_brokenTree : dom.JSX.Element - > : dom.JSX.Element -->MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[]; }) => import("./renderer2").predom.JSX.Element -+>MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[] | undefined; }) => import("./renderer2").predom.JSX.Element - >x : number - >1 : 1 - >y : number -@@= skipped -23, +23 lines =@@ - >5 : 5 - >y : number - >6 : 6 -->MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[]; }) => import("./renderer2").predom.JSX.Element -+>MySFC : (props: { x: number; y: number; children?: import("./renderer2").predom.JSX.Element[] | undefined; }) => import("./renderer2").predom.JSX.Element - - // Should fail, nondom isn't allowed as children of dom - const _brokenTree2 = {tree}{tree} - >_brokenTree2 : dom.JSX.Element - >{tree}{tree} : dom.JSX.Element -->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -+>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element - >x : number - >1 : 1 - >y : number - >2 : 2 - >tree : import("./renderer2").predom.JSX.Element - >tree : import("./renderer2").predom.JSX.Element -->DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -+>DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[] | undefined; }) => dom.JSX.Element diff --git a/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne.types b/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne.types index b22a83827d0..c799ecf22e4 100644 --- a/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne.types +++ b/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne.types @@ -15,9 +15,9 @@ function f() { x.toFixed(); >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : T ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } var x: T; >x : T @@ -40,9 +40,9 @@ function f2() { x.toFixed(); >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : U ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } var x: U; >x : U diff --git a/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne.types.diff b/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne.types.diff deleted file mode 100644 index 236ab48b74e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.innerTypeParameterShadowingOuterOne.types -+++ new.innerTypeParameterShadowingOuterOne.types -@@= skipped -14, +14 lines =@@ - - x.toFixed(); - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : T -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - var x: T; - >x : T -@@= skipped -25, +25 lines =@@ - - x.toFixed(); - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : U -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - var x: U; - >x : U \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne2.types b/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne2.types index 6ebdf98bff9..f5ee258d4b0 100644 --- a/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne2.types +++ b/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne2.types @@ -15,9 +15,9 @@ class C { x.toFixed(); >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : T ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } h() { @@ -45,9 +45,9 @@ class C2 { x.toFixed(); >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : U ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } h() { diff --git a/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne2.types.diff b/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne2.types.diff deleted file mode 100644 index 25223665929..00000000000 --- a/testdata/baselines/reference/submodule/conformance/innerTypeParameterShadowingOuterOne2.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.innerTypeParameterShadowingOuterOne2.types -+++ new.innerTypeParameterShadowingOuterOne2.types -@@= skipped -14, +14 lines =@@ - - x.toFixed(); - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : T -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - - h() { -@@= skipped -30, +30 lines =@@ - - x.toFixed(); - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : U -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - - h() { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/instanceofOperatorWithRHSHasSymbolHasInstance.types b/testdata/baselines/reference/submodule/conformance/instanceofOperatorWithRHSHasSymbolHasInstance.types index e93587c7fab..be0f7965c7a 100644 --- a/testdata/baselines/reference/submodule/conformance/instanceofOperatorWithRHSHasSymbolHasInstance.types +++ b/testdata/baselines/reference/submodule/conformance/instanceofOperatorWithRHSHasSymbolHasInstance.types @@ -42,32 +42,32 @@ declare var rhs2: { [Symbol.hasInstance](value: any): value is Point; }; >value : any declare var rhs3: { [Symbol.hasInstance](value: Point | Line): value is Point; }; ->rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } ->[Symbol.hasInstance] : (value: Line | Point) => value is Point +>rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } +>[Symbol.hasInstance] : (value: Point | Line) => value is Point >Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor >hasInstance : unique symbol >value : Line | Point declare var rhs4: { [Symbol.hasInstance](value: Point | Line): value is Line; }; ->rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } ->[Symbol.hasInstance] : (value: Line | Point) => value is Line +>rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } +>[Symbol.hasInstance] : (value: Point | Line) => value is Line >Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor >hasInstance : unique symbol >value : Line | Point declare var rhs5: { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; }; ->rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } ->[Symbol.hasInstance] : (value: Line | Point | Point3D) => value is Point3D +>rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } +>[Symbol.hasInstance] : (value: Point | Point3D | Line) => value is Point3D >Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor >hasInstance : unique symbol >value : Line | Point | Point3D declare var rhs6: { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; }; ->rhs6 : { [Symbol.hasInstance](value: Line | Point3D): value is Point3D; } ->[Symbol.hasInstance] : (value: Line | Point3D) => value is Point3D +>rhs6 : { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } +>[Symbol.hasInstance] : (value: Point3D | Line) => value is Point3D >Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor >hasInstance : unique symbol @@ -99,7 +99,7 @@ declare class Rhs9 { static [Symbol.hasInstance](value: any): value is Point; } declare class Rhs10 { static [Symbol.hasInstance](value: Point | Line): value is Point; } >Rhs10 : Rhs10 ->[Symbol.hasInstance] : (value: Line | Point) => value is Point +>[Symbol.hasInstance] : (value: Point | Line) => value is Point >Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor >hasInstance : unique symbol @@ -107,7 +107,7 @@ declare class Rhs10 { static [Symbol.hasInstance](value: Point | Line): value is declare class Rhs11 { static [Symbol.hasInstance](value: Point | Line): value is Line; } >Rhs11 : Rhs11 ->[Symbol.hasInstance] : (value: Line | Point) => value is Line +>[Symbol.hasInstance] : (value: Point | Line) => value is Line >Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor >hasInstance : unique symbol @@ -115,7 +115,7 @@ declare class Rhs11 { static [Symbol.hasInstance](value: Point | Line): value is declare class Rhs12 { static [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } >Rhs12 : Rhs12 ->[Symbol.hasInstance] : (value: Line | Point | Point3D) => value is Point3D +>[Symbol.hasInstance] : (value: Point | Point3D | Line) => value is Point3D >Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor >hasInstance : unique symbol @@ -123,7 +123,7 @@ declare class Rhs12 { static [Symbol.hasInstance](value: Point | Point3D | Line) declare class Rhs13 { static [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } >Rhs13 : Rhs13 ->[Symbol.hasInstance] : (value: Line | Point3D) => value is Point3D +>[Symbol.hasInstance] : (value: Point3D | Line) => value is Point3D >Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor >hasInstance : unique symbol @@ -169,28 +169,28 @@ lhs0 instanceof rhs3 && lhs0; >lhs0 instanceof rhs3 && lhs0 : false | Point >lhs0 instanceof rhs3 : boolean >lhs0 : any ->rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } +>rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } >lhs0 : Point lhs0 instanceof rhs4 && lhs0; >lhs0 instanceof rhs4 && lhs0 : false | Line >lhs0 instanceof rhs4 : boolean >lhs0 : any ->rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } +>rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } >lhs0 : Line lhs0 instanceof rhs5 && lhs0; >lhs0 instanceof rhs5 && lhs0 : false | Point3D >lhs0 instanceof rhs5 : boolean >lhs0 : any ->rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } +>rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } >lhs0 : Point3D lhs0 instanceof rhs6 && lhs0; >lhs0 instanceof rhs6 && lhs0 : false | Point3D >lhs0 instanceof rhs6 : boolean >lhs0 : any ->rhs6 : { [Symbol.hasInstance](value: Line | Point3D): value is Point3D; } +>rhs6 : { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } >lhs0 : Point3D lhs0 instanceof Rhs7 && lhs0; @@ -309,21 +309,21 @@ lhs2 instanceof rhs3 && lhs2; >lhs2 instanceof rhs3 && lhs2 : false | Point >lhs2 instanceof rhs3 : boolean >lhs2 : Line | Point | Point3D ->rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } +>rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } >lhs2 : Point lhs2 instanceof rhs4 && lhs2; >lhs2 instanceof rhs4 && lhs2 : false | Line >lhs2 instanceof rhs4 : boolean >lhs2 : Line | Point | Point3D ->rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } +>rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } >lhs2 : Line lhs2 instanceof rhs5 && lhs2; >lhs2 instanceof rhs5 && lhs2 : false | Point3D >lhs2 instanceof rhs5 : boolean >lhs2 : Line | Point | Point3D ->rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } +>rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } >lhs2 : Point3D lhs2 instanceof Rhs7 && lhs2; @@ -393,28 +393,28 @@ lhs3 instanceof rhs3 && lhs3; >lhs3 instanceof rhs3 && lhs3 : false | ((Line | Point3D) & Point) >lhs3 instanceof rhs3 : boolean >lhs3 : Line | Point3D ->rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } +>rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } >lhs3 : (Line | Point3D) & Point lhs3 instanceof rhs4 && lhs3; >lhs3 instanceof rhs4 && lhs3 : false | Line >lhs3 instanceof rhs4 : boolean >lhs3 : Line | Point3D ->rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } +>rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } >lhs3 : Line lhs3 instanceof rhs5 && lhs3; >lhs3 instanceof rhs5 && lhs3 : false | Point3D >lhs3 instanceof rhs5 : boolean >lhs3 : Line | Point3D ->rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } +>rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } >lhs3 : Point3D lhs3 instanceof rhs6 && lhs3; >lhs3 instanceof rhs6 && lhs3 : false | Point3D >lhs3 instanceof rhs6 : boolean >lhs3 : Line | Point3D ->rhs6 : { [Symbol.hasInstance](value: Line | Point3D): value is Point3D; } +>rhs6 : { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } >lhs3 : Point3D lhs3 instanceof Rhs7 && lhs3; @@ -491,21 +491,21 @@ lhs4 instanceof rhs3 && lhs4; >lhs4 instanceof rhs3 && lhs4 : false | Point | Point3D2 >lhs4 instanceof rhs3 : boolean >lhs4 : Line | Point | Point3D2 ->rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } +>rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } >lhs4 : Point | Point3D2 lhs4 instanceof rhs4 && lhs4; >lhs4 instanceof rhs4 && lhs4 : false | Line >lhs4 instanceof rhs4 : boolean >lhs4 : Line | Point | Point3D2 ->rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } +>rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } >lhs4 : Line lhs4 instanceof rhs5 && lhs4; >lhs4 instanceof rhs5 && lhs4 : false | Point3D >lhs4 instanceof rhs5 : boolean >lhs4 : Line | Point | Point3D2 ->rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } +>rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } >lhs4 : Point3D lhs4 instanceof Rhs7 && lhs4; diff --git a/testdata/baselines/reference/submodule/conformance/instanceofOperatorWithRHSHasSymbolHasInstance.types.diff b/testdata/baselines/reference/submodule/conformance/instanceofOperatorWithRHSHasSymbolHasInstance.types.diff index cd40498da88..04952f789c4 100644 --- a/testdata/baselines/reference/submodule/conformance/instanceofOperatorWithRHSHasSymbolHasInstance.types.diff +++ b/testdata/baselines/reference/submodule/conformance/instanceofOperatorWithRHSHasSymbolHasInstance.types.diff @@ -1,199 +1,6 @@ --- old.instanceofOperatorWithRHSHasSymbolHasInstance.types +++ new.instanceofOperatorWithRHSHasSymbolHasInstance.types -@@= skipped -41, +41 lines =@@ - >value : any - - declare var rhs3: { [Symbol.hasInstance](value: Point | Line): value is Point; }; -->rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -->[Symbol.hasInstance] : (value: Point | Line) => value is Point -+>rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } -+>[Symbol.hasInstance] : (value: Line | Point) => value is Point - >Symbol.hasInstance : unique symbol - >Symbol : SymbolConstructor - >hasInstance : unique symbol - >value : Line | Point - - declare var rhs4: { [Symbol.hasInstance](value: Point | Line): value is Line; }; -->rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -->[Symbol.hasInstance] : (value: Point | Line) => value is Line -+>rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } -+>[Symbol.hasInstance] : (value: Line | Point) => value is Line - >Symbol.hasInstance : unique symbol - >Symbol : SymbolConstructor - >hasInstance : unique symbol - >value : Line | Point - - declare var rhs5: { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; }; -->rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -->[Symbol.hasInstance] : (value: Point | Point3D | Line) => value is Point3D -+>rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } -+>[Symbol.hasInstance] : (value: Line | Point | Point3D) => value is Point3D - >Symbol.hasInstance : unique symbol - >Symbol : SymbolConstructor - >hasInstance : unique symbol - >value : Line | Point | Point3D - - declare var rhs6: { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; }; -->rhs6 : { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } -->[Symbol.hasInstance] : (value: Point3D | Line) => value is Point3D -+>rhs6 : { [Symbol.hasInstance](value: Line | Point3D): value is Point3D; } -+>[Symbol.hasInstance] : (value: Line | Point3D) => value is Point3D - >Symbol.hasInstance : unique symbol - >Symbol : SymbolConstructor - >hasInstance : unique symbol -@@= skipped -57, +57 lines =@@ - - declare class Rhs10 { static [Symbol.hasInstance](value: Point | Line): value is Point; } - >Rhs10 : Rhs10 -->[Symbol.hasInstance] : (value: Point | Line) => value is Point -+>[Symbol.hasInstance] : (value: Line | Point) => value is Point - >Symbol.hasInstance : unique symbol - >Symbol : SymbolConstructor - >hasInstance : unique symbol -@@= skipped -8, +8 lines =@@ - - declare class Rhs11 { static [Symbol.hasInstance](value: Point | Line): value is Line; } - >Rhs11 : Rhs11 -->[Symbol.hasInstance] : (value: Point | Line) => value is Line -+>[Symbol.hasInstance] : (value: Line | Point) => value is Line - >Symbol.hasInstance : unique symbol - >Symbol : SymbolConstructor - >hasInstance : unique symbol -@@= skipped -8, +8 lines =@@ - - declare class Rhs12 { static [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } - >Rhs12 : Rhs12 -->[Symbol.hasInstance] : (value: Point | Point3D | Line) => value is Point3D -+>[Symbol.hasInstance] : (value: Line | Point | Point3D) => value is Point3D - >Symbol.hasInstance : unique symbol - >Symbol : SymbolConstructor - >hasInstance : unique symbol -@@= skipped -8, +8 lines =@@ - - declare class Rhs13 { static [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } - >Rhs13 : Rhs13 -->[Symbol.hasInstance] : (value: Point3D | Line) => value is Point3D -+>[Symbol.hasInstance] : (value: Line | Point3D) => value is Point3D - >Symbol.hasInstance : unique symbol - >Symbol : SymbolConstructor - >hasInstance : unique symbol -@@= skipped -46, +46 lines =@@ - >lhs0 instanceof rhs3 && lhs0 : false | Point - >lhs0 instanceof rhs3 : boolean - >lhs0 : any -->rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -+>rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } - >lhs0 : Point - - lhs0 instanceof rhs4 && lhs0; - >lhs0 instanceof rhs4 && lhs0 : false | Line - >lhs0 instanceof rhs4 : boolean - >lhs0 : any -->rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -+>rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } - >lhs0 : Line - - lhs0 instanceof rhs5 && lhs0; - >lhs0 instanceof rhs5 && lhs0 : false | Point3D - >lhs0 instanceof rhs5 : boolean - >lhs0 : any -->rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -+>rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } - >lhs0 : Point3D - - lhs0 instanceof rhs6 && lhs0; - >lhs0 instanceof rhs6 && lhs0 : false | Point3D - >lhs0 instanceof rhs6 : boolean - >lhs0 : any -->rhs6 : { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } -+>rhs6 : { [Symbol.hasInstance](value: Line | Point3D): value is Point3D; } - >lhs0 : Point3D - - lhs0 instanceof Rhs7 && lhs0; -@@= skipped -140, +140 lines =@@ - >lhs2 instanceof rhs3 && lhs2 : false | Point - >lhs2 instanceof rhs3 : boolean - >lhs2 : Line | Point | Point3D -->rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -+>rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } - >lhs2 : Point - - lhs2 instanceof rhs4 && lhs2; - >lhs2 instanceof rhs4 && lhs2 : false | Line - >lhs2 instanceof rhs4 : boolean - >lhs2 : Line | Point | Point3D -->rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -+>rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } - >lhs2 : Line - - lhs2 instanceof rhs5 && lhs2; - >lhs2 instanceof rhs5 && lhs2 : false | Point3D - >lhs2 instanceof rhs5 : boolean - >lhs2 : Line | Point | Point3D -->rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -+>rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } - >lhs2 : Point3D - - lhs2 instanceof Rhs7 && lhs2; -@@= skipped -84, +84 lines =@@ - >lhs3 instanceof rhs3 && lhs3 : false | ((Line | Point3D) & Point) - >lhs3 instanceof rhs3 : boolean - >lhs3 : Line | Point3D -->rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -+>rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } - >lhs3 : (Line | Point3D) & Point - - lhs3 instanceof rhs4 && lhs3; - >lhs3 instanceof rhs4 && lhs3 : false | Line - >lhs3 instanceof rhs4 : boolean - >lhs3 : Line | Point3D -->rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -+>rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } - >lhs3 : Line - - lhs3 instanceof rhs5 && lhs3; - >lhs3 instanceof rhs5 && lhs3 : false | Point3D - >lhs3 instanceof rhs5 : boolean - >lhs3 : Line | Point3D -->rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -+>rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } - >lhs3 : Point3D - - lhs3 instanceof rhs6 && lhs3; - >lhs3 instanceof rhs6 && lhs3 : false | Point3D - >lhs3 instanceof rhs6 : boolean - >lhs3 : Line | Point3D -->rhs6 : { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } -+>rhs6 : { [Symbol.hasInstance](value: Line | Point3D): value is Point3D; } - >lhs3 : Point3D - - lhs3 instanceof Rhs7 && lhs3; -@@= skipped -98, +98 lines =@@ - >lhs4 instanceof rhs3 && lhs4 : false | Point | Point3D2 - >lhs4 instanceof rhs3 : boolean - >lhs4 : Line | Point | Point3D2 -->rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -+>rhs3 : { [Symbol.hasInstance](value: Line | Point): value is Point; } - >lhs4 : Point | Point3D2 - - lhs4 instanceof rhs4 && lhs4; - >lhs4 instanceof rhs4 && lhs4 : false | Line - >lhs4 instanceof rhs4 : boolean - >lhs4 : Line | Point | Point3D2 -->rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -+>rhs4 : { [Symbol.hasInstance](value: Line | Point): value is Line; } - >lhs4 : Line - - lhs4 instanceof rhs5 && lhs4; - >lhs4 instanceof rhs5 && lhs4 : false | Point3D - >lhs4 instanceof rhs5 : boolean - >lhs4 : Line | Point | Point3D2 -->rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -+>rhs5 : { [Symbol.hasInstance](value: Line | Point | Point3D): value is Point3D; } - >lhs4 : Point3D - - lhs4 instanceof Rhs7 && lhs4; -@@= skipped -68, +68 lines =@@ +@@= skipped -558, +558 lines =@@ // approximation of `getInstanceType` behavior, with one caveat: the checker versions unions the return types of // all construct signatures, but we have no way of extracting individual construct signatures from a type. static [Symbol.hasInstance](this: T, value: unknown): value is ( diff --git a/testdata/baselines/reference/submodule/conformance/instantiationExpressions.types b/testdata/baselines/reference/submodule/conformance/instantiationExpressions.types index fd150f805f5..b4dccffd263 100644 --- a/testdata/baselines/reference/submodule/conformance/instantiationExpressions.types +++ b/testdata/baselines/reference/submodule/conformance/instantiationExpressions.types @@ -39,50 +39,50 @@ function f1() { } type T10 = typeof fx<>; // Error ->T10 : { (x: unknown): unknown; (x: unknown, n: number): unknown; (t: [unknown, unknown]): [unknown, unknown]; } +>T10 : typeof fx >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 : { (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]; } type T12 = typeof fx; // (t: [string, number]) => [string, number] ->T12 : (t: [string, number]) => [string, number] +>T12 : typeof fx >fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } type T13 = typeof fx; // Error ->T13 : {} +>T13 : typeof fx >fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } function f2() { >f2 : () => void const A0 = Array<>; // Error ->A0 : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } ->Array<> : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>A0 : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>Array<> : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } >Array : ArrayConstructor const A1 = Array; // new (...) => string[] ->A1 : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } ->Array : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>A1 : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>Array : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } >Array : ArrayConstructor const A2 = Array; // Error ->A2 : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } ->Array : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>A2 : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>Array : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } >Array : ArrayConstructor } type T20 = typeof Array<>; // Error ->T20 : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>T20 : typeof Array >Array : ArrayConstructor type T21 = typeof Array; // new (...) => string[] ->T21 : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>T21 : typeof Array >Array : ArrayConstructor type T22 = typeof Array; // Error ->T22 : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } +>T22 : typeof Array >Array : ArrayConstructor declare class C { @@ -176,7 +176,7 @@ function f14(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: { (a: U, b: number): U[]; new (a: T): T; }) => void +>f15 : (f: { new (a: T): T; (a: U, b: number): U[]; }) => void >f : { (a: U, b: number): U[]; new (a: T): T; } >a : T >a : U @@ -189,7 +189,7 @@ function f15(f: { new (a: T): T, (a: U, b: number): U[] }) { } function f16(f: { new (a: T): T, (a: string, b: number): string[] }) { ->f16 : (f: { (a: string, b: number): string[]; new (a: T): T; }) => void +>f16 : (f: { new (a: T): T; (a: string, b: number): string[]; }) => void >f : { (a: string, b: number): string[]; new (a: T): T; } >a : T >a : string @@ -441,7 +441,7 @@ function makeBox(value: T) { } type BoxFunc = typeof makeBox; // (value: T) => { value: T } ->BoxFunc : (value: T) => { value: T; } +>BoxFunc : typeof makeBox >makeBox : (value: T_1) => { value: T_1; } type StringBoxFunc = BoxFunc; // (value: string) => { value: string } @@ -471,7 +471,7 @@ declare const g1: { } type T30 = typeof g1; // { (a: V) => { a: V }; new (b: V) => { b: V }; } ->T30 : { (a: V): { a: V; }; new (b: V): { b: V; }; } +>T30 : typeof g1 >g1 : { (a: T): { a: T; }; new (b: U): { b: U; }; } type T31
= ReturnType>; // { a: A } @@ -491,11 +491,11 @@ declare const g2: { } type T40 = typeof g2; // Error ->T40 : { (a: U): U; new (b: T): T; } +>T40 : typeof g2 >g2 : { (a: T): T; new (b: T): T; } type T41 = typeof g2; // Error ->T41 : { (a: T): T; new (b: U): U; } +>T41 : typeof g2 >g2 : { (a: T): T; new (b: T): T; } declare const g3: { @@ -509,10 +509,10 @@ declare const g3: { } type T50 = typeof g3; // (a: U) => U ->T50 : (a: U) => U +>T50 : typeof g3 >g3 : { (a: T): T; new (b: T): T; } type T51 = typeof g3; // (b: U) => U ->T51 : new (b: U) => U +>T51 : typeof g3 >g3 : { (a: T): T; new (b: T): T; } diff --git a/testdata/baselines/reference/submodule/conformance/instantiationExpressions.types.diff b/testdata/baselines/reference/submodule/conformance/instantiationExpressions.types.diff index aeb390ce4fd..067a316bdaa 100644 --- a/testdata/baselines/reference/submodule/conformance/instantiationExpressions.types.diff +++ b/testdata/baselines/reference/submodule/conformance/instantiationExpressions.types.diff @@ -35,124 +35,27 @@ type T10 = typeof fx<>; // Error ->T10 : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -+>T10 : { (x: unknown): unknown; (x: unknown, n: number): unknown; (t: [unknown, unknown]): [unknown, unknown]; } ++>T10 : typeof fx >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 -+>T11 : { (x: string): string; (x: string, n: number): string; } - >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 -+>T12 : (t: [string, number]) => [string, number] - >fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } - - type T13 = typeof fx; // Error -->T13 : typeof fx -+>T13 : {} - >fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } - - function f2() { +@@= skipped -19, +19 lines =@@ >f2 : () => void const A0 = Array<>; // Error ->A0 : ArrayConstructor ->Array<> : ArrayConstructor -+>A0 : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } -+>Array<> : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } ++>A0 : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } ++>Array<> : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } >Array : ArrayConstructor const A1 = Array; // new (...) => string[] -->A1 : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } -->Array : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } -+>A1 : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } -+>Array : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } - >Array : ArrayConstructor - - const A2 = Array; // Error -->A2 : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } -->Array : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: Iterable | ArrayLike): T[]; from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } -+>A2 : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } -+>Array : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } - >Array : ArrayConstructor +@@= skipped -16, +16 lines =@@ } type T20 = typeof Array<>; // Error ->T20 : ArrayConstructor -+>T20 : { (arrayLength: number): unknown[]; (...items: unknown[]): unknown[]; new (arrayLength: number): unknown[]; new (...items: unknown[]): unknown[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } - >Array : ArrayConstructor - - type T21 = typeof Array; // new (...) => string[] -->T21 : typeof Array -+>T21 : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } ++>T20 : typeof Array >Array : ArrayConstructor - type T22 = typeof Array; // Error -->T22 : typeof Array -+>T22 : { isArray(arg: any): arg is any[]; readonly prototype: any[]; from(arrayLike: ArrayLike): T[]; from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; from(iterable: ArrayLike | Iterable): T[]; from(iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; of(...items: T[]): T[]; readonly [Symbol.species]: ArrayConstructor; } - >Array : ArrayConstructor - - declare class C { -@@= skipped -137, +137 lines =@@ - } - - function f15(f: { new (a: T): T, (a: U, b: number): U[] }) { -->f15 : (f: { new (a: T): T; (a: U, b: number): U[]; }) => void -+>f15 : (f: { (a: U, b: number): U[]; new (a: T): T; }) => void - >f : { (a: U, b: number): U[]; new (a: T): T; } - >a : T - >a : U -@@= skipped -13, +13 lines =@@ - } - - function f16(f: { new (a: T): T, (a: string, b: number): string[] }) { -->f16 : (f: { new (a: T): T; (a: string, b: number): string[]; }) => void -+>f16 : (f: { (a: string, b: number): string[]; new (a: T): T; }) => void - >f : { (a: string, b: number): string[]; new (a: T): T; } - >a : T - >a : string -@@= skipped -252, +252 lines =@@ - } - - type BoxFunc = typeof makeBox; // (value: T) => { value: T } -->BoxFunc : typeof makeBox -+>BoxFunc : (value: T) => { value: T; } - >makeBox : (value: T_1) => { value: T_1; } - - type StringBoxFunc = BoxFunc; // (value: string) => { value: string } -@@= skipped -30, +30 lines =@@ - } - - type T30 = typeof g1; // { (a: V) => { a: V }; new (b: V) => { b: V }; } -->T30 : typeof g1 -+>T30 : { (a: V): { a: V; }; new (b: V): { b: V; }; } - >g1 : { (a: T): { a: T; }; new (b: U): { b: U; }; } - - type T31 = ReturnType>; // { a: A } -@@= skipped -20, +20 lines =@@ - } - - type T40 = typeof g2; // Error -->T40 : typeof g2 -+>T40 : { (a: U): U; new (b: T): T; } - >g2 : { (a: T): T; new (b: T): T; } - - type T41 = typeof g2; // Error -->T41 : typeof g2 -+>T41 : { (a: T): T; new (b: U): U; } - >g2 : { (a: T): T; new (b: T): T; } - - declare const g3: { -@@= skipped -18, +18 lines =@@ - } - - type T50 = typeof g3; // (a: U) => U -->T50 : typeof g3 -+>T50 : (a: U) => U - >g3 : { (a: T): T; new (b: T): T; } - - type T51 = typeof g3; // (b: U) => U -->T51 : typeof g3 -+>T51 : new (b: U) => U - >g3 : { (a: T): T; new (b: T): T; } + type T21 = typeof Array; // new (...) => string[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/interfaceWithMultipleBaseTypes2.types b/testdata/baselines/reference/submodule/conformance/interfaceWithMultipleBaseTypes2.types index 02b259f8fbe..f91800fd819 100644 --- a/testdata/baselines/reference/submodule/conformance/interfaceWithMultipleBaseTypes2.types +++ b/testdata/baselines/reference/submodule/conformance/interfaceWithMultipleBaseTypes2.types @@ -3,7 +3,7 @@ === interfaceWithMultipleBaseTypes2.ts === interface Base { x: { ->x : { a?: string | undefined; b: string; } +>x : { a?: string; b: string; } a?: string; b: string; >a : string | undefined @@ -13,7 +13,7 @@ interface Base { interface Base2 { x: { ->x : { b: string; c?: number | undefined; } +>x : { b: string; c?: number; } b: string; c?: number; >b : string diff --git a/testdata/baselines/reference/submodule/conformance/interfaceWithMultipleBaseTypes2.types.diff b/testdata/baselines/reference/submodule/conformance/interfaceWithMultipleBaseTypes2.types.diff deleted file mode 100644 index 622343d453f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/interfaceWithMultipleBaseTypes2.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.interfaceWithMultipleBaseTypes2.types -+++ new.interfaceWithMultipleBaseTypes2.types -@@= skipped -2, +2 lines =@@ - === interfaceWithMultipleBaseTypes2.ts === - interface Base { - x: { -->x : { a?: string; b: string; } -+>x : { a?: string | undefined; b: string; } - - a?: string; b: string; - >a : string | undefined -@@= skipped -10, +10 lines =@@ - - interface Base2 { - x: { -->x : { b: string; c?: number; } -+>x : { b: string; c?: number | undefined; } - - b: string; c?: number; - >b : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intersectionIncludingPropFromGlobalAugmentation.types b/testdata/baselines/reference/submodule/conformance/intersectionIncludingPropFromGlobalAugmentation.types index 45218a4a2a5..72094b0de4c 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionIncludingPropFromGlobalAugmentation.types +++ b/testdata/baselines/reference/submodule/conformance/intersectionIncludingPropFromGlobalAugmentation.types @@ -15,7 +15,7 @@ declare const source: Test1; const target: Test2 = { ...source }; >target : Test2 ->{ ...source } : { toString: "string" | null; } +>{ ...source } : { toString: null | 'string'; } >source : Test1 const toString = target.toString; diff --git a/testdata/baselines/reference/submodule/conformance/intersectionIncludingPropFromGlobalAugmentation.types.diff b/testdata/baselines/reference/submodule/conformance/intersectionIncludingPropFromGlobalAugmentation.types.diff index 105bb547eaa..b5df44dafde 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionIncludingPropFromGlobalAugmentation.types.diff +++ b/testdata/baselines/reference/submodule/conformance/intersectionIncludingPropFromGlobalAugmentation.types.diff @@ -5,7 +5,7 @@ const target: Test2 = { ...source }; >target : Test2 ->{ ...source } : { toString: null | "string"; } -+>{ ...source } : { toString: "string" | null; } ++>{ ...source } : { toString: null | 'string'; } >source : Test1 const toString = target.toString; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intersectionMemberOfUnionNarrowsCorrectly.types b/testdata/baselines/reference/submodule/conformance/intersectionMemberOfUnionNarrowsCorrectly.types index f531e06dc85..81038689566 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionMemberOfUnionNarrowsCorrectly.types +++ b/testdata/baselines/reference/submodule/conformance/intersectionMemberOfUnionNarrowsCorrectly.types @@ -12,11 +12,11 @@ type Ex = T extends U ? T : never; >Ex : Ex declare let x: Ex ->x : { kind?: "A" | undefined; a: string; } +>x : { kind?: 'A'; a: string; } >kind : "A" | undefined x.a >x.a : string ->x : { kind?: "A" | undefined; a: string; } +>x : { kind?: 'A'; a: string; } >a : string diff --git a/testdata/baselines/reference/submodule/conformance/intersectionMemberOfUnionNarrowsCorrectly.types.diff b/testdata/baselines/reference/submodule/conformance/intersectionMemberOfUnionNarrowsCorrectly.types.diff index 131164c119e..01ee566a038 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionMemberOfUnionNarrowsCorrectly.types.diff +++ b/testdata/baselines/reference/submodule/conformance/intersectionMemberOfUnionNarrowsCorrectly.types.diff @@ -5,11 +5,11 @@ declare let x: Ex ->x : { kind?: "A"; a: string; } -+>x : { kind?: "A" | undefined; a: string; } ++>x : { kind?: 'A'; a: string; } >kind : "A" | undefined x.a >x.a : string ->x : { kind?: "A"; a: string; } -+>x : { kind?: "A" | undefined; a: string; } ++>x : { kind?: 'A'; a: string; } >a : string diff --git a/testdata/baselines/reference/submodule/conformance/intersectionNarrowing.types b/testdata/baselines/reference/submodule/conformance/intersectionNarrowing.types index a0eef45bfcf..13743d16a49 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionNarrowing.types +++ b/testdata/baselines/reference/submodule/conformance/intersectionNarrowing.types @@ -4,7 +4,7 @@ // Repros from #43130 function f1(x: T & string | T & undefined) { ->f1 : (x: (T & undefined) | (T & string)) => void +>f1 : (x: (T & string) | (T & undefined)) => void >x : (T & undefined) | (T & string) if (x) { @@ -16,7 +16,7 @@ function f1(x: T & string | T & undefined) { } function f2(x: T & string | T & undefined) { ->f2 : (x: (T & undefined) | (T & string)) => void +>f2 : (x: (T & string) | (T & undefined)) => void >x : (T & undefined) | (T & string) if (x !== undefined) { diff --git a/testdata/baselines/reference/submodule/conformance/intersectionNarrowing.types.diff b/testdata/baselines/reference/submodule/conformance/intersectionNarrowing.types.diff deleted file mode 100644 index b8ce96b1d45..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intersectionNarrowing.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.intersectionNarrowing.types -+++ new.intersectionNarrowing.types -@@= skipped -3, +3 lines =@@ - // Repros from #43130 - - function f1(x: T & string | T & undefined) { -->f1 : (x: (T & string) | (T & undefined)) => void -+>f1 : (x: (T & undefined) | (T & string)) => void - >x : (T & undefined) | (T & string) - - if (x) { -@@= skipped -12, +12 lines =@@ - } - - function f2(x: T & string | T & undefined) { -->f2 : (x: (T & string) | (T & undefined)) => void -+>f2 : (x: (T & undefined) | (T & string)) => void - >x : (T & undefined) | (T & string) - - if (x !== undefined) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intersectionReduction.types b/testdata/baselines/reference/submodule/conformance/intersectionReduction.types index 8e5a4a0a58e..3230f1105ec 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionReduction.types +++ b/testdata/baselines/reference/submodule/conformance/intersectionReduction.types @@ -283,8 +283,8 @@ t2 = t1; // Repro from #36736 const f1 = (t: "a" | ("b" & "c")): "a" => t; ->f1 : (t: "a") => "a" ->(t: "a" | ("b" & "c")): "a" => t : (t: "a") => "a" +>f1 : (t: "a" | ("b" & "c")) => "a" +>(t: "a" | ("b" & "c")): "a" => t : (t: "a" | ("b" & "c")) => "a" >t : "a" >t : "a" @@ -296,21 +296,21 @@ type Container = { } const f2 = (t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t; ->f2 : (t: Container<"a">) => Container<"a"> ->(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a">) => Container<"a"> +>f2 : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> +>(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> >t : Container<"a"> >t : Container<"a"> const f3 = (t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t; ->f3 : (t: Container<"a">) => Container<"a"> ->(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a">) => Container<"a"> +>f3 : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> +>(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> >t : Container<"a"> >dataB : boolean >t : Container<"a"> const f4 = (t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t; ->f4 : (t: number) => number ->(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number) => number +>f4 : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number +>(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number >t : number >dataB : boolean >t : number diff --git a/testdata/baselines/reference/submodule/conformance/intersectionReduction.types.diff b/testdata/baselines/reference/submodule/conformance/intersectionReduction.types.diff deleted file mode 100644 index d83d26fa64d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intersectionReduction.types.diff +++ /dev/null @@ -1,41 +0,0 @@ ---- old.intersectionReduction.types -+++ new.intersectionReduction.types -@@= skipped -282, +282 lines =@@ - // Repro from #36736 - - const f1 = (t: "a" | ("b" & "c")): "a" => t; -->f1 : (t: "a" | ("b" & "c")) => "a" -->(t: "a" | ("b" & "c")): "a" => t : (t: "a" | ("b" & "c")) => "a" -+>f1 : (t: "a") => "a" -+>(t: "a" | ("b" & "c")): "a" => t : (t: "a") => "a" - >t : "a" - >t : "a" - -@@= skipped -13, +13 lines =@@ - } - - const f2 = (t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t; -->f2 : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> -->(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> -+>f2 : (t: Container<"a">) => Container<"a"> -+>(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a">) => Container<"a"> - >t : Container<"a"> - >t : Container<"a"> - - const f3 = (t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t; -->f3 : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> -->(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> -+>f3 : (t: Container<"a">) => Container<"a"> -+>(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a">) => Container<"a"> - >t : Container<"a"> - >dataB : boolean - >t : Container<"a"> - - const f4 = (t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t; -->f4 : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number -->(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number -+>f4 : (t: number) => number -+>(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number) => number - >t : number - >dataB : boolean - >t : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intersectionReductionStrict.types b/testdata/baselines/reference/submodule/conformance/intersectionReductionStrict.types index 47212509b2c..089a4fee3db 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionReductionStrict.types +++ b/testdata/baselines/reference/submodule/conformance/intersectionReductionStrict.types @@ -250,8 +250,8 @@ t2 = t1; // Repro from #36736 const f1 = (t: "a" | ("b" & "c")): "a" => t; ->f1 : (t: "a") => "a" ->(t: "a" | ("b" & "c")): "a" => t : (t: "a") => "a" +>f1 : (t: "a" | ("b" & "c")) => "a" +>(t: "a" | ("b" & "c")): "a" => t : (t: "a" | ("b" & "c")) => "a" >t : "a" >t : "a" @@ -263,21 +263,21 @@ type Container = { } const f2 = (t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t; ->f2 : (t: Container<"a">) => Container<"a"> ->(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a">) => Container<"a"> +>f2 : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> +>(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> >t : Container<"a"> >t : Container<"a"> const f3 = (t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t; ->f3 : (t: Container<"a">) => Container<"a"> ->(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a">) => Container<"a"> +>f3 : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> +>(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> >t : Container<"a"> >dataB : boolean >t : Container<"a"> const f4 = (t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t; ->f4 : (t: number) => number ->(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number) => number +>f4 : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number +>(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number >t : number >dataB : boolean >t : number diff --git a/testdata/baselines/reference/submodule/conformance/intersectionReductionStrict.types.diff b/testdata/baselines/reference/submodule/conformance/intersectionReductionStrict.types.diff deleted file mode 100644 index 026ae9ea846..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intersectionReductionStrict.types.diff +++ /dev/null @@ -1,41 +0,0 @@ ---- old.intersectionReductionStrict.types -+++ new.intersectionReductionStrict.types -@@= skipped -249, +249 lines =@@ - // Repro from #36736 - - const f1 = (t: "a" | ("b" & "c")): "a" => t; -->f1 : (t: "a" | ("b" & "c")) => "a" -->(t: "a" | ("b" & "c")): "a" => t : (t: "a" | ("b" & "c")) => "a" -+>f1 : (t: "a") => "a" -+>(t: "a" | ("b" & "c")): "a" => t : (t: "a") => "a" - >t : "a" - >t : "a" - -@@= skipped -13, +13 lines =@@ - } - - const f2 = (t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t; -->f2 : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> -->(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> -+>f2 : (t: Container<"a">) => Container<"a"> -+>(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a">) => Container<"a"> - >t : Container<"a"> - >t : Container<"a"> - - const f3 = (t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t; -->f3 : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> -->(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> -+>f3 : (t: Container<"a">) => Container<"a"> -+>(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a">) => Container<"a"> - >t : Container<"a"> - >dataB : boolean - >t : Container<"a"> - - const f4 = (t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t; -->f4 : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number -->(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number -+>f4 : (t: number) => number -+>(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number) => number - >t : number - >dataB : boolean - >t : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intersectionTypeInference2.types b/testdata/baselines/reference/submodule/conformance/intersectionTypeInference2.types index e2f0d1a310b..dafe723bd6b 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionTypeInference2.types +++ b/testdata/baselines/reference/submodule/conformance/intersectionTypeInference2.types @@ -12,7 +12,7 @@ declare const a: { prop: string } & { prop: number }; >prop : number declare const b: { prop: string & number }; ->b : { prop: never; } +>b : { prop: string & number; } >prop : never f(a); // never @@ -23,7 +23,7 @@ f(a); // never f(b); // never >f(b) : never >f : (x: { prop: T; }) => T ->b : { prop: never; } +>b : { prop: string & number; } // Repro from #18354 diff --git a/testdata/baselines/reference/submodule/conformance/intersectionTypeInference2.types.diff b/testdata/baselines/reference/submodule/conformance/intersectionTypeInference2.types.diff deleted file mode 100644 index ae71a21021b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intersectionTypeInference2.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.intersectionTypeInference2.types -+++ new.intersectionTypeInference2.types -@@= skipped -11, +11 lines =@@ - >prop : number - - declare const b: { prop: string & number }; -->b : { prop: string & number; } -+>b : { prop: never; } - >prop : never - - f(a); // never -@@= skipped -11, +11 lines =@@ - f(b); // never - >f(b) : never - >f : (x: { prop: T; }) => T -->b : { prop: string & number; } -+>b : { prop: never; } - - // Repro from #18354 diff --git a/testdata/baselines/reference/submodule/conformance/intersectionTypeInference3.types b/testdata/baselines/reference/submodule/conformance/intersectionTypeInference3.types index db82f58663d..3bf3569d489 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionTypeInference3.types +++ b/testdata/baselines/reference/submodule/conformance/intersectionTypeInference3.types @@ -28,15 +28,15 @@ const c1 = Array.from(a).concat(Array.from(b)); >Array.from(a).concat(Array.from(b)) : A[] >Array.from(a).concat : { (...items: ConcatArray[]): A[]; (...items: (ConcatArray | A)[]): A[]; } >Array.from(a) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: (ConcatArray | A)[]): A[]; } >Array.from(b) : A[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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 diff --git a/testdata/baselines/reference/submodule/conformance/intersectionTypeInference3.types.diff b/testdata/baselines/reference/submodule/conformance/intersectionTypeInference3.types.diff deleted file mode 100644 index 01a41ad37ae..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intersectionTypeInference3.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.intersectionTypeInference3.types -+++ new.intersectionTypeInference3.types -@@= skipped -27, +27 lines =@@ - >Array.from(a).concat(Array.from(b)) : A[] - >Array.from(a).concat : { (...items: ConcatArray[]): A[]; (...items: (ConcatArray | A)[]): A[]; } - >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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >a : Set - >concat : { (...items: ConcatArray[]): A[]; (...items: (ConcatArray | A)[]): 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >b : Set - - // Simpler repro \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intersectionWithIndexSignatures.types b/testdata/baselines/reference/submodule/conformance/intersectionWithIndexSignatures.types index 7c816ed1222..bfd2e9c5863 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionWithIndexSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/intersectionWithIndexSignatures.types @@ -76,13 +76,13 @@ declare const q: s; q["asd"].a.substr(1); >q["asd"].a.substr(1) : string ->q["asd"].a.substr : (from: number, length?: number | undefined) => string +>q["asd"].a.substr : (from: number, length?: number) => string >q["asd"].a : string >q["asd"] : { a: string; } >q : s >"asd" : "asd" >a : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >1 : 1 q["asd"].b; // Error diff --git a/testdata/baselines/reference/submodule/conformance/intersectionWithIndexSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/intersectionWithIndexSignatures.types.diff deleted file mode 100644 index ebc946ff434..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intersectionWithIndexSignatures.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.intersectionWithIndexSignatures.types -+++ new.intersectionWithIndexSignatures.types -@@= skipped -75, +75 lines =@@ - - q["asd"].a.substr(1); - >q["asd"].a.substr(1) : string -->q["asd"].a.substr : (from: number, length?: number) => string -+>q["asd"].a.substr : (from: number, length?: number | undefined) => string - >q["asd"].a : string - >q["asd"] : { a: string; } - >q : s - >"asd" : "asd" - >a : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >1 : 1 - - q["asd"].b; // Error \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intersectionWithUnionConstraint.types b/testdata/baselines/reference/submodule/conformance/intersectionWithUnionConstraint.types index 93cfdcc52cc..86c318fe89b 100644 --- a/testdata/baselines/reference/submodule/conformance/intersectionWithUnionConstraint.types +++ b/testdata/baselines/reference/submodule/conformance/intersectionWithUnionConstraint.types @@ -44,7 +44,7 @@ type T1 = (string | number | undefined) & (string | null | undefined); // strin >T1 : string | undefined function f3(x: T & (number | object | undefined)) { ->f3 : (x: (T & undefined) | (T & number)) => void +>f3 : (x: T & (number | object | undefined)) => void >x : (T & undefined) | (T & number) const y: number | undefined = x; @@ -53,7 +53,7 @@ function f3(x: T & (number | object | und } function f4(x: T & (number | object)) { ->f4 : (x: T & number) => void +>f4 : (x: T & (number | object)) => void >x : T & number const y: number = x; diff --git a/testdata/baselines/reference/submodule/conformance/intersectionWithUnionConstraint.types.diff b/testdata/baselines/reference/submodule/conformance/intersectionWithUnionConstraint.types.diff deleted file mode 100644 index f843d5d4a8e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intersectionWithUnionConstraint.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.intersectionWithUnionConstraint.types -+++ new.intersectionWithUnionConstraint.types -@@= skipped -43, +43 lines =@@ - >T1 : string | undefined - - function f3(x: T & (number | object | undefined)) { -->f3 : (x: T & (number | object | undefined)) => void -+>f3 : (x: (T & undefined) | (T & number)) => void - >x : (T & undefined) | (T & number) - - const y: number | undefined = x; -@@= skipped -9, +9 lines =@@ - } - - function f4(x: T & (number | object)) { -->f4 : (x: T & (number | object)) => void -+>f4 : (x: T & number) => void - >x : T & number - - const y: number = x; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intlDateTimeFormatRangeES2021.types b/testdata/baselines/reference/submodule/conformance/intlDateTimeFormatRangeES2021.types index 2365599a7b3..0e55ab31d1d 100644 --- a/testdata/baselines/reference/submodule/conformance/intlDateTimeFormatRangeES2021.types +++ b/testdata/baselines/reference/submodule/conformance/intlDateTimeFormatRangeES2021.types @@ -3,12 +3,12 @@ === intlDateTimeFormatRangeES2021.ts === new Intl.DateTimeFormat().formatRange(new Date(0), new Date()); >new Intl.DateTimeFormat().formatRange(new Date(0), new Date()) : string ->new Intl.DateTimeFormat().formatRange : (startDate: number | bigint | Date, endDate: number | bigint | Date) => string +>new Intl.DateTimeFormat().formatRange : (startDate: Date | number | bigint, endDate: Date | number | bigint) => string >new Intl.DateTimeFormat() : Intl.DateTimeFormat >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor >Intl : typeof Intl >DateTimeFormat : Intl.DateTimeFormatConstructor ->formatRange : (startDate: number | bigint | Date, endDate: number | bigint | Date) => string +>formatRange : (startDate: Date | number | bigint, endDate: Date | number | bigint) => string >new Date(0) : Date >Date : DateConstructor >0 : 0 @@ -18,12 +18,12 @@ new Intl.DateTimeFormat().formatRange(new Date(0), new Date()); const [ part ] = new Intl.DateTimeFormat().formatRangeToParts(1000, 1000000000); >part : Intl.DateTimeRangeFormatPart >new Intl.DateTimeFormat().formatRangeToParts(1000, 1000000000) : Intl.DateTimeRangeFormatPart[] ->new Intl.DateTimeFormat().formatRangeToParts : (startDate: number | bigint | Date, endDate: number | bigint | Date) => Intl.DateTimeRangeFormatPart[] +>new Intl.DateTimeFormat().formatRangeToParts : (startDate: Date | number | bigint, endDate: Date | number | bigint) => Intl.DateTimeRangeFormatPart[] >new Intl.DateTimeFormat() : Intl.DateTimeFormat >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor >Intl : typeof Intl >DateTimeFormat : Intl.DateTimeFormatConstructor ->formatRangeToParts : (startDate: number | bigint | Date, endDate: number | bigint | Date) => Intl.DateTimeRangeFormatPart[] +>formatRangeToParts : (startDate: Date | number | bigint, endDate: Date | number | bigint) => Intl.DateTimeRangeFormatPart[] >1000 : 1000 >1000000000 : 1000000000 diff --git a/testdata/baselines/reference/submodule/conformance/intlDateTimeFormatRangeES2021.types.diff b/testdata/baselines/reference/submodule/conformance/intlDateTimeFormatRangeES2021.types.diff deleted file mode 100644 index 4a0ff8efe68..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intlDateTimeFormatRangeES2021.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.intlDateTimeFormatRangeES2021.types -+++ new.intlDateTimeFormatRangeES2021.types -@@= skipped -2, +2 lines =@@ - === intlDateTimeFormatRangeES2021.ts === - new Intl.DateTimeFormat().formatRange(new Date(0), new Date()); - >new Intl.DateTimeFormat().formatRange(new Date(0), new Date()) : string -->new Intl.DateTimeFormat().formatRange : (startDate: Date | number | bigint, endDate: Date | number | bigint) => string -+>new Intl.DateTimeFormat().formatRange : (startDate: number | bigint | Date, endDate: number | bigint | Date) => string - >new Intl.DateTimeFormat() : Intl.DateTimeFormat - >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor - >Intl : typeof Intl - >DateTimeFormat : Intl.DateTimeFormatConstructor -->formatRange : (startDate: Date | number | bigint, endDate: Date | number | bigint) => string -+>formatRange : (startDate: number | bigint | Date, endDate: number | bigint | Date) => string - >new Date(0) : Date - >Date : DateConstructor - >0 : 0 -@@= skipped -15, +15 lines =@@ - const [ part ] = new Intl.DateTimeFormat().formatRangeToParts(1000, 1000000000); - >part : Intl.DateTimeRangeFormatPart - >new Intl.DateTimeFormat().formatRangeToParts(1000, 1000000000) : Intl.DateTimeRangeFormatPart[] -->new Intl.DateTimeFormat().formatRangeToParts : (startDate: Date | number | bigint, endDate: Date | number | bigint) => Intl.DateTimeRangeFormatPart[] -+>new Intl.DateTimeFormat().formatRangeToParts : (startDate: number | bigint | Date, endDate: number | bigint | Date) => Intl.DateTimeRangeFormatPart[] - >new Intl.DateTimeFormat() : Intl.DateTimeFormat - >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor - >Intl : typeof Intl - >DateTimeFormat : Intl.DateTimeFormatConstructor -->formatRangeToParts : (startDate: Date | number | bigint, endDate: Date | number | bigint) => Intl.DateTimeRangeFormatPart[] -+>formatRangeToParts : (startDate: number | bigint | Date, endDate: number | bigint | Date) => Intl.DateTimeRangeFormatPart[] - >1000 : 1000 - >1000000000 : 1000000000 diff --git a/testdata/baselines/reference/submodule/conformance/intlDurationFormat.types b/testdata/baselines/reference/submodule/conformance/intlDurationFormat.types index a1fd5306178..eeb18085bf4 100644 --- a/testdata/baselines/reference/submodule/conformance/intlDurationFormat.types +++ b/testdata/baselines/reference/submodule/conformance/intlDurationFormat.types @@ -5,9 +5,9 @@ new Intl.DurationFormat('en').format({ >new Intl.DurationFormat('en').format({ years: 1, hours: 20, minutes: 15, seconds: 35}) : string >new Intl.DurationFormat('en').format : (duration: Partial>) => string >new Intl.DurationFormat('en') : Intl.DurationFormat ->Intl.DurationFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined): Intl.DurationFormat; prototype: Intl.DurationFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.DurationFormatLocaleMatcher | undefined; } | undefined): string[]; } +>Intl.DurationFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions): Intl.DurationFormat; prototype: Intl.DurationFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.DurationFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->DurationFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined): Intl.DurationFormat; prototype: Intl.DurationFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.DurationFormatLocaleMatcher | undefined; } | undefined): string[]; } +>DurationFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions): Intl.DurationFormat; prototype: Intl.DurationFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.DurationFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } >'en' : "en" >format : (duration: Partial>) => string >{ years: 1, hours: 20, minutes: 15, seconds: 35} : { years: number; hours: number; minutes: number; seconds: number; } diff --git a/testdata/baselines/reference/submodule/conformance/intlDurationFormat.types.diff b/testdata/baselines/reference/submodule/conformance/intlDurationFormat.types.diff deleted file mode 100644 index c5ff1c4176d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intlDurationFormat.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.intlDurationFormat.types -+++ new.intlDurationFormat.types -@@= skipped -4, +4 lines =@@ - >new Intl.DurationFormat('en').format({ years: 1, hours: 20, minutes: 15, seconds: 35}) : string - >new Intl.DurationFormat('en').format : (duration: Partial>) => string - >new Intl.DurationFormat('en') : Intl.DurationFormat -->Intl.DurationFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions): Intl.DurationFormat; prototype: Intl.DurationFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.DurationFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.DurationFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined): Intl.DurationFormat; prototype: Intl.DurationFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.DurationFormatLocaleMatcher | undefined; } | undefined): string[]; } - >Intl : typeof Intl -->DurationFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions): Intl.DurationFormat; prototype: Intl.DurationFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.DurationFormatLocaleMatcher; }): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>DurationFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions | undefined): Intl.DurationFormat; prototype: Intl.DurationFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.DurationFormatLocaleMatcher | undefined; } | undefined): string[]; } - >'en' : "en" - >format : (duration: Partial>) => string - >{ years: 1, hours: 20, minutes: 15, seconds: 35} : { years: number; hours: number; minutes: number; seconds: number; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intlNumberFormatES2023.types b/testdata/baselines/reference/submodule/conformance/intlNumberFormatES2023.types index 31b7e81375a..35abe4aa97d 100644 --- a/testdata/baselines/reference/submodule/conformance/intlNumberFormatES2023.types +++ b/testdata/baselines/reference/submodule/conformance/intlNumberFormatES2023.types @@ -236,7 +236,7 @@ const nf = new Intl.NumberFormat("en-US", { const filtered = nf >filtered : string >nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map((part) => part.value) .join("") : string ->nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map((part) => part.value) .join : (separator?: string | undefined) => string +>nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map((part) => part.value) .join : (separator?: string) => string >nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map((part) => part.value) : string[] >nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map : (callbackfn: (value: Intl.NumberRangeFormatPart, index: number, array: Intl.NumberRangeFormatPart[]) => U, thisArg?: any) => U[] >nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") : Intl.NumberRangeFormatPart[] @@ -269,6 +269,6 @@ const filtered = nf >value : string .join(""); ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"" : "" diff --git a/testdata/baselines/reference/submodule/conformance/intlNumberFormatES2023.types.diff b/testdata/baselines/reference/submodule/conformance/intlNumberFormatES2023.types.diff deleted file mode 100644 index 7016db50cfb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intlNumberFormatES2023.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.intlNumberFormatES2023.types -+++ new.intlNumberFormatES2023.types -@@= skipped -235, +235 lines =@@ - const filtered = nf - >filtered : string - >nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map((part) => part.value) .join("") : string -->nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map((part) => part.value) .join : (separator?: string) => string -+>nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map((part) => part.value) .join : (separator?: string | undefined) => string - >nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map((part) => part.value) : string[] - >nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") .map : (callbackfn: (value: Intl.NumberRangeFormatPart, index: number, array: Intl.NumberRangeFormatPart[]) => U, thisArg?: any) => U[] - >nf .formatRangeToParts(100, 100) .filter((part) => part.type !== "approximatelySign") : Intl.NumberRangeFormatPart[] -@@= skipped -33, +33 lines =@@ - >value : string - - .join(""); -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"" : "" diff --git a/testdata/baselines/reference/submodule/conformance/intraExpressionInferences.types b/testdata/baselines/reference/submodule/conformance/intraExpressionInferences.types index 12ef219b442..e9306b21a10 100644 --- a/testdata/baselines/reference/submodule/conformance/intraExpressionInferences.types +++ b/testdata/baselines/reference/submodule/conformance/intraExpressionInferences.types @@ -32,9 +32,9 @@ callIt({ >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string }); @@ -54,9 +54,9 @@ callIt({ >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string }); @@ -77,9 +77,9 @@ callIt({ >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string }); @@ -98,9 +98,9 @@ callItT([() => 0, n => n.toFixed()]); >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string callItT([_a => 0, n => n.toFixed()]); >callItT([_a => 0, n => n.toFixed()]) : void @@ -112,9 +112,9 @@ callItT([_a => 0, n => n.toFixed()]); >n => n.toFixed() : (n: number) => string >n : number >n.toFixed() : string ->n.toFixed : (fractionDigits?: number | undefined) => string +>n.toFixed : (fractionDigits?: number) => string >n : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string // Repro from #25092 @@ -151,9 +151,9 @@ const myGeneric = inferTypeFn({ >generic => generic.toFixed() : (generic: number) => string >generic : number >generic.toFixed() : string ->generic.toFixed : (fractionDigits?: number | undefined) => string +>generic.toFixed : (fractionDigits?: number) => string >generic : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string }); @@ -696,9 +696,9 @@ Foo({ arg.toString(); >arg.toString() : string ->arg.toString : (radix?: number | undefined) => string +>arg.toString : (radix?: number) => string >arg : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string }, }, @@ -744,9 +744,9 @@ const resNested = nested({ >(arg) => arg.join(",") : (arg: number[]) => string >arg : number[] >arg.join(",") : string ->arg.join : (separator?: string | undefined) => string +>arg.join : (separator?: string) => string >arg : number[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"," : "," }, @@ -955,9 +955,9 @@ const resOnion = onion({ >(arg) => arg.join(",") : (arg: string[]) => string >arg : string[] >arg.join(",") : string ->arg.join : (separator?: string | undefined) => string +>arg.join : (separator?: string) => string >arg : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"," : "," nested2: { @@ -1028,9 +1028,9 @@ const resOnion2 = onion2({ >(arg) => arg.join(",") : (arg: string[]) => string >arg : string[] >arg.join(",") : string ->arg.join : (separator?: string | undefined) => string +>arg.join : (separator?: string) => string >arg : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"," : "," c: (arg) => Number(arg), diff --git a/testdata/baselines/reference/submodule/conformance/intraExpressionInferences.types.diff b/testdata/baselines/reference/submodule/conformance/intraExpressionInferences.types.diff deleted file mode 100644 index 2ad0a9ab0bf..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intraExpressionInferences.types.diff +++ /dev/null @@ -1,122 +0,0 @@ ---- old.intraExpressionInferences.types -+++ new.intraExpressionInferences.types -@@= skipped -31, +31 lines =@@ - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - }); - -@@= skipped -22, +22 lines =@@ - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - }); - -@@= skipped -23, +23 lines =@@ - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - }); - -@@= skipped -21, +21 lines =@@ - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - callItT([_a => 0, n => n.toFixed()]); - >callItT([_a => 0, n => n.toFixed()]) : void -@@= skipped -14, +14 lines =@@ - >n => n.toFixed() : (n: number) => string - >n : number - >n.toFixed() : string -->n.toFixed : (fractionDigits?: number) => string -+>n.toFixed : (fractionDigits?: number | undefined) => string - >n : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - // Repro from #25092 - -@@= skipped -39, +39 lines =@@ - >generic => generic.toFixed() : (generic: number) => string - >generic : number - >generic.toFixed() : string -->generic.toFixed : (fractionDigits?: number) => string -+>generic.toFixed : (fractionDigits?: number | undefined) => string - >generic : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - }); - -@@= skipped -545, +545 lines =@@ - - arg.toString(); - >arg.toString() : string -->arg.toString : (radix?: number) => string -+>arg.toString : (radix?: number | undefined) => string - >arg : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - }, - }, -@@= skipped -48, +48 lines =@@ - >(arg) => arg.join(",") : (arg: number[]) => string - >arg : number[] - >arg.join(",") : string -->arg.join : (separator?: string) => string -+>arg.join : (separator?: string | undefined) => string - >arg : number[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"," : "," - - }, -@@= skipped -211, +211 lines =@@ - >(arg) => arg.join(",") : (arg: string[]) => string - >arg : string[] - >arg.join(",") : string -->arg.join : (separator?: string) => string -+>arg.join : (separator?: string | undefined) => string - >arg : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"," : "," - - nested2: { -@@= skipped -73, +73 lines =@@ - >(arg) => arg.join(",") : (arg: string[]) => string - >arg : string[] - >arg.join(",") : string -->arg.join : (separator?: string) => string -+>arg.join : (separator?: string | undefined) => string - >arg : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"," : "," - - c: (arg) => Number(arg), \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/intraExpressionInferencesJsx.types b/testdata/baselines/reference/submodule/conformance/intraExpressionInferencesJsx.types index 5804fce52f9..706d73f8b21 100644 --- a/testdata/baselines/reference/submodule/conformance/intraExpressionInferencesJsx.types +++ b/testdata/baselines/reference/submodule/conformance/intraExpressionInferencesJsx.types @@ -248,9 +248,9 @@ function Foo(props: Props) { >(arg) => { arg.toString(); } : (arg: number) => void >arg : number >arg.toString() : string ->arg.toString : (radix?: number | undefined) => string +>arg.toString : (radix?: number) => string >arg : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string />; @@ -269,9 +269,9 @@ function Foo(props: Props) { >(arg) => { arg.toString(); } : (arg: number) => void >arg : number >arg.toString() : string ->arg.toString : (radix?: number | undefined) => string +>arg.toString : (radix?: number) => string >arg : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string />; @@ -291,9 +291,9 @@ function Foo(props: Props) { >(arg) => { arg.toString(); } : (arg: number) => void >arg : number >arg.toString() : string ->arg.toString : (radix?: number | undefined) => string +>arg.toString : (radix?: number) => string >arg : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string }} />; diff --git a/testdata/baselines/reference/submodule/conformance/intraExpressionInferencesJsx.types.diff b/testdata/baselines/reference/submodule/conformance/intraExpressionInferencesJsx.types.diff deleted file mode 100644 index bdc0188d692..00000000000 --- a/testdata/baselines/reference/submodule/conformance/intraExpressionInferencesJsx.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.intraExpressionInferencesJsx.types -+++ new.intraExpressionInferencesJsx.types -@@= skipped -247, +247 lines =@@ - >(arg) => { arg.toString(); } : (arg: number) => void - >arg : number - >arg.toString() : string -->arg.toString : (radix?: number) => string -+>arg.toString : (radix?: number | undefined) => string - >arg : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - />; - -@@= skipped -21, +21 lines =@@ - >(arg) => { arg.toString(); } : (arg: number) => void - >arg : number - >arg.toString() : string -->arg.toString : (radix?: number) => string -+>arg.toString : (radix?: number | undefined) => string - >arg : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - />; - -@@= skipped -22, +22 lines =@@ - >(arg) => { arg.toString(); } : (arg: number) => void - >arg : number - >arg.toString() : string -->arg.toString : (radix?: number) => string -+>arg.toString : (radix?: number | undefined) => string - >arg : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - }} />; diff --git a/testdata/baselines/reference/submodule/conformance/intrinsicTypes.types b/testdata/baselines/reference/submodule/conformance/intrinsicTypes.types index fbf06569eed..e36e3ca77c0 100644 --- a/testdata/baselines/reference/submodule/conformance/intrinsicTypes.types +++ b/testdata/baselines/reference/submodule/conformance/intrinsicTypes.types @@ -129,7 +129,7 @@ function foo1(s: string, x: Uppercase, y: Uppe } function foo2(x: Uppercase) { ->foo2 : (x: Uppercase) => void +>foo2 : (x: Uppercase) => void >x : Uppercase let s: 'FOO' | 'BAR' = x; diff --git a/testdata/baselines/reference/submodule/conformance/intrinsicTypes.types.diff b/testdata/baselines/reference/submodule/conformance/intrinsicTypes.types.diff index a538d0d00cc..8179c164cc0 100644 --- a/testdata/baselines/reference/submodule/conformance/intrinsicTypes.types.diff +++ b/testdata/baselines/reference/submodule/conformance/intrinsicTypes.types.diff @@ -5,7 +5,7 @@ function foo2(x: Uppercase) { ->foo2 : (x: Uppercase) => void -+>foo2 : (x: Uppercase) => void ++>foo2 : (x: Uppercase) => void >x : Uppercase let s: 'FOO' | 'BAR' = x; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/invalidMultipleVariableDeclarations.types b/testdata/baselines/reference/submodule/conformance/invalidMultipleVariableDeclarations.types index 4d93092ca14..c894adbdaee 100644 --- a/testdata/baselines/reference/submodule/conformance/invalidMultipleVariableDeclarations.types +++ b/testdata/baselines/reference/submodule/conformance/invalidMultipleVariableDeclarations.types @@ -56,9 +56,9 @@ namespace M { >F2 : (x: number) => string >x : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } // all of these are errors diff --git a/testdata/baselines/reference/submodule/conformance/invalidMultipleVariableDeclarations.types.diff b/testdata/baselines/reference/submodule/conformance/invalidMultipleVariableDeclarations.types.diff deleted file mode 100644 index bacc41ea5c1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/invalidMultipleVariableDeclarations.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.invalidMultipleVariableDeclarations.types -+++ new.invalidMultipleVariableDeclarations.types -@@= skipped -55, +55 lines =@@ - >F2 : (x: number) => string - >x : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - - // all of these are errors \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/isomorphicMappedTypeInference.types b/testdata/baselines/reference/submodule/conformance/isomorphicMappedTypeInference.types index a942becf822..d4b1193d05c 100644 --- a/testdata/baselines/reference/submodule/conformance/isomorphicMappedTypeInference.types +++ b/testdata/baselines/reference/submodule/conformance/isomorphicMappedTypeInference.types @@ -368,7 +368,7 @@ function f6(s: string) { } declare function validate(obj: { [P in keyof T]?: T[P] }): T; ->validate : (obj: { [P in keyof T]?: T[P] | undefined; }) => 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; @@ -376,7 +376,7 @@ declare function 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] | undefined; }) => T +>validateAndClone : (obj: { readonly [P in keyof T]?: T[P]; }) => T >obj : { readonly [P in keyof T]?: T[P] | undefined; } type Foo = { @@ -396,7 +396,7 @@ function f10(foo: Foo) { let x = validate(foo); // { a: number, readonly b: string } >x : { a: number; readonly b: string; } >validate(foo) : { a: number; readonly b: string; } ->validate : (obj: { [P in keyof T]?: T[P] | undefined; }) => T +>validate : (obj: { [P in keyof T]?: T[P]; }) => T >foo : Foo let y = clone(foo); // { a?: number, b: string } @@ -408,7 +408,7 @@ function f10(foo: Foo) { let z = validateAndClone(foo); // { a: number, b: string } >z : { a: number; b: string; } >validateAndClone(foo) : { a: number; b: string; } ->validateAndClone : (obj: { readonly [P in keyof T]?: T[P] | undefined; }) => T +>validateAndClone : (obj: { readonly [P in keyof T]?: T[P]; }) => T >foo : Foo } diff --git a/testdata/baselines/reference/submodule/conformance/isomorphicMappedTypeInference.types.diff b/testdata/baselines/reference/submodule/conformance/isomorphicMappedTypeInference.types.diff deleted file mode 100644 index 6bb2f52caf8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/isomorphicMappedTypeInference.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.isomorphicMappedTypeInference.types -+++ new.isomorphicMappedTypeInference.types -@@= skipped -367, +367 lines =@@ - } - - 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] | undefined; }) => T - >obj : { [P in keyof T]?: T[P] | undefined; } - - declare function clone(obj: { readonly [P in keyof T]: T[P] }): T; -@@= skipped -8, +8 lines =@@ - >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] | undefined; }) => T - >obj : { readonly [P in keyof T]?: T[P] | undefined; } - - type Foo = { -@@= skipped -20, +20 lines =@@ - let x = validate(foo); // { a: number, readonly b: string } - >x : { a: number; readonly b: string; } - >validate(foo) : { a: number; readonly b: string; } -->validate : (obj: { [P in keyof T]?: T[P]; }) => T -+>validate : (obj: { [P in keyof T]?: T[P] | undefined; }) => T - >foo : Foo - - let y = clone(foo); // { a?: number, b: string } -@@= skipped -12, +12 lines =@@ - let z = validateAndClone(foo); // { a: number, b: string } - >z : { a: number; b: string; } - >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] | undefined; }) => T - >foo : Foo - } diff --git a/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall5.types b/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall5.types index fdf383504ef..cc203959888 100644 --- a/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall5.types +++ b/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall5.types @@ -2,7 +2,7 @@ === iteratorSpreadInCall5.ts === function foo(...s: (symbol | string)[]) { } ->foo : (...s: (string | symbol)[]) => void +>foo : (...s: (symbol | string)[]) => void >s : (string | symbol)[] class SymbolIterator { @@ -70,7 +70,7 @@ class _StringIterator { foo(...new SymbolIterator, ...new _StringIterator); >foo(...new SymbolIterator, ...new _StringIterator) : void ->foo : (...s: (string | symbol)[]) => void +>foo : (...s: (symbol | string)[]) => void >...new SymbolIterator : symbol >new SymbolIterator : SymbolIterator >SymbolIterator : typeof SymbolIterator diff --git a/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall5.types.diff b/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall5.types.diff deleted file mode 100644 index 19d4f9c2ecd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall5.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.iteratorSpreadInCall5.types -+++ new.iteratorSpreadInCall5.types -@@= skipped -1, +1 lines =@@ - - === iteratorSpreadInCall5.ts === - function foo(...s: (symbol | string)[]) { } -->foo : (...s: (symbol | string)[]) => void -+>foo : (...s: (string | symbol)[]) => void - >s : (string | symbol)[] - - class SymbolIterator { -@@= skipped -68, +68 lines =@@ - - foo(...new SymbolIterator, ...new _StringIterator); - >foo(...new SymbolIterator, ...new _StringIterator) : void -->foo : (...s: (symbol | string)[]) => void -+>foo : (...s: (string | symbol)[]) => void - >...new SymbolIterator : symbol - >new SymbolIterator : SymbolIterator - >SymbolIterator : typeof SymbolIterator \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall6.types b/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall6.types index 35028d4eaa1..7c045a7e718 100644 --- a/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall6.types +++ b/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall6.types @@ -2,7 +2,7 @@ === iteratorSpreadInCall6.ts === function foo(...s: (symbol | number)[]) { } ->foo : (...s: (number | symbol)[]) => void +>foo : (...s: (symbol | number)[]) => void >s : (number | symbol)[] class SymbolIterator { @@ -70,7 +70,7 @@ class _StringIterator { foo(...new SymbolIterator, ...new _StringIterator); >foo(...new SymbolIterator, ...new _StringIterator) : void ->foo : (...s: (number | symbol)[]) => void +>foo : (...s: (symbol | number)[]) => void >...new SymbolIterator : symbol >new SymbolIterator : SymbolIterator >SymbolIterator : typeof SymbolIterator diff --git a/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall6.types.diff b/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall6.types.diff deleted file mode 100644 index 075ad5a0345..00000000000 --- a/testdata/baselines/reference/submodule/conformance/iteratorSpreadInCall6.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.iteratorSpreadInCall6.types -+++ new.iteratorSpreadInCall6.types -@@= skipped -1, +1 lines =@@ - - === iteratorSpreadInCall6.ts === - function foo(...s: (symbol | number)[]) { } -->foo : (...s: (symbol | number)[]) => void -+>foo : (...s: (number | symbol)[]) => void - >s : (number | symbol)[] - - class SymbolIterator { -@@= skipped -68, +68 lines =@@ - - foo(...new SymbolIterator, ...new _StringIterator); - >foo(...new SymbolIterator, ...new _StringIterator) : void -->foo : (...s: (symbol | number)[]) => void -+>foo : (...s: (number | symbol)[]) => void - >...new SymbolIterator : symbol - >new SymbolIterator : SymbolIterator - >SymbolIterator : typeof SymbolIterator \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types index 03bd1597c7b..a3f5c231f02 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types @@ -3,7 +3,7 @@ === interface.ts === export interface Encoder { encode(value: T): Uint8Array ->encode : (value: T) => Uint8Array +>encode : (value: T) => Uint8Array >value : T } === lib.js === diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types.diff deleted file mode 100644 index 5a22c50bc2a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types -+++ new.jsDeclarationsClassImplementsGenericsSerialization(target=es2015).types -@@= skipped -2, +2 lines =@@ - === interface.ts === - export interface Encoder { - encode(value: T): Uint8Array -->encode : (value: T) => Uint8Array -+>encode : (value: T) => Uint8Array - >value : T - } - === lib.js === \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).js index d78b79354e9..6092af7095b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).js @@ -193,7 +193,7 @@ declare namespace Context { * @param {HookHandler=} handle * @returns {State} */ - construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; + construct(input: Input, handle?: HookHandler | undefined): State; }; } export = Context; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).js.diff index 40319a5a3af..63c8cac84a9 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).js.diff @@ -91,7 +91,7 @@ + * @param {HookHandler=} handle + * @returns {State} + */ -+ construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; ++ construct(input: Input, handle?: HookHandler | undefined): State; + }; } -/** diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).types index ed936f06c1b..00eb6c97728 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).types @@ -80,7 +80,7 @@ module.exports = Hook; */ function Context(input) { ->Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } +>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } >input : Input if (!(this instanceof Context)) { @@ -88,11 +88,11 @@ function Context(input) { >(this instanceof Context) : boolean >this instanceof Context : boolean >this : any ->Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } +>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } return new Context(input) >new Context(input) : any ->Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } +>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } >input : Input } this.state = this.construct(input); @@ -107,11 +107,11 @@ function Context(input) { >input : Input } Context.prototype = { ->Context.prototype = { /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; } ->Context.prototype : { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; } ->Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } ->prototype : { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; } ->{ /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; } +>Context.prototype = { /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: HookHandler | undefined): State; } +>Context.prototype : { construct(input: Input, handle?: HookHandler | undefined): State; } +>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } +>prototype : { construct(input: Input, handle?: HookHandler | undefined): State; } +>{ /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: HookHandler | undefined): State; } /** * @param {Input} input @@ -119,7 +119,7 @@ Context.prototype = { * @returns {State} */ construct(input, handle = () => void 0) { ->construct : (input: Input, handle?: import("./hook").HookHandler | undefined) => State +>construct : (input: Input, handle?: HookHandler | undefined) => State >input : Input >handle : import("./hook").HookHandler | undefined >() => void 0 : () => undefined @@ -131,9 +131,9 @@ Context.prototype = { } } module.exports = Context; ->module.exports = Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } ->module.exports : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } ->module : { "export=": { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; }; } ->exports : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } ->Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } +>module.exports = Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } +>module.exports : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } +>module : { "export=": { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; }; } +>exports : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } +>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).types.diff index 84063c68625..6bed9876c56 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment(target=es2015).types.diff @@ -65,7 +65,7 @@ function Context(input) { ->Context : typeof Context -+>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } ++>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } >input : Input if (!(this instanceof Context)) { @@ -75,13 +75,13 @@ ->this : this ->Context : typeof Context +>this : any -+>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } ++>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } return new Context(input) ->new Context(input) : Context ->Context : typeof Context +>new Context(input) : any -+>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } ++>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } >input : Input } this.state = this.construct(input); @@ -102,29 +102,14 @@ >input : Input } Context.prototype = { -->Context.prototype = { /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: HookHandler | undefined): State; } -->Context.prototype : { construct(input: Input, handle?: HookHandler | undefined): State; } + >Context.prototype = { /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: HookHandler | undefined): State; } + >Context.prototype : { construct(input: Input, handle?: HookHandler | undefined): State; } ->Context : typeof Context -->prototype : { construct(input: Input, handle?: HookHandler | undefined): State; } -->{ /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: HookHandler | undefined): State; } -+>Context.prototype = { /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; } -+>Context.prototype : { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; } -+>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } -+>prototype : { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; } -+>{ /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; } ++>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } + >prototype : { construct(input: Input, handle?: HookHandler | undefined): State; } + >{ /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: HookHandler | undefined): State; } - /** - * @param {Input} input -@@= skipped -39, +39 lines =@@ - * @returns {State} - */ - construct(input, handle = () => void 0) { -->construct : (input: Input, handle?: HookHandler | undefined) => State -+>construct : (input: Input, handle?: import("./hook").HookHandler | undefined) => State - >input : Input - >handle : import("./hook").HookHandler | undefined - >() => void 0 : () => undefined -@@= skipped -12, +12 lines =@@ +@@= skipped -51, +51 lines =@@ } } module.exports = Context; @@ -133,8 +118,8 @@ ->module : { exports: { (input: Input): Context | undefined; new (input: Input): Context; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; }; } ->exports : { (input: Input): Context | undefined; new (input: Input): Context; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } ->Context : typeof Context -+>module.exports = Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } -+>module.exports : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } -+>module : { "export=": { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; }; } -+>exports : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } -+>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: import("./hook").HookHandler | undefined): State; }; } ++>module.exports = Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } ++>module.exports : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } ++>module : { "export=": { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; }; } ++>exports : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } ++>Context : { (input: Input): any; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.errors.txt b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.errors.txt index 237c0f2e6f5..c07b4223c27 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.errors.txt @@ -1,7 +1,7 @@ index.js(38,21): error TS2349: This expression is not callable. - Type '{ y: any; }' has no call signatures. + Type '{ y: typeof b; }' has no call signatures. index.js(48,21): error TS2349: This expression is not callable. - Type '{ y: any; }' has no call signatures. + Type '{ y: typeof b; }' has no call signatures. ==== index.js (2 errors) ==== @@ -45,7 +45,7 @@ index.js(48,21): error TS2349: This expression is not callable. return a.x && b.y(); ~ !!! error TS2349: This expression is not callable. -!!! error TS2349: Type '{ y: any; }' has no call signatures. +!!! error TS2349: Type '{ y: typeof b; }' has no call signatures. } export { g }; @@ -58,7 +58,7 @@ index.js(48,21): error TS2349: This expression is not callable. return a.x && b.y(); ~ !!! error TS2349: This expression is not callable. -!!! error TS2349: Type '{ y: any; }' has no call signatures. +!!! error TS2349: Type '{ y: typeof b; }' has no call signatures. } export { hh as h }; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.errors.txt.diff index 303a737360e..6bad2b68bbb 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.errors.txt.diff @@ -3,9 +3,9 @@ @@= skipped -0, +0 lines =@@ - +index.js(38,21): error TS2349: This expression is not callable. -+ Type '{ y: any; }' has no call signatures. ++ Type '{ y: typeof b; }' has no call signatures. +index.js(48,21): error TS2349: This expression is not callable. -+ Type '{ y: any; }' has no call signatures. ++ Type '{ y: typeof b; }' has no call signatures. + + +==== index.js (2 errors) ==== @@ -49,7 +49,7 @@ + return a.x && b.y(); + ~ +!!! error TS2349: This expression is not callable. -+!!! error TS2349: Type '{ y: any; }' has no call signatures. ++!!! error TS2349: Type '{ y: typeof b; }' has no call signatures. + } + + export { g }; @@ -62,7 +62,7 @@ + return a.x && b.y(); + ~ +!!! error TS2349: This expression is not callable. -+!!! error TS2349: Type '{ y: any; }' has no call signatures. ++!!! error TS2349: Type '{ y: typeof b; }' has no call signatures. + } + + export { hh as h }; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.types index 35ff520d78e..f381b0119e3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.types @@ -70,9 +70,9 @@ f.self = f; * @param {{y: typeof b}} b */ function g(a, b) { ->g : (a: { x: string; }, b: { y: any; }) => any +>g : (a: { x: string; }, b: { y: typeof b; }) => any >a : { x: string; } ->b : { y: any; } +>b : { y: typeof b; } return a.x && b.y(); >a.x && b.y() : any @@ -80,22 +80,22 @@ function g(a, b) { >a : { x: string; } >x : string >b.y() : any ->b.y : { y: any; } ->b : { y: any; } ->y : { y: any; } +>b.y : { y: typeof b; } +>b : { y: typeof b; } +>y : { y: typeof b; } } export { g }; ->g : (a: { x: string; }, b: { y: any; }) => any +>g : (a: { x: string; }, b: { y: typeof b; }) => any /** * @param {{x: string}} a * @param {{y: typeof b}} b */ function hh(a, b) { ->hh : (a: { x: string; }, b: { y: any; }) => any +>hh : (a: { x: string; }, b: { y: typeof b; }) => any >a : { x: string; } ->b : { y: any; } +>b : { y: typeof b; } return a.x && b.y(); >a.x && b.y() : any @@ -103,14 +103,14 @@ function hh(a, b) { >a : { x: string; } >x : string >b.y() : any ->b.y : { y: any; } ->b : { y: any; } ->y : { y: any; } +>b.y : { y: typeof b; } +>b : { y: typeof b; } +>y : { y: typeof b; } } export { hh as h }; ->hh : (a: { x: string; }, b: { y: any; }) => any ->h : (a: { x: string; }, b: { y: any; }) => any +>hh : (a: { x: string; }, b: { y: typeof b; }) => any +>h : (a: { x: string; }, b: { y: typeof b; }) => any export function i() {} >i : () => void diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.types.diff index 6dca9d15efc..84600f3fe89 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctions.types.diff @@ -56,10 +56,10 @@ */ function g(a, b) { ->g : (a: { x: string; }, b: { y: typeof import(".").b; }) => void | "" -+>g : (a: { x: string; }, b: { y: any; }) => any ++>g : (a: { x: string; }, b: { y: typeof b; }) => any >a : { x: string; } ->b : { y: typeof import(".").b; } -+>b : { y: any; } ++>b : { y: typeof b; } return a.x && b.y(); ->a.x && b.y() : void | "" @@ -72,14 +72,14 @@ ->b : { y: typeof import(".").b; } ->y : typeof import(".").b +>b.y() : any -+>b.y : { y: any; } -+>b : { y: any; } -+>y : { y: any; } ++>b.y : { y: typeof b; } ++>b : { y: typeof b; } ++>y : { y: typeof b; } } export { g }; ->g : (a: { x: string; }, b: { y: typeof import(".").b; }) => void | "" -+>g : (a: { x: string; }, b: { y: any; }) => any ++>g : (a: { x: string; }, b: { y: typeof b; }) => any /** * @param {{x: string}} a @@ -87,10 +87,10 @@ */ function hh(a, b) { ->hh : (a: { x: string; }, b: { y: typeof import(".").b; }) => void | "" -+>hh : (a: { x: string; }, b: { y: any; }) => any ++>hh : (a: { x: string; }, b: { y: typeof b; }) => any >a : { x: string; } ->b : { y: typeof import(".").b; } -+>b : { y: any; } ++>b : { y: typeof b; } return a.x && b.y(); ->a.x && b.y() : void | "" @@ -103,16 +103,16 @@ ->b : { y: typeof import(".").b; } ->y : typeof import(".").b +>b.y() : any -+>b.y : { y: any; } -+>b : { y: any; } -+>y : { y: any; } ++>b.y : { y: typeof b; } ++>b : { y: typeof b; } ++>y : { y: typeof b; } } export { hh as h }; ->hh : (a: { x: string; }, b: { y: typeof import(".").b; }) => void | "" ->h : (a: { x: string; }, b: { y: typeof import(".").b; }) => void | "" -+>hh : (a: { x: string; }, b: { y: any; }) => any -+>h : (a: { x: string; }, b: { y: any; }) => any ++>hh : (a: { x: string; }, b: { y: typeof b; }) => any ++>h : (a: { x: string; }, b: { y: typeof b; }) => any export function i() {} >i : () => void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsInterfaces(target=es2015).types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsInterfaces(target=es2015).types index c5d755eeb24..c6537996656 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsInterfaces(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsInterfaces(target=es2015).types @@ -39,18 +39,18 @@ export interface C { >x : Q method(): number; ->method : { (): number; (a: T & Q): Q & number; (a?: number | undefined): number; (...args: any[]): number; } +>method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } method(a: T & Q): Q & number; ->method : { (): number; (a: T & Q): Q & number; (a?: number | undefined): number; (...args: any[]): number; } +>method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } >a : T & Q method(a?: number): number; ->method : { (): number; (a: T & Q): Q & number; (a?: number | undefined): number; (...args: any[]): number; } +>method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } >a : number | undefined method(...args: any[]): number; ->method : { (): number; (a: T & Q): Q & number; (a?: number | undefined): number; (...args: any[]): number; } +>method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } >args : any[] optMethod?(): number; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsInterfaces(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsInterfaces(target=es2015).types.diff index d8fedc480ec..3b3f3893190 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsInterfaces(target=es2015).types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsInterfaces(target=es2015).types.diff @@ -5,21 +5,7 @@ method(): number; ->method : { (): number; (a: T & Q_1): Q_1 & number; (a?: number): number; (...args: any[]): number; } -+>method : { (): number; (a: T & Q): Q & number; (a?: number | undefined): number; (...args: any[]): number; } ++>method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } method(a: T & Q): Q & number; -->method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } -+>method : { (): number; (a: T & Q): Q & number; (a?: number | undefined): number; (...args: any[]): number; } - >a : T & Q - - method(a?: number): number; -->method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } -+>method : { (): number; (a: T & Q): Q & number; (a?: number | undefined): number; (...args: any[]): number; } - >a : number | undefined - - method(...args: any[]): number; -->method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } -+>method : { (): number; (a: T & Q): Q & number; (a?: number | undefined): number; (...args: any[]): number; } - >args : any[] - - optMethod?(): number; \ No newline at end of file + >method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingGenerics(target=es2015).types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingGenerics(target=es2015).types index 0adee3ad5ef..e4ee5f812e3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingGenerics(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingGenerics(target=es2015).types @@ -5,13 +5,13 @@ * @param {Array} x */ function x(x) {} ->x : (x: any[]) => void +>x : (x: Array) => void >x : any[] /** * @param {Promise} x */ function y(x) {} ->y : (x: Promise) => void +>y : (x: Promise) => void >x : Promise diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingGenerics(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingGenerics(target=es2015).types.diff new file mode 100644 index 00000000000..789ae239cc6 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingGenerics(target=es2015).types.diff @@ -0,0 +1,17 @@ +--- old.jsDeclarationsMissingGenerics(target=es2015).types ++++ new.jsDeclarationsMissingGenerics(target=es2015).types +@@= skipped -4, +4 lines =@@ + * @param {Array} x + */ + function x(x) {} +->x : (x: any[]) => void ++>x : (x: Array) => void + >x : any[] + + /** + * @param {Promise} x + */ + function y(x) {} +->y : (x: Promise) => void ++>y : (x: Promise) => void + >x : Promise diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingTypeParameters(target=es2015).types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingTypeParameters(target=es2015).types index c022df373cd..be9018b8d8e 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingTypeParameters(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingTypeParameters(target=es2015).types @@ -5,7 +5,7 @@ * @param {Array=} y desc */ function x(y) { } ->x : (y?: any[]) => void +>x : (y?: Array | undefined) => void >y : any[] // @ts-ignore @@ -19,12 +19,12 @@ function y(func) { return; } * @return {(Array.<> | null)} list of devices */ function z() { return null ;} ->z : () => any[] +>z : () => (Array | null) /** * * @return {?Promise} A promise */ function w() { return null; } ->w : () => Promise +>w : () => Promise | null diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingTypeParameters(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingTypeParameters(target=es2015).types.diff index e8e3ebfb37f..8e2e2e0cc60 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingTypeParameters(target=es2015).types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsMissingTypeParameters(target=es2015).types.diff @@ -5,7 +5,7 @@ */ function x(y) { } ->x : (y?: any[] | undefined) => void -+>x : (y?: any[]) => void ++>x : (y?: Array | undefined) => void >y : any[] // @ts-ignore @@ -22,7 +22,7 @@ */ function z() { return null ;} ->z : () => (any[] | null) -+>z : () => any[] ++>z : () => (Array | null) /** * @@ -30,4 +30,4 @@ */ function w() { return null; } ->w : () => Promise | null -+>w : () => Promise ++>w : () => Promise | null diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps1.types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps1.types index 30730e38532..826db8ade6b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps1.types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps1.types @@ -12,7 +12,7 @@ * @returns {number} */ function foo({ a, b, c }) { ->foo : ({ a, b, c }: { a: number; b?: number | undefined; c?: number | undefined; }) => number +>foo : ({ a, b, c }: { a: number; b?: number; c?: number; }) => number >a : number >b : number | undefined >c : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps1.types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps1.types.diff index 13364c59a97..1dee54b2c8f 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps1.types.diff @@ -5,7 +5,7 @@ */ function foo({ a, b, c }) { ->foo : ({ a, b, c }: { a: number; b?: number | undefined; c?: number | undefined;}) => number -+>foo : ({ a, b, c }: { a: number; b?: number | undefined; c?: number | undefined; }) => number ++>foo : ({ a, b, c }: { a: number; b?: number; c?: number; }) => number >a : number >b : number | undefined >c : number | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps2.types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps2.types index 5ec58dfe064..38d84c26d39 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps2.types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps2.types @@ -12,7 +12,7 @@ * @returns {number} */ function foo({ a, b, c }) { ->foo : ({ a, b, c }: { a: number; b?: number | undefined; c?: number | undefined; }) => number +>foo : ({ a, b, c }: { a: number; b?: number; c?: number; }) => number >a : number >b : number | undefined >c : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps2.types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps2.types.diff index e2767f6bf20..a7b7700e9e9 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsOptionalTypeLiteralProps2.types.diff @@ -5,7 +5,7 @@ */ function foo({ a, b, c }) { ->foo : ({ a, b, c }: { a: number; b?: number | undefined; c?: number | undefined;}) => number -+>foo : ({ a, b, c }: { a: number; b?: number | undefined; c?: number | undefined; }) => number ++>foo : ({ a, b, c }: { a: number; b?: number; c?: number; }) => number >a : number >b : number | undefined >c : number | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).js index d064763fa45..e9e63a62a0a 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).js @@ -82,19 +82,19 @@ declare const j: { description: string; main: string; bin: { - cli: string; + "cli": string; }; engines: { - node: string; + "node": string; }; scripts: { - scriptname: string; + "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { - dep: string; + "dep": string; }; repository: string; keywords: string[]; @@ -102,7 +102,7 @@ declare const j: { license: string; homepage: string; config: { - o: string[]; + "o": string[]; }; }; export = j; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).js.diff index b4829fb2ae7..519a5e69659 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).js.diff @@ -8,8 +8,35 @@ declare const j: { name: string; version: string; -@@= skipped -30, +29 lines =@@ - o: string[]; + description: string; + main: string; + bin: { +- cli: string; ++ "cli": string; + }; + engines: { +- node: string; ++ "node": string; + }; + scripts: { +- scriptname: string; ++ "scriptname": string; + }; + devDependencies: { + "@ns/dep": string; + }; + dependencies: { +- dep: string; ++ "dep": string; + }; + repository: string; + keywords: string[]; +@@= skipped -27, +26 lines =@@ + license: string; + homepage: string; + config: { +- o: string[]; ++ "o": string[]; }; }; +export = j; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).types index ec5f9bdd690..b8e29c601ed 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).types @@ -2,17 +2,17 @@ === index.js === const j = require("./package.json"); ->j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } ->require("./package.json") : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } +>j : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } +>require("./package.json") : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } >require : any >"./package.json" : "./package.json" module.exports = j; ->module.exports = j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } ->module.exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } ->module : { "export=": { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; }; } ->exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } ->j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } +>module.exports = j : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } +>module.exports : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } +>module : { "export=": { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; }; } +>exports : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } +>j : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } === package.json === { diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).types.diff index 77d1eea0501..7d02de89189 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson(target=es2015).types.diff @@ -1,10 +1,27 @@ --- old.jsDeclarationsPackageJson(target=es2015).types +++ new.jsDeclarationsPackageJson(target=es2015).types -@@= skipped -9, +9 lines =@@ +@@= skipped -1, +1 lines =@@ + + === index.js === + const j = require("./package.json"); +->j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } +->require("./package.json") : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } ++>j : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } ++>require("./package.json") : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } + >require : any + >"./package.json" : "./package.json" + module.exports = j; - >module.exports = j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } - >module.exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } +->module.exports = j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } +->module.exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } ->module : { exports: { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; }; } -+>module : { "export=": { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; }; } - >exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } - >j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } +->exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } +->j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } ++>module.exports = j : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } ++>module.exports : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } ++>module : { "export=": { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; }; } ++>exports : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } ++>j : { name: string; version: string; description: string; main: string; bin: { "cli": string; }; engines: { "node": string; }; scripts: { "scriptname": string; }; devDependencies: { "@ns/dep": string; }; dependencies: { "dep": string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { "o": string[]; }; } + + === package.json === + { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js index 286571b62cb..aefaea945d6 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js @@ -85,4 +85,4 @@ declare const couldntThinkOfAny: {}; * @param {InstanceType} base * @returns {InstanceType} */ -declare const test: (base: any) => any; +declare const test: (base: InstanceType) => InstanceType; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff index f4dc1643fac..408968833eb 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff @@ -46,4 +46,4 @@ - new (): {}; - }; -}) => any; -+declare const test: (base: any) => any; \ No newline at end of file ++declare const test: (base: InstanceType) => InstanceType; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.types index 94316951500..848a4e66557 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.types @@ -48,8 +48,8 @@ const couldntThinkOfAny = {} * @returns {InstanceType} */ const test = (base) => { ->test : (base: any) => any ->(base) => { return base;} : (base: any) => any +>test : (base: InstanceType) => InstanceType +>(base) => { return base;} : (base: InstanceType) => InstanceType >base : any return base; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.types.diff index 743926ea088..586b117e0ed 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.types.diff @@ -9,15 +9,11 @@ >exports : { (): Base; Base: typeof Base; } >BaseFactory : { (): Base; Base: typeof Base; } -@@= skipped -21, +21 lines =@@ - * @returns {InstanceType} - */ +@@= skipped -23, +23 lines =@@ const test = (base) => { -->test : (base: InstanceType) => InstanceType -->(base) => { return base;} : (base: InstanceType) => InstanceType + >test : (base: InstanceType) => InstanceType + >(base) => { return base;} : (base: InstanceType) => InstanceType ->base : Base -+>test : (base: any) => any -+>(base) => { return base;} : (base: any) => any +>base : any return base; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js index 239172cf0cf..5e5b0d4922f 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js @@ -66,7 +66,7 @@ type BaseFactory = typeof import('./base'); * @param {InstanceType} base * @returns {InstanceType} */ -declare const test: (base: {}) => {}; +declare const test: (base: InstanceType) => InstanceType; //// [DtsFileErrors] @@ -95,5 +95,5 @@ out/base.d.ts(6,9): error TS2502: 'Base' is referenced directly or indirectly in * @param {InstanceType} base * @returns {InstanceType} */ - declare const test: (base: {}) => {}; + declare const test: (base: InstanceType) => InstanceType; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js.diff index e1e9cf0bb69..f713f1521e3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js.diff @@ -27,7 +27,7 @@ */ -declare function test(base: InstanceType): InstanceType; -type BaseFactory = typeof import("./base"); -+declare const test: (base: {}) => {}; ++declare const test: (base: InstanceType) => InstanceType; + + +//// [DtsFileErrors] @@ -56,5 +56,5 @@ + * @param {InstanceType} base + * @returns {InstanceType} + */ -+ declare const test: (base: {}) => {}; ++ declare const test: (base: InstanceType) => InstanceType; + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.types index dd819ce2984..c791843f918 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.types @@ -40,8 +40,8 @@ module.exports = BaseFactory; * @returns {InstanceType} */ const test = (base) => { ->test : (base: Base) => Base ->(base) => { return base;} : (base: Base) => Base +>test : (base: InstanceType) => InstanceType +>(base) => { return base;} : (base: InstanceType) => InstanceType >base : Base return base; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.types.diff index cd3df006644..6d8ffdd8187 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.types.diff @@ -8,15 +8,3 @@ +>module : { readonly BaseFactory: { (): Base; Base: typeof Base; }; } >exports : { (): Base; Base: typeof Base; } >BaseFactory : { (): Base; Base: typeof Base; } - -@@= skipped -13, +13 lines =@@ - * @returns {InstanceType} - */ - const test = (base) => { -->test : (base: InstanceType) => InstanceType -->(base) => { return base;} : (base: InstanceType) => InstanceType -+>test : (base: Base) => Base -+>(base) => { return base;} : (base: Base) => Base - >base : Base - - return base; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReactComponents(target=es2015).types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReactComponents(target=es2015).types index 49214bd4015..9448503e33a 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReactComponents(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReactComponents(target=es2015).types @@ -105,7 +105,7 @@ import React from "react"; * @type {{defaultProps: {tabs: string}} & ((props?: {elem: string}) => JSX.Element)} */ const TabbedShowLayout = () => { ->TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; } | undefined) => JSX.Element) +>TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; }) => JSX.Element) >() => { return (
ok
);} : { (): JSX.Element; defaultProps: { tabs: string; }; } return ( @@ -127,7 +127,7 @@ const TabbedShowLayout = () => { TabbedShowLayout.defaultProps = { >TabbedShowLayout.defaultProps = { tabs: "default value"} : { tabs: string; } >TabbedShowLayout.defaultProps : { tabs: string; } ->TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; } | undefined) => JSX.Element) +>TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; }) => JSX.Element) >defaultProps : { tabs: string; } >{ tabs: "default value"} : { tabs: string; } @@ -138,7 +138,7 @@ TabbedShowLayout.defaultProps = { }; export default TabbedShowLayout; ->TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; } | undefined) => JSX.Element) +>TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; }) => JSX.Element) === jsDeclarationsReactComponents4.jsx === import React from "react"; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReactComponents(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReactComponents(target=es2015).types.diff index 381a4636886..f39e558024b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReactComponents(target=es2015).types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReactComponents(target=es2015).types.diff @@ -9,34 +9,7 @@ return ( >(
ok
) : JSX.Element -@@= skipped -42, +42 lines =@@ - * @type {{defaultProps: {tabs: string}} & ((props?: {elem: string}) => JSX.Element)} - */ - const TabbedShowLayout = () => { -->TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; }) => JSX.Element) -+>TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; } | undefined) => JSX.Element) - >() => { return (
ok
);} : { (): JSX.Element; defaultProps: { tabs: string; }; } - - return ( -@@= skipped -22, +22 lines =@@ - TabbedShowLayout.defaultProps = { - >TabbedShowLayout.defaultProps = { tabs: "default value"} : { tabs: string; } - >TabbedShowLayout.defaultProps : { tabs: string; } -->TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; }) => JSX.Element) -+>TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; } | undefined) => JSX.Element) - >defaultProps : { tabs: string; } - >{ tabs: "default value"} : { tabs: string; } - -@@= skipped -11, +11 lines =@@ - }; - - export default TabbedShowLayout; -->TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; }) => JSX.Element) -+>TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; } | undefined) => JSX.Element) - - === jsDeclarationsReactComponents4.jsx === - import React from "react"; -@@= skipped -54, +54 lines =@@ +@@= skipped -129, +129 lines =@@ >PropTypes : typeof PropTypes function Tree({ allowDropOnRoot }) { diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.types index 8dea49a9f89..a2f79e00c2b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.types @@ -20,7 +20,7 @@ const items = []; module.exports = items; >module.exports = items : Item[] >module.exports : Item[] ->module : { readonly items: Item[]; } +>module : { readonly items: typeof import("/some-mod"); } >exports : Item[] >items : Item[] diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.types.diff index 1a0339198ef..e20b3665a9c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.types.diff @@ -5,6 +5,6 @@ >module.exports = items : Item[] >module.exports : Item[] ->module : { exports: Item[]; } -+>module : { readonly items: Item[]; } ++>module : { readonly items: typeof import("/some-mod"); } >exports : Item[] >items : Item[] diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsUniqueSymbolUsage.types b/testdata/baselines/reference/submodule/conformance/jsDeclarationsUniqueSymbolUsage.types index 78d910083ad..e8b010fb740 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsUniqueSymbolUsage.types +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsUniqueSymbolUsage.types @@ -16,7 +16,7 @@ export const kSymbol = Symbol("my-symbol"); * @param {import('./a').WithSymbol} value */ export function b(value) { ->b : (value: import("./a").WithSymbol) => import("./a").WithSymbol +>b : (value: import('./a').WithSymbol) => import('./a').WithSymbol >value : import("./a").WithSymbol return value; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsUniqueSymbolUsage.types.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsUniqueSymbolUsage.types.diff new file mode 100644 index 00000000000..33e84b3f7f1 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsUniqueSymbolUsage.types.diff @@ -0,0 +1,11 @@ +--- old.jsDeclarationsUniqueSymbolUsage.types ++++ new.jsDeclarationsUniqueSymbolUsage.types +@@= skipped -15, +15 lines =@@ + * @param {import('./a').WithSymbol} value + */ + export function b(value) { +->b : (value: import("./a").WithSymbol) => import("./a").WithSymbol ++>b : (value: import('./a').WithSymbol) => import('./a').WithSymbol + >value : import("./a").WithSymbol + + return value; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsdocDisallowedInTypescript.types b/testdata/baselines/reference/submodule/conformance/jsdocDisallowedInTypescript.types index dffbb155a76..4fff6676179 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocDisallowedInTypescript.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocDisallowedInTypescript.types @@ -10,7 +10,7 @@ var ara: Array. = [1,2,3]; >3 : 3 function f(x: ?number, y: Array.) { ->f : (x: number | null, y: number[]) => number +>f : (x: number | null, y: Array) => number >x : number | null >y : number[] @@ -51,7 +51,7 @@ function hof2(f: function(this: number, string): string) { return f(12, 'hullo'); >f(12, 'hullo') : number ->f : (x: number | null, y: number[]) => number +>f : (x: number | null, y: Array) => number >12 : 12 >'hullo' : "hullo" } diff --git a/testdata/baselines/reference/submodule/conformance/jsdocDisallowedInTypescript.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocDisallowedInTypescript.types.diff index 4ccde26a2c7..09f59ad7270 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocDisallowedInTypescript.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocDisallowedInTypescript.types.diff @@ -1,15 +1,6 @@ --- old.jsdocDisallowedInTypescript.types +++ new.jsdocDisallowedInTypescript.types -@@= skipped -9, +9 lines =@@ - >3 : 3 - - function f(x: ?number, y: Array.) { -->f : (x: number | null, y: Array) => number -+>f : (x: number | null, y: number[]) => number - >x : number | null - >y : number[] - -@@= skipped -17, +17 lines =@@ +@@= skipped -26, +26 lines =@@ >0 : 0 } function hof(ctor: function(new: number, string)) { @@ -46,7 +37,7 @@ ->f(12, 'hullo') : string ->f : (this: number, arg1: string) => string +>f(12, 'hullo') : number -+>f : (x: number | null, y: number[]) => number ++>f : (x: number | null, y: Array) => number >12 : 12 >'hullo' : "hullo" } diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.types b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.types index 2e3a69fe0be..390c40ac73e 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.types @@ -20,7 +20,7 @@ module.exports.C = C /** @typedef {import('./mod1').C} X */ /** @param {X} c */ function demo(c) { ->demo : (c: any) => void +>demo : (c: X) => void >c : any c.s diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.types.diff index 9d1d5211e7e..02e7e356e23 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.types.diff @@ -13,13 +13,11 @@ >C : typeof C >C : typeof C -@@= skipped -10, +10 lines =@@ - /** @typedef {import('./mod1').C} X */ +@@= skipped -11, +11 lines =@@ /** @param {X} c */ function demo(c) { -->demo : (c: X) => void + >demo : (c: X) => void ->c : import("./mod1").C -+>demo : (c: any) => void +>c : any c.s diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToCommonjsModule.types b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToCommonjsModule.types index e1b22229028..254361767a1 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToCommonjsModule.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToCommonjsModule.types @@ -13,7 +13,7 @@ export = config; === test.js === /** @param {import('./ex')} a */ function demo(a) { ->demo : (a: any) => void +>demo : (a: import('./ex')) => void >a : any a.fix diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToCommonjsModule.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToCommonjsModule.types.diff index 431632f3ec0..6c3746e22d3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToCommonjsModule.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToCommonjsModule.types.diff @@ -6,7 +6,7 @@ function demo(a) { ->demo : (a: { fix: boolean; }) => void ->a : { fix: boolean; } -+>demo : (a: any) => void ++>demo : (a: import('./ex')) => void +>a : any a.fix diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToESModule.types b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToESModule.types index 4f4651b7e36..95be95e494e 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToESModule.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToESModule.types @@ -7,7 +7,7 @@ export var config: {} === test.js === /** @param {import('./ex')} a */ function demo(a) { ->demo : (a: any) => void +>demo : (a: import('./ex')) => void >a : any a.config diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToESModule.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToESModule.types.diff index 24f564968ae..b7f2679ec40 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToESModule.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToESModule.types.diff @@ -6,7 +6,7 @@ function demo(a) { ->demo : (a: typeof import("./ex")) => void ->a : typeof import("./ex") -+>demo : (a: any) => void ++>demo : (a: import('./ex')) => void +>a : any a.config diff --git a/testdata/baselines/reference/submodule/conformance/jsdocIndexSignature.types b/testdata/baselines/reference/submodule/conformance/jsdocIndexSignature.types index a614e129843..b659ec7977b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocIndexSignature.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocIndexSignature.types @@ -15,7 +15,7 @@ var o3; /** @param {Object.} o */ function f(o) { ->f : (o: any) => void +>f : (o: Object) => void >o : any o.foo = 1; // error diff --git a/testdata/baselines/reference/submodule/conformance/jsdocIndexSignature.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocIndexSignature.types.diff index 41e274eaf57..3fc89415979 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocIndexSignature.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocIndexSignature.types.diff @@ -20,7 +20,7 @@ function f(o) { ->f : (o: { [x: string]: boolean; }) => void ->o : { [x: string]: boolean; } -+>f : (o: any) => void ++>f : (o: Object) => void +>o : any o.foo = 1; // error diff --git a/testdata/baselines/reference/submodule/conformance/jsdocParamTagTypeLiteral.types b/testdata/baselines/reference/submodule/conformance/jsdocParamTagTypeLiteral.types index 04400feb42e..d0bc348b058 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocParamTagTypeLiteral.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocParamTagTypeLiteral.types @@ -25,18 +25,18 @@ normal(12); * @param {string} [opts1.w="hi"] doc5 */ function foo1(opts1) { ->foo1 : (opts1: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }) => void ->opts1 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; } +>foo1 : (opts1: { x: string; y?: string | undefined; z?: string; w?: string; }) => void +>opts1 : { x: string; y?: string | undefined; z?: string; w?: string; } opts1.x; >opts1.x : string ->opts1 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; } +>opts1 : { x: string; y?: string | undefined; z?: string; w?: string; } >x : string } foo1({x: 'abc'}); >foo1({x: 'abc'}) : void ->foo1 : (opts1: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }) => void +>foo1 : (opts1: { x: string; y?: string | undefined; z?: string; w?: string; }) => void >{x: 'abc'} : { x: string; } >x : string >'abc' : "abc" @@ -94,20 +94,20 @@ foo3({x: 'abc'}); * @param {string} [opts4[].w="hi"] */ function foo4(opts4) { ->foo4 : (opts4: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[]) => void ->opts4 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[] +>foo4 : (opts4: { x: string; y?: string | undefined; z?: string; w?: string; }[]) => void +>opts4 : { x: string; y?: string | undefined; z?: string; w?: string; }[] opts4[0].x; >opts4[0].x : string ->opts4[0] : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; } ->opts4 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[] +>opts4[0] : { x: string; y?: string | undefined; z?: string; w?: string; } +>opts4 : { x: string; y?: string | undefined; z?: string; w?: string; }[] >0 : 0 >x : string } foo4([{ x: 'hi' }]); >foo4([{ x: 'hi' }]) : void ->foo4 : (opts4: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[]) => void +>foo4 : (opts4: { x: string; y?: string | undefined; z?: string; w?: string; }[]) => void >[{ x: 'hi' }] : { x: string; }[] >{ x: 'hi' } : { x: string; } >x : string diff --git a/testdata/baselines/reference/submodule/conformance/jsdocParamTagTypeLiteral.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocParamTagTypeLiteral.types.diff index d654a9ad84b..318b9e24322 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocParamTagTypeLiteral.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocParamTagTypeLiteral.types.diff @@ -5,20 +5,25 @@ */ function foo1(opts1) { ->foo1 : (opts1: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined;}) => void -+>foo1 : (opts1: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }) => void - >opts1 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; } +->opts1 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; } ++>foo1 : (opts1: { x: string; y?: string | undefined; z?: string; w?: string; }) => void ++>opts1 : { x: string; y?: string | undefined; z?: string; w?: string; } opts1.x; -@@= skipped -11, +11 lines =@@ + >opts1.x : string +->opts1 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; } ++>opts1 : { x: string; y?: string | undefined; z?: string; w?: string; } + >x : string + } foo1({x: 'abc'}); >foo1({x: 'abc'}) : void ->foo1 : (opts1: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined;}) => void -+>foo1 : (opts1: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }) => void ++>foo1 : (opts1: { x: string; y?: string | undefined; z?: string; w?: string; }) => void >{x: 'abc'} : { x: string; } >x : string >'abc' : "abc" -@@= skipped -11, +11 lines =@@ +@@= skipped -22, +22 lines =@@ * @param {string=} opts2[].anotherY */ function foo2(/** @param opts2 bad idea theatre! */opts2) { @@ -59,20 +64,28 @@ */ function foo4(opts4) { ->foo4 : (opts4: { x: string; y?: string | undefined; z?: string; w?: string;}) => void -+>foo4 : (opts4: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[]) => void - >opts4 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[] +->opts4 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[] ++>foo4 : (opts4: { x: string; y?: string | undefined; z?: string; w?: string; }[]) => void ++>opts4 : { x: string; y?: string | undefined; z?: string; w?: string; }[] opts4[0].x; -@@= skipped -13, +13 lines =@@ + >opts4[0].x : string +->opts4[0] : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; } +->opts4 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[] ++>opts4[0] : { x: string; y?: string | undefined; z?: string; w?: string; } ++>opts4 : { x: string; y?: string | undefined; z?: string; w?: string; }[] + >0 : 0 + >x : string + } foo4([{ x: 'hi' }]); >foo4([{ x: 'hi' }]) : void ->foo4 : (opts4: { x: string; y?: string | undefined; z?: string; w?: string;}) => void -+>foo4 : (opts4: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[]) => void ++>foo4 : (opts4: { x: string; y?: string | undefined; z?: string; w?: string; }[]) => void >[{ x: 'hi' }] : { x: string; }[] >{ x: 'hi' } : { x: string; } >x : string -@@= skipped -17, +17 lines =@@ +@@= skipped -30, +30 lines =@@ * @param {number} opts5[].unnest - Here we are almost all the way back at the beginning. */ function foo5(opts5) { diff --git a/testdata/baselines/reference/submodule/conformance/jsdocParseBackquotedParamName.types b/testdata/baselines/reference/submodule/conformance/jsdocParseBackquotedParamName.types index 14b31cfb827..7b097e0fb00 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocParseBackquotedParamName.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocParseBackquotedParamName.types @@ -6,7 +6,7 @@ * @param `bwarg` {?number?} */ function f(args, bwarg) { ->f : (args?: string | undefined, bwarg: number | null) => void +>f : (args?: string | undefined, bwarg: (number | null) | null) => void >args : string | undefined >bwarg : number | null } diff --git a/testdata/baselines/reference/submodule/conformance/jsdocParseBackquotedParamName.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocParseBackquotedParamName.types.diff deleted file mode 100644 index ee6247b70be..00000000000 --- a/testdata/baselines/reference/submodule/conformance/jsdocParseBackquotedParamName.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.jsdocParseBackquotedParamName.types -+++ new.jsdocParseBackquotedParamName.types -@@= skipped -5, +5 lines =@@ - * @param `bwarg` {?number?} - */ - function f(args, bwarg) { -->f : (args?: string | undefined, bwarg: (number | null) | null) => void -+>f : (args?: string | undefined, bwarg: number | null) => void - >args : string | undefined - >bwarg : number | null - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsdocParseStarEquals.types b/testdata/baselines/reference/submodule/conformance/jsdocParseStarEquals.types index f4133d80d9c..4970cf63407 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocParseStarEquals.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocParseStarEquals.types @@ -4,7 +4,7 @@ /** @param {...*=} args @return {*=} */ function f(...args) { ->f : (...args?: any[] | undefined) => any +>f : (...args?: any[] | undefined) => any | undefined >args : any[] | undefined return null diff --git a/testdata/baselines/reference/submodule/conformance/jsdocParseStarEquals.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocParseStarEquals.types.diff index 91dbef542b5..db5cdeca417 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocParseStarEquals.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocParseStarEquals.types.diff @@ -1,17 +1,15 @@ --- old.jsdocParseStarEquals.types +++ new.jsdocParseStarEquals.types -@@= skipped -3, +3 lines =@@ - /** @param {...*=} args +@@= skipped -4, +4 lines =@@ @return {*=} */ function f(...args) { -->f : (...args?: any[] | undefined) => any | undefined + >f : (...args?: any[] | undefined) => any | undefined ->args : any -+>f : (...args?: any[] | undefined) => any +>args : any[] | undefined return null } -@@= skipped -13, +13 lines =@@ +@@= skipped -12, +12 lines =@@ /** @param {function():*=} f */ function cbf(f) { diff --git a/testdata/baselines/reference/submodule/conformance/jsdocPostfixEqualsAddsOptionality.types b/testdata/baselines/reference/submodule/conformance/jsdocPostfixEqualsAddsOptionality.types index 415c5896ece..27cc32bdf58 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocPostfixEqualsAddsOptionality.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocPostfixEqualsAddsOptionality.types @@ -40,7 +40,7 @@ f(1) /** @param {???!?number?=} a */ function g(a) { ->g : (a?: number | null | undefined) => void +>g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void >a : number | null | undefined a = 1 @@ -59,19 +59,19 @@ function g(a) { } g() >g() : void ->g : (a?: number | null | undefined) => void +>g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void g(null) >g(null) : void ->g : (a?: number | null | undefined) => void +>g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void g(undefined) >g(undefined) : void ->g : (a?: number | null | undefined) => void +>g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void >undefined : undefined g(1) >g(1) : void ->g : (a?: number | null | undefined) => void +>g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/jsdocPostfixEqualsAddsOptionality.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocPostfixEqualsAddsOptionality.types.diff deleted file mode 100644 index 8a1c2f2b6f2..00000000000 --- a/testdata/baselines/reference/submodule/conformance/jsdocPostfixEqualsAddsOptionality.types.diff +++ /dev/null @@ -1,34 +0,0 @@ ---- old.jsdocPostfixEqualsAddsOptionality.types -+++ new.jsdocPostfixEqualsAddsOptionality.types -@@= skipped -39, +39 lines =@@ - - /** @param {???!?number?=} a */ - function g(a) { -->g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void -+>g : (a?: number | null | undefined) => void - >a : number | null | undefined - - a = 1 -@@= skipped -19, +19 lines =@@ - } - g() - >g() : void -->g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void -+>g : (a?: number | null | undefined) => void - - g(null) - >g(null) : void -->g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void -+>g : (a?: number | null | undefined) => void - - g(undefined) - >g(undefined) : void -->g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void -+>g : (a?: number | null | undefined) => void - >undefined : undefined - - g(1) - >g(1) : void -->g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void -+>g : (a?: number | null | undefined) => void - >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/jsdocPrefixPostfixParsing.types b/testdata/baselines/reference/submodule/conformance/jsdocPrefixPostfixParsing.types index 52121e57abe..79ec331cf5b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocPrefixPostfixParsing.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocPrefixPostfixParsing.types @@ -19,7 +19,7 @@ * @param {[number, number?]} m - [number, (number | undefined)?] */ function f(x, y, z, a, b, c, e, f, g, h, i, j, k, l, m) { ->f : (x: number[], y: number[], z: number[], a: any, b: number[] | null, c: number[] | null, e: (number | null)[], f: (number | null)[], g: (number | null)[], h: any, i: number[][], j: (number[] | null)[], k: any, l: true, m: [number, (number | undefined)?]) => void +>f : (x: number[], y: number[], z: (number[]), a: any, b: number[] | null, c: (number[]) | null, e: (number | null)[], f: (number | null)[], g: (number | null)[], h: any, i: number[][], j: (number[] | null)[], k: any, l: number extends number ? true : false, m: [number, number?]) => void >x : number[] >y : number[] >z : number[] diff --git a/testdata/baselines/reference/submodule/conformance/jsdocPrefixPostfixParsing.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocPrefixPostfixParsing.types.diff index 89856400075..39fae26f96e 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocPrefixPostfixParsing.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocPrefixPostfixParsing.types.diff @@ -1,14 +1,6 @@ --- old.jsdocPrefixPostfixParsing.types +++ new.jsdocPrefixPostfixParsing.types -@@= skipped -18, +18 lines =@@ - * @param {[number, number?]} m - [number, (number | undefined)?] - */ - function f(x, y, z, a, b, c, e, f, g, h, i, j, k, l, m) { -->f : (x: number[], y: number[], z: (number[]), a: any, b: number[] | null, c: (number[]) | null, e: (number | null)[], f: (number | null)[], g: (number | null)[], h: any, i: number[][], j: (number[] | null)[], k: any, l: number extends number ? true : false, m: [number, number?]) => void -+>f : (x: number[], y: number[], z: number[], a: any, b: number[] | null, c: number[] | null, e: (number | null)[], f: (number | null)[], g: (number | null)[], h: any, i: number[][], j: (number[] | null)[], k: any, l: true, m: [number, (number | undefined)?]) => void - >x : number[] - >y : number[] - >z : number[] +@@= skipped -25, +25 lines =@@ >a : any >b : number[] | null >c : number[] | null diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.errors.txt b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.errors.txt index c1a11b43f9e..1a502380ae7 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.errors.txt @@ -1,6 +1,6 @@ forgot.js(13,14): error TS2552: Cannot find name 'function'. Did you mean 'Function'? forgot.js(13,22): error TS1005: '}' expected. -forgot.js(23,1): error TS2322: Type '(keyframes: Object[]) => void' is not assignable to type '(keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation'. +forgot.js(23,1): error TS2322: Type '(keyframes: Array) => void' is not assignable to type '(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation'. Types of parameters 'keyframes' and 'keyframes' are incompatible. Type 'Keyframe[] | PropertyIndexedKeyframes' is not assignable to type 'Object[]'. Type 'PropertyIndexedKeyframes' is missing the following properties from type 'Object[]': length, pop, push, concat, and 35 more. @@ -36,7 +36,7 @@ forgot.js(23,1): error TS2322: Type '(keyframes: Object[]) => void' is not assig */ Element.prototype.animate = function(keyframes) {}; ~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type '(keyframes: Object[]) => void' is not assignable to type '(keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation'. +!!! error TS2322: Type '(keyframes: Array) => void' is not assignable to type '(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation'. !!! error TS2322: Types of parameters 'keyframes' and 'keyframes' are incompatible. !!! error TS2322: Type 'Keyframe[] | PropertyIndexedKeyframes' is not assignable to type 'Object[]'. !!! error TS2322: Type 'PropertyIndexedKeyframes' is missing the following properties from type 'Object[]': length, pop, push, concat, and 35 more. diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.errors.txt.diff index 8f7d633fd56..27dedbc28d5 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.errors.txt.diff @@ -8,7 +8,7 @@ -==== forgot.js (1 errors) ==== +forgot.js(13,14): error TS2552: Cannot find name 'function'. Did you mean 'Function'? +forgot.js(13,22): error TS1005: '}' expected. -+forgot.js(23,1): error TS2322: Type '(keyframes: Object[]) => void' is not assignable to type '(keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation'. ++forgot.js(23,1): error TS2322: Type '(keyframes: Array) => void' is not assignable to type '(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation'. + Types of parameters 'keyframes' and 'keyframes' are incompatible. + Type 'Keyframe[] | PropertyIndexedKeyframes' is not assignable to type 'Object[]'. + Type 'PropertyIndexedKeyframes' is missing the following properties from type 'Object[]': length, pop, push, concat, and 35 more. @@ -36,7 +36,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type '(keyframes: Array) => void' is not assignable to type '(keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation'. -!!! error TS2322: Type 'void' is not assignable to type 'Animation'. -+!!! error TS2322: Type '(keyframes: Object[]) => void' is not assignable to type '(keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation'. ++!!! error TS2322: Type '(keyframes: Array) => void' is not assignable to type '(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation'. +!!! error TS2322: Types of parameters 'keyframes' and 'keyframes' are incompatible. +!!! error TS2322: Type 'Keyframe[] | PropertyIndexedKeyframes' is not assignable to type 'Object[]'. +!!! error TS2322: Type 'PropertyIndexedKeyframes' is missing the following properties from type 'Object[]': length, pop, push, concat, and 35 more. diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.types b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.types index 70b066a3434..cea962c4696 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.types @@ -44,12 +44,12 @@ let s = g('hi')() * @param {Array.} keyframes - Can't look up types on Element since it's a global in another file. (But it shouldn't crash). */ Element.prototype.animate = function(keyframes) {}; ->Element.prototype.animate = function(keyframes) {} : (keyframes: Object[]) => void ->Element.prototype.animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation +>Element.prototype.animate = function(keyframes) {} : (keyframes: Array) => void +>Element.prototype.animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation >Element.prototype : Element >Element : { new (): Element; prototype: Element; } >prototype : Element ->animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation ->function(keyframes) {} : (keyframes: Object[]) => void +>animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation +>function(keyframes) {} : (keyframes: Array) => void >keyframes : Object[] diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.types.diff index 57efc3aad5d..a74bd738769 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTag.types.diff @@ -28,15 +28,13 @@ */ Element.prototype.animate = function(keyframes) {}; ->Element.prototype.animate = function(keyframes) {} : (keyframes: Array) => void -->Element.prototype.animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation -+>Element.prototype.animate = function(keyframes) {} : (keyframes: Object[]) => void -+>Element.prototype.animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation ++>Element.prototype.animate = function(keyframes) {} : (keyframes: Array) => void + >Element.prototype.animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation >Element.prototype : Element >Element : { new (): Element; prototype: Element; } >prototype : Element -->animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation + >animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation ->function(keyframes) {} : (keyframes: Array) => void ->keyframes : any[] -+>animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation -+>function(keyframes) {} : (keyframes: Object[]) => void ++>function(keyframes) {} : (keyframes: Array) => void +>keyframes : Object[] diff --git a/testdata/baselines/reference/submodule/conformance/jsdocThisType.types b/testdata/baselines/reference/submodule/conformance/jsdocThisType.types index 5f6ec6acc30..0a6e9f125cd 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocThisType.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocThisType.types @@ -36,8 +36,8 @@ export function f2() { /** @type {(this: import('./types').Foo) => void} */ export const f3 = function() { ->f3 : (this: import("./types").Foo) => void ->function() { this.test();} : (this: import("./types").Foo) => void +>f3 : (this: import('./types').Foo) => void +>function() { this.test();} : (this: import('./types').Foo) => void this.test(); >this.test() : any @@ -48,7 +48,7 @@ export const f3 = function() { /** @type {(this: import('./types').Foo) => void} */ export function f4() { ->f4 : (this: import("./types").Foo) => void +>f4 : (this: import('./types').Foo) => void this.test(); >this.test() : any diff --git a/testdata/baselines/reference/submodule/conformance/jsdocThisType.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocThisType.types.diff index 41189b3950a..1ba1387d48d 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocThisType.types.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocThisType.types.diff @@ -1,6 +1,26 @@ --- old.jsdocThisType.types +++ new.jsdocThisType.types -@@= skipped -58, +58 lines =@@ +@@= skipped -35, +35 lines =@@ + + /** @type {(this: import('./types').Foo) => void} */ + export const f3 = function() { +->f3 : (this: import("./types").Foo) => void +->function() { this.test();} : (this: import("./types").Foo) => void ++>f3 : (this: import('./types').Foo) => void ++>function() { this.test();} : (this: import('./types').Foo) => void + + this.test(); + >this.test() : any +@@= skipped -12, +12 lines =@@ + + /** @type {(this: import('./types').Foo) => void} */ + export function f4() { +->f4 : (this: import("./types").Foo) => void ++>f4 : (this: import('./types').Foo) => void + + this.test(); + >this.test() : any +@@= skipped -11, +11 lines =@@ /** @type {function(this: import('./types').Foo): void} */ export const f5 = function() { diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeTagOnParameter1.types b/testdata/baselines/reference/submodule/conformance/jsdocTypeTagOnParameter1.types index 86d016b68dc..f044df3da3c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeTagOnParameter1.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeTagOnParameter1.types @@ -13,15 +13,15 @@ function repeat( ) { return Array(times).fill(message).join(` `); >Array(times).fill(message).join(` `) : string ->Array(times).fill(message).join : (separator?: string | undefined) => string +>Array(times).fill(message).join : (separator?: string) => string >Array(times).fill(message) : any[] ->Array(times).fill : (value: any, start?: number | undefined, end?: number | undefined) => any[] +>Array(times).fill : (value: any, start?: number, end?: number) => any[] >Array(times) : any[] >Array : ArrayConstructor >times : number ->fill : (value: any, start?: number | undefined, end?: number | undefined) => any[] +>fill : (value: any, start?: number, end?: number) => any[] >message : string ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >` ` : " " } diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeTagOnParameter1.types.diff b/testdata/baselines/reference/submodule/conformance/jsdocTypeTagOnParameter1.types.diff deleted file mode 100644 index 0e27957efb0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeTagOnParameter1.types.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.jsdocTypeTagOnParameter1.types -+++ new.jsdocTypeTagOnParameter1.types -@@= skipped -12, +12 lines =@@ - ) { - return Array(times).fill(message).join(` `); - >Array(times).fill(message).join(` `) : string -->Array(times).fill(message).join : (separator?: string) => string -+>Array(times).fill(message).join : (separator?: string | undefined) => string - >Array(times).fill(message) : any[] -->Array(times).fill : (value: any, start?: number, end?: number) => any[] -+>Array(times).fill : (value: any, start?: number | undefined, end?: number | undefined) => any[] - >Array(times) : any[] - >Array : ArrayConstructor - >times : number -->fill : (value: any, start?: number, end?: number) => any[] -+>fill : (value: any, start?: number | undefined, end?: number | undefined) => any[] - >message : string -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >` ` : " " - } diff --git a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.js b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.js index 2af03eb8746..15c1ac2a25c 100644 --- a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.js +++ b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.js @@ -1141,13 +1141,13 @@ declare function f81(obj: T): T["a"]["x"]; +}>(obj: T): T['a']['x']; declare function f82(): void; declare function f83(obj: T, key: K): T[K]["x"]; +}, K extends keyof T>(obj: T, key: K): T[K]['x']; declare function f84(): void; declare class C1 { x: number; @@ -1356,4 +1356,4 @@ declare function ff2(dd: DictDict, k1: declare const cf1: (t: T, k: K) => void; -declare const cf2: (t: T, k: K) => void; +declare const cf2: (t: T, k: K) => void; diff --git a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.js.diff b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.js.diff index 3e7fd8e765a..f144be84df8 100644 --- a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.js.diff +++ b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.js.diff @@ -1,8 +1,18 @@ --- old.keyofAndIndexedAccess.js +++ new.keyofAndIndexedAccess.js -@@= skipped -1355, +1355 lines =@@ - declare const cf1: (t: T, k: K) => void; --declare const cf2: (t: T, k: K) => void; -+declare const cf2: (t: T, k: K) => void; \ No newline at end of file +@@= skipped -1140, +1140 lines =@@ + a: { + x: any; + }; +-}>(obj: T): T["a"]["x"]; ++}>(obj: T): T['a']['x']; + declare function f82(): void; + declare function f83(obj: T, key: K): T[K]["x"]; ++}, K extends keyof T>(obj: T, key: K): T[K]['x']; + declare function f84(): void; + declare class C1 { + x: number; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.types b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.types index 013bb0f6100..10ad2980cf9 100644 --- a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.types +++ b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.types @@ -508,7 +508,7 @@ function f31(key: K) { } function f32(key: K) { ->f32 : (key: K) => Shape[K] +>f32 : (key: K) => Shape[K] >key : K const shape: Shape = { name: "foo", width: 5, height: 10, visible: true }; @@ -765,14 +765,14 @@ function f60(source: T, target: T) { } function f70(func: (k1: keyof (T | U), k2: keyof (T & U)) => void) { ->f70 : (func: (k1: keyof T & keyof U, k2: keyof T | keyof U) => void) => void ->func : (k1: keyof T & keyof U, k2: keyof T | keyof U) => void +>f70 : (func: (k1: keyof (T | U), k2: keyof (T & U)) => void) => void +>func : (k1: keyof (T | U), k2: keyof (T & U)) => void >k1 : keyof T & keyof U >k2 : keyof T | keyof U 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 & keyof U, k2: keyof T | keyof U) => void +>func : (k1: keyof (T | U), k2: keyof (T & U)) => void >a : any >b : any >a : any @@ -782,7 +782,7 @@ 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 & keyof U, k2: keyof T | keyof U) => void +>func : (k1: keyof (T | U), k2: keyof (T & U)) => void >a : any >b : any >a : any @@ -792,7 +792,7 @@ 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 & keyof U, k2: keyof T | keyof U) => void +>func : (k1: keyof (T | U), k2: keyof (T & U)) => void >a : any >b : any >a : any @@ -887,8 +887,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] +>f73 : (func: (x: T, y: U, k: K) => (T & U)[K]) => void +>func : (x: T, y: U, k: K) => (T & U)[K] >x : T >y : U >k : K @@ -896,7 +896,7 @@ function f73(func: (x: T, y: U, k: K) => (T & U)[ let a = func({ a: 1, b: "hello" }, { c: true }, 'a'); // number >a : number >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 >1 : 1 @@ -910,7 +910,7 @@ function f73(func: (x: T, y: U, k: K) => (T & U)[ let b = func({ a: 1, b: "hello" }, { c: true }, 'b'); // string >b : string >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 >1 : 1 @@ -924,7 +924,7 @@ function f73(func: (x: T, y: U, k: K) => (T & U)[ let c = func({ a: 1, b: "hello" }, { c: true }, 'c'); // boolean >c : boolean >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 >1 : 1 @@ -937,8 +937,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] +>f74 : (func: (x: T, y: U, k: K) => (T | U)[K]) => void +>func : (x: T, y: U, k: K) => (T | U)[K] >x : T >y : U >k : K @@ -946,7 +946,7 @@ function f74(func: (x: T, y: U, k: K) => (T | U)[ let a = func({ a: 1, b: "hello" }, { a: 2, b: true }, 'a'); // number >a : number >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 >1 : 1 @@ -962,7 +962,7 @@ function f74(func: (x: T, y: U, k: K) => (T | U)[ let b = func({ a: 1, b: "hello" }, { a: 2, b: true }, 'b'); // string | boolean >b : string | boolean >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 >1 : 1 @@ -1028,7 +1028,7 @@ function f80(obj: T) { } function f81(obj: T) { ->f81 : (obj: T) => T["a"]["x"] +>f81 : (obj: T) => T['a']['x'] >a : { x: any; } >x : any >obj : T @@ -1048,7 +1048,7 @@ function f82() { let x1 = f81({ a: { x: "hello" } }); // string >x1 : string >f81({ a: { x: "hello" } }) : string ->f81 : (obj: T) => T["a"]["x"] +>f81 : (obj: T) => T['a']['x'] >{ a: { x: "hello" } } : { a: { x: string; }; } >a : { x: string; } >{ x: "hello" } : { x: string; } @@ -1058,7 +1058,7 @@ function f82() { let x2 = f81({ a: { x: 42 } }); // number >x2 : number >f81({ a: { x: 42 } }) : number ->f81 : (obj: T) => T["a"]["x"] +>f81 : (obj: T) => T['a']['x'] >{ a: { x: 42 } } : { a: { x: number; }; } >a : { x: number; } >{ x: 42 } : { x: number; } @@ -1067,7 +1067,7 @@ function f82() { } function f83(obj: T, key: K) { ->f83 : (obj: T, key: K) => T[K]["x"] +>f83 : (obj: T, key: K) => T[K]['x'] >x : string >x : any >obj : T @@ -1088,7 +1088,7 @@ function f84() { let x1 = f83({ foo: { x: "hello" } }, "foo"); // string >x1 : string >f83({ foo: { x: "hello" } }, "foo") : string ->f83 : (obj: T, key: K) => T[K]["x"] +>f83 : (obj: T, key: K) => T[K]['x'] >{ foo: { x: "hello" } } : { foo: { x: string; }; } >foo : { x: string; } >{ x: "hello" } : { x: string; } @@ -1099,7 +1099,7 @@ function f84() { let x2 = f83({ bar: { x: 42 } }, "bar"); // number >x2 : number >f83({ bar: { x: 42 } }, "bar") : number ->f83 : (obj: T, key: K) => T[K]["x"] +>f83 : (obj: T, key: K) => T[K]['x'] >{ bar: { x: 42 } } : { bar: { x: number; }; } >bar : { x: number; } >{ x: 42 } : { x: number; } @@ -1208,7 +1208,7 @@ type S2 = { }; function f90(x1: S2[keyof S2], x2: T[keyof S2], x3: S2[K]) { ->f90 : (x1: string, x2: T[keyof S2], x3: S2[K]) => void +>f90 : (x1: S2[keyof S2], x2: T[keyof S2], x3: S2[K]) => void >x1 : string >x2 : T[keyof S2] >x3 : S2[K] @@ -1573,7 +1573,7 @@ declare class Component1 { >options : Options1 get(key: K): (Data & Computed)[K]; ->get : (key: K) => (Data & Computed)[K] +>get : (key: K) => (Data & Computed)[K] >key : K } @@ -1595,9 +1595,9 @@ let c1 = new Component1({ c1.get("hello"); >c1.get("hello") : string ->c1.get : (key: K) => { hello: string; }[K] +>c1.get : (key: K) => { hello: string; }[K] >c1 : Component1<{ hello: string; }, unknown> ->get : (key: K) => { hello: string; }[K] +>get : (key: K) => { hello: string; }[K] >"hello" : "hello" // Repro from #12625 @@ -1617,7 +1617,7 @@ declare class Component2 { >options : Options2 get(key: K): (Data & Computed)[K]; ->get : (key: K) => (Data & Computed)[K] +>get : (key: K) => (Data & Computed)[K] >key : K } @@ -1629,7 +1629,7 @@ interface R { } function f(p: K) { ->f : (p: K) => void +>f : (p: K) => void >p : K let a: any; @@ -1659,7 +1659,7 @@ type MethodDescriptor = { } declare function dispatchMethod(name: M['name'], args: M['args']): M['returnValue']; ->dispatchMethod : (name: M["name"], args: M["args"]) => M["returnValue"] +>dispatchMethod : (name: M['name'], args: M['args']) => M['returnValue'] >name : M["name"] >args : M["args"] @@ -1679,7 +1679,7 @@ type SomeMethodDescriptor = { let result = dispatchMethod("someMethod", ["hello", 35]); >result : string[] >dispatchMethod("someMethod", ["hello", 35]) : string[] ->dispatchMethod : (name: M["name"], args: M["args"]) => M["returnValue"] +>dispatchMethod : (name: M['name'], args: M['args']) => M['returnValue'] >"someMethod" : "someMethod" >["hello", 35] : [string, number] >"hello" : "hello" @@ -1805,7 +1805,7 @@ function updateIds2( // Repro from #13514 declare function head>(list: T): T[0]; ->head : (list: T) => T[0] +>head : >(list: T) => T[0] >list : T // Repro from #13604 @@ -1876,9 +1876,9 @@ class SampleClass

{ >this : this >props : Readonly

>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 } } @@ -2101,7 +2101,7 @@ type Foo7 = T; >Foo7 : T declare function f7(type: K): Foo7; ->f7 : (type: K) => I7[K] +>f7 : (type: K) => Foo7 >type : K // Repro from #21770 @@ -2167,8 +2167,8 @@ const cf1 = (t: T, k: K) => ->cf2 : (t: T, k: K) => void ->(t: T, k: K) =>{ const s: string = t[k]; t.cool;} : (t: T, k: K) => void +>cf2 : (t: T, k: K) => void +>(t: T, k: K) =>{ const s: string = t[k]; t.cool;} : (t: T, k: K) => void >t : T >k : K { diff --git a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.types.diff b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.types.diff index 4fd830c61b3..cec72127673 100644 --- a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.types.diff +++ b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess.types.diff @@ -1,127 +1,60 @@ --- old.keyofAndIndexedAccess.types +++ new.keyofAndIndexedAccess.types -@@= skipped -507, +507 lines =@@ +@@= skipped -1027, +1027 lines =@@ } - function f32(key: K) { -->f32 : (key: K) => Shape[K] -+>f32 : (key: K) => Shape[K] - >key : K - - const shape: Shape = { name: "foo", width: 5, height: 10, visible: true }; -@@= skipped -257, +257 lines =@@ - } - - 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 -+>f70 : (func: (k1: keyof T & keyof U, k2: keyof T | keyof U) => void) => void -+>func : (k1: keyof T & keyof U, k2: keyof T | keyof U) => void - >k1 : keyof T & keyof U - >k2 : keyof T | keyof U - - 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 & keyof U, k2: keyof T | keyof U) => void - >a : any - >b : any - >a : any -@@= skipped -17, +17 lines =@@ - - 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 & keyof U, k2: keyof T | keyof U) => void - >a : any - >b : any - >a : any + function f81(obj: T) { +->f81 : (obj: T) => T["a"]["x"] ++>f81 : (obj: T) => T['a']['x'] + >a : { x: any; } + >x : any + >obj : T +@@= skipped -20, +20 lines =@@ + let x1 = f81({ a: { x: "hello" } }); // string + >x1 : string + >f81({ a: { x: "hello" } }) : string +->f81 : (obj: T) => T["a"]["x"] ++>f81 : (obj: T) => T['a']['x'] + >{ a: { x: "hello" } } : { a: { x: string; }; } + >a : { x: string; } + >{ x: "hello" } : { x: string; } @@= skipped -10, +10 lines =@@ - - 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 & keyof U, k2: keyof T | keyof U) => void - >a : any - >b : any - >a : any -@@= skipped -95, +95 lines =@@ - } - - 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] -+>f73 : (func: (x: T, y: U, k: K) => (T & U)[K]) => void -+>func : (x: T, y: U, k: K) => (T & U)[K] - >x : T - >y : U - >k : K + let x2 = f81({ a: { x: 42 } }); // number + >x2 : number + >f81({ a: { x: 42 } }) : number +->f81 : (obj: T) => T["a"]["x"] ++>f81 : (obj: T) => T['a']['x'] + >{ a: { x: 42 } } : { a: { x: number; }; } + >a : { x: number; } + >{ x: 42 } : { x: number; } @@= skipped -9, +9 lines =@@ - let a = func({ a: 1, b: "hello" }, { c: true }, 'a'); // number - >a : number - >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 - >1 : 1 -@@= skipped -14, +14 lines =@@ - let b = func({ a: 1, b: "hello" }, { c: true }, 'b'); // string - >b : string - >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 - >1 : 1 -@@= skipped -14, +14 lines =@@ - let c = func({ a: 1, b: "hello" }, { c: true }, 'c'); // boolean - >c : boolean - >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 - >1 : 1 -@@= skipped -13, +13 lines =@@ } - 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] -+>f74 : (func: (x: T, y: U, k: K) => (T | U)[K]) => void -+>func : (x: T, y: U, k: K) => (T | U)[K] - >x : T - >y : U - >k : K -@@= skipped -9, +9 lines =@@ - let a = func({ a: 1, b: "hello" }, { a: 2, b: true }, 'a'); // number - >a : number - >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 - >1 : 1 -@@= skipped -16, +16 lines =@@ - let b = func({ a: 1, b: "hello" }, { a: 2, b: true }, 'b'); // string | boolean - >b : string | boolean - >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 - >1 : 1 -@@= skipped -246, +246 lines =@@ - }; - - function f90(x1: S2[keyof S2], x2: T[keyof S2], x3: S2[K]) { -->f90 : (x1: S2[keyof S2], x2: T[keyof S2], x3: S2[K]) => void -+>f90 : (x1: string, x2: T[keyof S2], x3: S2[K]) => void + function f83(obj: T, key: K) { +->f83 : (obj: T, key: K) => T[K]["x"] ++>f83 : (obj: T, key: K) => T[K]['x'] + >x : string + >x : any + >obj : T +@@= skipped -21, +21 lines =@@ + let x1 = f83({ foo: { x: "hello" } }, "foo"); // string >x1 : string - >x2 : T[keyof S2] - >x3 : S2[K] -@@= skipped -193, +193 lines =@@ + >f83({ foo: { x: "hello" } }, "foo") : string +->f83 : (obj: T, key: K) => T[K]["x"] ++>f83 : (obj: T, key: K) => T[K]['x'] + >{ foo: { x: "hello" } } : { foo: { x: string; }; } + >foo : { x: string; } + >{ x: "hello" } : { x: string; } +@@= skipped -11, +11 lines =@@ + let x2 = f83({ bar: { x: 42 } }, "bar"); // number + >x2 : number + >f83({ bar: { x: 42 } }, "bar") : number +->f83 : (obj: T, key: K) => T[K]["x"] ++>f83 : (obj: T, key: K) => T[K]['x'] + >{ bar: { x: 42 } } : { bar: { x: number; }; } + >bar : { x: number; } + >{ x: 42 } : { x: number; } +@@= skipped -302, +302 lines =@@ // Modified repro from #12544 function path(obj: T, key1: K1): T[K1]; @@ -143,71 +76,33 @@ >obj : T >key1 : K1 >key2 : K2 -@@= skipped -172, +172 lines =@@ - >options : Options1 - - get(key: K): (Data & Computed)[K]; -->get : (key: K) => (Data & Computed)[K] -+>get : (key: K) => (Data & Computed)[K] - >key : K - } - -@@= skipped -44, +44 lines =@@ - >options : Options2 - - get(key: K): (Data & Computed)[K]; -->get : (key: K) => (Data & Computed)[K] -+>get : (key: K) => (Data & Computed)[K] - >key : K +@@= skipped -194, +194 lines =@@ + + c1.get("hello"); + >c1.get("hello") : string +->c1.get : (key: K) => { hello: string; }[K] ++>c1.get : (key: K) => { hello: string; }[K] + >c1 : Component1<{ hello: string; }, unknown> +->get : (key: K) => { hello: string; }[K] ++>get : (key: K) => { hello: string; }[K] + >"hello" : "hello" + + // Repro from #12625 +@@= skipped -64, +64 lines =@@ } -@@= skipped -12, +12 lines =@@ - } - - function f(p: K) { -->f : (p: K) => void -+>f : (p: K) => void - >p : K - - let a: any; -@@= skipped -176, +176 lines =@@ - // Repro from #13514 - - declare function head>(list: T): T[0]; -->head : >(list: T) => T[0] -+>head : (list: T) => T[0] - >list : T - - // Repro from #13604 -@@= skipped -71, +71 lines =@@ - >this : this - >props : Readonly

- >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 - } - } -@@= skipped -225, +225 lines =@@ - >Foo7 : T - - declare function f7(type: K): Foo7; -->f7 : (type: K) => Foo7 -+>f7 : (type: K) => I7[K] - >type : K - - // Repro from #21770 -@@= skipped -66, +66 lines =@@ - }; - - const cf2 = (t: T, k: K) => -->cf2 : (t: T, k: K) => void -->(t: T, k: K) =>{ const s: string = t[k]; t.cool;} : (t: T, k: K) => void -+>cf2 : (t: T, k: K) => void -+>(t: T, k: K) =>{ const s: string = t[k]; t.cool;} : (t: T, k: K) => void - >t : T - >k : K - { \ No newline at end of file + declare function dispatchMethod(name: M['name'], args: M['args']): M['returnValue']; +->dispatchMethod : (name: M["name"], args: M["args"]) => M["returnValue"] ++>dispatchMethod : (name: M['name'], args: M['args']) => M['returnValue'] + >name : M["name"] + >args : M["args"] + +@@= skipped -20, +20 lines =@@ + let result = dispatchMethod("someMethod", ["hello", 35]); + >result : string[] + >dispatchMethod("someMethod", ["hello", 35]) : string[] +->dispatchMethod : (name: M["name"], args: M["args"]) => M["returnValue"] ++>dispatchMethod : (name: M['name'], args: M['args']) => M['returnValue'] + >"someMethod" : "someMethod" + >["hello", 35] : [string, number] + >"hello" : "hello" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess2.types b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess2.types index 0602e87d7c6..7a6a302052d 100644 --- a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess2.types +++ b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess2.types @@ -2,7 +2,7 @@ === keyofAndIndexedAccess2.ts === function f1(obj: { a: number, b: 0 | 1, c: string }, k0: 'a', k1: 'a' | 'b', k2: 'a' | 'b' | 'c') { ->f1 : (obj: { a: number; b: 0 | 1; c: string; }, k0: "a", k1: "a" | "b", k2: "a" | "b" | "c") => void +>f1 : (obj: { a: number; b: 0 | 1; c: string; }, k0: 'a', k1: 'a' | 'b', k2: 'a' | 'b' | 'c') => void >obj : { a: number; b: 0 | 1; c: string; } >a : number >b : 0 | 1 @@ -196,7 +196,7 @@ function f3(a: { [P in K]: number }, b: { [key: string]: numbe } function f3b(a: { [P in K]: number }, b: { [P in string]: number }, k: K) { ->f3b : (a: { [P in K]: number; }, b: { [x: string]: number; }, k: K) => void +>f3b : (a: { [P in K]: number; }, b: { [P in string]: number; }, k: K) => void >a : { [P in K]: number; } >b : { [x: string]: number; } >k : K @@ -213,7 +213,7 @@ function f3b(a: { [P in K]: number }, b: { [P in string]: numb } function f4(a: { [key: string]: number }[K], b: number) { ->f4 : (a: number, b: number) => void +>f4 : (a: { [key: string]: number;}[K], b: number) => void >a : number >key : string >b : number @@ -275,7 +275,7 @@ type Dict = Record; >Dict : Dict function f11(obj: Dict, k1: keyof Dict, k2: K) { ->f11 : (obj: Dict, k1: string, k2: K) => void +>f11 : (obj: Dict, k1: keyof Dict, k2: K) => void >obj : Dict >k1 : string >k2 : K @@ -303,7 +303,7 @@ function f11(obj: Dict, k1: keyof Dict, k2: K) { } function f12, K extends keyof T>(obj: T, k1: keyof Dict, k2: keyof T, k3: K) { ->f12 : , K extends keyof T>(obj: T, k1: string, k2: keyof T, k3: K) => void +>f12 : , K extends keyof T>(obj: T, k1: keyof Dict, k2: keyof T, k3: K) => void >obj : T >k1 : string >k2 : keyof T @@ -393,9 +393,9 @@ export function getEntity(id: IdOf, state: EntityState): if (!ids.includes(id)) { >!ids.includes(id) : boolean >ids.includes(id) : boolean ->ids.includes : (searchElement: IdOf, fromIndex?: number | undefined) => boolean +>ids.includes : (searchElement: IdOf, fromIndex?: number) => boolean >ids : IdOf[] ->includes : (searchElement: IdOf, fromIndex?: number | undefined) => boolean +>includes : (searchElement: IdOf, fromIndex?: number) => boolean >id : IdOf return undefined; @@ -442,25 +442,25 @@ type B = A<{ [Q in keyof T]: StrictExclude, {}>; }>; // Repros from #30938 function fn} | {elements: Array}>(param: T, cb: (element: T['elements'][number]) => void) { ->fn : (param: T, cb: (element: T["elements"][number]) => void) => void +>fn : ; } | { elements: Array; }>(param: T, cb: (element: T['elements'][number]) => void) => void >elements : string[] >elements : number[] >param : T ->cb : (element: T["elements"][number]) => void +>cb : (element: T['elements'][number]) => void >element : T["elements"][number] cb(param.elements[0]); >cb(param.elements[0]) : void ->cb : (element: T["elements"][number]) => void +>cb : (element: T['elements'][number]) => void >param.elements[0] : string | number >param.elements : string[] | number[] ->param : { elements: string[]; } | { elements: number[]; } +>param : { elements: Array; } | { elements: Array; } >elements : string[] | number[] >0 : 0 } function fn2>(param: T, cb: (element: T[number]) => void) { ->fn2 : (param: T, cb: (element: T[number]) => void) => void +>fn2 : >(param: T, cb: (element: T[number]) => void) => void >param : T >cb : (element: T[number]) => void >element : T[number] @@ -476,7 +476,7 @@ function fn2>(param: T, cb: (element: T[number]) => void // Repro from #31149 function fn3>(param: T, cb: (element: T[number]) => void) { ->fn3 : (param: T, cb: (element: T[number]) => void) => void +>fn3 : >(param: T, cb: (element: T[number]) => void) => void >param : T >cb : (element: T[number]) => void >element : T[number] diff --git a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess2.types.diff b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess2.types.diff index a0e1ed337ab..938cceb01d8 100644 --- a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccess2.types.diff @@ -1,84 +1,40 @@ --- old.keyofAndIndexedAccess2.types +++ new.keyofAndIndexedAccess2.types -@@= skipped -195, +195 lines =@@ - } +@@= skipped -1, +1 lines =@@ - function f3b(a: { [P in K]: number }, b: { [P in string]: number }, k: K) { -->f3b : (a: { [P in K]: number; }, b: { [P in string]: number; }, k: K) => void -+>f3b : (a: { [P in K]: number; }, b: { [x: string]: number; }, k: K) => void - >a : { [P in K]: number; } - >b : { [x: string]: number; } - >k : K -@@= skipped -17, +17 lines =@@ + === keyofAndIndexedAccess2.ts === + function f1(obj: { a: number, b: 0 | 1, c: string }, k0: 'a', k1: 'a' | 'b', k2: 'a' | 'b' | 'c') { +->f1 : (obj: { a: number; b: 0 | 1; c: string; }, k0: "a", k1: "a" | "b", k2: "a" | "b" | "c") => void ++>f1 : (obj: { a: number; b: 0 | 1; c: string; }, k0: 'a', k1: 'a' | 'b', k2: 'a' | 'b' | 'c') => void + >obj : { a: number; b: 0 | 1; c: string; } + >a : number + >b : 0 | 1 +@@= skipped -211, +211 lines =@@ } function f4(a: { [key: string]: number }[K], b: number) { ->f4 : (a: { [key: string]: number; }[K], b: number) => void -+>f4 : (a: number, b: number) => void ++>f4 : (a: { [key: string]: number;}[K], b: number) => void >a : number >key : string >b : number -@@= skipped -62, +62 lines =@@ - >Dict : Dict - - function f11(obj: Dict, k1: keyof Dict, k2: K) { -->f11 : (obj: Dict, k1: keyof Dict, k2: K) => void -+>f11 : (obj: Dict, k1: string, k2: K) => void - >obj : Dict - >k1 : string - >k2 : K -@@= skipped -28, +28 lines =@@ - } - - function f12, K extends keyof T>(obj: T, k1: keyof Dict, k2: keyof T, k3: K) { -->f12 : , K extends keyof T>(obj: T, k1: keyof Dict, k2: keyof T, k3: K) => void -+>f12 : , K extends keyof T>(obj: T, k1: string, k2: keyof T, k3: K) => void - >obj : T - >k1 : string - >k2 : keyof T -@@= skipped -90, +90 lines =@@ - if (!ids.includes(id)) { - >!ids.includes(id) : boolean - >ids.includes(id) : boolean -->ids.includes : (searchElement: IdOf, fromIndex?: number) => boolean -+>ids.includes : (searchElement: IdOf, fromIndex?: number | undefined) => boolean - >ids : IdOf[] -->includes : (searchElement: IdOf, fromIndex?: number) => boolean -+>includes : (searchElement: IdOf, fromIndex?: number | undefined) => boolean - >id : IdOf - - return undefined; -@@= skipped -49, +49 lines =@@ +@@= skipped -229, +229 lines =@@ // Repros from #30938 function fn} | {elements: Array}>(param: T, cb: (element: T['elements'][number]) => void) { ->fn : ; } | { elements: Array; }>(param: T, cb: (element: T["elements"][number]) => void) => void -+>fn : (param: T, cb: (element: T["elements"][number]) => void) => void ++>fn : ; } | { elements: Array; }>(param: T, cb: (element: T['elements'][number]) => void) => void >elements : string[] >elements : number[] >param : T -@@= skipped -12, +12 lines =@@ - >cb : (element: T["elements"][number]) => void +->cb : (element: T["elements"][number]) => void ++>cb : (element: T['elements'][number]) => void + >element : T["elements"][number] + + cb(param.elements[0]); + >cb(param.elements[0]) : void +->cb : (element: T["elements"][number]) => void ++>cb : (element: T['elements'][number]) => void >param.elements[0] : string | number >param.elements : string[] | number[] -->param : { elements: Array; } | { elements: Array; } -+>param : { elements: string[]; } | { elements: number[]; } - >elements : string[] | number[] - >0 : 0 - } - - function fn2>(param: T, cb: (element: T[number]) => void) { -->fn2 : >(param: T, cb: (element: T[number]) => void) => void -+>fn2 : (param: T, cb: (element: T[number]) => void) => void - >param : T - >cb : (element: T[number]) => void - >element : T[number] -@@= skipped -22, +22 lines =@@ - // Repro from #31149 - - function fn3>(param: T, cb: (element: T[number]) => void) { -->fn3 : >(param: T, cb: (element: T[number]) => void) => void -+>fn3 : (param: T, cb: (element: T[number]) => void) => void - >param : T - >cb : (element: T[number]) => void - >element : T[number] \ No newline at end of file + >param : { elements: Array; } | { elements: Array; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccessErrors.types b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccessErrors.types index 353ca6d96f3..2661e0f53c1 100644 --- a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccessErrors.types +++ b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccessErrors.types @@ -206,7 +206,7 @@ function f10(shape: Shape) { } function f20(x: T | U, y: T & U, k1: keyof (T | U), k2: keyof T & keyof U, k3: keyof (T & U), k4: keyof T | keyof U) { ->f20 : (x: T | U, y: T & U, k1: keyof T & keyof U, k2: keyof T & keyof U, k3: keyof T | keyof U, k4: keyof T | keyof U) => void +>f20 : (x: T | U, y: T & U, k1: keyof (T | U), k2: keyof T & keyof U, k3: keyof (T & U), k4: keyof T | keyof U) => void >x : T | U >y : T & U >k1 : keyof T & keyof U diff --git a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccessErrors.types.diff b/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccessErrors.types.diff deleted file mode 100644 index a51d70cbf80..00000000000 --- a/testdata/baselines/reference/submodule/conformance/keyofAndIndexedAccessErrors.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.keyofAndIndexedAccessErrors.types -+++ new.keyofAndIndexedAccessErrors.types -@@= skipped -205, +205 lines =@@ - } - - function f20(x: T | U, y: T & U, k1: keyof (T | U), k2: keyof T & keyof U, k3: keyof (T & U), k4: keyof T | keyof U) { -->f20 : (x: T | U, y: T & U, k1: keyof (T | U), k2: keyof T & keyof U, k3: keyof (T & U), k4: keyof T | keyof U) => void -+>f20 : (x: T | U, y: T & U, k1: keyof T & keyof U, k2: keyof T & keyof U, k3: keyof T | keyof U, k4: keyof T | keyof U) => void - >x : T | U - >y : T & U - >k1 : keyof T & keyof U \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.js b/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.js index aa0c0ca22d9..884aa4674c0 100644 --- a/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.js +++ b/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.js @@ -32,4 +32,6 @@ declare global { } } //// [c.d.ts] -export declare const bar: (p?: import("./a").Foo | undefined) => void; +type Foo = teams.calling.Foo; +export declare const bar: (p?: Foo) => void; +export {}; diff --git a/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.js.diff b/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.js.diff deleted file mode 100644 index 9b5671baa51..00000000000 --- a/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.js.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.leaveOptionalParameterAsWritten.js -+++ new.leaveOptionalParameterAsWritten.js -@@= skipped -31, +31 lines =@@ - } - } - //// [c.d.ts] --type Foo = teams.calling.Foo; --export declare const bar: (p?: Foo) => void; --export {}; -+export declare const bar: (p?: import("./a").Foo | undefined) => void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.types b/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.types index 60730ea6b38..537552ea05a 100644 --- a/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.types +++ b/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.types @@ -32,7 +32,7 @@ type Foo = teams.calling.Foo; >calling : any export const bar = (p?: Foo) => {} ->bar : (p?: import("./a").Foo | undefined) => void ->(p?: Foo) => {} : (p?: import("./a").Foo | undefined) => void +>bar : (p?: Foo) => void +>(p?: Foo) => {} : (p?: Foo) => void >p : import("./a").Foo | undefined diff --git a/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.types.diff b/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.types.diff deleted file mode 100644 index b89a16976ab..00000000000 --- a/testdata/baselines/reference/submodule/conformance/leaveOptionalParameterAsWritten.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.leaveOptionalParameterAsWritten.types -+++ new.leaveOptionalParameterAsWritten.types -@@= skipped -31, +31 lines =@@ - >calling : any - - export const bar = (p?: Foo) => {} -->bar : (p?: Foo) => void -->(p?: Foo) => {} : (p?: Foo) => void -+>bar : (p?: import("./a").Foo | undefined) => void -+>(p?: Foo) => {} : (p?: import("./a").Foo | undefined) => void - >p : import("./a").Foo | undefined diff --git a/testdata/baselines/reference/submodule/conformance/literalTypes1.types b/testdata/baselines/reference/submodule/conformance/literalTypes1.types index 5a9928d72d8..c38547d249f 100644 --- a/testdata/baselines/reference/submodule/conformance/literalTypes1.types +++ b/testdata/baselines/reference/submodule/conformance/literalTypes1.types @@ -100,7 +100,7 @@ function f3(x: Falsy) { } function f4(x: 0 | 1 | true | string) { ->f4 : (x: string | 0 | 1 | true) => void +>f4 : (x: 0 | 1 | true | string) => void >x : string | 0 | 1 | true >true : true diff --git a/testdata/baselines/reference/submodule/conformance/literalTypes1.types.diff b/testdata/baselines/reference/submodule/conformance/literalTypes1.types.diff deleted file mode 100644 index ba15fe4eb60..00000000000 --- a/testdata/baselines/reference/submodule/conformance/literalTypes1.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.literalTypes1.types -+++ new.literalTypes1.types -@@= skipped -99, +99 lines =@@ - } - - function f4(x: 0 | 1 | true | string) { -->f4 : (x: 0 | 1 | true | string) => void -+>f4 : (x: string | 0 | 1 | true) => void - >x : string | 0 | 1 | true - >true : true diff --git a/testdata/baselines/reference/submodule/conformance/literalTypes2.types b/testdata/baselines/reference/submodule/conformance/literalTypes2.types index f03c6c4fa5d..1451d103dae 100644 --- a/testdata/baselines/reference/submodule/conformance/literalTypes2.types +++ b/testdata/baselines/reference/submodule/conformance/literalTypes2.types @@ -406,7 +406,7 @@ function f4() { >"foo" : "foo" const c2: { a : 0 | 1, b: "foo" | "bar" } = { a: 1, b: "foo" }; ->c2 : { a: 0 | 1; b: "bar" | "foo"; } +>c2 : { a: 0 | 1; b: "foo" | "bar"; } >a : 0 | 1 >b : "bar" | "foo" >{ a: 1, b: "foo" } : { a: 1; b: "foo"; } @@ -424,7 +424,7 @@ function f4() { >"foo" : "foo" let x2: { a : 0 | 1, b: "foo" | "bar" } = { a: 1, b: "foo" }; ->x2 : { a: 0 | 1; b: "bar" | "foo"; } +>x2 : { a: 0 | 1; b: "foo" | "bar"; } >a : 0 | 1 >b : "bar" | "foo" >{ a: 1, b: "foo" } : { a: 1; b: "foo"; } @@ -591,7 +591,7 @@ function f20() { >"foo" : "foo" const f6: () => "foo" | "bar" = () => "bar"; ->f6 : () => "bar" | "foo" +>f6 : () => "foo" | "bar" >() => "bar" : () => "bar" >"bar" : "bar" @@ -741,9 +741,9 @@ function append(a: T[], x: T): T[] { let result = a.slice(); >result : T[] >a.slice() : T[] ->a.slice : (start?: number | undefined, end?: number | undefined) => T[] +>a.slice : (start?: number, end?: number) => T[] >a : T[] ->slice : (start?: number | undefined, end?: number | undefined) => T[] +>slice : (start?: number, end?: number) => T[] result.push(x); >result.push(x) : number diff --git a/testdata/baselines/reference/submodule/conformance/literalTypes2.types.diff b/testdata/baselines/reference/submodule/conformance/literalTypes2.types.diff deleted file mode 100644 index 9a9d64159be..00000000000 --- a/testdata/baselines/reference/submodule/conformance/literalTypes2.types.diff +++ /dev/null @@ -1,41 +0,0 @@ ---- old.literalTypes2.types -+++ new.literalTypes2.types -@@= skipped -405, +405 lines =@@ - >"foo" : "foo" - - const c2: { a : 0 | 1, b: "foo" | "bar" } = { a: 1, b: "foo" }; -->c2 : { a: 0 | 1; b: "foo" | "bar"; } -+>c2 : { a: 0 | 1; b: "bar" | "foo"; } - >a : 0 | 1 - >b : "bar" | "foo" - >{ a: 1, b: "foo" } : { a: 1; b: "foo"; } -@@= skipped -18, +18 lines =@@ - >"foo" : "foo" - - let x2: { a : 0 | 1, b: "foo" | "bar" } = { a: 1, b: "foo" }; -->x2 : { a: 0 | 1; b: "foo" | "bar"; } -+>x2 : { a: 0 | 1; b: "bar" | "foo"; } - >a : 0 | 1 - >b : "bar" | "foo" - >{ a: 1, b: "foo" } : { a: 1; b: "foo"; } -@@= skipped -167, +167 lines =@@ - >"foo" : "foo" - - const f6: () => "foo" | "bar" = () => "bar"; -->f6 : () => "foo" | "bar" -+>f6 : () => "bar" | "foo" - >() => "bar" : () => "bar" - >"bar" : "bar" - -@@= skipped -150, +150 lines =@@ - let result = a.slice(); - >result : T[] - >a.slice() : T[] -->a.slice : (start?: number, end?: number) => T[] -+>a.slice : (start?: number | undefined, end?: number | undefined) => T[] - >a : T[] -->slice : (start?: number, end?: number) => T[] -+>slice : (start?: number | undefined, end?: number | undefined) => T[] - - result.push(x); - >result.push(x) : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/literalTypes3.types b/testdata/baselines/reference/submodule/conformance/literalTypes3.types index 2a1ae71e8a4..3841da4e52f 100644 --- a/testdata/baselines/reference/submodule/conformance/literalTypes3.types +++ b/testdata/baselines/reference/submodule/conformance/literalTypes3.types @@ -133,7 +133,7 @@ function f6(x: number, y: 1 | 2) { } function f7(x: number | "foo" | "bar", y: 1 | 2 | string) { ->f7 : (x: number | "bar" | "foo", y: string | 1 | 2) => void +>f7 : (x: number | "foo" | "bar", y: 1 | 2 | string) => void >x : number | "bar" | "foo" >y : string | 1 | 2 @@ -148,7 +148,7 @@ function f7(x: number | "foo" | "bar", y: 1 | 2 | string) { } function f8(x: number | "foo" | "bar") { ->f8 : (x: number | "bar" | "foo") => void +>f8 : (x: number | "foo" | "bar") => void >x : number | "bar" | "foo" switch (x) { diff --git a/testdata/baselines/reference/submodule/conformance/literalTypes3.types.diff b/testdata/baselines/reference/submodule/conformance/literalTypes3.types.diff deleted file mode 100644 index 9dbbb720112..00000000000 --- a/testdata/baselines/reference/submodule/conformance/literalTypes3.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.literalTypes3.types -+++ new.literalTypes3.types -@@= skipped -132, +132 lines =@@ - } - - function f7(x: number | "foo" | "bar", y: 1 | 2 | string) { -->f7 : (x: number | "foo" | "bar", y: 1 | 2 | string) => void -+>f7 : (x: number | "bar" | "foo", y: string | 1 | 2) => void - >x : number | "bar" | "foo" - >y : string | 1 | 2 - -@@= skipped -15, +15 lines =@@ - } - - function f8(x: number | "foo" | "bar") { -->f8 : (x: number | "foo" | "bar") => void -+>f8 : (x: number | "bar" | "foo") => void - >x : number | "bar" | "foo" - - switch (x) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/localesObjectArgument.types b/testdata/baselines/reference/submodule/conformance/localesObjectArgument.types index d62dd118778..4738250f85d 100644 --- a/testdata/baselines/reference/submodule/conformance/localesObjectArgument.types +++ b/testdata/baselines/reference/submodule/conformance/localesObjectArgument.types @@ -4,25 +4,25 @@ const enUS = new Intl.Locale("en-US"); >enUS : Intl.Locale >new Intl.Locale("en-US") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"en-US" : "en-US" const deDE = new Intl.Locale("de-DE"); >deDE : Intl.Locale >new Intl.Locale("de-DE") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"de-DE" : "de-DE" const jaJP = new Intl.Locale("ja-JP"); >jaJP : Intl.Locale >new Intl.Locale("ja-JP") : Intl.Locale ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >Intl : typeof Intl ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale +>Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale >"ja-JP" : "ja-JP" const now = new Date(); @@ -50,129 +50,129 @@ const readonlyLocales: Readonly = ['de-DE', 'ja-JP']; now.toLocaleString(enUS); >now.toLocaleString(enUS) : string ->now.toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>now.toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >now : Date ->toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >enUS : Intl.Locale now.toLocaleDateString(enUS); >now.toLocaleDateString(enUS) : string ->now.toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>now.toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >now : Date ->toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >enUS : Intl.Locale now.toLocaleTimeString(enUS); >now.toLocaleTimeString(enUS) : string ->now.toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>now.toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >now : Date ->toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >enUS : Intl.Locale now.toLocaleString([deDE, jaJP]); >now.toLocaleString([deDE, jaJP]) : string ->now.toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>now.toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >now : Date ->toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale now.toLocaleDateString([deDE, jaJP]); >now.toLocaleDateString([deDE, jaJP]) : string ->now.toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>now.toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >now : Date ->toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale now.toLocaleTimeString([deDE, jaJP]); >now.toLocaleTimeString([deDE, jaJP]) : string ->now.toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>now.toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >now : Date ->toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } +>toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale num.toLocaleString(enUS); >num.toLocaleString(enUS) : string ->num.toLocaleString : { (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string; } +>num.toLocaleString : { (locales?: string | string[], options?: Intl.NumberFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string; } >num : 1000 ->toLocaleString : { (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (locales?: string | string[], options?: Intl.NumberFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string; } >enUS : Intl.Locale num.toLocaleString([deDE, jaJP]); >num.toLocaleString([deDE, jaJP]) : string ->num.toLocaleString : { (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string; } +>num.toLocaleString : { (locales?: string | string[], options?: Intl.NumberFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string; } >num : 1000 ->toLocaleString : { (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string; } +>toLocaleString : { (locales?: string | string[], options?: Intl.NumberFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale bigint.toLocaleString(enUS); >bigint.toLocaleString(enUS) : string ->bigint.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions | undefined) => string +>bigint.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string >bigint : 123456789123456789n ->toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string >enUS : Intl.Locale bigint.toLocaleString([deDE, jaJP]); >bigint.toLocaleString([deDE, jaJP]) : string ->bigint.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions | undefined) => string +>bigint.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string >bigint : 123456789123456789n ->toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions | undefined) => string +>toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale str.toLocaleLowerCase(enUS); >str.toLocaleLowerCase(enUS) : string ->str.toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>str.toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } >str : "" ->toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } >enUS : Intl.Locale str.toLocaleLowerCase([deDE, jaJP]); >str.toLocaleLowerCase([deDE, jaJP]) : string ->str.toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>str.toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } >str : "" ->toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale str.toLocaleUpperCase(enUS); >str.toLocaleUpperCase(enUS) : string ->str.toLocaleUpperCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>str.toLocaleUpperCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } >str : "" ->toLocaleUpperCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>toLocaleUpperCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } >enUS : Intl.Locale str.toLocaleUpperCase([deDE, jaJP]); >str.toLocaleUpperCase([deDE, jaJP]) : string ->str.toLocaleUpperCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>str.toLocaleUpperCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } >str : "" ->toLocaleUpperCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } +>toLocaleUpperCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale str.localeCompare(str, enUS); >str.localeCompare(str, enUS) : number ->str.localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): number; } +>str.localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; } >str : "" ->localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): number; } +>localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; } >str : "" >enUS : Intl.Locale str.localeCompare(str, [deDE, jaJP]); >str.localeCompare(str, [deDE, jaJP]) : number ->str.localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): number; } +>str.localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; } >str : "" ->localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): number; } +>localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; } >str : "" >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale @@ -203,83 +203,83 @@ new Intl.PluralRules(readonlyLocales); Intl.PluralRules.supportedLocalesOf(enUS); >Intl.PluralRules.supportedLocalesOf(enUS) : string[] ->Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } +>Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } >Intl.PluralRules : Intl.PluralRulesConstructor >Intl : typeof Intl >PluralRules : Intl.PluralRulesConstructor ->supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } +>supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } >enUS : Intl.Locale Intl.PluralRules.supportedLocalesOf([deDE, jaJP]); >Intl.PluralRules.supportedLocalesOf([deDE, jaJP]) : string[] ->Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } +>Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } >Intl.PluralRules : Intl.PluralRulesConstructor >Intl : typeof Intl >PluralRules : Intl.PluralRulesConstructor ->supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } +>supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale Intl.PluralRules.supportedLocalesOf(readonlyLocales); >Intl.PluralRules.supportedLocalesOf(readonlyLocales) : string[] ->Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } +>Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } >Intl.PluralRules : Intl.PluralRulesConstructor >Intl : typeof Intl >PluralRules : Intl.PluralRulesConstructor ->supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } +>supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } >readonlyLocales : readonly string[] new Intl.RelativeTimeFormat(enUS); >new Intl.RelativeTimeFormat(enUS) : Intl.RelativeTimeFormat ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >enUS : Intl.Locale new Intl.RelativeTimeFormat([deDE, jaJP]); >new Intl.RelativeTimeFormat([deDE, jaJP]) : Intl.RelativeTimeFormat ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale new Intl.RelativeTimeFormat(readonlyLocales); >new Intl.RelativeTimeFormat(readonlyLocales) : Intl.RelativeTimeFormat ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >readonlyLocales : readonly string[] Intl.RelativeTimeFormat.supportedLocalesOf(enUS); >Intl.RelativeTimeFormat.supportedLocalesOf(enUS) : string[] ->Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] +>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] >enUS : Intl.Locale Intl.RelativeTimeFormat.supportedLocalesOf([deDE, jaJP]); >Intl.RelativeTimeFormat.supportedLocalesOf([deDE, jaJP]) : string[] ->Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] +>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale Intl.RelativeTimeFormat.supportedLocalesOf(readonlyLocales); >Intl.RelativeTimeFormat.supportedLocalesOf(readonlyLocales) : string[] ->Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } +>Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] +>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } >Intl : typeof Intl ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] +>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } +>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] >readonlyLocales : readonly string[] new Intl.Collator(enUS); @@ -307,20 +307,20 @@ new Intl.Collator(readonlyLocales); Intl.Collator.supportedLocalesOf(enUS); >Intl.Collator.supportedLocalesOf(enUS) : string[] ->Intl.Collator.supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): string[]; } +>Intl.Collator.supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions): string[]; } >Intl.Collator : Intl.CollatorConstructor >Intl : typeof Intl >Collator : Intl.CollatorConstructor ->supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): string[]; } +>supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions): string[]; } >enUS : Intl.Locale Intl.Collator.supportedLocalesOf([deDE, jaJP]); >Intl.Collator.supportedLocalesOf([deDE, jaJP]) : string[] ->Intl.Collator.supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): string[]; } +>Intl.Collator.supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions): string[]; } >Intl.Collator : Intl.CollatorConstructor >Intl : typeof Intl >Collator : Intl.CollatorConstructor ->supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): string[]; } +>supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions): string[]; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale @@ -350,31 +350,31 @@ new Intl.DateTimeFormat(readonlyLocales); Intl.DateTimeFormat.supportedLocalesOf(enUS); >Intl.DateTimeFormat.supportedLocalesOf(enUS) : string[] ->Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } +>Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor >Intl : typeof Intl >DateTimeFormat : Intl.DateTimeFormatConstructor ->supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } +>supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } >enUS : Intl.Locale Intl.DateTimeFormat.supportedLocalesOf([deDE, jaJP]); >Intl.DateTimeFormat.supportedLocalesOf([deDE, jaJP]) : string[] ->Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } +>Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor >Intl : typeof Intl >DateTimeFormat : Intl.DateTimeFormatConstructor ->supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } +>supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } >[deDE, jaJP] : Intl.Locale[] >deDE : Intl.Locale >jaJP : Intl.Locale Intl.DateTimeFormat.supportedLocalesOf(readonlyLocales); >Intl.DateTimeFormat.supportedLocalesOf(readonlyLocales) : string[] ->Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } +>Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor >Intl : typeof Intl >DateTimeFormat : Intl.DateTimeFormatConstructor ->supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } +>supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } >readonlyLocales : readonly string[] new Intl.NumberFormat(enUS); @@ -402,19 +402,19 @@ new Intl.NumberFormat(readonlyLocales); Intl.NumberFormat.supportedLocalesOf(enUS); >Intl.NumberFormat.supportedLocalesOf(enUS) : string[] ->Intl.NumberFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string[]; } +>Intl.NumberFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string[]; } >Intl.NumberFormat : Intl.NumberFormatConstructor >Intl : typeof Intl >NumberFormat : Intl.NumberFormatConstructor ->supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string[]; } +>supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string[]; } >enUS : Intl.Locale Intl.NumberFormat.supportedLocalesOf(readonlyLocales); >Intl.NumberFormat.supportedLocalesOf(readonlyLocales) : string[] ->Intl.NumberFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string[]; } +>Intl.NumberFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string[]; } >Intl.NumberFormat : Intl.NumberFormatConstructor >Intl : typeof Intl >NumberFormat : Intl.NumberFormatConstructor ->supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string[]; } +>supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string[]; } >readonlyLocales : readonly string[] diff --git a/testdata/baselines/reference/submodule/conformance/localesObjectArgument.types.diff b/testdata/baselines/reference/submodule/conformance/localesObjectArgument.types.diff deleted file mode 100644 index fe18c2da2c5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/localesObjectArgument.types.diff +++ /dev/null @@ -1,390 +0,0 @@ ---- old.localesObjectArgument.types -+++ new.localesObjectArgument.types -@@= skipped -3, +3 lines =@@ - const enUS = new Intl.Locale("en-US"); - >enUS : Intl.Locale - >new Intl.Locale("en-US") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"en-US" : "en-US" - - const deDE = new Intl.Locale("de-DE"); - >deDE : Intl.Locale - >new Intl.Locale("de-DE") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"de-DE" : "de-DE" - - const jaJP = new Intl.Locale("ja-JP"); - >jaJP : Intl.Locale - >new Intl.Locale("ja-JP") : Intl.Locale -->Intl.Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >Intl : typeof Intl -->Locale : new (tag: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -+>Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions | undefined) => Intl.Locale - >"ja-JP" : "ja-JP" - - const now = new Date(); -@@= skipped -46, +46 lines =@@ - - now.toLocaleString(enUS); - >now.toLocaleString(enUS) : string -->now.toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>now.toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >now : Date -->toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >enUS : Intl.Locale - - now.toLocaleDateString(enUS); - >now.toLocaleDateString(enUS) : string -->now.toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>now.toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >now : Date -->toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >enUS : Intl.Locale - - now.toLocaleTimeString(enUS); - >now.toLocaleTimeString(enUS) : string -->now.toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>now.toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >now : Date -->toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >enUS : Intl.Locale - - now.toLocaleString([deDE, jaJP]); - >now.toLocaleString([deDE, jaJP]) : string -->now.toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>now.toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >now : Date -->toLocaleString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>toLocaleString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - now.toLocaleDateString([deDE, jaJP]); - >now.toLocaleDateString([deDE, jaJP]) : string -->now.toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>now.toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >now : Date -->toLocaleDateString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>toLocaleDateString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - now.toLocaleTimeString([deDE, jaJP]); - >now.toLocaleTimeString([deDE, jaJP]) : string -->now.toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>now.toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >now : Date -->toLocaleTimeString : { (): string; (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; } -+>toLocaleTimeString : { (): string; (locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - num.toLocaleString(enUS); - >num.toLocaleString(enUS) : string -->num.toLocaleString : { (locales?: string | string[], options?: Intl.NumberFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string; } -+>num.toLocaleString : { (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string; } - >num : 1000 -->toLocaleString : { (locales?: string | string[], options?: Intl.NumberFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string; } - >enUS : Intl.Locale - - num.toLocaleString([deDE, jaJP]); - >num.toLocaleString([deDE, jaJP]) : string -->num.toLocaleString : { (locales?: string | string[], options?: Intl.NumberFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string; } -+>num.toLocaleString : { (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string; } - >num : 1000 -->toLocaleString : { (locales?: string | string[], options?: Intl.NumberFormatOptions): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string; } -+>toLocaleString : { (locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined): string; (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - bigint.toLocaleString(enUS); - >bigint.toLocaleString(enUS) : string -->bigint.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -+>bigint.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions | undefined) => string - >bigint : 123456789123456789n -->toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions | undefined) => string - >enUS : Intl.Locale - - bigint.toLocaleString([deDE, jaJP]); - >bigint.toLocaleString([deDE, jaJP]) : string -->bigint.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -+>bigint.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions | undefined) => string - >bigint : 123456789123456789n -->toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -+>toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions | undefined) => string - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - str.toLocaleLowerCase(enUS); - >str.toLocaleLowerCase(enUS) : string -->str.toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>str.toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - >str : "" -->toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - >enUS : Intl.Locale - - str.toLocaleLowerCase([deDE, jaJP]); - >str.toLocaleLowerCase([deDE, jaJP]) : string -->str.toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>str.toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - >str : "" -->toLocaleLowerCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>toLocaleLowerCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - str.toLocaleUpperCase(enUS); - >str.toLocaleUpperCase(enUS) : string -->str.toLocaleUpperCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>str.toLocaleUpperCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - >str : "" -->toLocaleUpperCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>toLocaleUpperCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - >enUS : Intl.Locale - - str.toLocaleUpperCase([deDE, jaJP]); - >str.toLocaleUpperCase([deDE, jaJP]) : string -->str.toLocaleUpperCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>str.toLocaleUpperCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - >str : "" -->toLocaleUpperCase : { (locales?: string | string[]): string; (locales?: Intl.LocalesArgument): string; } -+>toLocaleUpperCase : { (locales?: string | string[] | undefined): string; (locales?: Intl.LocalesArgument): string; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - str.localeCompare(str, enUS); - >str.localeCompare(str, enUS) : number -->str.localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; } -+>str.localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): number; } - >str : "" -->localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; } -+>localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): number; } - >str : "" - >enUS : Intl.Locale - - str.localeCompare(str, [deDE, jaJP]); - >str.localeCompare(str, [deDE, jaJP]) : number -->str.localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; } -+>str.localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): number; } - >str : "" -->localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; } -+>localeCompare : { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: Intl.CollatorOptions | undefined): number; (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): number; } - >str : "" - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale -@@= skipped -153, +153 lines =@@ - - Intl.PluralRules.supportedLocalesOf(enUS); - >Intl.PluralRules.supportedLocalesOf(enUS) : string[] -->Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } -+>Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } - >Intl.PluralRules : Intl.PluralRulesConstructor - >Intl : typeof Intl - >PluralRules : Intl.PluralRulesConstructor -->supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } -+>supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } - >enUS : Intl.Locale - - Intl.PluralRules.supportedLocalesOf([deDE, jaJP]); - >Intl.PluralRules.supportedLocalesOf([deDE, jaJP]) : string[] -->Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } -+>Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } - >Intl.PluralRules : Intl.PluralRulesConstructor - >Intl : typeof Intl - >PluralRules : Intl.PluralRulesConstructor -->supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } -+>supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - Intl.PluralRules.supportedLocalesOf(readonlyLocales); - >Intl.PluralRules.supportedLocalesOf(readonlyLocales) : string[] -->Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } -+>Intl.PluralRules.supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } - >Intl.PluralRules : Intl.PluralRulesConstructor - >Intl : typeof Intl - >PluralRules : Intl.PluralRulesConstructor -->supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; } -+>supportedLocalesOf : { (locales: string | readonly string[], options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; (locales: Intl.LocalesArgument, options?: { localeMatcher?: "best fit" | "lookup" | undefined; } | undefined): string[]; } - >readonlyLocales : readonly string[] - - new Intl.RelativeTimeFormat(enUS); - >new Intl.RelativeTimeFormat(enUS) : Intl.RelativeTimeFormat -->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >Intl : typeof Intl -->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >enUS : Intl.Locale - - new Intl.RelativeTimeFormat([deDE, jaJP]); - >new Intl.RelativeTimeFormat([deDE, jaJP]) : Intl.RelativeTimeFormat -->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >Intl : typeof Intl -->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - new Intl.RelativeTimeFormat(readonlyLocales); - >new Intl.RelativeTimeFormat(readonlyLocales) : Intl.RelativeTimeFormat -->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >Intl : typeof Intl -->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >readonlyLocales : readonly string[] - - Intl.RelativeTimeFormat.supportedLocalesOf(enUS); - >Intl.RelativeTimeFormat.supportedLocalesOf(enUS) : string[] -->Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] -+>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >Intl : typeof Intl -->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] -+>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } -+>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] - >enUS : Intl.Locale - - Intl.RelativeTimeFormat.supportedLocalesOf([deDE, jaJP]); - >Intl.RelativeTimeFormat.supportedLocalesOf([deDE, jaJP]) : string[] -->Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] -+>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >Intl : typeof Intl -->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] -+>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } -+>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - Intl.RelativeTimeFormat.supportedLocalesOf(readonlyLocales); - >Intl.RelativeTimeFormat.supportedLocalesOf(readonlyLocales) : string[] -->Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] -->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -+>Intl.RelativeTimeFormat.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] -+>Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } - >Intl : typeof Intl -->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.UnicodeBCP47LocaleIdentifier[]; } -->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions) => Intl.UnicodeBCP47LocaleIdentifier[] -+>RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined): string[]; } -+>supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions | undefined) => string[] - >readonlyLocales : readonly string[] - - new Intl.Collator(enUS); -@@= skipped -104, +104 lines =@@ - - Intl.Collator.supportedLocalesOf(enUS); - >Intl.Collator.supportedLocalesOf(enUS) : string[] -->Intl.Collator.supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions): string[]; } -+>Intl.Collator.supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): string[]; } - >Intl.Collator : Intl.CollatorConstructor - >Intl : typeof Intl - >Collator : Intl.CollatorConstructor -->supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions): string[]; } -+>supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): string[]; } - >enUS : Intl.Locale - - Intl.Collator.supportedLocalesOf([deDE, jaJP]); - >Intl.Collator.supportedLocalesOf([deDE, jaJP]) : string[] -->Intl.Collator.supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions): string[]; } -+>Intl.Collator.supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): string[]; } - >Intl.Collator : Intl.CollatorConstructor - >Intl : typeof Intl - >Collator : Intl.CollatorConstructor -->supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions): string[]; } -+>supportedLocalesOf : { (locales: string | string[], options?: Intl.CollatorOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.CollatorOptions | undefined): string[]; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale -@@= skipped -43, +43 lines =@@ - - Intl.DateTimeFormat.supportedLocalesOf(enUS); - >Intl.DateTimeFormat.supportedLocalesOf(enUS) : string[] -->Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } -+>Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } - >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor - >Intl : typeof Intl - >DateTimeFormat : Intl.DateTimeFormatConstructor -->supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } -+>supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } - >enUS : Intl.Locale - - Intl.DateTimeFormat.supportedLocalesOf([deDE, jaJP]); - >Intl.DateTimeFormat.supportedLocalesOf([deDE, jaJP]) : string[] -->Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } -+>Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } - >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor - >Intl : typeof Intl - >DateTimeFormat : Intl.DateTimeFormatConstructor -->supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } -+>supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } - >[deDE, jaJP] : Intl.Locale[] - >deDE : Intl.Locale - >jaJP : Intl.Locale - - Intl.DateTimeFormat.supportedLocalesOf(readonlyLocales); - >Intl.DateTimeFormat.supportedLocalesOf(readonlyLocales) : string[] -->Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } -+>Intl.DateTimeFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } - >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor - >Intl : typeof Intl - >DateTimeFormat : Intl.DateTimeFormatConstructor -->supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string[]; } -+>supportedLocalesOf : { (locales: string | string[], options?: Intl.DateTimeFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string[]; } - >readonlyLocales : readonly string[] - - new Intl.NumberFormat(enUS); -@@= skipped -52, +52 lines =@@ - - Intl.NumberFormat.supportedLocalesOf(enUS); - >Intl.NumberFormat.supportedLocalesOf(enUS) : string[] -->Intl.NumberFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string[]; } -+>Intl.NumberFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string[]; } - >Intl.NumberFormat : Intl.NumberFormatConstructor - >Intl : typeof Intl - >NumberFormat : Intl.NumberFormatConstructor -->supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string[]; } -+>supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string[]; } - >enUS : Intl.Locale - - Intl.NumberFormat.supportedLocalesOf(readonlyLocales); - >Intl.NumberFormat.supportedLocalesOf(readonlyLocales) : string[] -->Intl.NumberFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string[]; } -+>Intl.NumberFormat.supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string[]; } - >Intl.NumberFormat : Intl.NumberFormatConstructor - >Intl : typeof Intl - >NumberFormat : Intl.NumberFormatConstructor -->supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string[]; } -+>supportedLocalesOf : { (locales: string | string[], options?: Intl.NumberFormatOptions | undefined): string[]; (locales: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string[]; } - >readonlyLocales : readonly string[] diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2015).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2015).types index 069a634bf81..414968c9851 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2015).types @@ -3,10 +3,10 @@ === logicalAssignment2.ts === interface A { foo: { ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } bar(): { ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } baz: 0 | 1 | 42 | undefined | '' >baz : "" | 0 | 1 | 42 | undefined @@ -60,97 +60,97 @@ c.baz ??= result.baz a.foo["baz"] &&= result.foo.baz >a.foo["baz"] &&= result.foo.baz : "" | 0 | 1 | 42 | undefined >a.foo["baz"] : "" | 0 | 1 | 42 | undefined ->a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo["baz"] ||= result.foo.baz >b.foo["baz"] ||= result.foo.baz : "" | 0 | 1 | 42 | undefined >b.foo["baz"] : "" | 0 | 1 | 42 | undefined ->b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo["baz"] ??= result.foo.baz >c.foo["baz"] ??= result.foo.baz : "" | 0 | 1 | 42 | undefined >c.foo["baz"] : "" | 0 | 1 | 42 | undefined ->c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined a.foo.bar().baz &&= result.foo.bar().baz >a.foo.bar().baz &&= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >a.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->a.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->a.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo.bar().baz ||= result.foo.bar().baz >b.foo.bar().baz ||= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >b.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->b.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->b.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo.bar().baz ??= result.foo.bar().baz >c.foo.bar().baz ??= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >c.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->c.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->c.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2015).types.diff index d3ab9f31112..fd1419f9248 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2015).types.diff +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2015).types.diff @@ -5,11 +5,11 @@ interface A { foo: { ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } bar(): { ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } baz: 0 | 1 | 42 | undefined | '' >baz : "" | 0 | 1 | 42 | undefined @@ -18,51 +18,51 @@ >a.foo["baz"] &&= result.foo.baz : "" | 0 | 1 | 42 | undefined >a.foo["baz"] : "" | 0 | 1 | 42 | undefined ->a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo["baz"] ||= result.foo.baz >b.foo["baz"] ||= result.foo.baz : "" | 0 | 1 | 42 | undefined >b.foo["baz"] : "" | 0 | 1 | 42 | undefined ->b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo["baz"] ??= result.foo.baz >c.foo["baz"] ??= result.foo.baz : "" | 0 | 1 | 42 | undefined >c.foo["baz"] : "" | 0 | 1 | 42 | undefined ->c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined a.foo.bar().baz &&= result.foo.bar().baz @@ -71,27 +71,27 @@ ->a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>a.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>a.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo.bar().baz ||= result.foo.bar().baz @@ -100,27 +100,27 @@ ->b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>b.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>b.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo.bar().baz ??= result.foo.bar().baz @@ -129,26 +129,26 @@ ->c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>c.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>c.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2020).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2020).types index 069a634bf81..414968c9851 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2020).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2020).types @@ -3,10 +3,10 @@ === logicalAssignment2.ts === interface A { foo: { ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } bar(): { ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } baz: 0 | 1 | 42 | undefined | '' >baz : "" | 0 | 1 | 42 | undefined @@ -60,97 +60,97 @@ c.baz ??= result.baz a.foo["baz"] &&= result.foo.baz >a.foo["baz"] &&= result.foo.baz : "" | 0 | 1 | 42 | undefined >a.foo["baz"] : "" | 0 | 1 | 42 | undefined ->a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo["baz"] ||= result.foo.baz >b.foo["baz"] ||= result.foo.baz : "" | 0 | 1 | 42 | undefined >b.foo["baz"] : "" | 0 | 1 | 42 | undefined ->b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo["baz"] ??= result.foo.baz >c.foo["baz"] ??= result.foo.baz : "" | 0 | 1 | 42 | undefined >c.foo["baz"] : "" | 0 | 1 | 42 | undefined ->c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined a.foo.bar().baz &&= result.foo.bar().baz >a.foo.bar().baz &&= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >a.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->a.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->a.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo.bar().baz ||= result.foo.bar().baz >b.foo.bar().baz ||= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >b.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->b.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->b.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo.bar().baz ??= result.foo.bar().baz >c.foo.bar().baz ??= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >c.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->c.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->c.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2020).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2020).types.diff index f667488d322..5d7a4eed0cd 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2020).types.diff +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2020).types.diff @@ -5,11 +5,11 @@ interface A { foo: { ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } bar(): { ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } baz: 0 | 1 | 42 | undefined | '' >baz : "" | 0 | 1 | 42 | undefined @@ -18,51 +18,51 @@ >a.foo["baz"] &&= result.foo.baz : "" | 0 | 1 | 42 | undefined >a.foo["baz"] : "" | 0 | 1 | 42 | undefined ->a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo["baz"] ||= result.foo.baz >b.foo["baz"] ||= result.foo.baz : "" | 0 | 1 | 42 | undefined >b.foo["baz"] : "" | 0 | 1 | 42 | undefined ->b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo["baz"] ??= result.foo.baz >c.foo["baz"] ??= result.foo.baz : "" | 0 | 1 | 42 | undefined >c.foo["baz"] : "" | 0 | 1 | 42 | undefined ->c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined a.foo.bar().baz &&= result.foo.bar().baz @@ -71,27 +71,27 @@ ->a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>a.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>a.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo.bar().baz ||= result.foo.bar().baz @@ -100,27 +100,27 @@ ->b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>b.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>b.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo.bar().baz ??= result.foo.bar().baz @@ -129,26 +129,26 @@ ->c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>c.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>c.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2021).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2021).types index 069a634bf81..414968c9851 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2021).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2021).types @@ -3,10 +3,10 @@ === logicalAssignment2.ts === interface A { foo: { ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } bar(): { ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } baz: 0 | 1 | 42 | undefined | '' >baz : "" | 0 | 1 | 42 | undefined @@ -60,97 +60,97 @@ c.baz ??= result.baz a.foo["baz"] &&= result.foo.baz >a.foo["baz"] &&= result.foo.baz : "" | 0 | 1 | 42 | undefined >a.foo["baz"] : "" | 0 | 1 | 42 | undefined ->a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo["baz"] ||= result.foo.baz >b.foo["baz"] ||= result.foo.baz : "" | 0 | 1 | 42 | undefined >b.foo["baz"] : "" | 0 | 1 | 42 | undefined ->b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo["baz"] ??= result.foo.baz >c.foo["baz"] ??= result.foo.baz : "" | 0 | 1 | 42 | undefined >c.foo["baz"] : "" | 0 | 1 | 42 | undefined ->c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined a.foo.bar().baz &&= result.foo.bar().baz >a.foo.bar().baz &&= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >a.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->a.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->a.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo.bar().baz ||= result.foo.bar().baz >b.foo.bar().baz ||= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >b.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->b.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->b.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo.bar().baz ??= result.foo.bar().baz >c.foo.bar().baz ??= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >c.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->c.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->c.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2021).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2021).types.diff index 46d0bcf5df8..76b40f20e1d 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2021).types.diff +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=es2021).types.diff @@ -5,11 +5,11 @@ interface A { foo: { ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } bar(): { ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } baz: 0 | 1 | 42 | undefined | '' >baz : "" | 0 | 1 | 42 | undefined @@ -18,51 +18,51 @@ >a.foo["baz"] &&= result.foo.baz : "" | 0 | 1 | 42 | undefined >a.foo["baz"] : "" | 0 | 1 | 42 | undefined ->a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo["baz"] ||= result.foo.baz >b.foo["baz"] ||= result.foo.baz : "" | 0 | 1 | 42 | undefined >b.foo["baz"] : "" | 0 | 1 | 42 | undefined ->b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo["baz"] ??= result.foo.baz >c.foo["baz"] ??= result.foo.baz : "" | 0 | 1 | 42 | undefined >c.foo["baz"] : "" | 0 | 1 | 42 | undefined ->c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined a.foo.bar().baz &&= result.foo.bar().baz @@ -71,27 +71,27 @@ ->a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>a.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>a.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo.bar().baz ||= result.foo.bar().baz @@ -100,27 +100,27 @@ ->b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>b.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>b.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo.bar().baz ??= result.foo.bar().baz @@ -129,26 +129,26 @@ ->c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>c.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>c.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=esnext).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=esnext).types index 069a634bf81..414968c9851 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=esnext).types @@ -3,10 +3,10 @@ === logicalAssignment2.ts === interface A { foo: { ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } bar(): { ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } baz: 0 | 1 | 42 | undefined | '' >baz : "" | 0 | 1 | 42 | undefined @@ -60,97 +60,97 @@ c.baz ??= result.baz a.foo["baz"] &&= result.foo.baz >a.foo["baz"] &&= result.foo.baz : "" | 0 | 1 | 42 | undefined >a.foo["baz"] : "" | 0 | 1 | 42 | undefined ->a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo["baz"] ||= result.foo.baz >b.foo["baz"] ||= result.foo.baz : "" | 0 | 1 | 42 | undefined >b.foo["baz"] : "" | 0 | 1 | 42 | undefined ->b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo["baz"] ??= result.foo.baz >c.foo["baz"] ??= result.foo.baz : "" | 0 | 1 | 42 | undefined >c.foo["baz"] : "" | 0 | 1 | 42 | undefined ->c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined a.foo.bar().baz &&= result.foo.bar().baz >a.foo.bar().baz &&= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >a.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->a.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->a.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo.bar().baz ||= result.foo.bar().baz >b.foo.bar().baz ||= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >b.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->b.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->b.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo.bar().baz ??= result.foo.bar().baz >c.foo.bar().baz ??= result.foo.bar().baz : "" | 0 | 1 | 42 | undefined >c.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->c.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->c.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ->result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } +>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } +>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ->bar : () => { baz: "" | 0 | 1 | 42 | undefined; } +>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } +>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=esnext).types.diff index dfde6bf8f08..0d2e2f89b28 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=esnext).types.diff +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment2(target=esnext).types.diff @@ -5,11 +5,11 @@ interface A { foo: { ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } bar(): { ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } baz: 0 | 1 | 42 | undefined | '' >baz : "" | 0 | 1 | 42 | undefined @@ -18,51 +18,51 @@ >a.foo["baz"] &&= result.foo.baz : "" | 0 | 1 | 42 | undefined >a.foo["baz"] : "" | 0 | 1 | 42 | undefined ->a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo["baz"] ||= result.foo.baz >b.foo["baz"] ||= result.foo.baz : "" | 0 | 1 | 42 | undefined >b.foo["baz"] : "" | 0 | 1 | 42 | undefined ->b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo["baz"] ??= result.foo.baz >c.foo["baz"] ??= result.foo.baz : "" | 0 | 1 | 42 | undefined >c.foo["baz"] : "" | 0 | 1 | 42 | undefined ->c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >"baz" : "baz" >result.foo.baz : "" | 0 | 1 | 42 | undefined ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined a.foo.bar().baz &&= result.foo.bar().baz @@ -71,27 +71,27 @@ ->a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>a.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>a.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>a.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>a.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>a.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>a.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >a : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined b.foo.bar().baz ||= result.foo.bar().baz @@ -100,27 +100,27 @@ ->b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>b.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>b.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>b.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>b.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>b.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>b.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >b : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined c.foo.bar().baz ??= result.foo.bar().baz @@ -129,26 +129,26 @@ ->c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>c.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>c.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>c.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>c.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>c.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>c.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >c : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined >result.foo.bar().baz : "" | 0 | 1 | 42 | undefined ->result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ""; } ->result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } -+>result.foo.bar() : { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo.bar : () => { baz: "" | 0 | 1 | 42 | undefined; } -+>result.foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } ++>result.foo.bar() : { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo.bar : () => { baz: 0 | 1 | 42 | undefined | ''; } ++>result.foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } >result : A ->foo : { bar(): { baz: 0 | 1 | 42 | undefined | ""; }; baz: 0 | 1 | 42 | undefined | ""; } ->bar : () => { baz: 0 | 1 | 42 | undefined | ""; } -+>foo : { bar(): { baz: "" | 0 | 1 | 42 | undefined; }; baz: "" | 0 | 1 | 42 | undefined; } -+>bar : () => { baz: "" | 0 | 1 | 42 | undefined; } ++>foo : { bar(): { baz: 0 | 1 | 42 | undefined | ''; }; baz: 0 | 1 | 42 | undefined | ''; } ++>bar : () => { baz: 0 | 1 | 42 | undefined | ''; } >baz : "" | 0 | 1 | 42 | undefined diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2015).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2015).types index 288026e6061..d4be6e09c6a 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2015).types @@ -2,7 +2,7 @@ === logicalAssignment5.ts === function foo1 (f?: (a: number) => void) { ->foo1 : (f?: ((a: number) => void) | undefined) => void +>foo1 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -21,7 +21,7 @@ function foo1 (f?: (a: number) => void) { } function foo2 (f?: (a: number) => void) { ->foo2 : (f?: ((a: number) => void) | undefined) => void +>foo2 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -40,7 +40,7 @@ function foo2 (f?: (a: number) => void) { } function foo3 (f?: (a: number) => void) { ->foo3 : (f?: ((a: number) => void) | undefined) => void +>foo3 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -59,7 +59,7 @@ function foo3 (f?: (a: number) => void) { } function bar1 (f?: (a: number) => void) { ->bar1 : (f?: ((a: number) => void) | undefined) => void +>bar1 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -84,7 +84,7 @@ function bar1 (f?: (a: number) => void) { } function bar2 (f?: (a: number) => void) { ->bar2 : (f?: ((a: number) => void) | undefined) => void +>bar2 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -109,7 +109,7 @@ function bar2 (f?: (a: number) => void) { } function bar3 (f?: (a: number) => void) { ->bar3 : (f?: ((a: number) => void) | undefined) => void +>bar3 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2015).types.diff deleted file mode 100644 index 51247aba497..00000000000 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2015).types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.logicalAssignment5(target=es2015).types -+++ new.logicalAssignment5(target=es2015).types -@@= skipped -1, +1 lines =@@ - - === logicalAssignment5.ts === - function foo1 (f?: (a: number) => void) { -->foo1 : (f?: (a: number) => void) => void -+>foo1 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function foo2 (f?: (a: number) => void) { -->foo2 : (f?: (a: number) => void) => void -+>foo2 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function foo3 (f?: (a: number) => void) { -->foo3 : (f?: (a: number) => void) => void -+>foo3 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function bar1 (f?: (a: number) => void) { -->bar1 : (f?: (a: number) => void) => void -+>bar1 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -25, +25 lines =@@ - } - - function bar2 (f?: (a: number) => void) { -->bar2 : (f?: (a: number) => void) => void -+>bar2 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -25, +25 lines =@@ - } - - function bar3 (f?: (a: number) => void) { -->bar3 : (f?: (a: number) => void) => void -+>bar3 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2020).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2020).types index 288026e6061..d4be6e09c6a 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2020).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2020).types @@ -2,7 +2,7 @@ === logicalAssignment5.ts === function foo1 (f?: (a: number) => void) { ->foo1 : (f?: ((a: number) => void) | undefined) => void +>foo1 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -21,7 +21,7 @@ function foo1 (f?: (a: number) => void) { } function foo2 (f?: (a: number) => void) { ->foo2 : (f?: ((a: number) => void) | undefined) => void +>foo2 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -40,7 +40,7 @@ function foo2 (f?: (a: number) => void) { } function foo3 (f?: (a: number) => void) { ->foo3 : (f?: ((a: number) => void) | undefined) => void +>foo3 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -59,7 +59,7 @@ function foo3 (f?: (a: number) => void) { } function bar1 (f?: (a: number) => void) { ->bar1 : (f?: ((a: number) => void) | undefined) => void +>bar1 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -84,7 +84,7 @@ function bar1 (f?: (a: number) => void) { } function bar2 (f?: (a: number) => void) { ->bar2 : (f?: ((a: number) => void) | undefined) => void +>bar2 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -109,7 +109,7 @@ function bar2 (f?: (a: number) => void) { } function bar3 (f?: (a: number) => void) { ->bar3 : (f?: ((a: number) => void) | undefined) => void +>bar3 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2020).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2020).types.diff deleted file mode 100644 index c898eade7c8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2020).types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.logicalAssignment5(target=es2020).types -+++ new.logicalAssignment5(target=es2020).types -@@= skipped -1, +1 lines =@@ - - === logicalAssignment5.ts === - function foo1 (f?: (a: number) => void) { -->foo1 : (f?: (a: number) => void) => void -+>foo1 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function foo2 (f?: (a: number) => void) { -->foo2 : (f?: (a: number) => void) => void -+>foo2 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function foo3 (f?: (a: number) => void) { -->foo3 : (f?: (a: number) => void) => void -+>foo3 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function bar1 (f?: (a: number) => void) { -->bar1 : (f?: (a: number) => void) => void -+>bar1 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -25, +25 lines =@@ - } - - function bar2 (f?: (a: number) => void) { -->bar2 : (f?: (a: number) => void) => void -+>bar2 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -25, +25 lines =@@ - } - - function bar3 (f?: (a: number) => void) { -->bar3 : (f?: (a: number) => void) => void -+>bar3 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2021).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2021).types index 288026e6061..d4be6e09c6a 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2021).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2021).types @@ -2,7 +2,7 @@ === logicalAssignment5.ts === function foo1 (f?: (a: number) => void) { ->foo1 : (f?: ((a: number) => void) | undefined) => void +>foo1 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -21,7 +21,7 @@ function foo1 (f?: (a: number) => void) { } function foo2 (f?: (a: number) => void) { ->foo2 : (f?: ((a: number) => void) | undefined) => void +>foo2 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -40,7 +40,7 @@ function foo2 (f?: (a: number) => void) { } function foo3 (f?: (a: number) => void) { ->foo3 : (f?: ((a: number) => void) | undefined) => void +>foo3 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -59,7 +59,7 @@ function foo3 (f?: (a: number) => void) { } function bar1 (f?: (a: number) => void) { ->bar1 : (f?: ((a: number) => void) | undefined) => void +>bar1 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -84,7 +84,7 @@ function bar1 (f?: (a: number) => void) { } function bar2 (f?: (a: number) => void) { ->bar2 : (f?: ((a: number) => void) | undefined) => void +>bar2 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -109,7 +109,7 @@ function bar2 (f?: (a: number) => void) { } function bar3 (f?: (a: number) => void) { ->bar3 : (f?: ((a: number) => void) | undefined) => void +>bar3 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2021).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2021).types.diff deleted file mode 100644 index 7118e7f469d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=es2021).types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.logicalAssignment5(target=es2021).types -+++ new.logicalAssignment5(target=es2021).types -@@= skipped -1, +1 lines =@@ - - === logicalAssignment5.ts === - function foo1 (f?: (a: number) => void) { -->foo1 : (f?: (a: number) => void) => void -+>foo1 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function foo2 (f?: (a: number) => void) { -->foo2 : (f?: (a: number) => void) => void -+>foo2 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function foo3 (f?: (a: number) => void) { -->foo3 : (f?: (a: number) => void) => void -+>foo3 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function bar1 (f?: (a: number) => void) { -->bar1 : (f?: (a: number) => void) => void -+>bar1 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -25, +25 lines =@@ - } - - function bar2 (f?: (a: number) => void) { -->bar2 : (f?: (a: number) => void) => void -+>bar2 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -25, +25 lines =@@ - } - - function bar3 (f?: (a: number) => void) { -->bar3 : (f?: (a: number) => void) => void -+>bar3 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=esnext).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=esnext).types index 288026e6061..d4be6e09c6a 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=esnext).types @@ -2,7 +2,7 @@ === logicalAssignment5.ts === function foo1 (f?: (a: number) => void) { ->foo1 : (f?: ((a: number) => void) | undefined) => void +>foo1 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -21,7 +21,7 @@ function foo1 (f?: (a: number) => void) { } function foo2 (f?: (a: number) => void) { ->foo2 : (f?: ((a: number) => void) | undefined) => void +>foo2 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -40,7 +40,7 @@ function foo2 (f?: (a: number) => void) { } function foo3 (f?: (a: number) => void) { ->foo3 : (f?: ((a: number) => void) | undefined) => void +>foo3 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -59,7 +59,7 @@ function foo3 (f?: (a: number) => void) { } function bar1 (f?: (a: number) => void) { ->bar1 : (f?: ((a: number) => void) | undefined) => void +>bar1 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -84,7 +84,7 @@ function bar1 (f?: (a: number) => void) { } function bar2 (f?: (a: number) => void) { ->bar2 : (f?: ((a: number) => void) | undefined) => void +>bar2 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number @@ -109,7 +109,7 @@ function bar2 (f?: (a: number) => void) { } function bar3 (f?: (a: number) => void) { ->bar3 : (f?: ((a: number) => void) | undefined) => void +>bar3 : (f?: (a: number) => void) => void >f : ((a: number) => void) | undefined >a : number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=esnext).types.diff deleted file mode 100644 index 51a9c2679dc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment5(target=esnext).types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.logicalAssignment5(target=esnext).types -+++ new.logicalAssignment5(target=esnext).types -@@= skipped -1, +1 lines =@@ - - === logicalAssignment5.ts === - function foo1 (f?: (a: number) => void) { -->foo1 : (f?: (a: number) => void) => void -+>foo1 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function foo2 (f?: (a: number) => void) { -->foo2 : (f?: (a: number) => void) => void -+>foo2 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function foo3 (f?: (a: number) => void) { -->foo3 : (f?: (a: number) => void) => void -+>foo3 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -19, +19 lines =@@ - } - - function bar1 (f?: (a: number) => void) { -->bar1 : (f?: (a: number) => void) => void -+>bar1 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -25, +25 lines =@@ - } - - function bar2 (f?: (a: number) => void) { -->bar2 : (f?: (a: number) => void) => void -+>bar2 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number - -@@= skipped -25, +25 lines =@@ - } - - function bar3 (f?: (a: number) => void) { -->bar3 : (f?: (a: number) => void) => void -+>bar3 : (f?: ((a: number) => void) | undefined) => void - >f : ((a: number) => void) | undefined - >a : number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2015).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2015).types index 308b3434319..575f8aec755 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2015).types @@ -2,7 +2,7 @@ === logicalAssignment8.ts === declare const bar: { value?: number[] } | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined function foo1(results: number[] | undefined) { @@ -17,7 +17,7 @@ function foo1(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number @@ -36,7 +36,7 @@ function foo2(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number @@ -55,7 +55,7 @@ function foo3(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2015).types.diff deleted file mode 100644 index 44e0cfe0ac1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2015).types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.logicalAssignment8(target=es2015).types -+++ new.logicalAssignment8(target=es2015).types -@@= skipped -1, +1 lines =@@ - - === logicalAssignment8.ts === - declare const bar: { value?: number[] } | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - - function foo1(results: number[] | undefined) { -@@= skipped -15, +15 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number -@@= skipped -19, +19 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number -@@= skipped -19, +19 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2020).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2020).types index 308b3434319..575f8aec755 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2020).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2020).types @@ -2,7 +2,7 @@ === logicalAssignment8.ts === declare const bar: { value?: number[] } | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined function foo1(results: number[] | undefined) { @@ -17,7 +17,7 @@ function foo1(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number @@ -36,7 +36,7 @@ function foo2(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number @@ -55,7 +55,7 @@ function foo3(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2020).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2020).types.diff deleted file mode 100644 index 745e9621ba5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2020).types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.logicalAssignment8(target=es2020).types -+++ new.logicalAssignment8(target=es2020).types -@@= skipped -1, +1 lines =@@ - - === logicalAssignment8.ts === - declare const bar: { value?: number[] } | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - - function foo1(results: number[] | undefined) { -@@= skipped -15, +15 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number -@@= skipped -19, +19 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number -@@= skipped -19, +19 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2021).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2021).types index 308b3434319..575f8aec755 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2021).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2021).types @@ -2,7 +2,7 @@ === logicalAssignment8.ts === declare const bar: { value?: number[] } | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined function foo1(results: number[] | undefined) { @@ -17,7 +17,7 @@ function foo1(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number @@ -36,7 +36,7 @@ function foo2(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number @@ -55,7 +55,7 @@ function foo3(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2021).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2021).types.diff deleted file mode 100644 index 7f0562131eb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=es2021).types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.logicalAssignment8(target=es2021).types -+++ new.logicalAssignment8(target=es2021).types -@@= skipped -1, +1 lines =@@ - - === logicalAssignment8.ts === - declare const bar: { value?: number[] } | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - - function foo1(results: number[] | undefined) { -@@= skipped -15, +15 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number -@@= skipped -19, +19 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number -@@= skipped -19, +19 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=esnext).types b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=esnext).types index 308b3434319..575f8aec755 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=esnext).types @@ -2,7 +2,7 @@ === logicalAssignment8.ts === declare const bar: { value?: number[] } | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined function foo1(results: number[] | undefined) { @@ -17,7 +17,7 @@ function foo1(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number @@ -36,7 +36,7 @@ function foo2(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number @@ -55,7 +55,7 @@ function foo3(results: number[] | undefined) { >results : number[] | undefined >bar?.value ?? [] : number[] >bar?.value : number[] | undefined ->bar : { value?: number[] | undefined; } | undefined +>bar : { value?: number[]; } | undefined >value : number[] | undefined >[] : never[] >push : (...items: number[]) => number diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=esnext).types.diff deleted file mode 100644 index c81040c3cd0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment8(target=esnext).types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.logicalAssignment8(target=esnext).types -+++ new.logicalAssignment8(target=esnext).types -@@= skipped -1, +1 lines =@@ - - === logicalAssignment8.ts === - declare const bar: { value?: number[] } | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - - function foo1(results: number[] | undefined) { -@@= skipped -15, +15 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number -@@= skipped -19, +19 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number -@@= skipped -19, +19 lines =@@ - >results : number[] | undefined - >bar?.value ?? [] : number[] - >bar?.value : number[] | undefined -->bar : { value?: number[]; } | undefined -+>bar : { value?: number[] | undefined; } | undefined - >value : number[] | undefined - >[] : never[] - >push : (...items: number[]) => number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment9.types b/testdata/baselines/reference/submodule/conformance/logicalAssignment9.types index d1a4f71ff11..e58ec5247d5 100644 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment9.types +++ b/testdata/baselines/reference/submodule/conformance/logicalAssignment9.types @@ -2,20 +2,20 @@ === logicalAssignment9.ts === declare let x: { a?: boolean }; ->x : { a?: boolean | undefined; } +>x : { a?: boolean; } >a : boolean | undefined x.a ??= true; >x.a ??= true : boolean >x.a : boolean | undefined ->x : { a?: boolean | undefined; } +>x : { a?: boolean; } >a : boolean | undefined >true : true x.a &&= false; >x.a &&= false : false | undefined >x.a : boolean | undefined ->x : { a?: boolean | undefined; } +>x : { a?: boolean; } >a : boolean | undefined >false : false diff --git a/testdata/baselines/reference/submodule/conformance/logicalAssignment9.types.diff b/testdata/baselines/reference/submodule/conformance/logicalAssignment9.types.diff deleted file mode 100644 index d9ecfb52f97..00000000000 --- a/testdata/baselines/reference/submodule/conformance/logicalAssignment9.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.logicalAssignment9.types -+++ new.logicalAssignment9.types -@@= skipped -1, +1 lines =@@ - - === logicalAssignment9.ts === - declare let x: { a?: boolean }; -->x : { a?: boolean; } -+>x : { a?: boolean | undefined; } - >a : boolean | undefined - - x.a ??= true; - >x.a ??= true : boolean - >x.a : boolean | undefined -->x : { a?: boolean; } -+>x : { a?: boolean | undefined; } - >a : boolean | undefined - >true : true - - x.a &&= false; - >x.a &&= false : false | undefined - >x.a : boolean | undefined -->x : { a?: boolean; } -+>x : { a?: boolean | undefined; } - >a : boolean | undefined - >false : false diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeAsClauses.types b/testdata/baselines/reference/submodule/conformance/mappedTypeAsClauses.types index 50393446fe6..ec91e917c56 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeAsClauses.types +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeAsClauses.types @@ -246,7 +246,7 @@ interface M { } function f(x: KeysExtendedBy) { ->f : (x: "b") => "b" +>f : (x: KeysExtendedBy) => "b" >x : "b" return x; @@ -255,7 +255,7 @@ function f(x: KeysExtendedBy) { f("a"); // Error, should allow only "b" >f("a") : "b" ->f : (x: "b") => "b" +>f : (x: KeysExtendedBy) => "b" >"a" : "a" type NameMap = { 'a': 'x', 'b': 'y', 'c': 'z' }; diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeAsClauses.types.diff b/testdata/baselines/reference/submodule/conformance/mappedTypeAsClauses.types.diff deleted file mode 100644 index 12ad03529e6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeAsClauses.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.mappedTypeAsClauses.types -+++ new.mappedTypeAsClauses.types -@@= skipped -245, +245 lines =@@ - } - - function f(x: KeysExtendedBy) { -->f : (x: KeysExtendedBy) => "b" -+>f : (x: "b") => "b" - >x : "b" - - return x; -@@= skipped -9, +9 lines =@@ - - f("a"); // Error, should allow only "b" - >f("a") : "b" -->f : (x: KeysExtendedBy) => "b" -+>f : (x: "b") => "b" - >"a" : "a" - - type NameMap = { 'a': 'x', 'b': 'y', 'c': 'z' }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints.types b/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints.types index db59e28ee2b..2003df83a1b 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints.types +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints.types @@ -2,7 +2,7 @@ === mappedTypeConstraints.ts === function f0(obj: Pick>) { ->f0 : (obj: Pick>) => void +>f0 : (obj: Pick>) => void >a : string >b : string >obj : Pick> @@ -14,7 +14,7 @@ function f0(obj: Pick(obj: Pick>) { ->f1 : (obj: Pick>) => void +>f1 : (obj: Pick>) => void >a : string >b : string >obj : Pick> @@ -26,7 +26,7 @@ function f1(obj: Pick(obj: Pick) { ->f2 : (obj: Pick) => void +>f2 : (obj: Pick) => void >a : string >b : string >b : string @@ -40,7 +40,7 @@ function f2(obj: Pick) { ->f3 : (obj: Pick) => void +>f3 : (obj: Pick) => void >a : string >b : string >b : string @@ -64,7 +64,7 @@ function f3(obj: Record | 'c', string>) { ->f4 : (obj: Record<"c" | Exclude, string>) => void +>f4 : (obj: Record | 'c', string>) => void >a : string >b : string >obj : Record<"c" | Exclude, string> diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints.types.diff b/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints.types.diff index 316fee9673a..49c3e18e637 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints.types.diff +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints.types.diff @@ -1,29 +1,29 @@ --- old.mappedTypeConstraints.types +++ new.mappedTypeConstraints.types -@@= skipped -25, +25 lines =@@ - } +@@= skipped -1, +1 lines =@@ - function f2(obj: Pick) { -->f2 : (obj: Pick) => void -+>f2 : (obj: Pick) => void + === mappedTypeConstraints.ts === + function f0(obj: Pick>) { +->f0 : (obj: Pick>) => void ++>f0 : (obj: Pick>) => void >a : string >b : string - >b : string -@@= skipped -14, +14 lines =@@ + >obj : Pick> +@@= skipped -12, +12 lines =@@ } - function f3(obj: Pick) { -->f3 : (obj: Pick) => void -+>f3 : (obj: Pick) => void + function f1(obj: Pick>) { +->f1 : (obj: Pick>) => void ++>f1 : (obj: Pick>) => void >a : string >b : string - >b : string -@@= skipped -24, +24 lines =@@ + >obj : Pick> +@@= skipped -50, +50 lines =@@ } function f4(obj: Record | 'c', string>) { ->f4 : (obj: Record | "c", string>) => void -+>f4 : (obj: Record<"c" | Exclude, string>) => void ++>f4 : (obj: Record | 'c', string>) => void >a : string >b : string >obj : Record<"c" | Exclude, string> \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints2.types b/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints2.types index 98ba265c1a1..f1da9e2f0e9 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints2.types +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints2.types @@ -59,7 +59,7 @@ type Mapped4 = { }; function f4(obj: Mapped4, key: keyof Mapped4) { ->f4 : (obj: Mapped4, key: K) => void +>f4 : (obj: Mapped4, key: keyof Mapped4) => void >obj : Mapped4 >key : K @@ -169,9 +169,9 @@ function validate(obj: T, bounds: NumericBoundsOf) { >key : string >val : any >Object.entries(obj) : [string, any][] ->Object.entries : { (o: ArrayLike | { [s: string]: T_1; }): [string, T_1][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T_1; } | ArrayLike): [string, T_1][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T_1; }): [string, T_1][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T_1; } | ArrayLike): [string, T_1][]; (o: {}): [string, any][]; } >obj : T const boundsForKey = bounds[key as keyof NumericBoundsOf]; diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints2.types.diff b/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints2.types.diff deleted file mode 100644 index 79013af57bf..00000000000 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeConstraints2.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.mappedTypeConstraints2.types -+++ new.mappedTypeConstraints2.types -@@= skipped -58, +58 lines =@@ - }; - - function f4(obj: Mapped4, key: keyof Mapped4) { -->f4 : (obj: Mapped4, key: keyof Mapped4) => void -+>f4 : (obj: Mapped4, key: K) => void - >obj : Mapped4 - >key : K - -@@= skipped -110, +110 lines =@@ - >key : string - >val : any - >Object.entries(obj) : [string, any][] -->Object.entries : { (o: { [s: string]: T_1; } | ArrayLike): [string, T_1][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T_1; }): [string, T_1][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T_1; } | ArrayLike): [string, T_1][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T_1; }): [string, T_1][]; (o: {}): [string, any][]; } - >obj : T - - const boundsForKey = bounds[key as keyof NumericBoundsOf]; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.errors.txt b/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.errors.txt index 66658894275..f687b6b0bfe 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.errors.txt @@ -225,7 +225,7 @@ mappedTypeErrors.ts(155,17): error TS2339: Property 'foo' does not exist on type let x3: { [P in keyof T2]: T2[P]} = { a: 'no' }; // Error ~ !!! error TS2322: Type 'string' is not assignable to type 'number'. -!!! related TS6500 mappedTypeErrors.ts:129:13: The expected type comes from property 'a' which is declared here on type '{ [x: string]: any; a?: number | undefined; }' +!!! related TS6500 mappedTypeErrors.ts:129:13: The expected type comes from property 'a' which is declared here on type '{ [x: string]: any; a?: number; }' // Repro from #13044 diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.errors.txt.diff index 630fdb3a4bb..0c0f7abbd4f 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.errors.txt.diff @@ -19,4 +19,13 @@ +!!! error TS2741: Property 'y' is missing in type '{ x: number; }' but required in type 'Readonly<{ x: number; y: number; }>'. !!! related TS2728 mappedTypeErrors.ts:75:37: 'y' is declared here. let x2 = objAndReadonly({ x: 0, y: 0 }, { x: 1, y: 1 }); - let x3 = objAndReadonly({ x: 0, y: 0 }, { x: 1, y: 1, z: 1 }); // Error \ No newline at end of file + let x3 = objAndReadonly({ x: 0, y: 0 }, { x: 1, y: 1, z: 1 }); // Error +@@= skipped -83, +82 lines =@@ + let x3: { [P in keyof T2]: T2[P]} = { a: 'no' }; // Error + ~ + !!! error TS2322: Type 'string' is not assignable to type 'number'. +-!!! related TS6500 mappedTypeErrors.ts:129:13: The expected type comes from property 'a' which is declared here on type '{ [x: string]: any; a?: number | undefined; }' ++!!! related TS6500 mappedTypeErrors.ts:129:13: The expected type comes from property 'a' which is declared here on type '{ [x: string]: any; a?: number; }' + + // Repro from #13044 + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.types b/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.types index b530d8e0486..fd1533220f5 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.types +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.types @@ -88,7 +88,7 @@ function f3(x: T) { } function f4(x: T) { ->f4 : (x: T) => void +>f4 : (x: T) => void >x : T let y: Pick; @@ -468,7 +468,7 @@ let x2: Partial = { a: 'no' }; // Error >'no' : "no" let x3: { [P in keyof T2]: T2[P]} = { a: 'no' }; // Error ->x3 : { [x: string]: any; a?: number | undefined; } +>x3 : { [x: string]: any; a?: number; } >{ a: 'no' } : { a: string; } >a : string >'no' : "no" diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.types.diff b/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.types.diff index 94a9f0a01e2..a58f9738470 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.types.diff +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeErrors.types.diff @@ -1,11 +1,11 @@ --- old.mappedTypeErrors.types +++ new.mappedTypeErrors.types -@@= skipped -87, +87 lines =@@ - } +@@= skipped -467, +467 lines =@@ + >'no' : "no" - function f4(x: T) { -->f4 : (x: T) => void -+>f4 : (x: T) => void - >x : T - - let y: Pick; \ No newline at end of file + let x3: { [P in keyof T2]: T2[P]} = { a: 'no' }; // Error +->x3 : { [x: string]: any; a?: number | undefined; } ++>x3 : { [x: string]: any; a?: number; } + >{ a: 'no' } : { a: string; } + >a : string + >'no' : "no" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeModifiers.types b/testdata/baselines/reference/submodule/conformance/mappedTypeModifiers.types index 8c377a482bf..875c12413b7 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeModifiers.types +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeModifiers.types @@ -231,14 +231,14 @@ function f1(x: Partial) { (x["other"] || 0).toFixed(); >(x["other"] || 0).toFixed() : string ->(x["other"] || 0).toFixed : (fractionDigits?: number | undefined) => string +>(x["other"] || 0).toFixed : (fractionDigits?: number) => string >(x["other"] || 0) : number >x["other"] || 0 : number >x["other"] : number | undefined >x : Partial >"other" : "other" >0 : 0 ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } function f2(x: Readonly) { @@ -252,11 +252,11 @@ function f2(x: Readonly) { x["other"].toFixed(); >x["other"].toFixed() : string ->x["other"].toFixed : (fractionDigits?: number | undefined) => string +>x["other"].toFixed : (fractionDigits?: number) => string >x["other"] : number >x : Readonly >"other" : "other" ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } function f3(x: Boxified) { @@ -270,17 +270,17 @@ function f3(x: Boxified) { x["other"].x.toFixed(); >x["other"].x.toFixed() : string ->x["other"].x.toFixed : (fractionDigits?: number | undefined) => string +>x["other"].x.toFixed : (fractionDigits?: number) => string >x["other"].x : number >x["other"] : { x: number; } >x : Boxified >"other" : "other" >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } function f4(x: { [P in keyof Foo]: Foo[P] }) { ->f4 : (x: { [x: string]: number; prop: number; }) => void +>f4 : (x: { [P in keyof Foo]: Foo[P]; }) => void >x : { [x: string]: number; prop: number; } x.prop; // ok @@ -290,10 +290,10 @@ function f4(x: { [P in keyof Foo]: Foo[P] }) { x["other"].toFixed(); >x["other"].toFixed() : string ->x["other"].toFixed : (fractionDigits?: number | undefined) => string +>x["other"].toFixed : (fractionDigits?: number) => string >x["other"] : number >x : { [x: string]: number; prop: number; } >"other" : "other" ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeModifiers.types.diff b/testdata/baselines/reference/submodule/conformance/mappedTypeModifiers.types.diff deleted file mode 100644 index b4e2c4608b6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeModifiers.types.diff +++ /dev/null @@ -1,66 +0,0 @@ ---- old.mappedTypeModifiers.types -+++ new.mappedTypeModifiers.types -@@= skipped -230, +230 lines =@@ - - (x["other"] || 0).toFixed(); - >(x["other"] || 0).toFixed() : string -->(x["other"] || 0).toFixed : (fractionDigits?: number) => string -+>(x["other"] || 0).toFixed : (fractionDigits?: number | undefined) => string - >(x["other"] || 0) : number - >x["other"] || 0 : number - >x["other"] : number | undefined - >x : Partial - >"other" : "other" - >0 : 0 -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - - function f2(x: Readonly) { -@@= skipped -21, +21 lines =@@ - - x["other"].toFixed(); - >x["other"].toFixed() : string -->x["other"].toFixed : (fractionDigits?: number) => string -+>x["other"].toFixed : (fractionDigits?: number | undefined) => string - >x["other"] : number - >x : Readonly - >"other" : "other" -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - - function f3(x: Boxified) { -@@= skipped -18, +18 lines =@@ - - x["other"].x.toFixed(); - >x["other"].x.toFixed() : string -->x["other"].x.toFixed : (fractionDigits?: number) => string -+>x["other"].x.toFixed : (fractionDigits?: number | undefined) => string - >x["other"].x : number - >x["other"] : { x: number; } - >x : Boxified - >"other" : "other" - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - - function f4(x: { [P in keyof Foo]: Foo[P] }) { -->f4 : (x: { [P in keyof Foo]: Foo[P]; }) => void -+>f4 : (x: { [x: string]: number; prop: number; }) => void - >x : { [x: string]: number; prop: number; } - - x.prop; // ok -@@= skipped -20, +20 lines =@@ - - x["other"].toFixed(); - >x["other"].toFixed() : string -->x["other"].toFixed : (fractionDigits?: number) => string -+>x["other"].toFixed : (fractionDigits?: number | undefined) => string - >x["other"] : number - >x : { [x: string]: number; prop: number; } - >"other" : "other" -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeProperties.types b/testdata/baselines/reference/submodule/conformance/mappedTypeProperties.types index 36e2d611b39..e1594b996e0 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeProperties.types +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeProperties.types @@ -37,7 +37,7 @@ type AfterMethod = { [placeType in PlaceType]?: void; model(duration: number): 'hour' | 'day'; ->model : (duration: number) => "day" | "hour" +>model : (duration: number) => 'hour' | 'day' >duration : number } diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeProperties.types.diff b/testdata/baselines/reference/submodule/conformance/mappedTypeProperties.types.diff index 863d6fd364f..61625c25b4e 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeProperties.types.diff +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeProperties.types.diff @@ -5,6 +5,6 @@ [placeType in PlaceType]?: void; model(duration: number): 'hour' | 'day'; ->model : (duration: number) => "hour" | "day" -+>model : (duration: number) => "day" | "hour" ++>model : (duration: number) => 'hour' | 'day' >duration : number } diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeWithAny.types b/testdata/baselines/reference/submodule/conformance/mappedTypeWithAny.types index f2248ae3560..d579f74c2c1 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeWithAny.types +++ b/testdata/baselines/reference/submodule/conformance/mappedTypeWithAny.types @@ -79,7 +79,7 @@ type IndirectArrayish = Objectish; >IndirectArrayish : Objectish function bar(arrayish: Arrayish, objectish: Objectish, indirectArrayish: IndirectArrayish) { ->bar : (arrayish: any[], objectish: Objectish, indirectArrayish: Objectish) => void +>bar : (arrayish: Arrayish, objectish: Objectish, indirectArrayish: IndirectArrayish) => void >arrayish : any[] >objectish : Objectish >indirectArrayish : Objectish diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypeWithAny.types.diff b/testdata/baselines/reference/submodule/conformance/mappedTypeWithAny.types.diff deleted file mode 100644 index 5722ece950a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/mappedTypeWithAny.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.mappedTypeWithAny.types -+++ new.mappedTypeWithAny.types -@@= skipped -78, +78 lines =@@ - >IndirectArrayish : Objectish - - function bar(arrayish: Arrayish, objectish: Objectish, indirectArrayish: IndirectArrayish) { -->bar : (arrayish: Arrayish, objectish: Objectish, indirectArrayish: IndirectArrayish) => void -+>bar : (arrayish: any[], objectish: Objectish, indirectArrayish: Objectish) => void - >arrayish : any[] - >objectish : Objectish - >indirectArrayish : Objectish \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypesArraysTuples.types b/testdata/baselines/reference/submodule/conformance/mappedTypesArraysTuples.types index 6dc9409f44b..42385b0edbf 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypesArraysTuples.types +++ b/testdata/baselines/reference/submodule/conformance/mappedTypesArraysTuples.types @@ -144,7 +144,7 @@ let y21 = nonpartial(x21); >x21 : (number | undefined)[] declare let x22: { a: number | undefined, b?: string[] }; ->x22 : { a: number | undefined; b?: string[] | undefined; } +>x22 : { a: number | undefined; b?: string[]; } >a : number | undefined >b : string[] | undefined @@ -152,7 +152,7 @@ let y22 = nonpartial(x22); >y22 : { a: number; b: string[]; } >nonpartial(x22) : { a: number; b: string[]; } >nonpartial : (x: Partial) => T ->x22 : { a: number | undefined; b?: string[] | undefined; } +>x22 : { a: number | undefined; b?: string[]; } type __Awaited = T extends PromiseLike ? U : T; >__Awaited : __Awaited diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypesArraysTuples.types.diff b/testdata/baselines/reference/submodule/conformance/mappedTypesArraysTuples.types.diff deleted file mode 100644 index f8f9dd96654..00000000000 --- a/testdata/baselines/reference/submodule/conformance/mappedTypesArraysTuples.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.mappedTypesArraysTuples.types -+++ new.mappedTypesArraysTuples.types -@@= skipped -143, +143 lines =@@ - >x21 : (number | undefined)[] - - declare let x22: { a: number | undefined, b?: string[] }; -->x22 : { a: number | undefined; b?: string[]; } -+>x22 : { a: number | undefined; b?: string[] | undefined; } - >a : number | undefined - >b : string[] | undefined - -@@= skipped -8, +8 lines =@@ - >y22 : { a: number; b: string[]; } - >nonpartial(x22) : { a: number; b: string[]; } - >nonpartial : (x: Partial) => T -->x22 : { a: number | undefined; b?: string[]; } -+>x22 : { a: number | undefined; b?: string[] | undefined; } - - type __Awaited = T extends PromiseLike ? U : T; - >__Awaited : __Awaited \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypesGenericTuples2.types b/testdata/baselines/reference/submodule/conformance/mappedTypesGenericTuples2.types index 24cfee61c7b..865e3ff6fcb 100644 --- a/testdata/baselines/reference/submodule/conformance/mappedTypesGenericTuples2.types +++ b/testdata/baselines/reference/submodule/conformance/mappedTypesGenericTuples2.types @@ -32,9 +32,9 @@ Promise.all([getT(), ...getT()]).then((result) => { const tail = result.slice(1); // any[] >tail : any[] >result.slice(1) : any[] ->result.slice : (start?: number | undefined, end?: number | undefined) => any[] +>result.slice : (start?: number, end?: number) => any[] >result : [string, ...any[]] ->slice : (start?: number | undefined, end?: number | undefined) => any[] +>slice : (start?: number, end?: number) => any[] >1 : 1 tail satisfies string[]; // ok diff --git a/testdata/baselines/reference/submodule/conformance/mappedTypesGenericTuples2.types.diff b/testdata/baselines/reference/submodule/conformance/mappedTypesGenericTuples2.types.diff deleted file mode 100644 index 0cc5eacf17b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/mappedTypesGenericTuples2.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.mappedTypesGenericTuples2.types -+++ new.mappedTypesGenericTuples2.types -@@= skipped -31, +31 lines =@@ - const tail = result.slice(1); // any[] - >tail : any[] - >result.slice(1) : any[] -->result.slice : (start?: number, end?: number) => any[] -+>result.slice : (start?: number | undefined, end?: number | undefined) => any[] - >result : [string, ...any[]] -->slice : (start?: number, end?: number) => any[] -+>slice : (start?: number | undefined, end?: number | undefined) => any[] - >1 : 1 - - tail satisfies string[]; // ok \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPrivateOverloads.types b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPrivateOverloads.types index a153ad0dc47..7de6d98de9a 100644 --- a/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPrivateOverloads.types +++ b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPrivateOverloads.types @@ -19,20 +19,20 @@ class C { >y : any private bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : "hi" private bar(x: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : string private bar(x: number, y: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : number >y : string private bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : any >y : any @@ -51,20 +51,20 @@ class C { >y : any private static bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : "hi" private static bar(x: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : string private static bar(x: number, y: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : number >y : string private static bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : any >y : any } @@ -87,20 +87,20 @@ class D { >y : any private bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : "hi" private bar(x: string); ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : string private bar(x: T, y: T); ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : T >y : T private bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : any >y : any @@ -119,20 +119,20 @@ class D { >y : any private static bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } >x : "hi" private static bar(x: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } >x : string private static bar(x: number, y: number); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } >x : number >y : number private static bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } >x : any >y : any @@ -171,8 +171,8 @@ var r3 = C.foo(1); // error var r4 = D.bar(''); // error >r4 : any >D.bar('') : any ->D.bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } +>D.bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } >D : typeof D ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPrivateOverloads.types.diff b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPrivateOverloads.types.diff new file mode 100644 index 00000000000..5248b46a9ed --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPrivateOverloads.types.diff @@ -0,0 +1,112 @@ +--- old.memberFunctionsWithPrivateOverloads.types ++++ new.memberFunctionsWithPrivateOverloads.types +@@= skipped -18, +18 lines =@@ + >y : any + + private bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : "hi" + + private bar(x: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : string + + private bar(x: number, y: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : number + >y : string + + private bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : any + >y : any + +@@= skipped -32, +32 lines =@@ + >y : any + + private static bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : "hi" + + private static bar(x: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : string + + private static bar(x: number, y: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : number + >y : string + + private static bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : any + >y : any + } +@@= skipped -36, +36 lines =@@ + >y : any + + private bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : "hi" + + private bar(x: string); +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : string + + private bar(x: T, y: T); +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : T + >y : T + + private bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : any + >y : any + +@@= skipped -32, +32 lines =@@ + >y : any + + private static bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } + >x : "hi" + + private static bar(x: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } + >x : string + + private static bar(x: number, y: number); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } + >x : number + >y : number + + private static bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } + >x : any + >y : any + +@@= skipped -52, +52 lines =@@ + var r4 = D.bar(''); // error + >r4 : any + >D.bar('') : any +->D.bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } ++>D.bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } + >D : typeof D +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: number): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: number): any; } + >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicOverloads.types b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicOverloads.types index 2cc6c26c70c..dbf57b6ae3a 100644 --- a/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicOverloads.types +++ b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicOverloads.types @@ -19,20 +19,20 @@ class C { >y : any public bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : "hi" public bar(x: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : string public bar(x: number, y: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : number >y : string public bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : any >y : any @@ -51,20 +51,20 @@ class C { >y : any public static bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : "hi" public static bar(x: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : string public static bar(x: number, y: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : number >y : string public static bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : any >y : any } @@ -87,20 +87,20 @@ class D { >y : any public bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : "hi" public bar(x: string); ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : string public bar(x: T, y: T); ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : T >y : T public bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : any >y : any @@ -119,20 +119,20 @@ class D { >y : any public static bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : "hi" public static bar(x: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : string public static bar(x: number, y: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : number >y : string public static bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : any >y : any diff --git a/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicOverloads.types.diff b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicOverloads.types.diff new file mode 100644 index 00000000000..75737a08a4b --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicOverloads.types.diff @@ -0,0 +1,101 @@ +--- old.memberFunctionsWithPublicOverloads.types ++++ new.memberFunctionsWithPublicOverloads.types +@@= skipped -18, +18 lines =@@ + >y : any + + public bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : "hi" + + public bar(x: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : string + + public bar(x: number, y: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : number + >y : string + + public bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : any + >y : any + +@@= skipped -32, +32 lines =@@ + >y : any + + public static bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : "hi" + + public static bar(x: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : string + + public static bar(x: number, y: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : number + >y : string + + public static bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : any + >y : any + } +@@= skipped -36, +36 lines =@@ + >y : any + + public bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : "hi" + + public bar(x: string); +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : string + + public bar(x: T, y: T); +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : T + >y : T + + public bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : any + >y : any + +@@= skipped -32, +32 lines =@@ + >y : any + + public static bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : "hi" + + public static bar(x: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : string + + public static bar(x: number, y: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : number + >y : string + + public static bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : any + >y : any diff --git a/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicPrivateOverloads.types b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicPrivateOverloads.types index ba499fc24a6..90d7c3a3649 100644 --- a/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicPrivateOverloads.types +++ b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicPrivateOverloads.types @@ -19,20 +19,20 @@ class C { >y : any private bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : "hi" public bar(x: string); // error ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : string private bar(x: number, y: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : number >y : string private bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : any >y : any @@ -65,38 +65,38 @@ class C { >y : any private static bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : "hi" public static bar(x: string); // error ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : string private static bar(x: number, y: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : number >y : string private static bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : any >y : any protected static baz(x: 'hi'); ->baz : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>baz : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : "hi" public static baz(x: string); // error ->baz : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>baz : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : string protected static baz(x: number, y: string); ->baz : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>baz : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : number >y : string protected static baz(x: any, y?: any) { } ->baz : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>baz : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : any >y : any } @@ -119,20 +119,20 @@ class D { >y : any private bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : "hi" public bar(x: string); // error ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : string private bar(x: T, y: T); ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : T >y : T private bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } >x : any >y : any @@ -165,20 +165,20 @@ class D { >y : any private static bar(x: 'hi'); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : "hi" public static bar(x: string); // error ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : string private static bar(x: number, y: string); ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : number >y : string private static bar(x: any, y?: any) { } ->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } +>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } >x : any >y : any diff --git a/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicPrivateOverloads.types.diff b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicPrivateOverloads.types.diff new file mode 100644 index 00000000000..f80bd861cc2 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/memberFunctionsWithPublicPrivateOverloads.types.diff @@ -0,0 +1,123 @@ +--- old.memberFunctionsWithPublicPrivateOverloads.types ++++ new.memberFunctionsWithPublicPrivateOverloads.types +@@= skipped -18, +18 lines =@@ + >y : any + + private bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : "hi" + + public bar(x: string); // error +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : string + + private bar(x: number, y: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : number + >y : string + + private bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : any + >y : any + +@@= skipped -46, +46 lines =@@ + >y : any + + private static bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : "hi" + + public static bar(x: string); // error +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : string + + private static bar(x: number, y: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : number + >y : string + + private static bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : any + >y : any + + protected static baz(x: 'hi'); +->baz : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>baz : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : "hi" + + public static baz(x: string); // error +->baz : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>baz : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : string + + protected static baz(x: number, y: string); +->baz : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>baz : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : number + >y : string + + protected static baz(x: any, y?: any) { } +->baz : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>baz : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : any + >y : any + } +@@= skipped -54, +54 lines =@@ + >y : any + + private bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : "hi" + + public bar(x: string); // error +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : string + + private bar(x: T, y: T); +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : T + >y : T + + private bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: T, y: T): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: T, y: T): any; } + >x : any + >y : any + +@@= skipped -46, +46 lines =@@ + >y : any + + private static bar(x: 'hi'); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : "hi" + + public static bar(x: string); // error +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : string + + private static bar(x: number, y: string); +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : number + >y : string + + private static bar(x: any, y?: any) { } +->bar : { (x: "hi"): any; (x: string): any; (x: number, y: string): any; } ++>bar : { (x: 'hi'): any; (x: string): any; (x: number, y: string): any; } + >x : any + >y : any diff --git a/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads.types b/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads.types index 1955809ca07..d0bf11e3d69 100644 --- a/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads.types +++ b/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads.types @@ -4,7 +4,7 @@ // Object type literals permit overloads with optionality but they must match var c: { ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } func4?(x: number): number; >func4 : { (x: number): number; (s: string): string; } | undefined @@ -27,7 +27,7 @@ var c: { }; var c2: { ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } func4(x: T): number; >func4 : { (x: T): number; (s: T): string; } | undefined diff --git a/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads.types.diff b/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads.types.diff index 19672c0877e..b01d974997e 100644 --- a/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads.types.diff +++ b/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads.types.diff @@ -1,20 +1,7 @@ --- old.methodSignaturesWithOverloads.types +++ new.methodSignaturesWithOverloads.types -@@= skipped -3, +3 lines =@@ - // Object type literals permit overloads with optionality but they must match - - var c: { -->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -+>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } - - func4?(x: number): number; - >func4 : { (x: number): number; (s: string): string; } | undefined -@@= skipped -23, +23 lines =@@ - }; - - var c2: { -->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -+>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +@@= skipped -29, +29 lines =@@ + >c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } func4(x: T): number; ->func4 : { (x: T): number; (s: T_1): string; } | undefined diff --git a/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads2.types b/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads2.types index d5b8542fac7..6496f3a0d10 100644 --- a/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads2.types +++ b/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads2.types @@ -4,7 +4,7 @@ // Object type literals permit overloads with optionality but they must match var c: { ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } func4?(x: number): number; >func4 : { (x: number): number; (s: string): string; } | undefined @@ -30,24 +30,24 @@ var c: { c.func4 = c.func5; >c.func4 = c.func5 : { (x: number): number; (s: string): string; } | undefined >c.func4 : { (x: number): number; (s: string): string; } | undefined ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } >func4 : { (x: number): number; (s: string): string; } | undefined >c.func5 : { (x: number): number; (s: string): string; } | undefined ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } >func5 : { (x: number): number; (s: string): string; } | undefined c.func5 = c.func4; >c.func5 = c.func4 : { (x: number): number; (s: string): string; } | undefined >c.func5 : { (x: number): number; (s: string): string; } | undefined ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } >func5 : { (x: number): number; (s: string): string; } | undefined >c.func4 : { (x: number): number; (s: string): string; } | undefined ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } >func4 : { (x: number): number; (s: string): string; } | undefined var c2: { ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } func4?(x: T): number; >func4 : { (x: T): number; (s: T): string; } | undefined @@ -73,18 +73,18 @@ var c2: { c2.func4 = c2.func5; >c2.func4 = c2.func5 : { (x: T): number; (s: T): string; } | undefined >c2.func4 : { (x: T): number; (s: T): string; } | undefined ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } >func4 : { (x: T): number; (s: T): string; } | undefined >c2.func5 : { (x: T): number; (s: T): string; } | undefined ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } >func5 : { (x: T): number; (s: T): string; } | undefined c2.func5 = c2.func4; >c2.func5 = c2.func4 : { (x: T): number; (s: T): string; } | undefined >c2.func5 : { (x: T): number; (s: T): string; } | undefined ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } >func5 : { (x: T): number; (s: T): string; } | undefined >c2.func4 : { (x: T): number; (s: T): string; } | undefined ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } >func4 : { (x: T): number; (s: T): string; } | undefined diff --git a/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads2.types.diff b/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads2.types.diff index 6aede5e098b..b5dd8235cb0 100644 --- a/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/methodSignaturesWithOverloads2.types.diff @@ -1,41 +1,7 @@ --- old.methodSignaturesWithOverloads2.types +++ new.methodSignaturesWithOverloads2.types -@@= skipped -3, +3 lines =@@ - // Object type literals permit overloads with optionality but they must match - - var c: { -->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -+>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } - - func4?(x: number): number; - >func4 : { (x: number): number; (s: string): string; } | undefined -@@= skipped -26, +26 lines =@@ - c.func4 = c.func5; - >c.func4 = c.func5 : { (x: number): number; (s: string): string; } | undefined - >c.func4 : { (x: number): number; (s: string): string; } | undefined -->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -+>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } - >func4 : { (x: number): number; (s: string): string; } | undefined - >c.func5 : { (x: number): number; (s: string): string; } | undefined -->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -+>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } - >func5 : { (x: number): number; (s: string): string; } | undefined - - c.func5 = c.func4; - >c.func5 = c.func4 : { (x: number): number; (s: string): string; } | undefined - >c.func5 : { (x: number): number; (s: string): string; } | undefined -->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -+>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } - >func5 : { (x: number): number; (s: string): string; } | undefined - >c.func4 : { (x: number): number; (s: string): string; } | undefined -->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -+>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } - >func4 : { (x: number): number; (s: string): string; } | undefined - - - var c2: { -->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -+>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +@@= skipped -49, +49 lines =@@ + >c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } func4?(x: T): number; ->func4 : { (x: T): number; (s: T_1): string; } | undefined @@ -47,26 +13,4 @@ +>func4 : { (x: T): number; (s: T): string; } | undefined >s : T - func5?: { -@@= skipped -43, +43 lines =@@ - c2.func4 = c2.func5; - >c2.func4 = c2.func5 : { (x: T): number; (s: T): string; } | undefined - >c2.func4 : { (x: T): number; (s: T): string; } | undefined -->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -+>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } - >func4 : { (x: T): number; (s: T): string; } | undefined - >c2.func5 : { (x: T): number; (s: T): string; } | undefined -->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -+>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } - >func5 : { (x: T): number; (s: T): string; } | undefined - - c2.func5 = c2.func4; - >c2.func5 = c2.func4 : { (x: T): number; (s: T): string; } | undefined - >c2.func5 : { (x: T): number; (s: T): string; } | undefined -->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -+>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } - >func5 : { (x: T): number; (s: T): string; } | undefined - >c2.func4 : { (x: T): number; (s: T): string; } | undefined -->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -+>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } - >func4 : { (x: T): number; (s: T): string; } | undefined + func5?: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mixinAccessModifiers.types b/testdata/baselines/reference/submodule/conformance/mixinAccessModifiers.types index 6f00e31ed66..cbd90066401 100644 --- a/testdata/baselines/reference/submodule/conformance/mixinAccessModifiers.types +++ b/testdata/baselines/reference/submodule/conformance/mixinAccessModifiers.types @@ -78,7 +78,7 @@ class Public2 { } function f1(x: Private & Private2) { ->f1 : (x: never) => void +>f1 : (x: Private & Private2) => void >x : never x.p; // Error, private constituent makes property inaccessible @@ -88,7 +88,7 @@ function f1(x: Private & Private2) { } function f2(x: Private & Protected) { ->f2 : (x: never) => void +>f2 : (x: Private & Protected) => void >x : never x.p; // Error, private constituent makes property inaccessible @@ -98,7 +98,7 @@ function f2(x: Private & Protected) { } function f3(x: Private & Public) { ->f3 : (x: never) => void +>f3 : (x: Private & Public) => void >x : never x.p; // Error, private constituent makes property inaccessible @@ -330,7 +330,7 @@ class ProtectedGeneric2 { } function f7(x: ProtectedGeneric<{}> & ProtectedGeneric<{}>) { ->f7 : (x: ProtectedGeneric<{}>) => void +>f7 : (x: ProtectedGeneric<{}> & ProtectedGeneric<{}>) => void >x : ProtectedGeneric<{}> x.privateMethod(); // Error, private constituent makes method inaccessible @@ -347,7 +347,7 @@ function f7(x: ProtectedGeneric<{}> & ProtectedGeneric<{}>) { } function f8(x: ProtectedGeneric<{a: void;}> & ProtectedGeneric2<{a:void;b:void;}>) { ->f8 : (x: never) => void +>f8 : (x: ProtectedGeneric<{ a: void; }> & ProtectedGeneric2<{ a: void; b: void; }>) => void >x : never >a : void >a : void diff --git a/testdata/baselines/reference/submodule/conformance/mixinAccessModifiers.types.diff b/testdata/baselines/reference/submodule/conformance/mixinAccessModifiers.types.diff deleted file mode 100644 index 2175a4f7875..00000000000 --- a/testdata/baselines/reference/submodule/conformance/mixinAccessModifiers.types.diff +++ /dev/null @@ -1,47 +0,0 @@ ---- old.mixinAccessModifiers.types -+++ new.mixinAccessModifiers.types -@@= skipped -77, +77 lines =@@ - } - - function f1(x: Private & Private2) { -->f1 : (x: Private & Private2) => void -+>f1 : (x: never) => void - >x : never - - x.p; // Error, private constituent makes property inaccessible -@@= skipped -10, +10 lines =@@ - } - - function f2(x: Private & Protected) { -->f2 : (x: Private & Protected) => void -+>f2 : (x: never) => void - >x : never - - x.p; // Error, private constituent makes property inaccessible -@@= skipped -10, +10 lines =@@ - } - - function f3(x: Private & Public) { -->f3 : (x: Private & Public) => void -+>f3 : (x: never) => void - >x : never - - x.p; // Error, private constituent makes property inaccessible -@@= skipped -232, +232 lines =@@ - } - - function f7(x: ProtectedGeneric<{}> & ProtectedGeneric<{}>) { -->f7 : (x: ProtectedGeneric<{}> & ProtectedGeneric<{}>) => void -+>f7 : (x: ProtectedGeneric<{}>) => void - >x : ProtectedGeneric<{}> - - x.privateMethod(); // Error, private constituent makes method inaccessible -@@= skipped -17, +17 lines =@@ - } - - function f8(x: ProtectedGeneric<{a: void;}> & ProtectedGeneric2<{a:void;b:void;}>) { -->f8 : (x: ProtectedGeneric<{ a: void; }> & ProtectedGeneric2<{ a: void; b: void; }>) => void -+>f8 : (x: never) => void - >x : never - >a : void - >a : void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mixinAccessors1.types b/testdata/baselines/reference/submodule/conformance/mixinAccessors1.types index 7d56103e4ac..dc37accf299 100644 --- a/testdata/baselines/reference/submodule/conformance/mixinAccessors1.types +++ b/testdata/baselines/reference/submodule/conformance/mixinAccessors1.types @@ -4,7 +4,7 @@ // https://github.com/microsoft/TypeScript/issues/58790 function mixin(superclass: T) { ->mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >args : any[] >superclass : T @@ -17,9 +17,9 @@ function mixin(superclass: T) { return document.createElement("input"); >document.createElement("input") : HTMLInputElement ->document.createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } +>document.createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } >document : Document ->createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } +>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } >"input" : "input" } }; @@ -33,9 +33,9 @@ class BaseClass { return document.createElement("div"); >document.createElement("div") : HTMLDivElement ->document.createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } +>document.createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } >document : Document ->createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } +>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } >"div" : "div" } } @@ -43,7 +43,7 @@ class BaseClass { class MyClass extends mixin(BaseClass) { >MyClass : MyClass >mixin(BaseClass) : mixin.(Anonymous class) & BaseClass ->mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >BaseClass : typeof BaseClass get validationTarget(): HTMLElement { @@ -51,9 +51,9 @@ class MyClass extends mixin(BaseClass) { return document.createElement("select"); >document.createElement("select") : HTMLSelectElement ->document.createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } +>document.createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } >document : Document ->createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } +>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } >"select" : "select" } } diff --git a/testdata/baselines/reference/submodule/conformance/mixinAccessors1.types.diff b/testdata/baselines/reference/submodule/conformance/mixinAccessors1.types.diff index 285fe357e91..1cfac219b01 100644 --- a/testdata/baselines/reference/submodule/conformance/mixinAccessors1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/mixinAccessors1.types.diff @@ -5,7 +5,7 @@ function mixin(superclass: T) { ->mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T -+>mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T ++>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >args : any[] >superclass : T @@ -15,49 +15,14 @@ >superclass : {} get validationTarget(): HTMLElement { -@@= skipped -13, +13 lines =@@ - - return document.createElement("input"); - >document.createElement("input") : HTMLInputElement -->document.createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -+>document.createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } - >document : Document -->createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -+>createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } - >"input" : "input" - } - }; -@@= skipped -16, +16 lines =@@ - - return document.createElement("div"); - >document.createElement("div") : HTMLDivElement -->document.createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -+>document.createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } - >document : Document -->createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -+>createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } - >"div" : "div" - } - } +@@= skipped -38, +38 lines =@@ class MyClass extends mixin(BaseClass) { >MyClass : MyClass ->mixin(BaseClass) : mixin.(Anonymous class) & BaseClass ->mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin(BaseClass) : mixin.(Anonymous class) & BaseClass -+>mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T ++>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >BaseClass : typeof BaseClass - get validationTarget(): HTMLElement { -@@= skipped -18, +18 lines =@@ - - return document.createElement("select"); - >document.createElement("select") : HTMLSelectElement -->document.createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -+>document.createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } - >document : Document -->createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -+>createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; } - >"select" : "select" - } - } \ No newline at end of file + get validationTarget(): HTMLElement { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mixinAccessors2.types b/testdata/baselines/reference/submodule/conformance/mixinAccessors2.types index cd8be231c35..df8b6c9fc3c 100644 --- a/testdata/baselines/reference/submodule/conformance/mixinAccessors2.types +++ b/testdata/baselines/reference/submodule/conformance/mixinAccessors2.types @@ -2,7 +2,7 @@ === mixinAccessors2.ts === function mixin(superclass: T) { ->mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >args : any[] >superclass : T @@ -28,7 +28,7 @@ class BaseClass { class MyClass extends mixin(BaseClass) { >MyClass : MyClass >mixin(BaseClass) : mixin.(Anonymous class) & BaseClass ->mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >BaseClass : typeof BaseClass accessor name = ""; diff --git a/testdata/baselines/reference/submodule/conformance/mixinAccessors2.types.diff b/testdata/baselines/reference/submodule/conformance/mixinAccessors2.types.diff index a1890e6f76e..178b8ddbd8b 100644 --- a/testdata/baselines/reference/submodule/conformance/mixinAccessors2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/mixinAccessors2.types.diff @@ -5,7 +5,7 @@ === mixinAccessors2.ts === function mixin(superclass: T) { ->mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T -+>mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T ++>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >args : any[] >superclass : T @@ -22,7 +22,7 @@ ->mixin(BaseClass) : mixin.(Anonymous class) & BaseClass ->mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin(BaseClass) : mixin.(Anonymous class) & BaseClass -+>mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T ++>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >BaseClass : typeof BaseClass accessor name = ""; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/mixinAccessors3.types b/testdata/baselines/reference/submodule/conformance/mixinAccessors3.types index 631a996e8d2..b80628f0853 100644 --- a/testdata/baselines/reference/submodule/conformance/mixinAccessors3.types +++ b/testdata/baselines/reference/submodule/conformance/mixinAccessors3.types @@ -2,7 +2,7 @@ === mixinAccessors3.ts === function mixin(superclass: T) { ->mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >args : any[] >superclass : T @@ -31,7 +31,7 @@ class BaseClass { class MyClass extends mixin(BaseClass) { >MyClass : MyClass >mixin(BaseClass) : mixin.(Anonymous class) & BaseClass ->mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >BaseClass : typeof BaseClass get name() { diff --git a/testdata/baselines/reference/submodule/conformance/mixinAccessors3.types.diff b/testdata/baselines/reference/submodule/conformance/mixinAccessors3.types.diff index aa6b3008854..f3594adc55a 100644 --- a/testdata/baselines/reference/submodule/conformance/mixinAccessors3.types.diff +++ b/testdata/baselines/reference/submodule/conformance/mixinAccessors3.types.diff @@ -5,7 +5,7 @@ === mixinAccessors3.ts === function mixin(superclass: T) { ->mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T -+>mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T ++>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >args : any[] >superclass : T @@ -22,7 +22,7 @@ ->mixin(BaseClass) : mixin.(Anonymous class) & BaseClass ->mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T +>mixin(BaseClass) : mixin.(Anonymous class) & BaseClass -+>mixin : {}>(superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T ++>mixin : (superclass: T) => { new (...args: any[]): (Anonymous class); prototype: mixin.(Anonymous class); } & T >BaseClass : typeof BaseClass get name() { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.types b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.types index 87967f0f613..ab0f069a359 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.types +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.types @@ -59,7 +59,7 @@ module.exports = { * @param {import("./mod").literal} g */ function jstypes(a, b, c, d, e, f, g) { ->jstypes : (a: any, b: any, c: any, d: any, e: any, f: import("./mod").buz, g: any) => any +>jstypes : (a: import("./mod").Thing, b: import("./mod").AnotherThing, c: import("./mod").foo, d: import("./mod").qux, e: import("./mod").baz, f: import("./mod").buz, g: import("./mod").literal) => any >a : any >b : any >c : any @@ -104,7 +104,7 @@ function jstypes(a, b, c, d, e, f, g) { * @param {typeof import("./mod").literal} g */ function jsvalues(a, b, c, d, e, f, g) { ->jsvalues : (a: typeof Thing, b: typeof AnotherThing, c: () => number, d: () => number, e: () => number, f: any, g: string) => any +>jsvalues : (a: typeof import("./mod").Thing, b: typeof import("./mod").AnotherThing, c: typeof import("./mod").foo, d: typeof import("./mod").qux, e: typeof import("./mod").baz, f: typeof import("./mod").buz, g: typeof import("./mod").literal) => any >a : typeof Thing >b : typeof AnotherThing >c : () => number @@ -141,7 +141,7 @@ function jsvalues(a, b, c, d, e, f, g) { === index.ts === function types( ->types : (a: any, b: any, c: any, d: any, e: any, f: import("./mod").buz, g: any) => any +>types : (a: import('./mod').Thing, b: import('./mod').AnotherThing, c: import('./mod').foo, d: import('./mod').qux, e: import('./mod').baz, f: import('./mod').buz, g: import('./mod').literal) => any a: import('./mod').Thing, >a : any @@ -192,7 +192,7 @@ function types( } function values( ->values : (a: typeof Thing, b: typeof AnotherThing, c: () => number, d: () => number, e: () => number, f: any, g: string) => any +>values : (a: typeof import('./mod').Thing, b: typeof import('./mod').AnotherThing, c: typeof import('./mod').foo, d: typeof import('./mod').qux, e: typeof import('./mod').baz, f: typeof import('./mod').buz, g: typeof import('./mod').literal) => any a: typeof import('./mod').Thing, >a : typeof Thing diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.types.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.types.diff index 00df97665d1..032ac6d62a1 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.types.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.types.diff @@ -19,7 +19,7 @@ ->c : () => number ->d : () => number ->e : () => number -+>jstypes : (a: any, b: any, c: any, d: any, e: any, f: import("./mod").buz, g: any) => any ++>jstypes : (a: import("./mod").Thing, b: import("./mod").AnotherThing, c: import("./mod").foo, d: import("./mod").qux, e: import("./mod").baz, f: import("./mod").buz, g: import("./mod").literal) => any +>a : any +>b : any +>c : any @@ -77,21 +77,12 @@ } /** -@@= skipped -45, +45 lines =@@ - * @param {typeof import("./mod").literal} g - */ - function jsvalues(a, b, c, d, e, f, g) { -->jsvalues : (a: typeof import("./mod").Thing, b: typeof import("./mod").AnotherThing, c: typeof import("./mod").foo, d: typeof import("./mod").qux, e: typeof import("./mod").baz, f: typeof import("./mod").buz, g: typeof import("./mod").literal) => any -+>jsvalues : (a: typeof Thing, b: typeof AnotherThing, c: () => number, d: () => number, e: () => number, f: any, g: string) => any - >a : typeof Thing - >b : typeof AnotherThing - >c : () => number -@@= skipped -37, +37 lines =@@ +@@= skipped -82, +82 lines =@@ === index.ts === function types( ->types : (a: import("./mod").Thing, b: import("./mod").AnotherThing, c: import("./mod").foo, d: import("./mod").qux, e: import("./mod").baz, f: import("./mod").buz, g: import("./mod").literal) => any -+>types : (a: any, b: any, c: any, d: any, e: any, f: import("./mod").buz, g: any) => any ++>types : (a: import('./mod').Thing, b: import('./mod').AnotherThing, c: import('./mod').foo, d: import('./mod').qux, e: import('./mod').baz, f: import('./mod').buz, g: import('./mod').literal) => any a: import('./mod').Thing, >a : any @@ -100,7 +91,7 @@ function values( ->values : (a: typeof import("./mod").Thing, b: typeof import("./mod").AnotherThing, c: typeof import("./mod").foo, d: typeof import("./mod").qux, e: typeof import("./mod").baz, f: typeof import("./mod").buz, g: typeof import("./mod").literal) => any -+>values : (a: typeof Thing, b: typeof AnotherThing, c: () => number, d: () => number, e: () => number, f: any, g: string) => any ++>values : (a: typeof import('./mod').Thing, b: typeof import('./mod').AnotherThing, c: typeof import('./mod').foo, d: typeof import('./mod').qux, e: typeof import('./mod').baz, f: typeof import('./mod').buz, g: typeof import('./mod').literal) => any a: typeof import('./mod').Thing, >a : typeof Thing \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.types b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.types index cd5c5a8f33a..8c1b21c2091 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.types +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.types @@ -10,9 +10,9 @@ var mod1 = require('./mod1') mod1.toFixed(12) >mod1.toFixed(12) : string ->mod1.toFixed : (fractionDigits?: number | undefined) => string +>mod1.toFixed : (fractionDigits?: number) => string >mod1 : 1 ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string >12 : 12 mod1.f() // error, 'f' is not a property on 'number' diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.types.diff b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.types.diff index cd34ed083ea..9bbc38b930a 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.types.diff @@ -13,12 +13,10 @@ mod1.toFixed(12) >mod1.toFixed(12) : string -->mod1.toFixed : (fractionDigits?: number) => string + >mod1.toFixed : (fractionDigits?: number) => string ->mod1 : number -->toFixed : (fractionDigits?: number) => string -+>mod1.toFixed : (fractionDigits?: number | undefined) => string +>mod1 : 1 -+>toFixed : (fractionDigits?: number | undefined) => string + >toFixed : (fractionDigits?: number) => string >12 : 12 mod1.f() // error, 'f' is not a property on 'number' diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.types b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.types index 3b94b391227..f3b476d8061 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.types +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.types @@ -10,27 +10,27 @@ var mod1 = require('./mod1') mod1.justExport.toFixed() >mod1.justExport.toFixed() : string ->mod1.justExport.toFixed : (fractionDigits?: number | undefined) => string +>mod1.justExport.toFixed : (fractionDigits?: number) => string >mod1.justExport : number >mod1 : { justExport: number; bothBefore: number; bothAfter: number; } >justExport : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string mod1.bothBefore.toFixed() // error, 'toFixed' not on 'string | number' >mod1.bothBefore.toFixed() : string ->mod1.bothBefore.toFixed : (fractionDigits?: number | undefined) => string +>mod1.bothBefore.toFixed : (fractionDigits?: number) => string >mod1.bothBefore : number >mod1 : { justExport: number; bothBefore: number; bothAfter: number; } >bothBefore : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string mod1.bothAfter.toFixed() // error, 'toFixed' not on 'string | number' >mod1.bothAfter.toFixed() : string ->mod1.bothAfter.toFixed : (fractionDigits?: number | undefined) => string +>mod1.bothAfter.toFixed : (fractionDigits?: number) => string >mod1.bothAfter : number >mod1 : { justExport: number; bothBefore: number; bothAfter: number; } >bothAfter : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string mod1.justProperty.length >mod1.justProperty.length : any diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.types.diff b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.types.diff index 75dc6f37f94..2db4d6cc095 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.types.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.types.diff @@ -11,16 +11,14 @@ >require : (name: string) => any >'./mod1' : "./mod1" - mod1.justExport.toFixed() +@@= skipped -9, +9 lines =@@ >mod1.justExport.toFixed() : string -->mod1.justExport.toFixed : (fractionDigits?: number) => string -+>mod1.justExport.toFixed : (fractionDigits?: number | undefined) => string + >mod1.justExport.toFixed : (fractionDigits?: number) => string >mod1.justExport : number ->mod1 : { justExport: number; bothBefore: number | "string"; bothAfter: number | "string"; justProperty: "string"; } +>mod1 : { justExport: number; bothBefore: number; bothAfter: number; } >justExport : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string + >toFixed : (fractionDigits?: number) => string mod1.bothBefore.toFixed() // error, 'toFixed' not on 'string | number' ->mod1.bothBefore.toFixed() : any @@ -30,11 +28,11 @@ ->bothBefore : number | "string" ->toFixed : any +>mod1.bothBefore.toFixed() : string -+>mod1.bothBefore.toFixed : (fractionDigits?: number | undefined) => string ++>mod1.bothBefore.toFixed : (fractionDigits?: number) => string +>mod1.bothBefore : number +>mod1 : { justExport: number; bothBefore: number; bothAfter: number; } +>bothBefore : number -+>toFixed : (fractionDigits?: number | undefined) => string ++>toFixed : (fractionDigits?: number) => string mod1.bothAfter.toFixed() // error, 'toFixed' not on 'string | number' ->mod1.bothAfter.toFixed() : any @@ -44,11 +42,11 @@ ->bothAfter : number | "string" ->toFixed : any +>mod1.bothAfter.toFixed() : string -+>mod1.bothAfter.toFixed : (fractionDigits?: number | undefined) => string ++>mod1.bothAfter.toFixed : (fractionDigits?: number) => string +>mod1.bothAfter : number +>mod1 : { justExport: number; bothBefore: number; bothAfter: number; } +>bothAfter : number -+>toFixed : (fractionDigits?: number | undefined) => string ++>toFixed : (fractionDigits?: number) => string mod1.justProperty.length ->mod1.justProperty.length : number @@ -64,7 +62,7 @@ === requires.d.ts === declare var module: { exports: any }; -@@= skipped -49, +49 lines =@@ +@@= skipped -40, +40 lines =@@ /// module.exports.bothBefore = 'string' >module.exports.bothBefore = 'string' : "string" diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.types b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.types index a1550fd0680..48e342babc2 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.types +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.types @@ -10,27 +10,27 @@ var mod1 = require('./mod1') mod1.justExport.toFixed() >mod1.justExport.toFixed() : string ->mod1.justExport.toFixed : (fractionDigits?: number | undefined) => string +>mod1.justExport.toFixed : (fractionDigits?: number) => string >mod1.justExport : number >mod1 : { (): void; justExport: number; bothBefore: number; bothAfter: number; } >justExport : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string mod1.bothBefore.toFixed() // error >mod1.bothBefore.toFixed() : string ->mod1.bothBefore.toFixed : (fractionDigits?: number | undefined) => string +>mod1.bothBefore.toFixed : (fractionDigits?: number) => string >mod1.bothBefore : number >mod1 : { (): void; justExport: number; bothBefore: number; bothAfter: number; } >bothBefore : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string mod1.bothAfter.toFixed() >mod1.bothAfter.toFixed() : string ->mod1.bothAfter.toFixed : (fractionDigits?: number | undefined) => string +>mod1.bothAfter.toFixed : (fractionDigits?: number) => string >mod1.bothAfter : number >mod1 : { (): void; justExport: number; bothBefore: number; bothAfter: number; } >bothAfter : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string mod1.justProperty.length >mod1.justProperty.length : any diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.types.diff b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.types.diff index 100c44dea8c..ad7a4d36851 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.types.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.types.diff @@ -11,16 +11,14 @@ >require : (name: string) => any >'./mod1' : "./mod1" - mod1.justExport.toFixed() +@@= skipped -9, +9 lines =@@ >mod1.justExport.toFixed() : string -->mod1.justExport.toFixed : (fractionDigits?: number) => string -+>mod1.justExport.toFixed : (fractionDigits?: number | undefined) => string + >mod1.justExport.toFixed : (fractionDigits?: number) => string >mod1.justExport : number ->mod1 : typeof mod1 +>mod1 : { (): void; justExport: number; bothBefore: number; bothAfter: number; } >justExport : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string + >toFixed : (fractionDigits?: number) => string mod1.bothBefore.toFixed() // error ->mod1.bothBefore.toFixed() : any @@ -30,11 +28,11 @@ ->bothBefore : number | "string" ->toFixed : any +>mod1.bothBefore.toFixed() : string -+>mod1.bothBefore.toFixed : (fractionDigits?: number | undefined) => string ++>mod1.bothBefore.toFixed : (fractionDigits?: number) => string +>mod1.bothBefore : number +>mod1 : { (): void; justExport: number; bothBefore: number; bothAfter: number; } +>bothBefore : number -+>toFixed : (fractionDigits?: number | undefined) => string ++>toFixed : (fractionDigits?: number) => string mod1.bothAfter.toFixed() ->mod1.bothAfter.toFixed() : any @@ -44,11 +42,11 @@ ->bothAfter : number | "string" ->toFixed : any +>mod1.bothAfter.toFixed() : string -+>mod1.bothAfter.toFixed : (fractionDigits?: number | undefined) => string ++>mod1.bothAfter.toFixed : (fractionDigits?: number) => string +>mod1.bothAfter : number +>mod1 : { (): void; justExport: number; bothBefore: number; bothAfter: number; } +>bothAfter : number -+>toFixed : (fractionDigits?: number | undefined) => string ++>toFixed : (fractionDigits?: number) => string mod1.justProperty.length ->mod1.justProperty.length : number @@ -64,7 +62,7 @@ === requires.d.ts === declare var module: { exports: any }; -@@= skipped -49, +49 lines =@@ +@@= skipped -40, +40 lines =@@ /// module.exports.bothBefore = 'string' >module.exports.bothBefore = 'string' : "string" diff --git a/testdata/baselines/reference/submodule/conformance/namedTupleMembers.js b/testdata/baselines/reference/submodule/conformance/namedTupleMembers.js index a7c1c3e9ffe..4c5102acb06 100644 --- a/testdata/baselines/reference/submodule/conformance/namedTupleMembers.js +++ b/testdata/baselines/reference/submodule/conformance/namedTupleMembers.js @@ -126,7 +126,7 @@ export declare const func: Func; export declare function useState(initial: T): [value: T, setter: (T: any) => void]; export type Iter = Func<[step: number, iterations: number]>; export declare function readSegment([length, count]: [number, number]): void; -export declare const val: [number, number]; +export declare const val: Parameters[0]; export type RecursiveTupleA = [initial: string, next: RecursiveTupleA]; export type RecursiveTupleB = [first: string, ptr: RecursiveTupleB]; export type RecusiveRest = [first: string, ...rest: RecusiveRest[]]; diff --git a/testdata/baselines/reference/submodule/conformance/namedTupleMembers.js.diff b/testdata/baselines/reference/submodule/conformance/namedTupleMembers.js.diff deleted file mode 100644 index 32d35d134fd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/namedTupleMembers.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.namedTupleMembers.js -+++ new.namedTupleMembers.js -@@= skipped -125, +125 lines =@@ - export declare function useState(initial: T): [value: T, setter: (T: any) => void]; - export type Iter = Func<[step: number, iterations: number]>; - export declare function readSegment([length, count]: [number, number]): void; --export declare const val: Parameters[0]; -+export declare const val: [number, number]; - export type RecursiveTupleA = [initial: string, next: RecursiveTupleA]; - export type RecursiveTupleB = [first: string, ptr: RecursiveTupleB]; - export type RecusiveRest = [first: string, ...rest: RecusiveRest[]]; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.errors.txt b/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.errors.txt index e087ee2fdf7..549c903d075 100644 --- a/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.errors.txt @@ -1,4 +1,4 @@ -narrowExceptionVariableInCatchClause.ts(11,17): error TS2551: Property 'doPanic' does not exist on type '{ type: "foo"; dontPanic(): any; }'. Did you mean 'dontPanic'? +narrowExceptionVariableInCatchClause.ts(11,17): error TS2551: Property 'doPanic' does not exist on type '{ type: 'foo'; dontPanic(): any; }'. Did you mean 'dontPanic'? narrowExceptionVariableInCatchClause.ts(16,17): error TS2551: Property 'massage' does not exist on type 'Error'. Did you mean 'message'? @@ -15,7 +15,7 @@ narrowExceptionVariableInCatchClause.ts(16,17): error TS2551: Property 'massage' err.dontPanic(); // OK err.doPanic(); // ERROR: Property 'doPanic' does not exist on type '{...}' ~~~~~~~ -!!! error TS2551: Property 'doPanic' does not exist on type '{ type: "foo"; dontPanic(): any; }'. Did you mean 'dontPanic'? +!!! error TS2551: Property 'doPanic' does not exist on type '{ type: 'foo'; dontPanic(): any; }'. Did you mean 'dontPanic'? !!! related TS2728 narrowExceptionVariableInCatchClause.ts:1:58: 'dontPanic' is declared here. } diff --git a/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.errors.txt.diff new file mode 100644 index 00000000000..0eb4b6891bc --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.narrowExceptionVariableInCatchClause.errors.txt ++++ new.narrowExceptionVariableInCatchClause.errors.txt +@@= skipped -0, +0 lines =@@ +-narrowExceptionVariableInCatchClause.ts(11,17): error TS2551: Property 'doPanic' does not exist on type '{ type: "foo"; dontPanic(): any; }'. Did you mean 'dontPanic'? ++narrowExceptionVariableInCatchClause.ts(11,17): error TS2551: Property 'doPanic' does not exist on type '{ type: 'foo'; dontPanic(): any; }'. Did you mean 'dontPanic'? + narrowExceptionVariableInCatchClause.ts(16,17): error TS2551: Property 'massage' does not exist on type 'Error'. Did you mean 'message'? + + +@@= skipped -14, +14 lines =@@ + err.dontPanic(); // OK + err.doPanic(); // ERROR: Property 'doPanic' does not exist on type '{...}' + ~~~~~~~ +-!!! error TS2551: Property 'doPanic' does not exist on type '{ type: "foo"; dontPanic(): any; }'. Did you mean 'dontPanic'? ++!!! error TS2551: Property 'doPanic' does not exist on type '{ type: 'foo'; dontPanic(): any; }'. Did you mean 'dontPanic'? + !!! related TS2728 narrowExceptionVariableInCatchClause.ts:1:58: 'dontPanic' is declared here. + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.types b/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.types index 086be3a078e..f2a901de08e 100644 --- a/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.types +++ b/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.types @@ -2,7 +2,7 @@ === narrowExceptionVariableInCatchClause.ts === declare function isFooError(x: any): x is { type: 'foo'; dontPanic(); }; ->isFooError : (x: any) => x is { type: "foo"; dontPanic(): any; } +>isFooError : (x: any) => x is { type: 'foo'; dontPanic(): any; } >x : any >type : "foo" >dontPanic : () => any @@ -18,19 +18,19 @@ function tryCatch() { if (isFooError(err)) { >isFooError(err) : boolean ->isFooError : (x: any) => x is { type: "foo"; dontPanic(): any; } +>isFooError : (x: any) => x is { type: 'foo'; dontPanic(): any; } >err : any err.dontPanic(); // OK >err.dontPanic() : any >err.dontPanic : () => any ->err : { type: "foo"; dontPanic(): any; } +>err : { type: 'foo'; dontPanic(): any; } >dontPanic : () => any err.doPanic(); // ERROR: Property 'doPanic' does not exist on type '{...}' >err.doPanic() : any >err.doPanic : any ->err : { type: "foo"; dontPanic(): any; } +>err : { type: 'foo'; dontPanic(): any; } >doPanic : any } diff --git a/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.types.diff b/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.types.diff new file mode 100644 index 00000000000..c09d2a9eaab --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/narrowExceptionVariableInCatchClause.types.diff @@ -0,0 +1,33 @@ +--- old.narrowExceptionVariableInCatchClause.types ++++ new.narrowExceptionVariableInCatchClause.types +@@= skipped -1, +1 lines =@@ + + === narrowExceptionVariableInCatchClause.ts === + declare function isFooError(x: any): x is { type: 'foo'; dontPanic(); }; +->isFooError : (x: any) => x is { type: "foo"; dontPanic(): any; } ++>isFooError : (x: any) => x is { type: 'foo'; dontPanic(): any; } + >x : any + >type : "foo" + >dontPanic : () => any +@@= skipped -16, +16 lines =@@ + + if (isFooError(err)) { + >isFooError(err) : boolean +->isFooError : (x: any) => x is { type: "foo"; dontPanic(): any; } ++>isFooError : (x: any) => x is { type: 'foo'; dontPanic(): any; } + >err : any + + err.dontPanic(); // OK + >err.dontPanic() : any + >err.dontPanic : () => any +->err : { type: "foo"; dontPanic(): any; } ++>err : { type: 'foo'; dontPanic(): any; } + >dontPanic : () => any + + err.doPanic(); // ERROR: Property 'doPanic' does not exist on type '{...}' + >err.doPanic() : any + >err.doPanic : any +->err : { type: "foo"; dontPanic(): any; } ++>err : { type: 'foo'; dontPanic(): any; } + >doPanic : any + } diff --git a/testdata/baselines/reference/submodule/conformance/narrowingConstrainedTypeVariable.types b/testdata/baselines/reference/submodule/conformance/narrowingConstrainedTypeVariable.types index 5e5d5118aca..1342a335aa2 100644 --- a/testdata/baselines/reference/submodule/conformance/narrowingConstrainedTypeVariable.types +++ b/testdata/baselines/reference/submodule/conformance/narrowingConstrainedTypeVariable.types @@ -7,7 +7,7 @@ class C { } >C : C function f1(v: T | string): void { ->f1 : (v: string | T) => void +>f1 : (v: T | string) => void >v : string | T if (v instanceof C) { diff --git a/testdata/baselines/reference/submodule/conformance/narrowingConstrainedTypeVariable.types.diff b/testdata/baselines/reference/submodule/conformance/narrowingConstrainedTypeVariable.types.diff deleted file mode 100644 index 66c6e528678..00000000000 --- a/testdata/baselines/reference/submodule/conformance/narrowingConstrainedTypeVariable.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.narrowingConstrainedTypeVariable.types -+++ new.narrowingConstrainedTypeVariable.types -@@= skipped -6, +6 lines =@@ - >C : C - - function f1(v: T | string): void { -->f1 : (v: T | string) => void -+>f1 : (v: string | T) => void - >v : string | T - - if (v instanceof C) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/neverInference.types b/testdata/baselines/reference/submodule/conformance/neverInference.types index dd01422b31a..df0ede1c2bf 100644 --- a/testdata/baselines/reference/submodule/conformance/neverInference.types +++ b/testdata/baselines/reference/submodule/conformance/neverInference.types @@ -72,9 +72,9 @@ 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 >Array.from([0]) : number[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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 >[] : never[] @@ -89,9 +89,9 @@ 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 >Array.from([]) : never[] ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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[] >0 : 0 diff --git a/testdata/baselines/reference/submodule/conformance/neverInference.types.diff b/testdata/baselines/reference/submodule/conformance/neverInference.types.diff deleted file mode 100644 index 0295c950d89..00000000000 --- a/testdata/baselines/reference/submodule/conformance/neverInference.types.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.neverInference.types -+++ new.neverInference.types -@@= skipped -71, +71 lines =@@ - >f2(Array.from([0]), [], (a1, a2) => a1 - a2) : 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >[0] : number[] - >0 : 0 - >[] : never[] -@@= skipped -17, +17 lines =@@ - >f2(Array.from([]), [0], (a1, a2) => a1 - a2) : 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, 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: ArrayLike | Iterable): T[]; (iterable: ArrayLike | Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } - >[] : never[] - >[0] : number[] - >0 : 0 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.types b/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.types index 115de309cbb..02bed70976b 100644 --- a/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.types +++ b/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.types @@ -2,7 +2,7 @@ === neverReturningFunctions1.ts === function fail(message?: string): never { ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >message : string | undefined throw new Error(message); @@ -20,7 +20,7 @@ function f01(x: string | undefined) { >x : string | undefined >undefined : undefined >fail("undefined argument") : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >"undefined argument" : "undefined argument" x.length; // string @@ -41,7 +41,7 @@ function f02(x: number): number { fail("negative number"); >fail("negative number") : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >"negative number" : "negative number" x; // Unreachable @@ -57,16 +57,16 @@ function f03(x: string) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : string } function f11(x: string | undefined, fail: (message?: string) => never) { ->f11 : (x: string | undefined, fail: (message?: string | undefined) => never) => void +>f11 : (x: string | undefined, fail: (message?: string) => never) => void >x : string | undefined ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >message : string | undefined if (x === undefined) fail("undefined argument"); @@ -74,7 +74,7 @@ function f11(x: string | undefined, fail: (message?: string) => never) { >x : string | undefined >undefined : undefined >fail("undefined argument") : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >"undefined argument" : "undefined argument" x.length; // string @@ -84,9 +84,9 @@ function f11(x: string | undefined, fail: (message?: string) => never) { } function f12(x: number, fail: (message?: string) => never): number { ->f12 : (x: number, fail: (message?: string | undefined) => never) => number +>f12 : (x: number, fail: (message?: string) => never) => number >x : number ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >message : string | undefined if (x >= 0) return x; @@ -97,7 +97,7 @@ function f12(x: number, fail: (message?: string) => never): number { fail("negative number"); >fail("negative number") : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >"negative number" : "negative number" x; // Unreachable @@ -105,9 +105,9 @@ function f12(x: number, fail: (message?: string) => never): number { } function f13(x: string, fail: (message?: string) => never) { ->f13 : (x: string, fail: (message?: string | undefined) => never) => void +>f13 : (x: string, fail: (message?: string) => never) => void >x : string ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >message : string | undefined x; // string @@ -115,7 +115,7 @@ function f13(x: string, fail: (message?: string) => never) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : string @@ -125,7 +125,7 @@ namespace Debug { >Debug : typeof Debug export declare function fail(message?: string): never; ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >message : string | undefined } @@ -138,9 +138,9 @@ function f21(x: string | undefined) { >x : string | undefined >undefined : undefined >Debug.fail("undefined argument") : never ->Debug.fail : (message?: string | undefined) => never +>Debug.fail : (message?: string) => never >Debug : typeof Debug ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >"undefined argument" : "undefined argument" x.length; // string @@ -161,9 +161,9 @@ function f22(x: number): number { Debug.fail("negative number"); >Debug.fail("negative number") : never ->Debug.fail : (message?: string | undefined) => never +>Debug.fail : (message?: string) => never >Debug : typeof Debug ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >"negative number" : "negative number" x; // Unreachable @@ -179,9 +179,9 @@ function f23(x: string) { Debug.fail(); >Debug.fail() : never ->Debug.fail : (message?: string | undefined) => never +>Debug.fail : (message?: string) => never >Debug : typeof Debug ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : string @@ -196,11 +196,11 @@ function f24(x: string) { ((Debug).fail)(); >((Debug).fail)() : never ->((Debug).fail) : (message?: string | undefined) => never ->(Debug).fail : (message?: string | undefined) => never +>((Debug).fail) : (message?: string) => never +>(Debug).fail : (message?: string) => never >(Debug) : typeof Debug >Debug : typeof Debug ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : string @@ -210,7 +210,7 @@ class Test { >Test : Test fail(message?: string): never { ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >message : string | undefined throw new Error(message); @@ -227,9 +227,9 @@ class Test { >x : string | undefined >undefined : undefined >this.fail("undefined argument") : never ->this.fail : (message?: string | undefined) => never +>this.fail : (message?: string) => never >this : this ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >"undefined argument" : "undefined argument" x.length; // string @@ -249,9 +249,9 @@ class Test { this.fail("negative number"); >this.fail("negative number") : never ->this.fail : (message?: string | undefined) => never +>this.fail : (message?: string) => never >this : this ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never >"negative number" : "negative number" x; // Unreachable @@ -266,9 +266,9 @@ class Test { this.fail(); >this.fail() : never ->this.fail : (message?: string | undefined) => never +>this.fail : (message?: string) => never >this : this ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : string @@ -287,7 +287,7 @@ function f30(x: string | number | undefined) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : string | number | undefined @@ -306,7 +306,7 @@ function f30(x: string | number | undefined) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : string | number | undefined @@ -317,7 +317,7 @@ function f30(x: string | number | undefined) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : string | number | undefined @@ -344,7 +344,7 @@ function f31(x: { a: string | number }) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : { a: string | number; } @@ -373,7 +373,7 @@ function f40(x: number) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : number @@ -384,7 +384,7 @@ function f40(x: number) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : number @@ -407,7 +407,7 @@ function f41(x: number) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : number @@ -426,7 +426,7 @@ function f42(x: number) { fail(); >fail() : never ->fail : (message?: string | undefined) => never +>fail : (message?: string) => never x; // Unreachable >x : number @@ -498,7 +498,7 @@ export interface Component { >system : any init(data?: T): void; ->init : (data?: T | undefined) => void +>init : (data?: T) => void >data : T | undefined pause(): void; diff --git a/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.types.diff b/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.types.diff deleted file mode 100644 index 8f059f4a19e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.types.diff +++ /dev/null @@ -1,286 +0,0 @@ ---- old.neverReturningFunctions1.types -+++ new.neverReturningFunctions1.types -@@= skipped -1, +1 lines =@@ - - === neverReturningFunctions1.ts === - function fail(message?: string): never { -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >message : string | undefined - - throw new Error(message); -@@= skipped -18, +18 lines =@@ - >x : string | undefined - >undefined : undefined - >fail("undefined argument") : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >"undefined argument" : "undefined argument" - - x.length; // string -@@= skipped -21, +21 lines =@@ - - fail("negative number"); - >fail("negative number") : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >"negative number" : "negative number" - - x; // Unreachable -@@= skipped -16, +16 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : string - } - - function f11(x: string | undefined, fail: (message?: string) => never) { -->f11 : (x: string | undefined, fail: (message?: string) => never) => void -+>f11 : (x: string | undefined, fail: (message?: string | undefined) => never) => void - >x : string | undefined -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >message : string | undefined - - if (x === undefined) fail("undefined argument"); -@@= skipped -17, +17 lines =@@ - >x : string | undefined - >undefined : undefined - >fail("undefined argument") : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >"undefined argument" : "undefined argument" - - x.length; // string -@@= skipped -10, +10 lines =@@ - } - - function f12(x: number, fail: (message?: string) => never): number { -->f12 : (x: number, fail: (message?: string) => never) => number -+>f12 : (x: number, fail: (message?: string | undefined) => never) => number - >x : number -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >message : string | undefined - - if (x >= 0) return x; -@@= skipped -13, +13 lines =@@ - - fail("negative number"); - >fail("negative number") : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >"negative number" : "negative number" - - x; // Unreachable -@@= skipped -8, +8 lines =@@ - } - - function f13(x: string, fail: (message?: string) => never) { -->f13 : (x: string, fail: (message?: string) => never) => void -+>f13 : (x: string, fail: (message?: string | undefined) => never) => void - >x : string -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >message : string | undefined - - x; // string -@@= skipped -10, +10 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : string -@@= skipped -10, +10 lines =@@ - >Debug : typeof Debug - - export declare function fail(message?: string): never; -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >message : string | undefined - } - -@@= skipped -13, +13 lines =@@ - >x : string | undefined - >undefined : undefined - >Debug.fail("undefined argument") : never -->Debug.fail : (message?: string) => never -+>Debug.fail : (message?: string | undefined) => never - >Debug : typeof Debug -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >"undefined argument" : "undefined argument" - - x.length; // string -@@= skipped -23, +23 lines =@@ - - Debug.fail("negative number"); - >Debug.fail("negative number") : never -->Debug.fail : (message?: string) => never -+>Debug.fail : (message?: string | undefined) => never - >Debug : typeof Debug -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >"negative number" : "negative number" - - x; // Unreachable -@@= skipped -18, +18 lines =@@ - - Debug.fail(); - >Debug.fail() : never -->Debug.fail : (message?: string) => never -+>Debug.fail : (message?: string | undefined) => never - >Debug : typeof Debug -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : string -@@= skipped -17, +17 lines =@@ - - ((Debug).fail)(); - >((Debug).fail)() : never -->((Debug).fail) : (message?: string) => never -->(Debug).fail : (message?: string) => never -+>((Debug).fail) : (message?: string | undefined) => never -+>(Debug).fail : (message?: string | undefined) => never - >(Debug) : typeof Debug - >Debug : typeof Debug -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : string -@@= skipped -14, +14 lines =@@ - >Test : Test - - fail(message?: string): never { -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >message : string | undefined - - throw new Error(message); -@@= skipped -17, +17 lines =@@ - >x : string | undefined - >undefined : undefined - >this.fail("undefined argument") : never -->this.fail : (message?: string) => never -+>this.fail : (message?: string | undefined) => never - >this : this -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >"undefined argument" : "undefined argument" - - x.length; // string -@@= skipped -22, +22 lines =@@ - - this.fail("negative number"); - >this.fail("negative number") : never -->this.fail : (message?: string) => never -+>this.fail : (message?: string | undefined) => never - >this : this -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - >"negative number" : "negative number" - - x; // Unreachable -@@= skipped -17, +17 lines =@@ - - this.fail(); - >this.fail() : never -->this.fail : (message?: string) => never -+>this.fail : (message?: string | undefined) => never - >this : this -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : string -@@= skipped -21, +21 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : string | number | undefined -@@= skipped -19, +19 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : string | number | undefined -@@= skipped -11, +11 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : string | number | undefined -@@= skipped -27, +27 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : { a: string | number; } -@@= skipped -29, +29 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : number -@@= skipped -11, +11 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : number -@@= skipped -23, +23 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : number -@@= skipped -19, +19 lines =@@ - - fail(); - >fail() : never -->fail : (message?: string) => never -+>fail : (message?: string | undefined) => never - - x; // Unreachable - >x : number -@@= skipped -72, +72 lines =@@ - >system : any - - init(data?: T): void; -->init : (data?: T) => void -+>init : (data?: T | undefined) => void - >data : T | undefined - - pause(): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/neverType.types b/testdata/baselines/reference/submodule/conformance/neverType.types index e97a38abf53..88dbf220ab2 100644 --- a/testdata/baselines/reference/submodule/conformance/neverType.types +++ b/testdata/baselines/reference/submodule/conformance/neverType.types @@ -63,7 +63,7 @@ function infiniteLoop2(): never { } function move1(direction: "up" | "down") { ->move1 : (direction: "down" | "up") => -1 | 1 +>move1 : (direction: "up" | "down") => -1 | 1 >direction : "down" | "up" switch (direction) { @@ -89,7 +89,7 @@ function move1(direction: "up" | "down") { } function move2(direction: "up" | "down") { ->move2 : (direction: "down" | "up") => -1 | 1 +>move2 : (direction: "up" | "down") => -1 | 1 >direction : "down" | "up" return direction === "up" ? 1 : diff --git a/testdata/baselines/reference/submodule/conformance/neverType.types.diff b/testdata/baselines/reference/submodule/conformance/neverType.types.diff deleted file mode 100644 index a446638dac2..00000000000 --- a/testdata/baselines/reference/submodule/conformance/neverType.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.neverType.types -+++ new.neverType.types -@@= skipped -62, +62 lines =@@ - } - - function move1(direction: "up" | "down") { -->move1 : (direction: "up" | "down") => -1 | 1 -+>move1 : (direction: "down" | "up") => -1 | 1 - >direction : "down" | "up" - - switch (direction) { -@@= skipped -26, +26 lines =@@ - } - - function move2(direction: "up" | "down") { -->move2 : (direction: "up" | "down") => -1 | 1 -+>move2 : (direction: "down" | "up") => -1 | 1 - >direction : "down" | "up" - - return direction === "up" ? 1 : \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/neverTypeErrors1.types b/testdata/baselines/reference/submodule/conformance/neverTypeErrors1.types index eaa4a26f9ab..52ce2c5b6dc 100644 --- a/testdata/baselines/reference/submodule/conformance/neverTypeErrors1.types +++ b/testdata/baselines/reference/submodule/conformance/neverTypeErrors1.types @@ -92,7 +92,7 @@ type Union = A & B; >Union : never function func(): { value: Union[] } { ->func : () => { value: never[]; } +>func : () => { value: Union[]; } >value : never[] return { diff --git a/testdata/baselines/reference/submodule/conformance/neverTypeErrors1.types.diff b/testdata/baselines/reference/submodule/conformance/neverTypeErrors1.types.diff deleted file mode 100644 index 97a8218364b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/neverTypeErrors1.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.neverTypeErrors1.types -+++ new.neverTypeErrors1.types -@@= skipped -91, +91 lines =@@ - >Union : never - - function func(): { value: Union[] } { -->func : () => { value: Union[]; } -+>func : () => { value: never[]; } - >value : never[] - - return { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/neverTypeErrors2.types b/testdata/baselines/reference/submodule/conformance/neverTypeErrors2.types index d0463905394..d88956bbf35 100644 --- a/testdata/baselines/reference/submodule/conformance/neverTypeErrors2.types +++ b/testdata/baselines/reference/submodule/conformance/neverTypeErrors2.types @@ -92,7 +92,7 @@ type Union = A & B; >Union : never function func(): { value: Union[] } { ->func : () => { value: never[]; } +>func : () => { value: Union[]; } >value : never[] return { diff --git a/testdata/baselines/reference/submodule/conformance/neverTypeErrors2.types.diff b/testdata/baselines/reference/submodule/conformance/neverTypeErrors2.types.diff deleted file mode 100644 index 05ba02745b3..00000000000 --- a/testdata/baselines/reference/submodule/conformance/neverTypeErrors2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.neverTypeErrors2.types -+++ new.neverTypeErrors2.types -@@= skipped -91, +91 lines =@@ - >Union : never - - function func(): { value: Union[] } { -->func : () => { value: Union[]; } -+>func : () => { value: never[]; } - >value : never[] - - return { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/newOperatorConformance.types b/testdata/baselines/reference/submodule/conformance/newOperatorConformance.types index a4c8c515f24..8f70915b9f8 100644 --- a/testdata/baselines/reference/submodule/conformance/newOperatorConformance.types +++ b/testdata/baselines/reference/submodule/conformance/newOperatorConformance.types @@ -77,7 +77,7 @@ var d = new anyCtor1(undefined); // Construct expression of type where apparent type has a construct signature with 0 arguments function newFn1(s: T) { ->newFn1 : number>(s: T) => void +>newFn1 : (s: T) => void >s : T var p = new s; @@ -91,7 +91,7 @@ function newFn1(s: T) { // Construct expression of type where apparent type has a construct signature with 1 arguments function newFn2(s: T) { ->newFn2 : string>(s: T) => void +>newFn2 : (s: T) => void >s : number >s : T diff --git a/testdata/baselines/reference/submodule/conformance/newOperatorConformance.types.diff b/testdata/baselines/reference/submodule/conformance/newOperatorConformance.types.diff deleted file mode 100644 index 113b83a68bb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/newOperatorConformance.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.newOperatorConformance.types -+++ new.newOperatorConformance.types -@@= skipped -76, +76 lines =@@ - - // Construct expression of type where apparent type has a construct signature with 0 arguments - function newFn1(s: T) { -->newFn1 : (s: T) => void -+>newFn1 : number>(s: T) => void - >s : T - - var p = new s; -@@= skipped -14, +14 lines =@@ - - // Construct expression of type where apparent type has a construct signature with 1 arguments - function newFn2(s: T) { -->newFn2 : (s: T) => void -+>newFn2 : string>(s: T) => void - >s : number - >s : T diff --git a/testdata/baselines/reference/submodule/conformance/newTarget.es5(target=es2015).types b/testdata/baselines/reference/submodule/conformance/newTarget.es5(target=es2015).types index 07753c9be64..753961cb100 100644 --- a/testdata/baselines/reference/submodule/conformance/newTarget.es5(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/newTarget.es5(target=es2015).types @@ -83,8 +83,8 @@ const f2 = function () { } const O = { ->O : { k: () => any; } ->{ k: function () { return new.target; }} : { k: () => any; } +>O : { k: () => () => any; } +>{ k: function () { return new.target; }} : { k: () => () => any; } k: function () { return new.target; } >k : () => any diff --git a/testdata/baselines/reference/submodule/conformance/newTarget.es5(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/newTarget.es5(target=es2015).types.diff new file mode 100644 index 00000000000..32653eee10f --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/newTarget.es5(target=es2015).types.diff @@ -0,0 +1,13 @@ +--- old.newTarget.es5(target=es2015).types ++++ new.newTarget.es5(target=es2015).types +@@= skipped -82, +82 lines =@@ + } + + const O = { +->O : { k: () => any; } +->{ k: function () { return new.target; }} : { k: () => any; } ++>O : { k: () => () => any; } ++>{ k: function () { return new.target; }} : { k: () => () => any; } + + k: function () { return new.target; } + >k : () => any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/newTarget.es6.types b/testdata/baselines/reference/submodule/conformance/newTarget.es6.types index 19035490386..17a9fbbbc2c 100644 --- a/testdata/baselines/reference/submodule/conformance/newTarget.es6.types +++ b/testdata/baselines/reference/submodule/conformance/newTarget.es6.types @@ -83,8 +83,8 @@ const f2 = function () { } const O = { ->O : { k: () => any; } ->{ k: function () { return new.target; }} : { k: () => any; } +>O : { k: () => () => any; } +>{ k: function () { return new.target; }} : { k: () => () => any; } k: function () { return new.target; } >k : () => any diff --git a/testdata/baselines/reference/submodule/conformance/newTarget.es6.types.diff b/testdata/baselines/reference/submodule/conformance/newTarget.es6.types.diff new file mode 100644 index 00000000000..d5e49bfea70 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/newTarget.es6.types.diff @@ -0,0 +1,13 @@ +--- old.newTarget.es6.types ++++ new.newTarget.es6.types +@@= skipped -82, +82 lines =@@ + } + + const O = { +->O : { k: () => any; } +->{ k: function () { return new.target; }} : { k: () => any; } ++>O : { k: () => () => any; } ++>{ k: function () { return new.target; }} : { k: () => () => any; } + + k: function () { return new.target; } + >k : () => any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccess.types b/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccess.types index 25d459bf200..282d59340b4 100644 --- a/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccess.types +++ b/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccess.types @@ -380,8 +380,8 @@ declare const myRecord2: { a: string; b: string, [key: string]: string }; >key : string const fn1 = (key: Key): string => myRecord1[key]; // Should OK ->fn1 : (key: Key) => string ->(key: Key): string => myRecord1[key] : (key: Key) => string +>fn1 : (key: Key) => string +>(key: Key): string => myRecord1[key] : (key: Key) => string >myRecord1 : { a: string; b: string; } >key : Key >myRecord1[key] : { a: string; b: string; }[Key] @@ -389,8 +389,8 @@ const fn1 = (key: Key): string => myRecord1[ >key : Key const fn2 = (key: Key): string => myRecord2[key]; // Should OK ->fn2 : (key: Key) => string ->(key: Key): string => myRecord2[key] : (key: Key) => string +>fn2 : (key: Key) => string +>(key: Key): string => myRecord2[key] : (key: Key) => string >myRecord1 : { a: string; b: string; } >key : Key >myRecord2[key] : { [key: string]: string; a: string; b: string; }[Key] @@ -398,8 +398,8 @@ const fn2 = (key: Key): string => myRecord2[ >key : Key const fn3 = (key: Key) => { ->fn3 : (key: Key) => void ->(key: Key) => { myRecord2[key] = undefined; // Should error const v: string = myRecord2[key]; // Should error} : (key: Key) => void +>fn3 : (key: Key) => void +>(key: Key) => { myRecord2[key] = undefined; // Should error const v: string = myRecord2[key]; // Should error} : (key: Key) => void >myRecord2 : { [key: string]: string; a: string; b: string; } >key : Key diff --git a/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccess.types.diff b/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccess.types.diff deleted file mode 100644 index 65c402e3be2..00000000000 --- a/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccess.types.diff +++ /dev/null @@ -1,34 +0,0 @@ ---- old.noUncheckedIndexedAccess.types -+++ new.noUncheckedIndexedAccess.types -@@= skipped -379, +379 lines =@@ - >key : string - - const fn1 = (key: Key): string => myRecord1[key]; // Should OK -->fn1 : (key: Key) => string -->(key: Key): string => myRecord1[key] : (key: Key) => string -+>fn1 : (key: Key) => string -+>(key: Key): string => myRecord1[key] : (key: Key) => string - >myRecord1 : { a: string; b: string; } - >key : Key - >myRecord1[key] : { a: string; b: string; }[Key] -@@= skipped -9, +9 lines =@@ - >key : Key - - const fn2 = (key: Key): string => myRecord2[key]; // Should OK -->fn2 : (key: Key) => string -->(key: Key): string => myRecord2[key] : (key: Key) => string -+>fn2 : (key: Key) => string -+>(key: Key): string => myRecord2[key] : (key: Key) => string - >myRecord1 : { a: string; b: string; } - >key : Key - >myRecord2[key] : { [key: string]: string; a: string; b: string; }[Key] -@@= skipped -9, +9 lines =@@ - >key : Key - - const fn3 = (key: Key) => { -->fn3 : (key: Key) => void -->(key: Key) => { myRecord2[key] = undefined; // Should error const v: string = myRecord2[key]; // Should error} : (key: Key) => void -+>fn3 : (key: Key) => void -+>(key: Key) => { myRecord2[key] = undefined; // Should error const v: string = myRecord2[key]; // Should error} : (key: Key) => void - >myRecord2 : { [key: string]: string; a: string; b: string; } - >key : Key diff --git a/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccessDestructuring.types b/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccessDestructuring.types index 33c7edcd036..eca0df16b6b 100644 --- a/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccessDestructuring.types +++ b/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccessDestructuring.types @@ -87,21 +87,21 @@ declare const numMapPoint: { x: number, y: number} & { [s: string]: number }; x.toFixed(); // Should OK >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string y.toFixed(); // Should OK >y.toFixed() : string ->y.toFixed : (fractionDigits?: number | undefined) => string +>y.toFixed : (fractionDigits?: number) => string >y : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string z.toFixed(); // Should error >z.toFixed() : string ->z.toFixed : (fractionDigits?: number | undefined) => string +>z.toFixed : (fractionDigits?: number) => string >z : number | undefined ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } { @@ -112,25 +112,25 @@ declare const numMapPoint: { x: number, y: number} & { [s: string]: number }; x.toFixed(); // Should OK >x.toFixed() : string ->x.toFixed : (fractionDigits?: number | undefined) => string +>x.toFixed : (fractionDigits?: number) => string >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string q.y.toFixed(); // Should OK >q.y.toFixed() : string ->q.y.toFixed : (fractionDigits?: number | undefined) => string +>q.y.toFixed : (fractionDigits?: number) => string >q.y : number >q : { [s: string]: number; y: number; } >y : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string q.z.toFixed(); // Should error >q.z.toFixed() : string ->q.z.toFixed : (fractionDigits?: number | undefined) => string +>q.z.toFixed : (fractionDigits?: number) => string >q.z : number | undefined >q : { [s: string]: number; y: number; } >z : number | undefined ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } { @@ -141,31 +141,31 @@ declare const numMapPoint: { x: number, y: number} & { [s: string]: number }; x. >x. toFixed() : string ->x. toFixed : (fractionDigits?: number | undefined) => string +>x. toFixed : (fractionDigits?: number) => string >x : number toFixed(); // Should OK ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string q. >q. y.toFixed() : string ->q. y.toFixed : (fractionDigits?: number | undefined) => string +>q. y.toFixed : (fractionDigits?: number) => string >q. y : number >q : { [s: string]: number; y: number; } y.toFixed(); // Should OK >y : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string q. >q. z.toFixed() : string ->q. z.toFixed : (fractionDigits?: number | undefined) => string +>q. z.toFixed : (fractionDigits?: number) => string >q. z : number | undefined >q : { [s: string]: number; y: number; } z.toFixed(); // Should error >z : number | undefined ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string } diff --git a/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccessDestructuring.types.diff b/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccessDestructuring.types.diff deleted file mode 100644 index 5346fa2c41b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/noUncheckedIndexedAccessDestructuring.types.diff +++ /dev/null @@ -1,99 +0,0 @@ ---- old.noUncheckedIndexedAccessDestructuring.types -+++ new.noUncheckedIndexedAccessDestructuring.types -@@= skipped -86, +86 lines =@@ - - x.toFixed(); // Should OK - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - y.toFixed(); // Should OK - >y.toFixed() : string -->y.toFixed : (fractionDigits?: number) => string -+>y.toFixed : (fractionDigits?: number | undefined) => string - >y : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - z.toFixed(); // Should error - >z.toFixed() : string -->z.toFixed : (fractionDigits?: number) => string -+>z.toFixed : (fractionDigits?: number | undefined) => string - >z : number | undefined -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - - { -@@= skipped -25, +25 lines =@@ - - x.toFixed(); // Should OK - >x.toFixed() : string -->x.toFixed : (fractionDigits?: number) => string -+>x.toFixed : (fractionDigits?: number | undefined) => string - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - q.y.toFixed(); // Should OK - >q.y.toFixed() : string -->q.y.toFixed : (fractionDigits?: number) => string -+>q.y.toFixed : (fractionDigits?: number | undefined) => string - >q.y : number - >q : { [s: string]: number; y: number; } - >y : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - q.z.toFixed(); // Should error - >q.z.toFixed() : string -->q.z.toFixed : (fractionDigits?: number) => string -+>q.z.toFixed : (fractionDigits?: number | undefined) => string - >q.z : number | undefined - >q : { [s: string]: number; y: number; } - >z : number | undefined -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - - { -@@= skipped -29, +29 lines =@@ - - x. - >x. toFixed() : string -->x. toFixed : (fractionDigits?: number) => string -+>x. toFixed : (fractionDigits?: number | undefined) => string - >x : number - - toFixed(); // Should OK -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - q. - >q. y.toFixed() : string -->q. y.toFixed : (fractionDigits?: number) => string -+>q. y.toFixed : (fractionDigits?: number | undefined) => string - >q. y : number - >q : { [s: string]: number; y: number; } - - y.toFixed(); // Should OK - >y : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - q. - >q. z.toFixed() : string -->q. z.toFixed : (fractionDigits?: number) => string -+>q. z.toFixed : (fractionDigits?: number | undefined) => string - >q. z : number | undefined - >q : { [s: string]: number; y: number; } - - z.toFixed(); // Should error - >z : number | undefined -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - } - diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js index cca2ca8a852..44948d9ed52 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js @@ -32,5 +32,5 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js.diff deleted file mode 100644 index cf378b339a6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js -+++ new.nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).js -@@= skipped -31, +31 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js index cca2ca8a852..44948d9ed52 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js @@ -32,5 +32,5 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js.diff deleted file mode 100644 index 1673732ecd9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js -+++ new.nodeModulesImportAttributesTypeModeDeclarationEmit(module=node18).js -@@= skipped -31, +31 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js index cca2ca8a852..44948d9ed52 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js @@ -32,5 +32,5 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js.diff deleted file mode 100644 index cd6f54231ba..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js -+++ new.nodeModulesImportAttributesTypeModeDeclarationEmit(module=node20).js -@@= skipped -31, +31 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js index cca2ca8a852..44948d9ed52 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js @@ -32,5 +32,5 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js.diff deleted file mode 100644 index 128e9579b5d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js -+++ new.nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).js -@@= skipped -31, +31 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js index 63b333fded1..c64b30d4e5b 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js @@ -127,16 +127,16 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); //// [other2.d.ts] export type LocalInterface = import("pkg", { with: { "bad": "require" } }).RequireInterface & import("pkg", { with: { "bad": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: any; +export declare const a: import("pkg", { with: { "bad": "require" } }).RequireInterface; +export declare const b: import("pkg", { with: { "bad": "import" } }).ImportInterface; //// [other3.d.ts] export type LocalInterface = import("pkg", { with: {} })[{ "resolution-mode": "require"; @@ -145,9 +145,9 @@ export declare const a: any; export declare const b: any; //// [other4.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any, Attribute1: any, RequireInterface: any; -export declare const b: any, Attribute2: any, ImportInterface: any; +export declare const a: import("pkg", { with: {} }), Attribute1: any, RequireInterface: any; +export declare const b: import("pkg", { with: {} }), Attribute2: any, ImportInterface: any; //// [other5.d.ts] export type LocalInterface = import("pkg", { with: {} }).RequireInterface & import("pkg", { with: {} }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: any; +export declare const a: import("pkg", { with: {} }).RequireInterface; +export declare const b: import("pkg", { with: {} }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js.diff deleted file mode 100644 index cf12cb68c7a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js -+++ new.nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).js -@@= skipped -126, +126 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; - //// [other.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; - //// [other2.d.ts] - export type LocalInterface = import("pkg", { with: { "bad": "require" } }).RequireInterface & import("pkg", { with: { "bad": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "bad": "require" } }).RequireInterface; --export declare const b: import("pkg", { with: { "bad": "import" } }).ImportInterface; -+export declare const a: import("pkg").RequireInterface; -+export declare const b: any; - //// [other3.d.ts] - export type LocalInterface = import("pkg", { with: {} })[{ - "resolution-mode": "require"; -@@= skipped -18, +18 lines =@@ - export declare const b: any; - //// [other4.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }), Attribute1: any, RequireInterface: any; --export declare const b: import("pkg", { with: {} }), Attribute2: any, ImportInterface: any; -+export declare const a: any, Attribute1: any, RequireInterface: any; -+export declare const b: any, Attribute2: any, ImportInterface: any; - //// [other5.d.ts] - export type LocalInterface = import("pkg", { with: {} }).RequireInterface & import("pkg", { with: {} }).ImportInterface; --export declare const a: import("pkg", { with: {} }).RequireInterface; --export declare const b: import("pkg", { with: {} }).ImportInterface; -+export declare const a: import("pkg").RequireInterface; -+export declare const b: any; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js index 63b333fded1..c64b30d4e5b 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js @@ -127,16 +127,16 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); //// [other2.d.ts] export type LocalInterface = import("pkg", { with: { "bad": "require" } }).RequireInterface & import("pkg", { with: { "bad": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: any; +export declare const a: import("pkg", { with: { "bad": "require" } }).RequireInterface; +export declare const b: import("pkg", { with: { "bad": "import" } }).ImportInterface; //// [other3.d.ts] export type LocalInterface = import("pkg", { with: {} })[{ "resolution-mode": "require"; @@ -145,9 +145,9 @@ export declare const a: any; export declare const b: any; //// [other4.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any, Attribute1: any, RequireInterface: any; -export declare const b: any, Attribute2: any, ImportInterface: any; +export declare const a: import("pkg", { with: {} }), Attribute1: any, RequireInterface: any; +export declare const b: import("pkg", { with: {} }), Attribute2: any, ImportInterface: any; //// [other5.d.ts] export type LocalInterface = import("pkg", { with: {} }).RequireInterface & import("pkg", { with: {} }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: any; +export declare const a: import("pkg", { with: {} }).RequireInterface; +export declare const b: import("pkg", { with: {} }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js.diff deleted file mode 100644 index 2a74d952271..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js -+++ new.nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node18).js -@@= skipped -126, +126 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; - //// [other.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; - //// [other2.d.ts] - export type LocalInterface = import("pkg", { with: { "bad": "require" } }).RequireInterface & import("pkg", { with: { "bad": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "bad": "require" } }).RequireInterface; --export declare const b: import("pkg", { with: { "bad": "import" } }).ImportInterface; -+export declare const a: import("pkg").RequireInterface; -+export declare const b: any; - //// [other3.d.ts] - export type LocalInterface = import("pkg", { with: {} })[{ - "resolution-mode": "require"; -@@= skipped -18, +18 lines =@@ - export declare const b: any; - //// [other4.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }), Attribute1: any, RequireInterface: any; --export declare const b: import("pkg", { with: {} }), Attribute2: any, ImportInterface: any; -+export declare const a: any, Attribute1: any, RequireInterface: any; -+export declare const b: any, Attribute2: any, ImportInterface: any; - //// [other5.d.ts] - export type LocalInterface = import("pkg", { with: {} }).RequireInterface & import("pkg", { with: {} }).ImportInterface; --export declare const a: import("pkg", { with: {} }).RequireInterface; --export declare const b: import("pkg", { with: {} }).ImportInterface; -+export declare const a: import("pkg").RequireInterface; -+export declare const b: any; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js index 63b333fded1..c64b30d4e5b 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js @@ -127,16 +127,16 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); //// [other2.d.ts] export type LocalInterface = import("pkg", { with: { "bad": "require" } }).RequireInterface & import("pkg", { with: { "bad": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: any; +export declare const a: import("pkg", { with: { "bad": "require" } }).RequireInterface; +export declare const b: import("pkg", { with: { "bad": "import" } }).ImportInterface; //// [other3.d.ts] export type LocalInterface = import("pkg", { with: {} })[{ "resolution-mode": "require"; @@ -145,9 +145,9 @@ export declare const a: any; export declare const b: any; //// [other4.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any, Attribute1: any, RequireInterface: any; -export declare const b: any, Attribute2: any, ImportInterface: any; +export declare const a: import("pkg", { with: {} }), Attribute1: any, RequireInterface: any; +export declare const b: import("pkg", { with: {} }), Attribute2: any, ImportInterface: any; //// [other5.d.ts] export type LocalInterface = import("pkg", { with: {} }).RequireInterface & import("pkg", { with: {} }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: any; +export declare const a: import("pkg", { with: {} }).RequireInterface; +export declare const b: import("pkg", { with: {} }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js.diff deleted file mode 100644 index 03248211ea9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js -+++ new.nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node20).js -@@= skipped -126, +126 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; - //// [other.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; - //// [other2.d.ts] - export type LocalInterface = import("pkg", { with: { "bad": "require" } }).RequireInterface & import("pkg", { with: { "bad": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "bad": "require" } }).RequireInterface; --export declare const b: import("pkg", { with: { "bad": "import" } }).ImportInterface; -+export declare const a: import("pkg").RequireInterface; -+export declare const b: any; - //// [other3.d.ts] - export type LocalInterface = import("pkg", { with: {} })[{ - "resolution-mode": "require"; -@@= skipped -18, +18 lines =@@ - export declare const b: any; - //// [other4.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }), Attribute1: any, RequireInterface: any; --export declare const b: import("pkg", { with: {} }), Attribute2: any, ImportInterface: any; -+export declare const a: any, Attribute1: any, RequireInterface: any; -+export declare const b: any, Attribute2: any, ImportInterface: any; - //// [other5.d.ts] - export type LocalInterface = import("pkg", { with: {} }).RequireInterface & import("pkg", { with: {} }).ImportInterface; --export declare const a: import("pkg", { with: {} }).RequireInterface; --export declare const b: import("pkg", { with: {} }).ImportInterface; -+export declare const a: import("pkg").RequireInterface; -+export declare const b: any; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js index 63b333fded1..c64b30d4e5b 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js @@ -127,16 +127,16 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); //// [other2.d.ts] export type LocalInterface = import("pkg", { with: { "bad": "require" } }).RequireInterface & import("pkg", { with: { "bad": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: any; +export declare const a: import("pkg", { with: { "bad": "require" } }).RequireInterface; +export declare const b: import("pkg", { with: { "bad": "import" } }).ImportInterface; //// [other3.d.ts] export type LocalInterface = import("pkg", { with: {} })[{ "resolution-mode": "require"; @@ -145,9 +145,9 @@ export declare const a: any; export declare const b: any; //// [other4.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any, Attribute1: any, RequireInterface: any; -export declare const b: any, Attribute2: any, ImportInterface: any; +export declare const a: import("pkg", { with: {} }), Attribute1: any, RequireInterface: any; +export declare const b: import("pkg", { with: {} }), Attribute2: any, ImportInterface: any; //// [other5.d.ts] export type LocalInterface = import("pkg", { with: {} }).RequireInterface & import("pkg", { with: {} }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: any; +export declare const a: import("pkg", { with: {} }).RequireInterface; +export declare const b: import("pkg", { with: {} }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js.diff deleted file mode 100644 index b656e3fd63b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js -+++ new.nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).js -@@= skipped -126, +126 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; - //// [other.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; - //// [other2.d.ts] - export type LocalInterface = import("pkg", { with: { "bad": "require" } }).RequireInterface & import("pkg", { with: { "bad": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "bad": "require" } }).RequireInterface; --export declare const b: import("pkg", { with: { "bad": "import" } }).ImportInterface; -+export declare const a: import("pkg").RequireInterface; -+export declare const b: any; - //// [other3.d.ts] - export type LocalInterface = import("pkg", { with: {} })[{ - "resolution-mode": "require"; -@@= skipped -18, +18 lines =@@ - export declare const b: any; - //// [other4.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }), Attribute1: any, RequireInterface: any; --export declare const b: import("pkg", { with: {} }), Attribute2: any, ImportInterface: any; -+export declare const a: any, Attribute1: any, RequireInterface: any; -+export declare const b: any, Attribute2: any, ImportInterface: any; - //// [other5.d.ts] - export type LocalInterface = import("pkg", { with: {} }).RequireInterface & import("pkg", { with: {} }).ImportInterface; --export declare const a: import("pkg", { with: {} }).RequireInterface; --export declare const b: import("pkg", { with: {} }).ImportInterface; -+export declare const a: import("pkg").RequireInterface; -+export declare const b: any; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js index de4b48541df..da9d486b8c1 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js @@ -32,5 +32,5 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js.diff deleted file mode 100644 index 30b85889e7e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.nodeModulesImportTypeModeDeclarationEmit1(module=node16).js -+++ new.nodeModulesImportTypeModeDeclarationEmit1(module=node16).js -@@= skipped -31, +31 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node18).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node18).js index de4b48541df..da9d486b8c1 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node18).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node18).js @@ -32,5 +32,5 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node18).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node18).js.diff deleted file mode 100644 index 4859a65d365..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node18).js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.nodeModulesImportTypeModeDeclarationEmit1(module=node18).js -+++ new.nodeModulesImportTypeModeDeclarationEmit1(module=node18).js -@@= skipped -31, +31 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node20).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node20).js index de4b48541df..da9d486b8c1 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node20).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node20).js @@ -32,5 +32,5 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node20).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node20).js.diff deleted file mode 100644 index 7a7ea0af165..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node20).js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.nodeModulesImportTypeModeDeclarationEmit1(module=node20).js -+++ new.nodeModulesImportTypeModeDeclarationEmit1(module=node20).js -@@= skipped -31, +31 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js index de4b48541df..da9d486b8c1 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js @@ -32,5 +32,5 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js.diff deleted file mode 100644 index 03b2ab9c0bf..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js -+++ new.nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js -@@= skipped -31, +31 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "require" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js index 5a552306651..a4297c36f50 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js @@ -121,12 +121,12 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); //// [other2.d.ts] export type LocalInterface = import("pkg", { assert: { "bad": "require" } }).RequireInterface & import("pkg", { assert: { "bad": "import" } }).ImportInterface; export declare const a: import("pkg").RequireInterface; @@ -139,8 +139,8 @@ export declare const a: any; export declare const b: any; //// [other4.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any, Asserts1: any, RequireInterface: any; -export declare const b: any, Asserts2: any, ImportInterface: any; +export declare const a: import("pkg", { with: {} }), Asserts1: any, RequireInterface: any; +export declare const b: import("pkg", { with: {} }), Asserts2: any, ImportInterface: any; //// [other5.d.ts] export type LocalInterface = import("pkg", { assert: {} }).RequireInterface & import("pkg", { assert: {} }).ImportInterface; export declare const a: import("pkg").RequireInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js.diff deleted file mode 100644 index 204232503b4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js -+++ new.nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js -@@= skipped -120, +120 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; - //// [other.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; - //// [other2.d.ts] - export type LocalInterface = import("pkg", { assert: { "bad": "require" } }).RequireInterface & import("pkg", { assert: { "bad": "import" } }).ImportInterface; - export declare const a: import("pkg").RequireInterface; -@@= skipped -18, +18 lines =@@ - export declare const b: any; - //// [other4.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }), Asserts1: any, RequireInterface: any; --export declare const b: import("pkg", { with: {} }), Asserts2: any, ImportInterface: any; -+export declare const a: any, Asserts1: any, RequireInterface: any; -+export declare const b: any, Asserts2: any, ImportInterface: any; - //// [other5.d.ts] - export type LocalInterface = import("pkg", { assert: {} }).RequireInterface & import("pkg", { assert: {} }).ImportInterface; - export declare const a: import("pkg").RequireInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js index 5a552306651..a4297c36f50 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js @@ -121,12 +121,12 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); //// [other2.d.ts] export type LocalInterface = import("pkg", { assert: { "bad": "require" } }).RequireInterface & import("pkg", { assert: { "bad": "import" } }).ImportInterface; export declare const a: import("pkg").RequireInterface; @@ -139,8 +139,8 @@ export declare const a: any; export declare const b: any; //// [other4.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any, Asserts1: any, RequireInterface: any; -export declare const b: any, Asserts2: any, ImportInterface: any; +export declare const a: import("pkg", { with: {} }), Asserts1: any, RequireInterface: any; +export declare const b: import("pkg", { with: {} }), Asserts2: any, ImportInterface: any; //// [other5.d.ts] export type LocalInterface = import("pkg", { assert: {} }).RequireInterface & import("pkg", { assert: {} }).ImportInterface; export declare const a: import("pkg").RequireInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js.diff deleted file mode 100644 index ad17c8f9de6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js -+++ new.nodeModulesImportTypeModeDeclarationEmitErrors1(module=node18).js -@@= skipped -120, +120 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; - //// [other.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; - //// [other2.d.ts] - export type LocalInterface = import("pkg", { assert: { "bad": "require" } }).RequireInterface & import("pkg", { assert: { "bad": "import" } }).ImportInterface; - export declare const a: import("pkg").RequireInterface; -@@= skipped -18, +18 lines =@@ - export declare const b: any; - //// [other4.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }), Asserts1: any, RequireInterface: any; --export declare const b: import("pkg", { with: {} }), Asserts2: any, ImportInterface: any; -+export declare const a: any, Asserts1: any, RequireInterface: any; -+export declare const b: any, Asserts2: any, ImportInterface: any; - //// [other5.d.ts] - export type LocalInterface = import("pkg", { assert: {} }).RequireInterface & import("pkg", { assert: {} }).ImportInterface; - export declare const a: import("pkg").RequireInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js index 5a552306651..a4297c36f50 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js @@ -121,12 +121,12 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); //// [other2.d.ts] export type LocalInterface = import("pkg", { assert: { "bad": "require" } }).RequireInterface & import("pkg", { assert: { "bad": "import" } }).ImportInterface; export declare const a: import("pkg").RequireInterface; @@ -139,8 +139,8 @@ export declare const a: any; export declare const b: any; //// [other4.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any, Asserts1: any, RequireInterface: any; -export declare const b: any, Asserts2: any, ImportInterface: any; +export declare const a: import("pkg", { with: {} }), Asserts1: any, RequireInterface: any; +export declare const b: import("pkg", { with: {} }), Asserts2: any, ImportInterface: any; //// [other5.d.ts] export type LocalInterface = import("pkg", { assert: {} }).RequireInterface & import("pkg", { assert: {} }).ImportInterface; export declare const a: import("pkg").RequireInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js.diff deleted file mode 100644 index 6d90e22a61b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js -+++ new.nodeModulesImportTypeModeDeclarationEmitErrors1(module=node20).js -@@= skipped -120, +120 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; - //// [other.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; - //// [other2.d.ts] - export type LocalInterface = import("pkg", { assert: { "bad": "require" } }).RequireInterface & import("pkg", { assert: { "bad": "import" } }).ImportInterface; - export declare const a: import("pkg").RequireInterface; -@@= skipped -18, +18 lines =@@ - export declare const b: any; - //// [other4.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }), Asserts1: any, RequireInterface: any; --export declare const b: import("pkg", { with: {} }), Asserts2: any, ImportInterface: any; -+export declare const a: any, Asserts1: any, RequireInterface: any; -+export declare const b: any, Asserts2: any, ImportInterface: any; - //// [other5.d.ts] - export type LocalInterface = import("pkg", { assert: {} }).RequireInterface & import("pkg", { assert: {} }).ImportInterface; - export declare const a: import("pkg").RequireInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js index 5a552306651..a4297c36f50 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js @@ -121,12 +121,12 @@ exports.b = null; //// [index.d.ts] export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; +export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any; -export declare const b: any; +export declare const a: import("pkg", { with: {} }); +export declare const b: import("pkg", { with: {} }); //// [other2.d.ts] export type LocalInterface = import("pkg", { assert: { "bad": "require" } }).RequireInterface & import("pkg", { assert: { "bad": "import" } }).ImportInterface; export declare const a: import("pkg").RequireInterface; @@ -139,8 +139,8 @@ export declare const a: any; export declare const b: any; //// [other4.d.ts] export type LocalInterface = import("pkg", { with: {} }); -export declare const a: any, Asserts1: any, RequireInterface: any; -export declare const b: any, Asserts2: any, ImportInterface: any; +export declare const a: import("pkg", { with: {} }), Asserts1: any, RequireInterface: any; +export declare const b: import("pkg", { with: {} }), Asserts2: any, ImportInterface: any; //// [other5.d.ts] export type LocalInterface = import("pkg", { assert: {} }).RequireInterface & import("pkg", { assert: {} }).ImportInterface; export declare const a: import("pkg").RequireInterface; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js.diff deleted file mode 100644 index 7a0ef615d5a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js -+++ new.nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js -@@= skipped -120, +120 lines =@@ - - //// [index.d.ts] - export type LocalInterface = import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; --export declare const a: import("pkg", { with: { "resolution-mode": "foobar" } }).RequireInterface; -+export declare const a: import("pkg").RequireInterface; - export declare const b: import("pkg", { with: { "resolution-mode": "import" } }).ImportInterface; - //// [other.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }); --export declare const b: import("pkg", { with: {} }); -+export declare const a: any; -+export declare const b: any; - //// [other2.d.ts] - export type LocalInterface = import("pkg", { assert: { "bad": "require" } }).RequireInterface & import("pkg", { assert: { "bad": "import" } }).ImportInterface; - export declare const a: import("pkg").RequireInterface; -@@= skipped -18, +18 lines =@@ - export declare const b: any; - //// [other4.d.ts] - export type LocalInterface = import("pkg", { with: {} }); --export declare const a: import("pkg", { with: {} }), Asserts1: any, RequireInterface: any; --export declare const b: import("pkg", { with: {} }), Asserts2: any, ImportInterface: any; -+export declare const a: any, Asserts1: any, RequireInterface: any; -+export declare const b: any, Asserts2: any, ImportInterface: any; - //// [other5.d.ts] - export type LocalInterface = import("pkg", { assert: {} }).RequireInterface & import("pkg", { assert: {} }).ImportInterface; - export declare const a: import("pkg").RequireInterface; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js index b91a324b323..a4f6401e197 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js @@ -48,45 +48,6 @@ exports.default = uses_js_1.default; declare const _default: RequireInterface; export default _default; //// [index.d.ts] -declare const _default: RequireInterface; +import obj from "./uses.js"; +declare const _default: typeof obj; export default _default; - - -//// [DtsFileErrors] - - -out/index.d.ts(1,25): error TS2304: Cannot find name 'RequireInterface'. - - -==== out/index.d.ts (1 errors) ==== - declare const _default: RequireInterface; - ~~~~~~~~~~~~~~~~ -!!! error TS2304: Cannot find name 'RequireInterface'. - export default _default; - -==== /node_modules/pkg/package.json (0 errors) ==== - { - "name": "pkg", - "version": "0.0.1", - "exports": { - "import": "./import.js", - "require": "./require.js" - } - } -==== /node_modules/pkg/import.d.ts (0 errors) ==== - export {}; - declare global { - interface ImportInterface {} - function getInterI(): ImportInterface; - } -==== /node_modules/pkg/require.d.ts (0 errors) ==== - export {}; - declare global { - interface RequireInterface {} - function getInterR(): RequireInterface; - } -==== out/uses.d.ts (0 errors) ==== - /// - declare const _default: RequireInterface; - export default _default; - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js.diff deleted file mode 100644 index fb376c32525..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js.diff +++ /dev/null @@ -1,50 +0,0 @@ ---- old.nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js -+++ new.nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node16).js -@@= skipped -47, +47 lines =@@ - declare const _default: RequireInterface; - export default _default; - //// [index.d.ts] --import obj from "./uses.js"; --declare const _default: typeof obj; -+declare const _default: RequireInterface; - export default _default; -+ -+ -+//// [DtsFileErrors] -+ -+ -+out/index.d.ts(1,25): error TS2304: Cannot find name 'RequireInterface'. -+ -+ -+==== out/index.d.ts (1 errors) ==== -+ declare const _default: RequireInterface; -+ ~~~~~~~~~~~~~~~~ -+!!! error TS2304: Cannot find name 'RequireInterface'. -+ export default _default; -+ -+==== /node_modules/pkg/package.json (0 errors) ==== -+ { -+ "name": "pkg", -+ "version": "0.0.1", -+ "exports": { -+ "import": "./import.js", -+ "require": "./require.js" -+ } -+ } -+==== /node_modules/pkg/import.d.ts (0 errors) ==== -+ export {}; -+ declare global { -+ interface ImportInterface {} -+ function getInterI(): ImportInterface; -+ } -+==== /node_modules/pkg/require.d.ts (0 errors) ==== -+ export {}; -+ declare global { -+ interface RequireInterface {} -+ function getInterR(): RequireInterface; -+ } -+==== out/uses.d.ts (0 errors) ==== -+ /// -+ declare const _default: RequireInterface; -+ export default _default; -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js index b91a324b323..a4f6401e197 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js @@ -48,45 +48,6 @@ exports.default = uses_js_1.default; declare const _default: RequireInterface; export default _default; //// [index.d.ts] -declare const _default: RequireInterface; +import obj from "./uses.js"; +declare const _default: typeof obj; export default _default; - - -//// [DtsFileErrors] - - -out/index.d.ts(1,25): error TS2304: Cannot find name 'RequireInterface'. - - -==== out/index.d.ts (1 errors) ==== - declare const _default: RequireInterface; - ~~~~~~~~~~~~~~~~ -!!! error TS2304: Cannot find name 'RequireInterface'. - export default _default; - -==== /node_modules/pkg/package.json (0 errors) ==== - { - "name": "pkg", - "version": "0.0.1", - "exports": { - "import": "./import.js", - "require": "./require.js" - } - } -==== /node_modules/pkg/import.d.ts (0 errors) ==== - export {}; - declare global { - interface ImportInterface {} - function getInterI(): ImportInterface; - } -==== /node_modules/pkg/require.d.ts (0 errors) ==== - export {}; - declare global { - interface RequireInterface {} - function getInterR(): RequireInterface; - } -==== out/uses.d.ts (0 errors) ==== - /// - declare const _default: RequireInterface; - export default _default; - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js.diff deleted file mode 100644 index d2d7bc4ed94..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js.diff +++ /dev/null @@ -1,50 +0,0 @@ ---- old.nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js -+++ new.nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node18).js -@@= skipped -47, +47 lines =@@ - declare const _default: RequireInterface; - export default _default; - //// [index.d.ts] --import obj from "./uses.js"; --declare const _default: typeof obj; -+declare const _default: RequireInterface; - export default _default; -+ -+ -+//// [DtsFileErrors] -+ -+ -+out/index.d.ts(1,25): error TS2304: Cannot find name 'RequireInterface'. -+ -+ -+==== out/index.d.ts (1 errors) ==== -+ declare const _default: RequireInterface; -+ ~~~~~~~~~~~~~~~~ -+!!! error TS2304: Cannot find name 'RequireInterface'. -+ export default _default; -+ -+==== /node_modules/pkg/package.json (0 errors) ==== -+ { -+ "name": "pkg", -+ "version": "0.0.1", -+ "exports": { -+ "import": "./import.js", -+ "require": "./require.js" -+ } -+ } -+==== /node_modules/pkg/import.d.ts (0 errors) ==== -+ export {}; -+ declare global { -+ interface ImportInterface {} -+ function getInterI(): ImportInterface; -+ } -+==== /node_modules/pkg/require.d.ts (0 errors) ==== -+ export {}; -+ declare global { -+ interface RequireInterface {} -+ function getInterR(): RequireInterface; -+ } -+==== out/uses.d.ts (0 errors) ==== -+ /// -+ declare const _default: RequireInterface; -+ export default _default; -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js index b91a324b323..a4f6401e197 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js @@ -48,45 +48,6 @@ exports.default = uses_js_1.default; declare const _default: RequireInterface; export default _default; //// [index.d.ts] -declare const _default: RequireInterface; +import obj from "./uses.js"; +declare const _default: typeof obj; export default _default; - - -//// [DtsFileErrors] - - -out/index.d.ts(1,25): error TS2304: Cannot find name 'RequireInterface'. - - -==== out/index.d.ts (1 errors) ==== - declare const _default: RequireInterface; - ~~~~~~~~~~~~~~~~ -!!! error TS2304: Cannot find name 'RequireInterface'. - export default _default; - -==== /node_modules/pkg/package.json (0 errors) ==== - { - "name": "pkg", - "version": "0.0.1", - "exports": { - "import": "./import.js", - "require": "./require.js" - } - } -==== /node_modules/pkg/import.d.ts (0 errors) ==== - export {}; - declare global { - interface ImportInterface {} - function getInterI(): ImportInterface; - } -==== /node_modules/pkg/require.d.ts (0 errors) ==== - export {}; - declare global { - interface RequireInterface {} - function getInterR(): RequireInterface; - } -==== out/uses.d.ts (0 errors) ==== - /// - declare const _default: RequireInterface; - export default _default; - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js.diff deleted file mode 100644 index 102a66bb27f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js.diff +++ /dev/null @@ -1,50 +0,0 @@ ---- old.nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js -+++ new.nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=node20).js -@@= skipped -47, +47 lines =@@ - declare const _default: RequireInterface; - export default _default; - //// [index.d.ts] --import obj from "./uses.js"; --declare const _default: typeof obj; -+declare const _default: RequireInterface; - export default _default; -+ -+ -+//// [DtsFileErrors] -+ -+ -+out/index.d.ts(1,25): error TS2304: Cannot find name 'RequireInterface'. -+ -+ -+==== out/index.d.ts (1 errors) ==== -+ declare const _default: RequireInterface; -+ ~~~~~~~~~~~~~~~~ -+!!! error TS2304: Cannot find name 'RequireInterface'. -+ export default _default; -+ -+==== /node_modules/pkg/package.json (0 errors) ==== -+ { -+ "name": "pkg", -+ "version": "0.0.1", -+ "exports": { -+ "import": "./import.js", -+ "require": "./require.js" -+ } -+ } -+==== /node_modules/pkg/import.d.ts (0 errors) ==== -+ export {}; -+ declare global { -+ interface ImportInterface {} -+ function getInterI(): ImportInterface; -+ } -+==== /node_modules/pkg/require.d.ts (0 errors) ==== -+ export {}; -+ declare global { -+ interface RequireInterface {} -+ function getInterR(): RequireInterface; -+ } -+==== out/uses.d.ts (0 errors) ==== -+ /// -+ declare const _default: RequireInterface; -+ export default _default; -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js index b91a324b323..a4f6401e197 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js @@ -48,45 +48,6 @@ exports.default = uses_js_1.default; declare const _default: RequireInterface; export default _default; //// [index.d.ts] -declare const _default: RequireInterface; +import obj from "./uses.js"; +declare const _default: typeof obj; export default _default; - - -//// [DtsFileErrors] - - -out/index.d.ts(1,25): error TS2304: Cannot find name 'RequireInterface'. - - -==== out/index.d.ts (1 errors) ==== - declare const _default: RequireInterface; - ~~~~~~~~~~~~~~~~ -!!! error TS2304: Cannot find name 'RequireInterface'. - export default _default; - -==== /node_modules/pkg/package.json (0 errors) ==== - { - "name": "pkg", - "version": "0.0.1", - "exports": { - "import": "./import.js", - "require": "./require.js" - } - } -==== /node_modules/pkg/import.d.ts (0 errors) ==== - export {}; - declare global { - interface ImportInterface {} - function getInterI(): ImportInterface; - } -==== /node_modules/pkg/require.d.ts (0 errors) ==== - export {}; - declare global { - interface RequireInterface {} - function getInterR(): RequireInterface; - } -==== out/uses.d.ts (0 errors) ==== - /// - declare const _default: RequireInterface; - export default _default; - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js.diff deleted file mode 100644 index 52dd71676fd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js.diff +++ /dev/null @@ -1,50 +0,0 @@ ---- old.nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js -+++ new.nodeModulesTripleSlashReferenceModeDeclarationEmit6(module=nodenext).js -@@= skipped -47, +47 lines =@@ - declare const _default: RequireInterface; - export default _default; - //// [index.d.ts] --import obj from "./uses.js"; --declare const _default: typeof obj; -+declare const _default: RequireInterface; - export default _default; -+ -+ -+//// [DtsFileErrors] -+ -+ -+out/index.d.ts(1,25): error TS2304: Cannot find name 'RequireInterface'. -+ -+ -+==== out/index.d.ts (1 errors) ==== -+ declare const _default: RequireInterface; -+ ~~~~~~~~~~~~~~~~ -+!!! error TS2304: Cannot find name 'RequireInterface'. -+ export default _default; -+ -+==== /node_modules/pkg/package.json (0 errors) ==== -+ { -+ "name": "pkg", -+ "version": "0.0.1", -+ "exports": { -+ "import": "./import.js", -+ "require": "./require.js" -+ } -+ } -+==== /node_modules/pkg/import.d.ts (0 errors) ==== -+ export {}; -+ declare global { -+ interface ImportInterface {} -+ function getInterI(): ImportInterface; -+ } -+==== /node_modules/pkg/require.d.ts (0 errors) ==== -+ export {}; -+ declare global { -+ interface RequireInterface {} -+ function getInterR(): RequireInterface; -+ } -+==== out/uses.d.ts (0 errors) ==== -+ /// -+ declare const _default: RequireInterface; -+ export default _default; -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/numberPropertyAccess.types b/testdata/baselines/reference/submodule/conformance/numberPropertyAccess.types index 25780ac8396..7012d365957 100644 --- a/testdata/baselines/reference/submodule/conformance/numberPropertyAccess.types +++ b/testdata/baselines/reference/submodule/conformance/numberPropertyAccess.types @@ -8,9 +8,9 @@ var x = 1; var a = x.toExponential(); >a : string >x.toExponential() : string ->x.toExponential : (fractionDigits?: number | undefined) => string +>x.toExponential : (fractionDigits?: number) => string >x : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string var b = x.hasOwnProperty('toFixed'); >b : boolean @@ -23,7 +23,7 @@ var b = x.hasOwnProperty('toFixed'); var c = x['toExponential'](); >c : string >x['toExponential']() : string ->x['toExponential'] : (fractionDigits?: number | undefined) => string +>x['toExponential'] : (fractionDigits?: number) => string >x : number >'toExponential' : "toExponential" diff --git a/testdata/baselines/reference/submodule/conformance/numberPropertyAccess.types.diff b/testdata/baselines/reference/submodule/conformance/numberPropertyAccess.types.diff deleted file mode 100644 index f37ba69e7c2..00000000000 --- a/testdata/baselines/reference/submodule/conformance/numberPropertyAccess.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.numberPropertyAccess.types -+++ new.numberPropertyAccess.types -@@= skipped -7, +7 lines =@@ - var a = x.toExponential(); - >a : string - >x.toExponential() : string -->x.toExponential : (fractionDigits?: number) => string -+>x.toExponential : (fractionDigits?: number | undefined) => string - >x : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - - var b = x.hasOwnProperty('toFixed'); - >b : boolean -@@= skipped -15, +15 lines =@@ - var c = x['toExponential'](); - >c : string - >x['toExponential']() : string -->x['toExponential'] : (fractionDigits?: number) => string -+>x['toExponential'] : (fractionDigits?: number | undefined) => string - >x : number - >'toExponential' : "toExponential" diff --git a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes1.types b/testdata/baselines/reference/submodule/conformance/numericLiteralTypes1.types index f1cddf28375..a085be04eaf 100644 --- a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes1.types +++ b/testdata/baselines/reference/submodule/conformance/numericLiteralTypes1.types @@ -367,7 +367,7 @@ function f14(x: 0 | 1 | 2, y: string) { } function f15(x: 0 | false, y: 1 | "one") { ->f15 : (x: 0 | false, y: "one" | 1) => void +>f15 : (x: 0 | false, y: 1 | "one") => void >x : 0 | false >false : false >y : "one" | 1 diff --git a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes1.types.diff b/testdata/baselines/reference/submodule/conformance/numericLiteralTypes1.types.diff deleted file mode 100644 index 9ceeaba0ec8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes1.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.numericLiteralTypes1.types -+++ new.numericLiteralTypes1.types -@@= skipped -366, +366 lines =@@ - } - - function f15(x: 0 | false, y: 1 | "one") { -->f15 : (x: 0 | false, y: 1 | "one") => void -+>f15 : (x: 0 | false, y: "one" | 1) => void - >x : 0 | false - >false : false - >y : "one" | 1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes2.types b/testdata/baselines/reference/submodule/conformance/numericLiteralTypes2.types index a5dcbbda715..f7291741454 100644 --- a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes2.types +++ b/testdata/baselines/reference/submodule/conformance/numericLiteralTypes2.types @@ -367,7 +367,7 @@ function f14(x: 0 | 1 | 2, y: string) { } function f15(x: 0 | false, y: 1 | "one") { ->f15 : (x: 0 | false, y: "one" | 1) => void +>f15 : (x: 0 | false, y: 1 | "one") => void >x : 0 | false >false : false >y : "one" | 1 diff --git a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes2.types.diff b/testdata/baselines/reference/submodule/conformance/numericLiteralTypes2.types.diff deleted file mode 100644 index 6b8b15d6cbe..00000000000 --- a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.numericLiteralTypes2.types -+++ new.numericLiteralTypes2.types -@@= skipped -366, +366 lines =@@ - } - - function f15(x: 0 | false, y: 1 | "one") { -->f15 : (x: 0 | false, y: 1 | "one") => void -+>f15 : (x: 0 | false, y: "one" | 1) => void - >x : 0 | false - >false : false - >y : "one" | 1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes3.types b/testdata/baselines/reference/submodule/conformance/numericLiteralTypes3.types index bc739375c50..5ec0e33257e 100644 --- a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes3.types +++ b/testdata/baselines/reference/submodule/conformance/numericLiteralTypes3.types @@ -14,7 +14,7 @@ type D = 0 | 1 | 2; >D : D function f1(a: A, b: B, c: C, d: D) { ->f1 : (a: 1, b: B, c: C, d: D) => void +>f1 : (a: A, b: B, c: C, d: D) => void >a : 1 >b : B >c : C @@ -42,7 +42,7 @@ function f1(a: A, b: B, c: C, d: D) { } function f2(a: A, b: B, c: C, d: D) { ->f2 : (a: 1, b: B, c: C, d: D) => void +>f2 : (a: A, b: B, c: C, d: D) => void >a : 1 >b : B >c : C @@ -70,7 +70,7 @@ function f2(a: A, b: B, c: C, d: D) { } function f3(a: A, b: B, c: C, d: D) { ->f3 : (a: 1, b: B, c: C, d: D) => void +>f3 : (a: A, b: B, c: C, d: D) => void >a : 1 >b : B >c : C @@ -98,7 +98,7 @@ function f3(a: A, b: B, c: C, d: D) { } function f4(a: A, b: B, c: C, d: D) { ->f4 : (a: 1, b: B, c: C, d: D) => void +>f4 : (a: A, b: B, c: C, d: D) => void >a : 1 >b : B >c : C @@ -126,7 +126,7 @@ function f4(a: A, b: B, c: C, d: D) { } function f5(a: A, b: B, c: C, d: D) { ->f5 : (a: 1, b: B, c: C, d: D) => void +>f5 : (a: A, b: B, c: C, d: D) => void >a : 1 >b : B >c : C @@ -214,7 +214,7 @@ function f5(a: A, b: B, c: C, d: D) { } function f6(a: A, b: B, c: C, d: D) { ->f6 : (a: 1, b: B, c: C, d: D) => void +>f6 : (a: A, b: B, c: C, d: D) => void >a : 1 >b : B >c : C @@ -302,7 +302,7 @@ function f6(a: A, b: B, c: C, d: D) { } function f7(a: A, b: B, c: C, d: D) { ->f7 : (a: 1, b: B, c: C, d: D) => void +>f7 : (a: A, b: B, c: C, d: D) => void >a : 1 >b : B >c : C diff --git a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes3.types.diff b/testdata/baselines/reference/submodule/conformance/numericLiteralTypes3.types.diff deleted file mode 100644 index 4ab17decb71..00000000000 --- a/testdata/baselines/reference/submodule/conformance/numericLiteralTypes3.types.diff +++ /dev/null @@ -1,65 +0,0 @@ ---- old.numericLiteralTypes3.types -+++ new.numericLiteralTypes3.types -@@= skipped -13, +13 lines =@@ - >D : D - - function f1(a: A, b: B, c: C, d: D) { -->f1 : (a: A, b: B, c: C, d: D) => void -+>f1 : (a: 1, b: B, c: C, d: D) => void - >a : 1 - >b : B - >c : C -@@= skipped -28, +28 lines =@@ - } - - function f2(a: A, b: B, c: C, d: D) { -->f2 : (a: A, b: B, c: C, d: D) => void -+>f2 : (a: 1, b: B, c: C, d: D) => void - >a : 1 - >b : B - >c : C -@@= skipped -28, +28 lines =@@ - } - - function f3(a: A, b: B, c: C, d: D) { -->f3 : (a: A, b: B, c: C, d: D) => void -+>f3 : (a: 1, b: B, c: C, d: D) => void - >a : 1 - >b : B - >c : C -@@= skipped -28, +28 lines =@@ - } - - function f4(a: A, b: B, c: C, d: D) { -->f4 : (a: A, b: B, c: C, d: D) => void -+>f4 : (a: 1, b: B, c: C, d: D) => void - >a : 1 - >b : B - >c : C -@@= skipped -28, +28 lines =@@ - } - - function f5(a: A, b: B, c: C, d: D) { -->f5 : (a: A, b: B, c: C, d: D) => void -+>f5 : (a: 1, b: B, c: C, d: D) => void - >a : 1 - >b : B - >c : C -@@= skipped -88, +88 lines =@@ - } - - function f6(a: A, b: B, c: C, d: D) { -->f6 : (a: A, b: B, c: C, d: D) => void -+>f6 : (a: 1, b: B, c: C, d: D) => void - >a : 1 - >b : B - >c : C -@@= skipped -88, +88 lines =@@ - } - - function f7(a: A, b: B, c: C, d: D) { -->f7 : (a: A, b: B, c: C, d: D) => void -+>f7 : (a: 1, b: B, c: C, d: D) => void - >a : 1 - >b : B - >c : C \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralContextualTyping.types b/testdata/baselines/reference/submodule/conformance/objectLiteralContextualTyping.types index 054550f5509..95a3a3266f3 100644 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralContextualTyping.types +++ b/testdata/baselines/reference/submodule/conformance/objectLiteralContextualTyping.types @@ -71,14 +71,14 @@ var w: number; >w : number declare function bar(param: { x?: T }): T; ->bar : (param: { x?: T | undefined; }) => T ->param : { x?: T | undefined; } +>bar : (param: { x?: T; }) => T +>param : { x?: T; } >x : T | undefined var b = bar({}); >b : unknown >bar({}) : unknown ->bar : (param: { x?: T | undefined; }) => T +>bar : (param: { x?: T; }) => T >{} : {} var b: {}; diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralContextualTyping.types.diff b/testdata/baselines/reference/submodule/conformance/objectLiteralContextualTyping.types.diff deleted file mode 100644 index fb48765f943..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralContextualTyping.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.objectLiteralContextualTyping.types -+++ new.objectLiteralContextualTyping.types -@@= skipped -70, +70 lines =@@ - >w : number - - declare function bar(param: { x?: T }): T; -->bar : (param: { x?: T; }) => T -->param : { x?: T; } -+>bar : (param: { x?: T | undefined; }) => T -+>param : { x?: T | undefined; } - >x : T | undefined - - var b = bar({}); - >b : unknown - >bar({}) : unknown -->bar : (param: { x?: T; }) => T -+>bar : (param: { x?: T | undefined; }) => T - >{} : {} - - var b: {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralGettersAndSetters.types b/testdata/baselines/reference/submodule/conformance/objectLiteralGettersAndSetters.types index 8ce79af057b..f9bf097c436 100644 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralGettersAndSetters.types +++ b/testdata/baselines/reference/submodule/conformance/objectLiteralGettersAndSetters.types @@ -164,8 +164,8 @@ var sameType1 = { get x(): string { return undefined; }, set x(n: string) { } }; >n : string var sameType2 = { get x(): Array { return undefined; }, set x(n: number[]) { } }; ->sameType2 : { x: number[]; } ->{ get x(): Array { return undefined; }, set x(n: number[]) { } } : { x: number[]; } +>sameType2 : { x: Array; } +>{ get x(): Array { return undefined; }, set x(n: number[]) { } } : { x: Array; } >x : number[] >undefined : undefined >x : number[] diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralGettersAndSetters.types.diff b/testdata/baselines/reference/submodule/conformance/objectLiteralGettersAndSetters.types.diff deleted file mode 100644 index bee0c517ae2..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralGettersAndSetters.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.objectLiteralGettersAndSetters.types -+++ new.objectLiteralGettersAndSetters.types -@@= skipped -163, +163 lines =@@ - >n : string - - var sameType2 = { get x(): Array { return undefined; }, set x(n: number[]) { } }; -->sameType2 : { x: Array; } -->{ get x(): Array { return undefined; }, set x(n: number[]) { } } : { x: Array; } -+>sameType2 : { x: number[]; } -+>{ get x(): Array { return undefined; }, set x(n: number[]) { } } : { x: number[]; } - >x : number[] - >undefined : undefined - >x : number[] \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.js b/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.js index 792be546647..b2572f2a31a 100644 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.js +++ b/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.js @@ -147,14 +147,14 @@ declare let opts: { baz?: boolean; }; declare let c1: { - foo?: string | undefined; - bar?: string | undefined; - baz?: boolean | undefined; + foo?: string; + bar?: string; + baz?: boolean; }; declare let c2: { - foo?: string | undefined; - bar?: string | undefined; - baz?: boolean | undefined; + foo?: string; + bar?: string; + baz?: boolean; }; declare let c3: { a: number; diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.js.diff b/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.js.diff deleted file mode 100644 index 54461622e24..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.js.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.objectLiteralNormalization.js -+++ new.objectLiteralNormalization.js -@@= skipped -146, +146 lines =@@ - baz?: boolean; - }; - declare let c1: { -- foo?: string; -- bar?: string; -- baz?: boolean; -+ foo?: string | undefined; -+ bar?: string | undefined; -+ baz?: boolean | undefined; - }; - declare let c2: { -- foo?: string; -- bar?: string; -- baz?: boolean; -+ foo?: string | undefined; -+ bar?: string | undefined; -+ baz?: boolean | undefined; - }; - declare let c3: { - a: number; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.types b/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.types index 8981f4b5ea8..922087f973b 100644 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.types +++ b/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.types @@ -153,25 +153,25 @@ let b3 = { ...b2 }; // Before widening {} acts like { [x: string]: undefined }, which is a // subtype of types with all optional properties declare let opts: { foo?: string, bar?: string, baz?: boolean }; ->opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +>opts : { foo?: string; bar?: string; baz?: boolean; } >foo : string | undefined >bar : string | undefined >baz : boolean | undefined let c1 = !true ? {} : opts; ->c1 : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } ->!true ? {} : opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +>c1 : { foo?: string; bar?: string; baz?: boolean; } +>!true ? {} : opts : { foo?: string; bar?: string; baz?: boolean; } >!true : false >true : true >{} : {} ->opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +>opts : { foo?: string; bar?: string; baz?: boolean; } let c2 = !true ? opts : {}; ->c2 : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } ->!true ? opts : {} : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +>c2 : { foo?: string; bar?: string; baz?: boolean; } +>!true ? opts : {} : { foo?: string; bar?: string; baz?: boolean; } >!true : false >true : true ->opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +>opts : { foo?: string; bar?: string; baz?: boolean; } >{} : {} let c3 = !true ? { a: 0, b: 0 } : {}; diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.types.diff b/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.types.diff deleted file mode 100644 index b5281010efe..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralNormalization.types.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- old.objectLiteralNormalization.types -+++ new.objectLiteralNormalization.types -@@= skipped -152, +152 lines =@@ - // Before widening {} acts like { [x: string]: undefined }, which is a - // subtype of types with all optional properties - declare let opts: { foo?: string, bar?: string, baz?: boolean }; -->opts : { foo?: string; bar?: string; baz?: boolean; } -+>opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } - >foo : string | undefined - >bar : string | undefined - >baz : boolean | undefined - - let c1 = !true ? {} : opts; -->c1 : { foo?: string; bar?: string; baz?: boolean; } -->!true ? {} : opts : { foo?: string; bar?: string; baz?: boolean; } -+>c1 : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } -+>!true ? {} : opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } - >!true : false - >true : true - >{} : {} -->opts : { foo?: string; bar?: string; baz?: boolean; } -+>opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } - - let c2 = !true ? opts : {}; -->c2 : { foo?: string; bar?: string; baz?: boolean; } -->!true ? opts : {} : { foo?: string; bar?: string; baz?: boolean; } -+>c2 : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } -+>!true ? opts : {} : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } - >!true : false - >true : true -->opts : { foo?: string; bar?: string; baz?: boolean; } -+>opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } - >{} : {} - - let c3 = !true ? { a: 0, b: 0 } : {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectSpread(target=es2015).types b/testdata/baselines/reference/submodule/conformance/objectSpread(target=es2015).types index 4cbdbd10206..1a359341150 100644 --- a/testdata/baselines/reference/submodule/conformance/objectSpread(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/objectSpread(target=es2015).types @@ -396,7 +396,7 @@ let changeTypeBoth: { a: string, b: number } = // optional function container( ->container : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string | undefined; }, optionalNumber: { sn?: number | undefined; }) => void +>container : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string; }, optionalNumber: { sn?: number; }) => void definiteBoolean: { sn: boolean }, >definiteBoolean : { sn: boolean; } @@ -407,11 +407,11 @@ function container( >sn : string optionalString: { sn?: string }, ->optionalString : { sn?: string | undefined; } +>optionalString : { sn?: string; } >sn : string | undefined optionalNumber: { sn?: number }) { ->optionalNumber : { sn?: number | undefined; } +>optionalNumber : { sn?: number; } >sn : number | undefined let optionalUnionStops: { sn: string | number | boolean } = { ...definiteBoolean, ...definiteString, ...optionalNumber }; @@ -420,7 +420,7 @@ function container( >{ ...definiteBoolean, ...definiteString, ...optionalNumber } : { sn: string | number; } >definiteBoolean : { sn: boolean; } >definiteString : { sn: string; } ->optionalNumber : { sn?: number | undefined; } +>optionalNumber : { sn?: number; } let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber }; >optionalUnionDuplicates : { sn: string | number; } @@ -428,15 +428,15 @@ function container( >{ ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber } : { sn: string | number; } >definiteBoolean : { sn: boolean; } >definiteString : { sn: string; } ->optionalString : { sn?: string | undefined; } ->optionalNumber : { sn?: number | undefined; } +>optionalString : { sn?: string; } +>optionalNumber : { sn?: number; } let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber }; ->allOptional : { sn?: string | number | undefined; } +>allOptional : { sn?: string | number; } >sn : string | number | undefined >{ ...optionalString, ...optionalNumber } : { sn?: string | number | undefined; } ->optionalString : { sn?: string | undefined; } ->optionalNumber : { sn?: number | undefined; } +>optionalString : { sn?: string; } +>optionalNumber : { sn?: number; } // computed property let computedFirst: { a: number, b: string, "before everything": number } = diff --git a/testdata/baselines/reference/submodule/conformance/objectSpread(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/objectSpread(target=es2015).types.diff deleted file mode 100644 index cba2fd06c7e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectSpread(target=es2015).types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.objectSpread(target=es2015).types -+++ new.objectSpread(target=es2015).types -@@= skipped -395, +395 lines =@@ - - // optional - function container( -->container : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string; }, optionalNumber: { sn?: number; }) => void -+>container : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string | undefined; }, optionalNumber: { sn?: number | undefined; }) => void - - definiteBoolean: { sn: boolean }, - >definiteBoolean : { sn: boolean; } -@@= skipped -11, +11 lines =@@ - >sn : string - - optionalString: { sn?: string }, -->optionalString : { sn?: string; } -+>optionalString : { sn?: string | undefined; } - >sn : string | undefined - - optionalNumber: { sn?: number }) { -->optionalNumber : { sn?: number; } -+>optionalNumber : { sn?: number | undefined; } - >sn : number | undefined - - let optionalUnionStops: { sn: string | number | boolean } = { ...definiteBoolean, ...definiteString, ...optionalNumber }; -@@= skipped -13, +13 lines =@@ - >{ ...definiteBoolean, ...definiteString, ...optionalNumber } : { sn: string | number; } - >definiteBoolean : { sn: boolean; } - >definiteString : { sn: string; } -->optionalNumber : { sn?: number; } -+>optionalNumber : { sn?: number | undefined; } - - let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber }; - >optionalUnionDuplicates : { sn: string | number; } -@@= skipped -8, +8 lines =@@ - >{ ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber } : { sn: string | number; } - >definiteBoolean : { sn: boolean; } - >definiteString : { sn: string; } -->optionalString : { sn?: string; } -->optionalNumber : { sn?: number; } -+>optionalString : { sn?: string | undefined; } -+>optionalNumber : { sn?: number | undefined; } - - let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber }; -->allOptional : { sn?: string | number; } -+>allOptional : { sn?: string | number | undefined; } - >sn : string | number | undefined - >{ ...optionalString, ...optionalNumber } : { sn?: string | number | undefined; } -->optionalString : { sn?: string; } -->optionalNumber : { sn?: number; } -+>optionalString : { sn?: string | undefined; } -+>optionalNumber : { sn?: number | undefined; } - - // computed property - let computedFirst: { a: number, b: string, "before everything": number } = \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectSpreadNegative(target=es2015).types b/testdata/baselines/reference/submodule/conformance/objectSpreadNegative(target=es2015).types index a31febff952..b83a8383f8d 100644 --- a/testdata/baselines/reference/submodule/conformance/objectSpreadNegative(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/objectSpreadNegative(target=es2015).types @@ -42,19 +42,19 @@ let sn: number = o2.x; // error, x is private >x : any declare let optionalString: { sn?: string }; ->optionalString : { sn?: string | undefined; } +>optionalString : { sn?: string; } >sn : string | undefined declare let optionalNumber: { sn?: number }; ->optionalNumber : { sn?: number | undefined; } +>optionalNumber : { sn?: number; } >sn : number | undefined let allOptional: { sn: string | number } = { ...optionalString, ...optionalNumber }; >allOptional : { sn: string | number; } >sn : string | number >{ ...optionalString, ...optionalNumber } : { sn?: string | number | undefined; } ->optionalString : { sn?: string | undefined; } ->optionalNumber : { sn?: number | undefined; } +>optionalString : { sn?: string; } +>optionalNumber : { sn?: number; } // error, 'sn' is optional in source, required in target diff --git a/testdata/baselines/reference/submodule/conformance/objectSpreadNegative(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/objectSpreadNegative(target=es2015).types.diff deleted file mode 100644 index ee46b6bc1ef..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectSpreadNegative(target=es2015).types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.objectSpreadNegative(target=es2015).types -+++ new.objectSpreadNegative(target=es2015).types -@@= skipped -41, +41 lines =@@ - >x : any - - declare let optionalString: { sn?: string }; -->optionalString : { sn?: string; } -+>optionalString : { sn?: string | undefined; } - >sn : string | undefined - - declare let optionalNumber: { sn?: number }; -->optionalNumber : { sn?: number; } -+>optionalNumber : { sn?: number | undefined; } - >sn : number | undefined - - let allOptional: { sn: string | number } = { ...optionalString, ...optionalNumber }; - >allOptional : { sn: string | number; } - >sn : string | number - >{ ...optionalString, ...optionalNumber } : { sn?: string | number | undefined; } -->optionalString : { sn?: string; } -->optionalNumber : { sn?: number; } -+>optionalString : { sn?: string | undefined; } -+>optionalNumber : { sn?: number | undefined; } - - // error, 'sn' is optional in source, required in target diff --git a/testdata/baselines/reference/submodule/conformance/objectSpreadRepeatedNullCheckPerf.types b/testdata/baselines/reference/submodule/conformance/objectSpreadRepeatedNullCheckPerf.types index 173340afc55..22599ff7c75 100644 --- a/testdata/baselines/reference/submodule/conformance/objectSpreadRepeatedNullCheckPerf.types +++ b/testdata/baselines/reference/submodule/conformance/objectSpreadRepeatedNullCheckPerf.types @@ -98,11 +98,11 @@ function parseWithSpread(config: Record): Props { >{ a: config.a.toString() } : { a: string; } >a : string >config.a.toString() : string ->config.a.toString : (radix?: number | undefined) => string +>config.a.toString : (radix?: number) => string >config.a : number >config : Record >a : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.b !== undefined && { b: config.b.toString() }, >config.b !== undefined && { b: config.b.toString() } : false | { b: string; } @@ -114,11 +114,11 @@ function parseWithSpread(config: Record): Props { >{ b: config.b.toString() } : { b: string; } >b : string >config.b.toString() : string ->config.b.toString : (radix?: number | undefined) => string +>config.b.toString : (radix?: number) => string >config.b : number >config : Record >b : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.c !== undefined && { c: config.c.toString() }, >config.c !== undefined && { c: config.c.toString() } : false | { c: string; } @@ -130,11 +130,11 @@ function parseWithSpread(config: Record): Props { >{ c: config.c.toString() } : { c: string; } >c : string >config.c.toString() : string ->config.c.toString : (radix?: number | undefined) => string +>config.c.toString : (radix?: number) => string >config.c : number >config : Record >c : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.d !== undefined && { d: config.d.toString() }, >config.d !== undefined && { d: config.d.toString() } : false | { d: string; } @@ -146,11 +146,11 @@ function parseWithSpread(config: Record): Props { >{ d: config.d.toString() } : { d: string; } >d : string >config.d.toString() : string ->config.d.toString : (radix?: number | undefined) => string +>config.d.toString : (radix?: number) => string >config.d : number >config : Record >d : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.e !== undefined && { e: config.e.toString() }, >config.e !== undefined && { e: config.e.toString() } : false | { e: string; } @@ -162,11 +162,11 @@ function parseWithSpread(config: Record): Props { >{ e: config.e.toString() } : { e: string; } >e : string >config.e.toString() : string ->config.e.toString : (radix?: number | undefined) => string +>config.e.toString : (radix?: number) => string >config.e : number >config : Record >e : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.f !== undefined && { f: config.f.toString() }, >config.f !== undefined && { f: config.f.toString() } : false | { f: string; } @@ -178,11 +178,11 @@ function parseWithSpread(config: Record): Props { >{ f: config.f.toString() } : { f: string; } >f : string >config.f.toString() : string ->config.f.toString : (radix?: number | undefined) => string +>config.f.toString : (radix?: number) => string >config.f : number >config : Record >f : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.g !== undefined && { g: config.g.toString() }, >config.g !== undefined && { g: config.g.toString() } : false | { g: string; } @@ -194,11 +194,11 @@ function parseWithSpread(config: Record): Props { >{ g: config.g.toString() } : { g: string; } >g : string >config.g.toString() : string ->config.g.toString : (radix?: number | undefined) => string +>config.g.toString : (radix?: number) => string >config.g : number >config : Record >g : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.h !== undefined && { h: config.h.toString() }, >config.h !== undefined && { h: config.h.toString() } : false | { h: string; } @@ -210,11 +210,11 @@ function parseWithSpread(config: Record): Props { >{ h: config.h.toString() } : { h: string; } >h : string >config.h.toString() : string ->config.h.toString : (radix?: number | undefined) => string +>config.h.toString : (radix?: number) => string >config.h : number >config : Record >h : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.i !== undefined && { i: config.i.toString() }, >config.i !== undefined && { i: config.i.toString() } : false | { i: string; } @@ -226,11 +226,11 @@ function parseWithSpread(config: Record): Props { >{ i: config.i.toString() } : { i: string; } >i : string >config.i.toString() : string ->config.i.toString : (radix?: number | undefined) => string +>config.i.toString : (radix?: number) => string >config.i : number >config : Record >i : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.j !== undefined && { j: config.j.toString() }, >config.j !== undefined && { j: config.j.toString() } : false | { j: string; } @@ -242,11 +242,11 @@ function parseWithSpread(config: Record): Props { >{ j: config.j.toString() } : { j: string; } >j : string >config.j.toString() : string ->config.j.toString : (radix?: number | undefined) => string +>config.j.toString : (radix?: number) => string >config.j : number >config : Record >j : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.k !== undefined && { k: config.k.toString() }, >config.k !== undefined && { k: config.k.toString() } : false | { k: string; } @@ -258,11 +258,11 @@ function parseWithSpread(config: Record): Props { >{ k: config.k.toString() } : { k: string; } >k : string >config.k.toString() : string ->config.k.toString : (radix?: number | undefined) => string +>config.k.toString : (radix?: number) => string >config.k : number >config : Record >k : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.l !== undefined && { l: config.l.toString() }, >config.l !== undefined && { l: config.l.toString() } : false | { l: string; } @@ -274,11 +274,11 @@ function parseWithSpread(config: Record): Props { >{ l: config.l.toString() } : { l: string; } >l : string >config.l.toString() : string ->config.l.toString : (radix?: number | undefined) => string +>config.l.toString : (radix?: number) => string >config.l : number >config : Record >l : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.m !== undefined && { m: config.m.toString() }, >config.m !== undefined && { m: config.m.toString() } : false | { m: string; } @@ -290,11 +290,11 @@ function parseWithSpread(config: Record): Props { >{ m: config.m.toString() } : { m: string; } >m : string >config.m.toString() : string ->config.m.toString : (radix?: number | undefined) => string +>config.m.toString : (radix?: number) => string >config.m : number >config : Record >m : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.n !== undefined && { n: config.n.toString() }, >config.n !== undefined && { n: config.n.toString() } : false | { n: string; } @@ -306,11 +306,11 @@ function parseWithSpread(config: Record): Props { >{ n: config.n.toString() } : { n: string; } >n : string >config.n.toString() : string ->config.n.toString : (radix?: number | undefined) => string +>config.n.toString : (radix?: number) => string >config.n : number >config : Record >n : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.o !== undefined && { o: config.o.toString() }, >config.o !== undefined && { o: config.o.toString() } : false | { o: string; } @@ -322,11 +322,11 @@ function parseWithSpread(config: Record): Props { >{ o: config.o.toString() } : { o: string; } >o : string >config.o.toString() : string ->config.o.toString : (radix?: number | undefined) => string +>config.o.toString : (radix?: number) => string >config.o : number >config : Record >o : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.p !== undefined && { p: config.p.toString() }, >config.p !== undefined && { p: config.p.toString() } : false | { p: string; } @@ -338,11 +338,11 @@ function parseWithSpread(config: Record): Props { >{ p: config.p.toString() } : { p: string; } >p : string >config.p.toString() : string ->config.p.toString : (radix?: number | undefined) => string +>config.p.toString : (radix?: number) => string >config.p : number >config : Record >p : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.q !== undefined && { q: config.q.toString() }, >config.q !== undefined && { q: config.q.toString() } : false | { q: string; } @@ -354,11 +354,11 @@ function parseWithSpread(config: Record): Props { >{ q: config.q.toString() } : { q: string; } >q : string >config.q.toString() : string ->config.q.toString : (radix?: number | undefined) => string +>config.q.toString : (radix?: number) => string >config.q : number >config : Record >q : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.r !== undefined && { r: config.r.toString() }, >config.r !== undefined && { r: config.r.toString() } : false | { r: string; } @@ -370,11 +370,11 @@ function parseWithSpread(config: Record): Props { >{ r: config.r.toString() } : { r: string; } >r : string >config.r.toString() : string ->config.r.toString : (radix?: number | undefined) => string +>config.r.toString : (radix?: number) => string >config.r : number >config : Record >r : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.s !== undefined && { s: config.s.toString() }, >config.s !== undefined && { s: config.s.toString() } : false | { s: string; } @@ -386,11 +386,11 @@ function parseWithSpread(config: Record): Props { >{ s: config.s.toString() } : { s: string; } >s : string >config.s.toString() : string ->config.s.toString : (radix?: number | undefined) => string +>config.s.toString : (radix?: number) => string >config.s : number >config : Record >s : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.t !== undefined && { t: config.t.toString() }, >config.t !== undefined && { t: config.t.toString() } : false | { t: string; } @@ -402,11 +402,11 @@ function parseWithSpread(config: Record): Props { >{ t: config.t.toString() } : { t: string; } >t : string >config.t.toString() : string ->config.t.toString : (radix?: number | undefined) => string +>config.t.toString : (radix?: number) => string >config.t : number >config : Record >t : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.u !== undefined && { u: config.u.toString() }, >config.u !== undefined && { u: config.u.toString() } : false | { u: string; } @@ -418,11 +418,11 @@ function parseWithSpread(config: Record): Props { >{ u: config.u.toString() } : { u: string; } >u : string >config.u.toString() : string ->config.u.toString : (radix?: number | undefined) => string +>config.u.toString : (radix?: number) => string >config.u : number >config : Record >u : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.v !== undefined && { v: config.v.toString() }, >config.v !== undefined && { v: config.v.toString() } : false | { v: string; } @@ -434,11 +434,11 @@ function parseWithSpread(config: Record): Props { >{ v: config.v.toString() } : { v: string; } >v : string >config.v.toString() : string ->config.v.toString : (radix?: number | undefined) => string +>config.v.toString : (radix?: number) => string >config.v : number >config : Record >v : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.w !== undefined && { w: config.w.toString() }, >config.w !== undefined && { w: config.w.toString() } : false | { w: string; } @@ -450,11 +450,11 @@ function parseWithSpread(config: Record): Props { >{ w: config.w.toString() } : { w: string; } >w : string >config.w.toString() : string ->config.w.toString : (radix?: number | undefined) => string +>config.w.toString : (radix?: number) => string >config.w : number >config : Record >w : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.x !== undefined && { x: config.x.toString() }, >config.x !== undefined && { x: config.x.toString() } : false | { x: string; } @@ -466,11 +466,11 @@ function parseWithSpread(config: Record): Props { >{ x: config.x.toString() } : { x: string; } >x : string >config.x.toString() : string ->config.x.toString : (radix?: number | undefined) => string +>config.x.toString : (radix?: number) => string >config.x : number >config : Record >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.y !== undefined && { y: config.y.toString() }, >config.y !== undefined && { y: config.y.toString() } : false | { y: string; } @@ -482,11 +482,11 @@ function parseWithSpread(config: Record): Props { >{ y: config.y.toString() } : { y: string; } >y : string >config.y.toString() : string ->config.y.toString : (radix?: number | undefined) => string +>config.y.toString : (radix?: number) => string >config.y : number >config : Record >y : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ...config.z !== undefined && { z: config.z.toString() } >config.z !== undefined && { z: config.z.toString() } : false | { z: string; } @@ -498,11 +498,11 @@ function parseWithSpread(config: Record): Props { >{ z: config.z.toString() } : { z: string; } >z : string >config.z.toString() : string ->config.z.toString : (radix?: number | undefined) => string +>config.z.toString : (radix?: number) => string >config.z : number >config : Record >z : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } } diff --git a/testdata/baselines/reference/submodule/conformance/objectSpreadRepeatedNullCheckPerf.types.diff b/testdata/baselines/reference/submodule/conformance/objectSpreadRepeatedNullCheckPerf.types.diff deleted file mode 100644 index 56f4bd9140f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectSpreadRepeatedNullCheckPerf.types.diff +++ /dev/null @@ -1,365 +0,0 @@ ---- old.objectSpreadRepeatedNullCheckPerf.types -+++ new.objectSpreadRepeatedNullCheckPerf.types -@@= skipped -97, +97 lines =@@ - >{ a: config.a.toString() } : { a: string; } - >a : string - >config.a.toString() : string -->config.a.toString : (radix?: number) => string -+>config.a.toString : (radix?: number | undefined) => string - >config.a : number - >config : Record - >a : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.b !== undefined && { b: config.b.toString() }, - >config.b !== undefined && { b: config.b.toString() } : false | { b: string; } -@@= skipped -16, +16 lines =@@ - >{ b: config.b.toString() } : { b: string; } - >b : string - >config.b.toString() : string -->config.b.toString : (radix?: number) => string -+>config.b.toString : (radix?: number | undefined) => string - >config.b : number - >config : Record - >b : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.c !== undefined && { c: config.c.toString() }, - >config.c !== undefined && { c: config.c.toString() } : false | { c: string; } -@@= skipped -16, +16 lines =@@ - >{ c: config.c.toString() } : { c: string; } - >c : string - >config.c.toString() : string -->config.c.toString : (radix?: number) => string -+>config.c.toString : (radix?: number | undefined) => string - >config.c : number - >config : Record - >c : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.d !== undefined && { d: config.d.toString() }, - >config.d !== undefined && { d: config.d.toString() } : false | { d: string; } -@@= skipped -16, +16 lines =@@ - >{ d: config.d.toString() } : { d: string; } - >d : string - >config.d.toString() : string -->config.d.toString : (radix?: number) => string -+>config.d.toString : (radix?: number | undefined) => string - >config.d : number - >config : Record - >d : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.e !== undefined && { e: config.e.toString() }, - >config.e !== undefined && { e: config.e.toString() } : false | { e: string; } -@@= skipped -16, +16 lines =@@ - >{ e: config.e.toString() } : { e: string; } - >e : string - >config.e.toString() : string -->config.e.toString : (radix?: number) => string -+>config.e.toString : (radix?: number | undefined) => string - >config.e : number - >config : Record - >e : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.f !== undefined && { f: config.f.toString() }, - >config.f !== undefined && { f: config.f.toString() } : false | { f: string; } -@@= skipped -16, +16 lines =@@ - >{ f: config.f.toString() } : { f: string; } - >f : string - >config.f.toString() : string -->config.f.toString : (radix?: number) => string -+>config.f.toString : (radix?: number | undefined) => string - >config.f : number - >config : Record - >f : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.g !== undefined && { g: config.g.toString() }, - >config.g !== undefined && { g: config.g.toString() } : false | { g: string; } -@@= skipped -16, +16 lines =@@ - >{ g: config.g.toString() } : { g: string; } - >g : string - >config.g.toString() : string -->config.g.toString : (radix?: number) => string -+>config.g.toString : (radix?: number | undefined) => string - >config.g : number - >config : Record - >g : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.h !== undefined && { h: config.h.toString() }, - >config.h !== undefined && { h: config.h.toString() } : false | { h: string; } -@@= skipped -16, +16 lines =@@ - >{ h: config.h.toString() } : { h: string; } - >h : string - >config.h.toString() : string -->config.h.toString : (radix?: number) => string -+>config.h.toString : (radix?: number | undefined) => string - >config.h : number - >config : Record - >h : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.i !== undefined && { i: config.i.toString() }, - >config.i !== undefined && { i: config.i.toString() } : false | { i: string; } -@@= skipped -16, +16 lines =@@ - >{ i: config.i.toString() } : { i: string; } - >i : string - >config.i.toString() : string -->config.i.toString : (radix?: number) => string -+>config.i.toString : (radix?: number | undefined) => string - >config.i : number - >config : Record - >i : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.j !== undefined && { j: config.j.toString() }, - >config.j !== undefined && { j: config.j.toString() } : false | { j: string; } -@@= skipped -16, +16 lines =@@ - >{ j: config.j.toString() } : { j: string; } - >j : string - >config.j.toString() : string -->config.j.toString : (radix?: number) => string -+>config.j.toString : (radix?: number | undefined) => string - >config.j : number - >config : Record - >j : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.k !== undefined && { k: config.k.toString() }, - >config.k !== undefined && { k: config.k.toString() } : false | { k: string; } -@@= skipped -16, +16 lines =@@ - >{ k: config.k.toString() } : { k: string; } - >k : string - >config.k.toString() : string -->config.k.toString : (radix?: number) => string -+>config.k.toString : (radix?: number | undefined) => string - >config.k : number - >config : Record - >k : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.l !== undefined && { l: config.l.toString() }, - >config.l !== undefined && { l: config.l.toString() } : false | { l: string; } -@@= skipped -16, +16 lines =@@ - >{ l: config.l.toString() } : { l: string; } - >l : string - >config.l.toString() : string -->config.l.toString : (radix?: number) => string -+>config.l.toString : (radix?: number | undefined) => string - >config.l : number - >config : Record - >l : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.m !== undefined && { m: config.m.toString() }, - >config.m !== undefined && { m: config.m.toString() } : false | { m: string; } -@@= skipped -16, +16 lines =@@ - >{ m: config.m.toString() } : { m: string; } - >m : string - >config.m.toString() : string -->config.m.toString : (radix?: number) => string -+>config.m.toString : (radix?: number | undefined) => string - >config.m : number - >config : Record - >m : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.n !== undefined && { n: config.n.toString() }, - >config.n !== undefined && { n: config.n.toString() } : false | { n: string; } -@@= skipped -16, +16 lines =@@ - >{ n: config.n.toString() } : { n: string; } - >n : string - >config.n.toString() : string -->config.n.toString : (radix?: number) => string -+>config.n.toString : (radix?: number | undefined) => string - >config.n : number - >config : Record - >n : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.o !== undefined && { o: config.o.toString() }, - >config.o !== undefined && { o: config.o.toString() } : false | { o: string; } -@@= skipped -16, +16 lines =@@ - >{ o: config.o.toString() } : { o: string; } - >o : string - >config.o.toString() : string -->config.o.toString : (radix?: number) => string -+>config.o.toString : (radix?: number | undefined) => string - >config.o : number - >config : Record - >o : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.p !== undefined && { p: config.p.toString() }, - >config.p !== undefined && { p: config.p.toString() } : false | { p: string; } -@@= skipped -16, +16 lines =@@ - >{ p: config.p.toString() } : { p: string; } - >p : string - >config.p.toString() : string -->config.p.toString : (radix?: number) => string -+>config.p.toString : (radix?: number | undefined) => string - >config.p : number - >config : Record - >p : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.q !== undefined && { q: config.q.toString() }, - >config.q !== undefined && { q: config.q.toString() } : false | { q: string; } -@@= skipped -16, +16 lines =@@ - >{ q: config.q.toString() } : { q: string; } - >q : string - >config.q.toString() : string -->config.q.toString : (radix?: number) => string -+>config.q.toString : (radix?: number | undefined) => string - >config.q : number - >config : Record - >q : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.r !== undefined && { r: config.r.toString() }, - >config.r !== undefined && { r: config.r.toString() } : false | { r: string; } -@@= skipped -16, +16 lines =@@ - >{ r: config.r.toString() } : { r: string; } - >r : string - >config.r.toString() : string -->config.r.toString : (radix?: number) => string -+>config.r.toString : (radix?: number | undefined) => string - >config.r : number - >config : Record - >r : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.s !== undefined && { s: config.s.toString() }, - >config.s !== undefined && { s: config.s.toString() } : false | { s: string; } -@@= skipped -16, +16 lines =@@ - >{ s: config.s.toString() } : { s: string; } - >s : string - >config.s.toString() : string -->config.s.toString : (radix?: number) => string -+>config.s.toString : (radix?: number | undefined) => string - >config.s : number - >config : Record - >s : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.t !== undefined && { t: config.t.toString() }, - >config.t !== undefined && { t: config.t.toString() } : false | { t: string; } -@@= skipped -16, +16 lines =@@ - >{ t: config.t.toString() } : { t: string; } - >t : string - >config.t.toString() : string -->config.t.toString : (radix?: number) => string -+>config.t.toString : (radix?: number | undefined) => string - >config.t : number - >config : Record - >t : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.u !== undefined && { u: config.u.toString() }, - >config.u !== undefined && { u: config.u.toString() } : false | { u: string; } -@@= skipped -16, +16 lines =@@ - >{ u: config.u.toString() } : { u: string; } - >u : string - >config.u.toString() : string -->config.u.toString : (radix?: number) => string -+>config.u.toString : (radix?: number | undefined) => string - >config.u : number - >config : Record - >u : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.v !== undefined && { v: config.v.toString() }, - >config.v !== undefined && { v: config.v.toString() } : false | { v: string; } -@@= skipped -16, +16 lines =@@ - >{ v: config.v.toString() } : { v: string; } - >v : string - >config.v.toString() : string -->config.v.toString : (radix?: number) => string -+>config.v.toString : (radix?: number | undefined) => string - >config.v : number - >config : Record - >v : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.w !== undefined && { w: config.w.toString() }, - >config.w !== undefined && { w: config.w.toString() } : false | { w: string; } -@@= skipped -16, +16 lines =@@ - >{ w: config.w.toString() } : { w: string; } - >w : string - >config.w.toString() : string -->config.w.toString : (radix?: number) => string -+>config.w.toString : (radix?: number | undefined) => string - >config.w : number - >config : Record - >w : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.x !== undefined && { x: config.x.toString() }, - >config.x !== undefined && { x: config.x.toString() } : false | { x: string; } -@@= skipped -16, +16 lines =@@ - >{ x: config.x.toString() } : { x: string; } - >x : string - >config.x.toString() : string -->config.x.toString : (radix?: number) => string -+>config.x.toString : (radix?: number | undefined) => string - >config.x : number - >config : Record - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.y !== undefined && { y: config.y.toString() }, - >config.y !== undefined && { y: config.y.toString() } : false | { y: string; } -@@= skipped -16, +16 lines =@@ - >{ y: config.y.toString() } : { y: string; } - >y : string - >config.y.toString() : string -->config.y.toString : (radix?: number) => string -+>config.y.toString : (radix?: number | undefined) => string - >config.y : number - >config : Record - >y : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ...config.z !== undefined && { z: config.z.toString() } - >config.z !== undefined && { z: config.z.toString() } : false | { z: string; } -@@= skipped -16, +16 lines =@@ - >{ z: config.z.toString() } : { z: string; } - >z : string - >config.z.toString() : string -->config.z.toString : (radix?: number) => string -+>config.z.toString : (radix?: number | undefined) => string - >config.z : number - >config : Record - >z : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - } diff --git a/testdata/baselines/reference/submodule/conformance/objectSpreadStrictNull.types b/testdata/baselines/reference/submodule/conformance/objectSpreadStrictNull.types index 8ff8a91a078..2ac151915ea 100644 --- a/testdata/baselines/reference/submodule/conformance/objectSpreadStrictNull.types +++ b/testdata/baselines/reference/submodule/conformance/objectSpreadStrictNull.types @@ -2,7 +2,7 @@ === objectSpreadStrictNull.ts === function f( ->f : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string | undefined; }, optionalNumber: { sn?: number | undefined; }, undefinedString: { sn: string | undefined; }, undefinedNumber: { sn: number | undefined; }) => void +>f : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string; }, optionalNumber: { sn?: number; }, undefinedString: { sn: string | undefined; }, undefinedNumber: { sn: number | undefined; }) => void definiteBoolean: { sn: boolean }, >definiteBoolean : { sn: boolean; } @@ -13,11 +13,11 @@ function f( >sn : string optionalString: { sn?: string }, ->optionalString : { sn?: string | undefined; } +>optionalString : { sn?: string; } >sn : string | undefined optionalNumber: { sn?: number }, ->optionalNumber : { sn?: number | undefined; } +>optionalNumber : { sn?: number; } >sn : number | undefined undefinedString: { sn: string | undefined }, @@ -35,7 +35,7 @@ function f( >{ ...definiteBoolean, ...definiteString, ...optionalNumber } : { sn: string | number; } >definiteBoolean : { sn: boolean; } >definiteString : { sn: string; } ->optionalNumber : { sn?: number | undefined; } +>optionalNumber : { sn?: number; } let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber }; >optionalUnionDuplicates : { sn: string | number; } @@ -43,15 +43,15 @@ function f( >{ ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber } : { sn: string | number; } >definiteBoolean : { sn: boolean; } >definiteString : { sn: string; } ->optionalString : { sn?: string | undefined; } ->optionalNumber : { sn?: number | undefined; } +>optionalString : { sn?: string; } +>optionalNumber : { sn?: number; } let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber }; ->allOptional : { sn?: string | number | undefined; } +>allOptional : { sn?: string | number; } >sn : string | number | undefined >{ ...optionalString, ...optionalNumber } : { sn?: string | number | undefined; } ->optionalString : { sn?: string | undefined; } ->optionalNumber : { sn?: number | undefined; } +>optionalString : { sn?: string; } +>optionalNumber : { sn?: number; } // undefined let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber }; @@ -84,7 +84,7 @@ function f( >{ ...definiteBoolean, ...undefinedString, ...optionalNumber } : { sn: string | number | undefined; } >definiteBoolean : { sn: boolean; } >undefinedString : { sn: string | undefined; } ->optionalNumber : { sn?: number | undefined; } +>optionalNumber : { sn?: number; } } type Movie = { diff --git a/testdata/baselines/reference/submodule/conformance/objectSpreadStrictNull.types.diff b/testdata/baselines/reference/submodule/conformance/objectSpreadStrictNull.types.diff deleted file mode 100644 index d0ca7b13021..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectSpreadStrictNull.types.diff +++ /dev/null @@ -1,64 +0,0 @@ ---- old.objectSpreadStrictNull.types -+++ new.objectSpreadStrictNull.types -@@= skipped -1, +1 lines =@@ - - === objectSpreadStrictNull.ts === - function f( -->f : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string; }, optionalNumber: { sn?: number; }, undefinedString: { sn: string | undefined; }, undefinedNumber: { sn: number | undefined; }) => void -+>f : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string | undefined; }, optionalNumber: { sn?: number | undefined; }, undefinedString: { sn: string | undefined; }, undefinedNumber: { sn: number | undefined; }) => void - - definiteBoolean: { sn: boolean }, - >definiteBoolean : { sn: boolean; } -@@= skipped -11, +11 lines =@@ - >sn : string - - optionalString: { sn?: string }, -->optionalString : { sn?: string; } -+>optionalString : { sn?: string | undefined; } - >sn : string | undefined - - optionalNumber: { sn?: number }, -->optionalNumber : { sn?: number; } -+>optionalNumber : { sn?: number | undefined; } - >sn : number | undefined - - undefinedString: { sn: string | undefined }, -@@= skipped -22, +22 lines =@@ - >{ ...definiteBoolean, ...definiteString, ...optionalNumber } : { sn: string | number; } - >definiteBoolean : { sn: boolean; } - >definiteString : { sn: string; } -->optionalNumber : { sn?: number; } -+>optionalNumber : { sn?: number | undefined; } - - let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber }; - >optionalUnionDuplicates : { sn: string | number; } -@@= skipped -8, +8 lines =@@ - >{ ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber } : { sn: string | number; } - >definiteBoolean : { sn: boolean; } - >definiteString : { sn: string; } -->optionalString : { sn?: string; } -->optionalNumber : { sn?: number; } -+>optionalString : { sn?: string | undefined; } -+>optionalNumber : { sn?: number | undefined; } - - let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber }; -->allOptional : { sn?: string | number; } -+>allOptional : { sn?: string | number | undefined; } - >sn : string | number | undefined - >{ ...optionalString, ...optionalNumber } : { sn?: string | number | undefined; } -->optionalString : { sn?: string; } -->optionalNumber : { sn?: number; } -+>optionalString : { sn?: string | undefined; } -+>optionalNumber : { sn?: number | undefined; } - - // undefined - let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber }; -@@= skipped -41, +41 lines =@@ - >{ ...definiteBoolean, ...undefinedString, ...optionalNumber } : { sn: string | number | undefined; } - >definiteBoolean : { sn: boolean; } - >undefinedString : { sn: string | undefined; } -->optionalNumber : { sn?: number; } -+>optionalNumber : { sn?: number | undefined; } - } - - type Movie = { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentity.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentity.types index cec5a96ba07..c45b4c454ea 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentity.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentity.types @@ -88,31 +88,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo3(x: any) { } ->foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo4(x: any) { } ->foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -152,16 +152,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { foo: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -189,29 +189,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // error ->foo10 : { (x: B): any; (x: { foo: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // error ->foo11 : { (x: B): any; (x: { foo: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -227,28 +227,28 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: { foo: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // error ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentity.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentity.types.diff deleted file mode 100644 index 3ccc6b0290c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentity.types.diff +++ /dev/null @@ -1,130 +0,0 @@ ---- old.objectTypesIdentity.types -+++ new.objectTypesIdentity.types -@@= skipped -87, +87 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: string; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: string; }): any; } - >x : B - - function foo10(x: typeof a); // error -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: string; }): any; } - >x : B - - function foo11(x: typeof b); // error -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -38, +38 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: string; }): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : I - - function foo14(x: typeof b); // error -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentity2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentity2.types index 58da2032bed..50f15c218e4 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentity2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentity2.types @@ -82,16 +82,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo: RegExp; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: { foo: RegExp; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo: RegExp; } >a : { foo: RegExp; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo: RegExp; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -119,29 +119,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo: RegExp; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo: RegExp; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo: RegExp; } >a : { foo: RegExp; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo: RegExp; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo: E; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo: E; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo: E; } >b : { foo: E; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo: E; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -157,28 +157,28 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo: RegExp; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo: RegExp; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo: RegExp; } >a : { foo: RegExp; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo: RegExp; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo: E; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo: E; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo: E; } >b : { foo: E; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo: E; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentity2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentity2.types.diff deleted file mode 100644 index 07180ead61d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentity2.types.diff +++ /dev/null @@ -1,92 +0,0 @@ ---- old.objectTypesIdentity2.types -+++ new.objectTypesIdentity2.types -@@= skipped -81, +81 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: RegExp; }): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: RegExp; }): any; } - >x : { foo: RegExp; } - >a : { foo: RegExp; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: RegExp; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: RegExp; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: RegExp; }): any; } - >x : { foo: RegExp; } - >a : { foo: RegExp; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: RegExp; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: E; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: E; }): any; } - >x : { foo: E; } - >b : { foo: E; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: E; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -38, +38 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: RegExp; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: RegExp; }): any; } - >x : { foo: RegExp; } - >a : { foo: RegExp; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: RegExp; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: E; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: E; }): any; } - >x : { foo: E; } - >b : { foo: E; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: E; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures.types index 6120f26e089..9775a06cea5 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures.types @@ -100,31 +100,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: string): string; } >a : { foo(x: string): string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: string): string; } >a : { foo(x: string): string; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: string): string; } >b : { foo(x: string): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: string): string; } >b : { foo(x: string): string; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -164,16 +164,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: string): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { foo(x: string): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: string): string; } >a : { foo(x: string): string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: string): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -201,29 +201,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: string): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // error ->foo10 : { (x: B): any; (x: { foo(x: string): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: string): string; } >a : { foo(x: string): string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: string): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // error ->foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: string): string; } >b : { foo(x: string): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -251,29 +251,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: string): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: { foo(x: string): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: string): string; } >a : { foo(x: string): string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: string): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // error ->foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: string): string; } >b : { foo(x: string): string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures.types.diff deleted file mode 100644 index dbcd7d455c8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithCallSignatures.types -+++ new.objectTypesIdentityWithCallSignatures.types -@@= skipped -99, +99 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >a : { foo(x: string): string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >a : { foo(x: string): string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >b : { foo(x: string): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >b : { foo(x: string): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: string): string; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >a : { foo(x: string): string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: string): string; }): any; } - >x : B - - function foo10(x: typeof a); // error -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >a : { foo(x: string): string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } - >x : B - - function foo11(x: typeof b); // error -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >b : { foo(x: string): string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: string): string; }): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >a : { foo(x: string): string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } - >x : I - - function foo14(x: typeof b); // error -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >b : { foo(x: string): string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures2.types index ab6d1aba860..ba195fc0df0 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures2.types @@ -100,31 +100,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: Date): string; }): any; (x: { foo(x: Date): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: Date): string; } >a : { foo(x: Date): string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: Date): string; }): any; (x: { foo(x: Date): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: Date): string; } >a : { foo(x: Date): string; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: Date): string; }): any; (x: { foo(x: Date): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: RegExp): string; }): any; (x: { foo(x: RegExp): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: RegExp): string; } >b : { foo(x: RegExp): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: RegExp): string; }): any; (x: { foo(x: RegExp): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: RegExp): string; } >b : { foo(x: RegExp): string; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: RegExp): string; }): any; (x: { foo(x: RegExp): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -164,16 +164,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: Date): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: { foo(x: Date): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: Date): string; } >a : { foo(x: Date): string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: Date): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -201,29 +201,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: Date): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: Date): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: Date): string; } >a : { foo(x: Date): string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: Date): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: RegExp): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: RegExp): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: RegExp): string; } >b : { foo(x: RegExp): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: RegExp): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -251,29 +251,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: Date): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: Date): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: Date): string; } >a : { foo(x: Date): string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: Date): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: RegExp): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: RegExp): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: RegExp): string; } >b : { foo(x: RegExp): string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: RegExp): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures2.types.diff deleted file mode 100644 index 24ba2401fba..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures2.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithCallSignatures2.types -+++ new.objectTypesIdentityWithCallSignatures2.types -@@= skipped -99, +99 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: Date): string; }): any; (x: { foo(x: Date): string; }): any; } - >x : { foo(x: Date): string; } - >a : { foo(x: Date): string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: Date): string; }): any; (x: { foo(x: Date): string; }): any; } - >x : { foo(x: Date): string; } - >a : { foo(x: Date): string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: Date): string; }): any; (x: { foo(x: Date): string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: RegExp): string; }): any; (x: { foo(x: RegExp): string; }): any; } - >x : { foo(x: RegExp): string; } - >b : { foo(x: RegExp): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: RegExp): string; }): any; (x: { foo(x: RegExp): string; }): any; } - >x : { foo(x: RegExp): string; } - >b : { foo(x: RegExp): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: RegExp): string; }): any; (x: { foo(x: RegExp): string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: Date): string; }): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: Date): string; }): any; } - >x : { foo(x: Date): string; } - >a : { foo(x: Date): string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: Date): string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: Date): string; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: Date): string; }): any; } - >x : { foo(x: Date): string; } - >a : { foo(x: Date): string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: Date): string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: RegExp): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: RegExp): string; }): any; } - >x : { foo(x: RegExp): string; } - >b : { foo(x: RegExp): string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: RegExp): string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: Date): string; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: Date): string; }): any; } - >x : { foo(x: Date): string; } - >a : { foo(x: Date): string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: Date): string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: RegExp): string; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: RegExp): string; }): any; } - >x : { foo(x: RegExp): string; } - >b : { foo(x: RegExp): string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: RegExp): string; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures3.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures3.types index 33ef3a39712..7067e656de4 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures3.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures3.types @@ -30,44 +30,44 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: (x: string) => string): any; (x: (x: string) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : (x: string) => string >a : (x: string) => string function foo3(x: typeof a); // error ->foo3 : { (x: (x: string) => string): any; (x: (x: string) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : (x: string) => string >a : (x: string) => string function foo3(x: any) { } ->foo3 : { (x: (x: string) => string): any; (x: (x: string) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: any): any; (x: any): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any >b : any function foo4(x: typeof b); // error ->foo4 : { (x: any): any; (x: any): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any >b : any function foo4(x: any) { } ->foo4 : { (x: any): any; (x: any): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: (x: string) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: (x: string) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : (x: string) => string >a : (x: string) => string function foo13(x: any) { } ->foo13 : { (x: I): any; (x: (x: string) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); @@ -83,16 +83,16 @@ function foo14(x: any) { } >x : any function foo14b(x: typeof a); ->foo14b : { (x: (x: string) => string): any; (x: I2): any; } +>foo14b : { (x: typeof a): any; (x: I2): any; } >x : (x: string) => string >a : (x: string) => string function foo14b(x: I2); // error ->foo14b : { (x: (x: string) => string): any; (x: I2): any; } +>foo14b : { (x: typeof a): any; (x: I2): any; } >x : I2 function foo14b(x: any) { } ->foo14b : { (x: (x: string) => string): any; (x: I2): any; } +>foo14b : { (x: typeof a): any; (x: I2): any; } >x : any function foo15(x: I); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures3.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures3.types.diff deleted file mode 100644 index 2b5b9cb64a4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignatures3.types.diff +++ /dev/null @@ -1,76 +0,0 @@ ---- old.objectTypesIdentityWithCallSignatures3.types -+++ new.objectTypesIdentityWithCallSignatures3.types -@@= skipped -29, +29 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: (x: string) => string): any; (x: (x: string) => string): any; } - >x : (x: string) => string - >a : (x: string) => string - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: (x: string) => string): any; (x: (x: string) => string): any; } - >x : (x: string) => string - >a : (x: string) => string - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: (x: string) => string): any; (x: (x: string) => string): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: any): any; (x: any): any; } - >x : any - >b : any - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: any): any; (x: any): any; } - >x : any - >b : any - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: any): any; (x: any): any; } - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: (x: string) => string): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: (x: string) => string): any; } - >x : (x: string) => string - >a : (x: string) => string - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: (x: string) => string): any; } - >x : any - - function foo14(x: I); -@@= skipped -53, +53 lines =@@ - >x : any - - function foo14b(x: typeof a); -->foo14b : { (x: typeof a): any; (x: I2): any; } -+>foo14b : { (x: (x: string) => string): any; (x: I2): any; } - >x : (x: string) => string - >a : (x: string) => string - - function foo14b(x: I2); // error -->foo14b : { (x: typeof a): any; (x: I2): any; } -+>foo14b : { (x: (x: string) => string): any; (x: I2): any; } - >x : I2 - - function foo14b(x: any) { } -->foo14b : { (x: typeof a): any; (x: I2): any; } -+>foo14b : { (x: (x: string) => string): any; (x: I2): any; } - >x : any - - function foo15(x: I); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types index 7e86d48cd5b..5584ee4fb26 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types @@ -103,31 +103,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: string, y: string): string; }): any; (x: { foo(x: string, y: string): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: string, y: string): string; } >a : { foo(x: string, y: string): string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: string, y: string): string; }): any; (x: { foo(x: string, y: string): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: string, y: string): string; } >a : { foo(x: string, y: string): string; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: string, y: string): string; }): any; (x: { foo(x: string, y: string): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: string): string; } >b : { foo(x: string): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: string): string; } >b : { foo(x: string): string; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -167,16 +167,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: string, y: string): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: { foo(x: string, y: string): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: string, y: string): string; } >a : { foo(x: string, y: string): string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: string, y: string): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -204,29 +204,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: string, y: string): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // error ->foo10 : { (x: B): any; (x: { foo(x: string, y: string): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: string, y: string): string; } >a : { foo(x: string, y: string): string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: string, y: string): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: string): string; } >b : { foo(x: string): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -254,29 +254,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: string, y: string): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: string, y: string): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: string, y: string): string; } >a : { foo(x: string, y: string): string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: string, y: string): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // error ->foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: string): string; } >b : { foo(x: string): string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types.diff deleted file mode 100644 index 928d932224e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithCallSignaturesDifferingParamCounts.types -+++ new.objectTypesIdentityWithCallSignaturesDifferingParamCounts.types -@@= skipped -102, +102 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: string, y: string): string; }): any; (x: { foo(x: string, y: string): string; }): any; } - >x : { foo(x: string, y: string): string; } - >a : { foo(x: string, y: string): string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: string, y: string): string; }): any; (x: { foo(x: string, y: string): string; }): any; } - >x : { foo(x: string, y: string): string; } - >a : { foo(x: string, y: string): string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: string, y: string): string; }): any; (x: { foo(x: string, y: string): string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >b : { foo(x: string): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >b : { foo(x: string): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: string): string; }): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: string, y: string): string; }): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: string, y: string): string; }): any; } - >x : { foo(x: string, y: string): string; } - >a : { foo(x: string, y: string): string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: string, y: string): string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: string, y: string): string; }): any; } - >x : B - - function foo10(x: typeof a); // error -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: string, y: string): string; }): any; } - >x : { foo(x: string, y: string): string; } - >a : { foo(x: string, y: string): string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: string, y: string): string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >b : { foo(x: string): string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: string, y: string): string; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: string, y: string): string; }): any; } - >x : { foo(x: string, y: string): string; } - >a : { foo(x: string, y: string): string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: string, y: string): string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } - >x : I - - function foo14(x: typeof b); // error -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } - >x : { foo(x: string): string; } - >b : { foo(x: string): string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: string): string; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types index ab97c19bd11..0416a8b6d53 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types @@ -31,17 +31,17 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: (x: string, y: string) => string): any; (x: (x: string, y: string) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : (x: string, y: string) => string >a : (x: string, y: string) => string function foo3(x: typeof a); // error ->foo3 : { (x: (x: string, y: string) => string): any; (x: (x: string, y: string) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : (x: string, y: string) => string >a : (x: string, y: string) => string function foo3(x: any) { } ->foo3 : { (x: (x: string, y: string) => string): any; (x: (x: string, y: string) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: I2); @@ -69,16 +69,16 @@ function foo5(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: (x: string, y: string) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: (x: string, y: string) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : (x: string, y: string) => string >a : (x: string, y: string) => string function foo13(x: any) { } ->foo13 : { (x: I): any; (x: (x: string, y: string) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); @@ -94,16 +94,16 @@ function foo14(x: any) { } >x : any function foo14b(x: typeof a); ->foo14b : { (x: (x: string, y: string) => string): any; (x: I2): any; } +>foo14b : { (x: typeof a): any; (x: I2): any; } >x : (x: string, y: string) => string >a : (x: string, y: string) => string function foo14b(x: I2); // ok ->foo14b : { (x: (x: string, y: string) => string): any; (x: I2): any; } +>foo14b : { (x: typeof a): any; (x: I2): any; } >x : I2 function foo14b(x: any) { } ->foo14b : { (x: (x: string, y: string) => string): any; (x: I2): any; } +>foo14b : { (x: typeof a): any; (x: I2): any; } >x : any function foo15(x: I); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types.diff deleted file mode 100644 index 6ac3f2dd237..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types.diff +++ /dev/null @@ -1,63 +0,0 @@ ---- old.objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types -+++ new.objectTypesIdentityWithCallSignaturesDifferingParamCounts2.types -@@= skipped -30, +30 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: (x: string, y: string) => string): any; (x: (x: string, y: string) => string): any; } - >x : (x: string, y: string) => string - >a : (x: string, y: string) => string - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: (x: string, y: string) => string): any; (x: (x: string, y: string) => string): any; } - >x : (x: string, y: string) => string - >a : (x: string, y: string) => string - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: (x: string, y: string) => string): any; (x: (x: string, y: string) => string): any; } - >x : any - - function foo4(x: I2); -@@= skipped -38, +38 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: (x: string, y: string) => string): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: (x: string, y: string) => string): any; } - >x : (x: string, y: string) => string - >a : (x: string, y: string) => string - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: (x: string, y: string) => string): any; } - >x : any - - function foo14(x: I); -@@= skipped -25, +25 lines =@@ - >x : any - - function foo14b(x: typeof a); -->foo14b : { (x: typeof a): any; (x: I2): any; } -+>foo14b : { (x: (x: string, y: string) => string): any; (x: I2): any; } - >x : (x: string, y: string) => string - >a : (x: string, y: string) => string - - function foo14b(x: I2); // ok -->foo14b : { (x: typeof a): any; (x: I2): any; } -+>foo14b : { (x: (x: string, y: string) => string): any; (x: I2): any; } - >x : I2 - - function foo14b(x: any) { } -->foo14b : { (x: typeof a): any; (x: I2): any; } -+>foo14b : { (x: (x: string, y: string) => string): any; (x: I2): any; } - >x : any - - function foo15(x: I); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesWithOverloads.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesWithOverloads.types index 17d9ec4a8a9..4ddadf8aa72 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesWithOverloads.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesWithOverloads.types @@ -152,31 +152,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: number): number; foo(x: string): string; }): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: number): number; foo(x: string): string; } >a : { foo(x: number): number; foo(x: string): string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: number): number; foo(x: string): string; }): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: number): number; foo(x: string): string; } >a : { foo(x: number): number; foo(x: string): string; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: number): number; foo(x: string): string; }): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: any): any; }): any; (x: { foo(x: any): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: any): any; } >b : { foo(x: any): any; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: any): any; }): any; (x: { foo(x: any): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: any): any; } >b : { foo(x: any): any; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: any): any; }): any; (x: { foo(x: any): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -216,16 +216,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // BUG 831930 ->foo7 : { (x: A): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: number): number; foo(x: string): string; } >a : { foo(x: number): number; foo(x: string): string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -253,29 +253,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // BUG 831930 ->foo10 : { (x: B): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: number): number; foo(x: string): string; } >a : { foo(x: number): number; foo(x: string): string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: any): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: any): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: any): any; } >b : { foo(x: any): any; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: any): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -303,29 +303,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: number): number; foo(x: string): string; } >a : { foo(x: number): number; foo(x: string): string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: any): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: any): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: any): any; } >b : { foo(x: any): any; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: any): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesWithOverloads.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesWithOverloads.types.diff deleted file mode 100644 index 6033a8b718c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithCallSignaturesWithOverloads.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithCallSignaturesWithOverloads.types -+++ new.objectTypesIdentityWithCallSignaturesWithOverloads.types -@@= skipped -151, +151 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: number): number; foo(x: string): string; }): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : { foo(x: number): number; foo(x: string): string; } - >a : { foo(x: number): number; foo(x: string): string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: number): number; foo(x: string): string; }): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : { foo(x: number): number; foo(x: string): string; } - >a : { foo(x: number): number; foo(x: string): string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: number): number; foo(x: string): string; }): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: any): any; }): any; (x: { foo(x: any): any; }): any; } - >x : { foo(x: any): any; } - >b : { foo(x: any): any; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: any): any; }): any; (x: { foo(x: any): any; }): any; } - >x : { foo(x: any): any; } - >b : { foo(x: any): any; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: any): any; }): any; (x: { foo(x: any): any; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : A - - function foo7(x: typeof a); // BUG 831930 -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : { foo(x: number): number; foo(x: string): string; } - >a : { foo(x: number): number; foo(x: string): string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : B - - function foo10(x: typeof a); // BUG 831930 -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : { foo(x: number): number; foo(x: string): string; } - >a : { foo(x: number): number; foo(x: string): string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: any): any; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: any): any; }): any; } - >x : { foo(x: any): any; } - >b : { foo(x: any): any; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: any): any; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : { foo(x: number): number; foo(x: string): string; } - >a : { foo(x: number): number; foo(x: string): string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: number): number; foo(x: string): string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: any): any; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: any): any; }): any; } - >x : { foo(x: any): any; } - >b : { foo(x: any): any; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: any): any; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures.types index 5feb21f1a6c..0b0d067150d 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures.types @@ -87,17 +87,17 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: string) => any): any; (x: new (x: string) => any): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: string) => any >a : new (x: string) => any function foo3(x: typeof a); // error ->foo3 : { (x: new (x: string) => any): any; (x: new (x: string) => any): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: string) => any >a : new (x: string) => any function foo3(x: any) { } ->foo3 : { (x: new (x: string) => any): any; (x: new (x: string) => any): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo5(x: A); @@ -137,16 +137,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: new (x: string) => any): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: new (x: string) => any): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : new (x: string) => any >a : new (x: string) => any function foo7(x: any) { } ->foo7 : { (x: A): any; (x: new (x: string) => any): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -174,16 +174,16 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: string) => any): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: new (x: string) => any): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: string) => any >a : new (x: string) => any function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: string) => any): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo12(x: I); @@ -211,16 +211,16 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: string) => any): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: new (x: string) => any): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: string) => any >a : new (x: string) => any function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: string) => any): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures.types.diff deleted file mode 100644 index 85708beed8a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures.types.diff +++ /dev/null @@ -1,83 +0,0 @@ ---- old.objectTypesIdentityWithConstructSignatures.types -+++ new.objectTypesIdentityWithConstructSignatures.types -@@= skipped -86, +86 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: string) => any): any; (x: new (x: string) => any): any; } - >x : new (x: string) => any - >a : new (x: string) => any - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: string) => any): any; (x: new (x: string) => any): any; } - >x : new (x: string) => any - >a : new (x: string) => any - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: string) => any): any; (x: new (x: string) => any): any; } - >x : any - - function foo5(x: A); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: new (x: string) => any): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: new (x: string) => any): any; } - >x : new (x: string) => any - >a : new (x: string) => any - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: new (x: string) => any): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: string) => any): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: string) => any): any; } - >x : new (x: string) => any - >a : new (x: string) => any - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: string) => any): any; } - >x : any - - function foo12(x: I); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: string) => any): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: string) => any): any; } - >x : new (x: string) => any - >a : new (x: string) => any - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: string) => any): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures2.types index dbb6e0f77c6..21e3fe3fac4 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures2.types @@ -75,31 +75,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: Date) => string): any; (x: new (x: Date) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: Date) => string >a : new (x: Date) => string function foo3(x: typeof a); // error ->foo3 : { (x: new (x: Date) => string): any; (x: new (x: Date) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: Date) => string >a : new (x: Date) => string function foo3(x: any) { } ->foo3 : { (x: new (x: Date) => string): any; (x: new (x: Date) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: RegExp): string; }): any; (x: { "new"(x: RegExp): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: RegExp): string; } >b : { "new"(x: RegExp): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: RegExp): string; }): any; (x: { "new"(x: RegExp): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: RegExp): string; } >b : { "new"(x: RegExp): string; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: RegExp): string; }): any; (x: { "new"(x: RegExp): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo8(x: B); @@ -127,29 +127,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: Date) => string): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: new (x: Date) => string): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: Date) => string >a : new (x: Date) => string function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: Date) => string): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: RegExp): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: RegExp): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: RegExp): string; } >b : { "new"(x: RegExp): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: RegExp): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -177,29 +177,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: Date) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: new (x: Date) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: Date) => string >a : new (x: Date) => string function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: Date) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: RegExp): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: RegExp): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: RegExp): string; } >b : { "new"(x: RegExp): string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: RegExp): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures2.types.diff deleted file mode 100644 index 50aa6a91550..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignatures2.types.diff +++ /dev/null @@ -1,112 +0,0 @@ ---- old.objectTypesIdentityWithConstructSignatures2.types -+++ new.objectTypesIdentityWithConstructSignatures2.types -@@= skipped -74, +74 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: Date) => string): any; (x: new (x: Date) => string): any; } - >x : new (x: Date) => string - >a : new (x: Date) => string - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: Date) => string): any; (x: new (x: Date) => string): any; } - >x : new (x: Date) => string - >a : new (x: Date) => string - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: Date) => string): any; (x: new (x: Date) => string): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: RegExp): string; }): any; (x: { "new"(x: RegExp): string; }): any; } - >x : { "new"(x: RegExp): string; } - >b : { "new"(x: RegExp): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: RegExp): string; }): any; (x: { "new"(x: RegExp): string; }): any; } - >x : { "new"(x: RegExp): string; } - >b : { "new"(x: RegExp): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: RegExp): string; }): any; (x: { "new"(x: RegExp): string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -52, +52 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: Date) => string): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: Date) => string): any; } - >x : new (x: Date) => string - >a : new (x: Date) => string - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: Date) => string): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: RegExp): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: RegExp): string; }): any; } - >x : { "new"(x: RegExp): string; } - >b : { "new"(x: RegExp): string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: RegExp): string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: Date) => string): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: Date) => string): any; } - >x : new (x: Date) => string - >a : new (x: Date) => string - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: Date) => string): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: RegExp): string; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: RegExp): string; }): any; } - >x : { "new"(x: RegExp): string; } - >b : { "new"(x: RegExp): string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: RegExp): string; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types index ff3b4d5d28e..f033f62f265 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types @@ -78,31 +78,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: string, y: string) => string): any; (x: new (x: string, y: string) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: string, y: string) => string >a : new (x: string, y: string) => string function foo3(x: typeof a); // error ->foo3 : { (x: new (x: string, y: string) => string): any; (x: new (x: string, y: string) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: string, y: string) => string >a : new (x: string, y: string) => string function foo3(x: any) { } ->foo3 : { (x: new (x: string, y: string) => string): any; (x: new (x: string, y: string) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: string): string; }): any; (x: { "new"(x: string): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: string): string; } >b : { "new"(x: string): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: string): string; }): any; (x: { "new"(x: string): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: string): string; } >b : { "new"(x: string): string; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: string): string; }): any; (x: { "new"(x: string): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo8(x: B); @@ -130,29 +130,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: string, y: string) => string): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: new (x: string, y: string) => string): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: string, y: string) => string >a : new (x: string, y: string) => string function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: string, y: string) => string): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: string): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: string): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: string): string; } >b : { "new"(x: string): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: string): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -180,29 +180,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: string, y: string) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: new (x: string, y: string) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: string, y: string) => string >a : new (x: string, y: string) => string function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: string, y: string) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: string): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: string): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: string): string; } >b : { "new"(x: string): string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: string): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types.diff deleted file mode 100644 index deb7acc0baa..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types.diff +++ /dev/null @@ -1,112 +0,0 @@ ---- old.objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types -+++ new.objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types -@@= skipped -77, +77 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: string, y: string) => string): any; (x: new (x: string, y: string) => string): any; } - >x : new (x: string, y: string) => string - >a : new (x: string, y: string) => string - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: string, y: string) => string): any; (x: new (x: string, y: string) => string): any; } - >x : new (x: string, y: string) => string - >a : new (x: string, y: string) => string - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: string, y: string) => string): any; (x: new (x: string, y: string) => string): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: string): string; }): any; (x: { "new"(x: string): string; }): any; } - >x : { "new"(x: string): string; } - >b : { "new"(x: string): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: string): string; }): any; (x: { "new"(x: string): string; }): any; } - >x : { "new"(x: string): string; } - >b : { "new"(x: string): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: string): string; }): any; (x: { "new"(x: string): string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -52, +52 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: string, y: string) => string): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: string, y: string) => string): any; } - >x : new (x: string, y: string) => string - >a : new (x: string, y: string) => string - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: string, y: string) => string): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: string): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: string): string; }): any; } - >x : { "new"(x: string): string; } - >b : { "new"(x: string): string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: string): string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: string, y: string) => string): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: string, y: string) => string): any; } - >x : new (x: string, y: string) => string - >a : new (x: string, y: string) => string - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: string, y: string) => string): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: string): string; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: string): string; }): any; } - >x : { "new"(x: string): string; } - >b : { "new"(x: string): string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: string): string; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures.types index 470e0145999..496c14663c8 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures.types @@ -100,31 +100,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T): T; } >b : { foo(x: T): T; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T): T; } >b : { foo(x: T): T; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -164,16 +164,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -201,29 +201,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: T): T; } >b : { foo(x: T): T; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -251,29 +251,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: T): T; } >b : { foo(x: T): T; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures.types.diff deleted file mode 100644 index 231414d68dd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignatures.types -+++ new.objectTypesIdentityWithGenericCallSignatures.types -@@= skipped -99, +99 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >b : { foo(x: T): T; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >b : { foo(x: T): T; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >b : { foo(x: T): T; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >b : { foo(x: T): T; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures2.types index dea24e1b92f..b6d33a47d41 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures2.types @@ -107,31 +107,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y: U): T; } >a : { foo(x: T, y: U): T; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y: U): T; } >a : { foo(x: T, y: U): T; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y: U): T; } >b : { foo(x: T, y: U): T; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y: U): T; } >b : { foo(x: T, y: U): T; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -171,16 +171,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T, y: U): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // no error, bug? ->foo7 : { (x: A): any; (x: { foo(x: T, y: U): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: T, y: U): T; } >a : { foo(x: T, y: U): T; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T, y: U): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -208,29 +208,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: T, y: U): T; } >a : { foo(x: T, y: U): T; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: T, y: U): T; } >b : { foo(x: T, y: U): T; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -258,29 +258,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: T, y: U): T; } >a : { foo(x: T, y: U): T; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: T, y: U): T; } >b : { foo(x: T, y: U): T; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures2.types.diff deleted file mode 100644 index f16cd659115..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignatures2.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignatures2.types -+++ new.objectTypesIdentityWithGenericCallSignatures2.types -@@= skipped -106, +106 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >a : { foo(x: T, y: U): T; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >a : { foo(x: T, y: U): T; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >b : { foo(x: T, y: U): T; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >b : { foo(x: T, y: U): T; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y: U): T; }): any; } - >x : A - - function foo7(x: typeof a); // no error, bug? -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >a : { foo(x: T, y: U): T; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >a : { foo(x: T, y: U): T; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >b : { foo(x: T, y: U): T; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >a : { foo(x: T, y: U): T; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >b : { foo(x: T, y: U): T; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types index d39daf9f465..cc2e58c655d 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types @@ -42,8 +42,8 @@ interface I2 { } var a: { foo>(x: T): string } ->a : { foo(x: T): string; } ->foo : (x: T) => string +>a : { foo>(x: T): string; } +>foo : >(x: T) => string >x : T var b = { foo(x: T) { return ''; } }; @@ -66,15 +66,15 @@ function foo1(x: any) { } >x : any function foo1b(x: B>); ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B>): any; (x: B>): any; } >x : B function foo1b(x: B>); // error ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B>): any; (x: B>): any; } >x : B function foo1b(x: any) { } ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B>): any; (x: B>): any; } >x : any function foo1c(x: C); @@ -102,43 +102,43 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } ->x : { foo(x: T): string; } ->a : { foo(x: T): string; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } +>x : { foo>(x: T): string; } +>a : { foo>(x: T): string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } ->x : { foo(x: T): string; } ->a : { foo(x: T): string; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } +>x : { foo>(x: T): string; } +>a : { foo>(x: T): string; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T): string; } >b : { foo(x: T): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T): string; } >b : { foo(x: T): string; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); ->foo5 : { (x: A): any; (x: B): any; } +>foo5 : { (x: A): any; (x: B>): any; } >x : A function foo5(x: B>); // ok ->foo5 : { (x: A): any; (x: B): any; } +>foo5 : { (x: A): any; (x: B>): any; } >x : B function foo5(x: any) { } ->foo5 : { (x: A): any; (x: B): any; } +>foo5 : { (x: A): any; (x: B>): any; } >x : any function foo5b(x: A); @@ -166,66 +166,66 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: { foo(x: T): string; }): any; } ->x : { foo(x: T): string; } ->a : { foo(x: T): string; } +>foo7 : { (x: A): any; (x: typeof a): any; } +>x : { foo>(x: T): string; } +>a : { foo>(x: T): string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B>); ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B>): any; (x: I): any; } >x : B function foo8(x: I); // ok ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B>): any; (x: I): any; } >x : I function foo8(x: any) { } ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B>): any; (x: I): any; } >x : any function foo9(x: B>); ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B>): any; (x: C): any; } >x : B function foo9(x: C); // ok ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B>): any; (x: C): any; } >x : C function foo9(x: any) { } ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B>): any; (x: C): any; } >x : any function foo10(x: B>); ->foo10 : { (x: B): any; (x: { foo(x: T): string; }): any; } +>foo10 : { (x: B>): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T): string; }): any; } ->x : { foo(x: T): string; } ->a : { foo(x: T): string; } +>foo10 : { (x: B>): any; (x: typeof a): any; } +>x : { foo>(x: T): string; } +>a : { foo>(x: T): string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T): string; }): any; } +>foo10 : { (x: B>): any; (x: typeof a): any; } >x : any function foo11(x: B>); ->foo11 : { (x: B): any; (x: { foo(x: T): string; }): any; } +>foo11 : { (x: B>): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T): string; }): any; } +>foo11 : { (x: B>): any; (x: typeof b): any; } >x : { foo(x: T): string; } >b : { foo(x: T): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T): string; }): any; } +>foo11 : { (x: B>): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -253,29 +253,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: T): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: T): string; }): any; } ->x : { foo(x: T): string; } ->a : { foo(x: T): string; } +>foo13 : { (x: I): any; (x: typeof a): any; } +>x : { foo>(x: T): string; } +>a : { foo>(x: T): string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: T): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: T): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: T): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: T): string; } >b : { foo(x: T): string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: T): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types.diff deleted file mode 100644 index b283693b654..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types.diff +++ /dev/null @@ -1,213 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types -+++ new.objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types -@@= skipped -41, +41 lines =@@ - } - - var a: { foo>(x: T): string } -->a : { foo>(x: T): string; } -->foo : >(x: T) => string -+>a : { foo(x: T): string; } -+>foo : (x: T) => string - >x : T - - var b = { foo(x: T) { return ''; } }; -@@= skipped -24, +24 lines =@@ - >x : any - - function foo1b(x: B>); -->foo1b : { (x: B>): any; (x: B>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : B - - function foo1b(x: B>); // error -->foo1b : { (x: B>): any; (x: B>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : B - - function foo1b(x: any) { } -->foo1b : { (x: B>): any; (x: B>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : any - - function foo1c(x: C); -@@= skipped -36, +36 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -->x : { foo>(x: T): string; } -->a : { foo>(x: T): string; } -+>foo3 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } -+>x : { foo(x: T): string; } -+>a : { foo(x: T): string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -->x : { foo>(x: T): string; } -->a : { foo>(x: T): string; } -+>foo3 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } -+>x : { foo(x: T): string; } -+>a : { foo(x: T): string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } - >x : { foo(x: T): string; } - >b : { foo(x: T): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } - >x : { foo(x: T): string; } - >b : { foo(x: T): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): string; }): any; (x: { foo(x: T): string; }): any; } - >x : any - - function foo5(x: A); -->foo5 : { (x: A): any; (x: B>): any; } -+>foo5 : { (x: A): any; (x: B): any; } - >x : A - - function foo5(x: B>); // ok -->foo5 : { (x: A): any; (x: B>): any; } -+>foo5 : { (x: A): any; (x: B): any; } - >x : B - - function foo5(x: any) { } -->foo5 : { (x: A): any; (x: B>): any; } -+>foo5 : { (x: A): any; (x: B): any; } - >x : any - - function foo5b(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): string; }): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -->x : { foo>(x: T): string; } -->a : { foo>(x: T): string; } -+>foo7 : { (x: A): any; (x: { foo(x: T): string; }): any; } -+>x : { foo(x: T): string; } -+>a : { foo(x: T): string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): string; }): any; } - >x : any - - function foo8(x: B>); -->foo8 : { (x: B>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : B - - function foo8(x: I); // ok -->foo8 : { (x: B>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : I - - function foo8(x: any) { } -->foo8 : { (x: B>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : any - - function foo9(x: B>); -->foo9 : { (x: B>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : B - - function foo9(x: C); // ok -->foo9 : { (x: B>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : C - - function foo9(x: any) { } -->foo9 : { (x: B>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : any - - function foo10(x: B>); -->foo10 : { (x: B>): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): string; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B>): any; (x: typeof a): any; } -->x : { foo>(x: T): string; } -->a : { foo>(x: T): string; } -+>foo10 : { (x: B): any; (x: { foo(x: T): string; }): any; } -+>x : { foo(x: T): string; } -+>a : { foo(x: T): string; } - - function foo10(x: any) { } -->foo10 : { (x: B>): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): string; }): any; } - >x : any - - function foo11(x: B>); -->foo11 : { (x: B>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): string; }): any; } - >x : { foo(x: T): string; } - >b : { foo(x: T): string; } - - function foo11(x: any) { } -->foo11 : { (x: B>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -87, +87 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): string; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -->x : { foo>(x: T): string; } -->a : { foo>(x: T): string; } -+>foo13 : { (x: I): any; (x: { foo(x: T): string; }): any; } -+>x : { foo(x: T): string; } -+>a : { foo(x: T): string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): string; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): string; }): any; } - >x : { foo(x: T): string; } - >b : { foo(x: T): string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): string; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types index ff8bd3fce88..9655391d26f 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types @@ -56,8 +56,8 @@ interface I2 { } var a: { foo>(x: T, y: U): string } ->a : { foo(x: T, y: U): string; } ->foo : (x: T, y: U) => string +>a : { foo>(x: T, y: U): string; } +>foo : >(x: T, y: U) => string >x : T >y : U @@ -82,15 +82,15 @@ function foo1(x: any) { } >x : any function foo1b(x: B, Array>); ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B, Array>): any; (x: B, Array>): any; } >x : B function foo1b(x: B, Array>); // error ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B, Array>): any; (x: B, Array>): any; } >x : B function foo1b(x: any) { } ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B, Array>): any; (x: B, Array>): any; } >x : any function foo1c(x: C); @@ -118,43 +118,43 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } ->x : { foo(x: T, y: U): string; } ->a : { foo(x: T, y: U): string; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } +>x : { foo>(x: T, y: U): string; } +>a : { foo>(x: T, y: U): string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } ->x : { foo(x: T, y: U): string; } ->a : { foo(x: T, y: U): string; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } +>x : { foo>(x: T, y: U): string; } +>a : { foo>(x: T, y: U): string; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y: U): string; } >b : { foo(x: T, y: U): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y: U): string; } >b : { foo(x: T, y: U): string; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); ->foo5 : { (x: A): any; (x: B): any; } +>foo5 : { (x: A): any; (x: B, Array>): any; } >x : A function foo5(x: B, Array>); // ok ->foo5 : { (x: A): any; (x: B): any; } +>foo5 : { (x: A): any; (x: B, Array>): any; } >x : B function foo5(x: any) { } ->foo5 : { (x: A): any; (x: B): any; } +>foo5 : { (x: A): any; (x: B, Array>): any; } >x : any function foo5b(x: A); @@ -206,66 +206,66 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } ->x : { foo(x: T, y: U): string; } ->a : { foo(x: T, y: U): string; } +>foo7 : { (x: A): any; (x: typeof a): any; } +>x : { foo>(x: T, y: U): string; } +>a : { foo>(x: T, y: U): string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B, Array>); ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B, Array>): any; (x: I): any; } >x : B function foo8(x: I); // ok ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B, Array>): any; (x: I): any; } >x : I function foo8(x: any) { } ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B, Array>): any; (x: I): any; } >x : any function foo9(x: B, Array>); ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B, Array>): any; (x: C): any; } >x : B function foo9(x: C); // ok ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B, Array>): any; (x: C): any; } >x : C function foo9(x: any) { } ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B, Array>): any; (x: C): any; } >x : any function foo10(x: B, Array>); ->foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo10 : { (x: B, Array>): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } ->x : { foo(x: T, y: U): string; } ->a : { foo(x: T, y: U): string; } +>foo10 : { (x: B, Array>): any; (x: typeof a): any; } +>x : { foo>(x: T, y: U): string; } +>a : { foo>(x: T, y: U): string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo10 : { (x: B, Array>): any; (x: typeof a): any; } >x : any function foo11(x: B, Array>); ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo11 : { (x: B, Array>): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo11 : { (x: B, Array>): any; (x: typeof b): any; } >x : { foo(x: T, y: U): string; } >b : { foo(x: T, y: U): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo11 : { (x: B, Array>): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -293,29 +293,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } ->x : { foo(x: T, y: U): string; } ->a : { foo(x: T, y: U): string; } +>foo13 : { (x: I): any; (x: typeof a): any; } +>x : { foo>(x: T, y: U): string; } +>a : { foo>(x: T, y: U): string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: T, y: U): string; } >b : { foo(x: T, y: U): string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types.diff deleted file mode 100644 index a122f20e4f7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types.diff +++ /dev/null @@ -1,213 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types -+++ new.objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types -@@= skipped -55, +55 lines =@@ - } - - var a: { foo>(x: T, y: U): string } -->a : { foo>(x: T, y: U): string; } -->foo : >(x: T, y: U) => string -+>a : { foo(x: T, y: U): string; } -+>foo : (x: T, y: U) => string - >x : T - >y : U - -@@= skipped -26, +26 lines =@@ - >x : any - - function foo1b(x: B, Array>); -->foo1b : { (x: B, Array>): any; (x: B, Array>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : B - - function foo1b(x: B, Array>); // error -->foo1b : { (x: B, Array>): any; (x: B, Array>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : B - - function foo1b(x: any) { } -->foo1b : { (x: B, Array>): any; (x: B, Array>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : any - - function foo1c(x: C); -@@= skipped -36, +36 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -->x : { foo>(x: T, y: U): string; } -->a : { foo>(x: T, y: U): string; } -+>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } -+>x : { foo(x: T, y: U): string; } -+>a : { foo(x: T, y: U): string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -->x : { foo>(x: T, y: U): string; } -->a : { foo>(x: T, y: U): string; } -+>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } -+>x : { foo(x: T, y: U): string; } -+>a : { foo(x: T, y: U): string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >b : { foo(x: T, y: U): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >b : { foo(x: T, y: U): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo5(x: A); -->foo5 : { (x: A): any; (x: B, Array>): any; } -+>foo5 : { (x: A): any; (x: B): any; } - >x : A - - function foo5(x: B, Array>); // ok -->foo5 : { (x: A): any; (x: B, Array>): any; } -+>foo5 : { (x: A): any; (x: B): any; } - >x : B - - function foo5(x: any) { } -->foo5 : { (x: A): any; (x: B, Array>): any; } -+>foo5 : { (x: A): any; (x: B): any; } - >x : any - - function foo5b(x: A); -@@= skipped -88, +88 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -->x : { foo>(x: T, y: U): string; } -->a : { foo>(x: T, y: U): string; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } -+>x : { foo(x: T, y: U): string; } -+>a : { foo(x: T, y: U): string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo8(x: B, Array>); -->foo8 : { (x: B, Array>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : B - - function foo8(x: I); // ok -->foo8 : { (x: B, Array>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : I - - function foo8(x: any) { } -->foo8 : { (x: B, Array>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : any - - function foo9(x: B, Array>); -->foo9 : { (x: B, Array>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : B - - function foo9(x: C); // ok -->foo9 : { (x: B, Array>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : C - - function foo9(x: any) { } -->foo9 : { (x: B, Array>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : any - - function foo10(x: B, Array>); -->foo10 : { (x: B, Array>): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B, Array>): any; (x: typeof a): any; } -->x : { foo>(x: T, y: U): string; } -->a : { foo>(x: T, y: U): string; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } -+>x : { foo(x: T, y: U): string; } -+>a : { foo(x: T, y: U): string; } - - function foo10(x: any) { } -->foo10 : { (x: B, Array>): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo11(x: B, Array>); -->foo11 : { (x: B, Array>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B, Array>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >b : { foo(x: T, y: U): string; } - - function foo11(x: any) { } -->foo11 : { (x: B, Array>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -87, +87 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -->x : { foo>(x: T, y: U): string; } -->a : { foo>(x: T, y: U): string; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } -+>x : { foo(x: T, y: U): string; } -+>a : { foo(x: T, y: U): string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >b : { foo(x: T, y: U): string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types index 5b56db7433f..4d8746ee037 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types @@ -138,31 +138,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y: U): string; } >a : { foo(x: T, y: U): string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y: U): string; } >a : { foo(x: T, y: U): string; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y: U): string; } >b : { foo(x: T, y: U): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y: U): string; } >b : { foo(x: T, y: U): string; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -226,16 +226,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: T, y: U): string; } >a : { foo(x: T, y: U): string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -263,29 +263,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: T, y: U): string; } >a : { foo(x: T, y: U): string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: T, y: U): string; } >b : { foo(x: T, y: U): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I, Five>); @@ -313,29 +313,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I, Five>); ->foo13 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>foo13 : { (x: I, Five>): any; (x: typeof a): any; } >x : I, Five> function foo13(x: typeof a); // ok ->foo13 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>foo13 : { (x: I, Five>): any; (x: typeof a): any; } >x : { foo(x: T, y: U): string; } >a : { foo(x: T, y: U): string; } function foo13(x: any) { } ->foo13 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>foo13 : { (x: I, Five>): any; (x: typeof a): any; } >x : any function foo14(x: I, Five>); ->foo14 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>foo14 : { (x: I, Five>): any; (x: typeof b): any; } >x : I, Five> function foo14(x: typeof b); // ok ->foo14 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>foo14 : { (x: I, Five>): any; (x: typeof b): any; } >x : { foo(x: T, y: U): string; } >b : { foo(x: T, y: U): string; } function foo14(x: any) { } ->foo14 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>foo14 : { (x: I, Five>): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types.diff deleted file mode 100644 index 826be7b58e0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types -+++ new.objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types -@@= skipped -137, +137 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >a : { foo(x: T, y: U): string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >a : { foo(x: T, y: U): string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >b : { foo(x: T, y: U): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >b : { foo(x: T, y: U): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -88, +88 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >a : { foo(x: T, y: U): string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >a : { foo(x: T, y: U): string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >b : { foo(x: T, y: U): string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo12(x: I, Five>); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I, Five>); -->foo13 : { (x: I, Five>): any; (x: typeof a): any; } -+>foo13 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } - >x : I, Five> - - function foo13(x: typeof a); // ok -->foo13 : { (x: I, Five>): any; (x: typeof a): any; } -+>foo13 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >a : { foo(x: T, y: U): string; } - - function foo13(x: any) { } -->foo13 : { (x: I, Five>): any; (x: typeof a): any; } -+>foo13 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo14(x: I, Five>); -->foo14 : { (x: I, Five>): any; (x: typeof b): any; } -+>foo14 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } - >x : I, Five> - - function foo14(x: typeof b); // ok -->foo14 : { (x: I, Five>): any; (x: typeof b): any; } -+>foo14 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } - >x : { foo(x: T, y: U): string; } - >b : { foo(x: T, y: U): string; } - - function foo14(x: any) { } -->foo14 : { (x: I, Five>): any; (x: typeof b): any; } -+>foo14 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types index d8bcbfc37e6..c296c2c977a 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types @@ -101,31 +101,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T): any; } >b : { foo(x: T): any; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T): any; } >b : { foo(x: T): any; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -165,16 +165,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -202,29 +202,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: T): any; } >b : { foo(x: T): any; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -252,29 +252,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: T): any; } >b : { foo(x: T): any; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types.diff deleted file mode 100644 index ffd670d66d6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types -+++ new.objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types -@@= skipped -100, +100 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } - >x : { foo(x: T): any; } - >b : { foo(x: T): any; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } - >x : { foo(x: T): any; } - >b : { foo(x: T): any; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } - >x : { foo(x: T): any; } - >b : { foo(x: T): any; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } - >x : { foo(x: T): any; } - >b : { foo(x: T): any; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types index fd445c4c4fb..c6a7f86d0d0 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types @@ -101,31 +101,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T): any; } >b : { foo(x: T): any; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T): any; } >b : { foo(x: T): any; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -165,16 +165,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -202,29 +202,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: T): any; } >b : { foo(x: T): any; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -252,29 +252,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: T): T; } >a : { foo(x: T): T; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: T): any; } >b : { foo(x: T): any; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types.diff deleted file mode 100644 index f3a13dd4a21..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types -+++ new.objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types -@@= skipped -100, +100 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T): T; }): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } - >x : { foo(x: T): any; } - >b : { foo(x: T): any; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } - >x : { foo(x: T): any; } - >b : { foo(x: T): any; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T): any; }): any; (x: { foo(x: T): any; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } - >x : { foo(x: T): any; } - >b : { foo(x: T): any; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T): any; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : { foo(x: T): T; } - >a : { foo(x: T): T; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T): T; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } - >x : { foo(x: T): any; } - >b : { foo(x: T): any; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T): any; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types index 8521b7865ac..c7052d58381 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types @@ -100,31 +100,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: A): A; } >b : { foo(x: A): A; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: A): A; } >b : { foo(x: A): A; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -164,16 +164,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // no error, bug? ->foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -201,29 +201,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: A): A; } >b : { foo(x: A): A; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I, number, Date, string>); @@ -251,29 +251,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: A): A; } >b : { foo(x: A): A; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types.diff deleted file mode 100644 index c07e6d3cea9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types -+++ new.objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types -@@= skipped -99, +99 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } - >x : { foo(x: A): A; } - >b : { foo(x: A): A; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } - >x : { foo(x: A): A; } - >b : { foo(x: A): A; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } - >x : A - - function foo7(x: typeof a); // no error, bug? -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } - >x : { foo(x: A): A; } - >b : { foo(x: A): A; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } - >x : any - - function foo12(x: I, number, Date, string>); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } - >x : { foo(x: A): A; } - >b : { foo(x: A): A; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types index 138a2efe2aa..2d398038904 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types @@ -43,30 +43,30 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: (x: Z) => Z): any; (x: (x: Z) => Z): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : (x: Z) => Z >a : (x: Z) => Z function foo3(x: typeof a); // error ->foo3 : { (x: (x: Z) => Z): any; (x: (x: Z) => Z): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : (x: Z) => Z >a : (x: Z) => Z function foo3(x: any) { } ->foo3 : { (x: (x: Z) => Z): any; (x: (x: Z) => Z): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: (x: Z) => Z): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: (x: Z) => Z): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : (x: Z) => Z >a : (x: Z) => Z function foo13(x: any) { } ->foo13 : { (x: I): any; (x: (x: Z) => Z): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); @@ -82,16 +82,16 @@ function foo14(x: any) { } >x : any function foo14b(x: typeof a); ->foo14b : { (x: (x: Z) => Z): any; (x: I2): any; } +>foo14b : { (x: typeof a): any; (x: I2): any; } >x : (x: Z) => Z >a : (x: Z) => Z function foo14b(x: I2); // ok ->foo14b : { (x: (x: Z) => Z): any; (x: I2): any; } +>foo14b : { (x: typeof a): any; (x: I2): any; } >x : I2 function foo14b(x: any) { } ->foo14b : { (x: (x: Z) => Z): any; (x: I2): any; } +>foo14b : { (x: typeof a): any; (x: I2): any; } >x : any function foo15(x: I); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types.diff deleted file mode 100644 index 6657feff0e5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types.diff +++ /dev/null @@ -1,59 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types -+++ new.objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.types -@@= skipped -42, +42 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: (x: Z) => Z): any; (x: (x: Z) => Z): any; } - >x : (x: Z) => Z - >a : (x: Z) => Z - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: (x: Z) => Z): any; (x: (x: Z) => Z): any; } - >x : (x: Z) => Z - >a : (x: Z) => Z - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: (x: Z) => Z): any; (x: (x: Z) => Z): any; } - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: (x: Z) => Z): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: (x: Z) => Z): any; } - >x : (x: Z) => Z - >a : (x: Z) => Z - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: (x: Z) => Z): any; } - >x : any - - function foo14(x: I); -@@= skipped -39, +39 lines =@@ - >x : any - - function foo14b(x: typeof a); -->foo14b : { (x: typeof a): any; (x: I2): any; } -+>foo14b : { (x: (x: Z) => Z): any; (x: I2): any; } - >x : (x: Z) => Z - >a : (x: Z) => Z - - function foo14b(x: I2); // ok -->foo14b : { (x: typeof a): any; (x: I2): any; } -+>foo14b : { (x: (x: Z) => Z): any; (x: I2): any; } - >x : I2 - - function foo14b(x: any) { } -->foo14b : { (x: typeof a): any; (x: I2): any; } -+>foo14b : { (x: (x: Z) => Z): any; (x: I2): any; } - >x : any - - function foo15(x: I); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types index 5b5f437e647..065b24db761 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types @@ -100,31 +100,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: A): A; } >b : { foo(x: A): A; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: A): A; } >b : { foo(x: A): A; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -164,16 +164,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -201,29 +201,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: A): A; } >b : { foo(x: A): A; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -251,29 +251,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: Z): Z; } >a : { foo(x: Z): Z; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: A): A; } >b : { foo(x: A): A; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types.diff deleted file mode 100644 index 7099d1153f0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types -+++ new.objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types -@@= skipped -99, +99 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: Z): Z; }): any; (x: { foo(x: Z): Z; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } - >x : { foo(x: A): A; } - >b : { foo(x: A): A; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } - >x : { foo(x: A): A; } - >b : { foo(x: A): A; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: A): A; }): any; (x: { foo(x: A): A; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: Z): Z; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: Z): Z; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } - >x : { foo(x: A): A; } - >b : { foo(x: A): A; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: A): A; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } - >x : { foo(x: Z): Z; } - >a : { foo(x: Z): Z; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: Z): Z; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } - >x : { foo(x: A): A; } - >b : { foo(x: A): A; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: A): A; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types index 4f338b8bc88..ba000606628 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types @@ -109,31 +109,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y?: T): T; } >a : { foo(x: T, y?: T): T; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y?: T): T; } >a : { foo(x: T, y?: T): T; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y?: T): T; } >b : { foo(x: T, y?: T): T; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y?: T): T; } >b : { foo(x: T, y?: T): T; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -173,16 +173,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // no error, bug? ->foo7 : { (x: A): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: T, y?: T): T; } >a : { foo(x: T, y?: T): T; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -210,29 +210,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: T, y?: T): T; } >a : { foo(x: T, y?: T): T; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: T, y?: T): T; } >b : { foo(x: T, y?: T): T; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -260,29 +260,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: T, y?: T): T; } >a : { foo(x: T, y?: T): T; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: T, y?: T): T; } >b : { foo(x: T, y?: T): T; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types.diff deleted file mode 100644 index 96ab0977f01..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesOptionalParams.types -+++ new.objectTypesIdentityWithGenericCallSignaturesOptionalParams.types -@@= skipped -108, +108 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : { foo(x: T, y?: T): T; } - >a : { foo(x: T, y?: T): T; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : { foo(x: T, y?: T): T; } - >a : { foo(x: T, y?: T): T; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : { foo(x: T, y?: T): T; } - >b : { foo(x: T, y?: T): T; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : { foo(x: T, y?: T): T; } - >b : { foo(x: T, y?: T): T; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y?: T): T; }): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : A - - function foo7(x: typeof a); // no error, bug? -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : { foo(x: T, y?: T): T; } - >a : { foo(x: T, y?: T): T; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : { foo(x: T, y?: T): T; } - >a : { foo(x: T, y?: T): T; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : { foo(x: T, y?: T): T; } - >b : { foo(x: T, y?: T): T; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : { foo(x: T, y?: T): T; } - >a : { foo(x: T, y?: T): T; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : { foo(x: T, y?: T): T; } - >b : { foo(x: T, y?: T): T; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y?: T): T; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types index f2482b70b68..a13f9830971 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types @@ -109,31 +109,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y?: U): T; } >b : { foo(x: T, y?: U): T; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y?: U): T; } >b : { foo(x: T, y?: U): T; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -173,16 +173,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // no error, bug? ->foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -210,29 +210,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: T, y?: U): T; } >b : { foo(x: T, y?: U): T; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -260,29 +260,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: T, y?: U): T; } >b : { foo(x: T, y?: U): T; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types.diff deleted file mode 100644 index 2a7a45b2146..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types -+++ new.objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types -@@= skipped -108, +108 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >b : { foo(x: T, y?: U): T; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >b : { foo(x: T, y?: U): T; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : A - - function foo7(x: typeof a); // no error, bug? -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >b : { foo(x: T, y?: U): T; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >b : { foo(x: T, y?: U): T; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types index 22810ecc214..4ed9165a34c 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types @@ -109,31 +109,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo3(x: any) { } ->foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y: U): T; } >b : { foo(x: T, y: U): T; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo(x: T, y: U): T; } >b : { foo(x: T, y: U): T; } function foo4(x: any) { } ->foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -173,16 +173,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // no error, bug? ->foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -210,29 +210,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo(x: T, y: U): T; } >b : { foo(x: T, y: U): T; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -260,29 +260,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo(x: T, y?: U): T; } >a : { foo(x: T, y?: U): T; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo(x: T, y: U): T; } >b : { foo(x: T, y: U): T; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types.diff deleted file mode 100644 index 2f089fe13b0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types -+++ new.objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types -@@= skipped -108, +108 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo(x: T, y?: U): T; }): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >b : { foo(x: T, y: U): T; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >b : { foo(x: T, y: U): T; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo(x: T, y: U): T; }): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : A - - function foo7(x: typeof a); // no error, bug? -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >b : { foo(x: T, y: U): T; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : { foo(x: T, y?: U): T; } - >a : { foo(x: T, y?: U): T; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo(x: T, y?: U): T; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } - >x : { foo(x: T, y: U): T; } - >b : { foo(x: T, y: U): T; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo(x: T, y: U): T; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types index 07aeb92d624..9f837fcea8e 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types @@ -30,7 +30,7 @@ interface I2 { } var a: { new>(x: T): string } ->a : new (x: T) => string +>a : new >(x: T) => string >x : T var b = { new(x: T) { return ''; } }; // not a construct signature, function called new @@ -41,15 +41,15 @@ var b = { new(x: T) { return ''; } }; // not a construct signa >'' : "" function foo1b(x: B>); ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B>): any; (x: B>): any; } >x : B function foo1b(x: B>); // error ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B>): any; (x: B>): any; } >x : B function foo1b(x: any) { } ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B>): any; (x: B>): any; } >x : any function foo1c(x: C); @@ -77,81 +77,81 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: T) => string): any; (x: new (x: T) => string): any; } ->x : new (x: T) => string ->a : new (x: T) => string +>foo3 : { (x: typeof a): any; (x: typeof a): any; } +>x : new >(x: T) => string +>a : new >(x: T) => string function foo3(x: typeof a); // error ->foo3 : { (x: new (x: T) => string): any; (x: new (x: T) => string): any; } ->x : new (x: T) => string ->a : new (x: T) => string +>foo3 : { (x: typeof a): any; (x: typeof a): any; } +>x : new >(x: T) => string +>a : new >(x: T) => string function foo3(x: any) { } ->foo3 : { (x: new (x: T) => string): any; (x: new (x: T) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: T): string; }): any; (x: { "new"(x: T): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T): string; } >b : { "new"(x: T): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: T): string; }): any; (x: { "new"(x: T): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T): string; } >b : { "new"(x: T): string; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: T): string; }): any; (x: { "new"(x: T): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo8(x: B>); ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B>): any; (x: I): any; } >x : B function foo8(x: I); // ok ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B>): any; (x: I): any; } >x : I function foo8(x: any) { } ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B>): any; (x: I): any; } >x : any function foo9(x: B>); ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B>): any; (x: C): any; } >x : B function foo9(x: C); // error, types are structurally equal ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B>): any; (x: C): any; } >x : C function foo9(x: any) { } ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B>): any; (x: C): any; } >x : any function foo10(x: B>); ->foo10 : { (x: B): any; (x: new (x: T) => string): any; } +>foo10 : { (x: B>): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: new (x: T) => string): any; } ->x : new (x: T) => string ->a : new (x: T) => string +>foo10 : { (x: B>): any; (x: typeof a): any; } +>x : new >(x: T) => string +>a : new >(x: T) => string function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: T) => string): any; } +>foo10 : { (x: B>): any; (x: typeof a): any; } >x : any function foo11(x: B>); ->foo11 : { (x: B): any; (x: { "new"(x: T): string; }): any; } +>foo11 : { (x: B>): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: T): string; }): any; } +>foo11 : { (x: B>): any; (x: typeof b): any; } >x : { "new"(x: T): string; } >b : { "new"(x: T): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: T): string; }): any; } +>foo11 : { (x: B>): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -179,28 +179,28 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: T) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: new (x: T) => string): any; } ->x : new (x: T) => string ->a : new (x: T) => string +>foo13 : { (x: I): any; (x: typeof a): any; } +>x : new >(x: T) => string +>a : new >(x: T) => string function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: T) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: T): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: T): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: T): string; } >b : { "new"(x: T): string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: T): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types.diff deleted file mode 100644 index 191c27a81ae..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types.diff +++ /dev/null @@ -1,172 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types -@@= skipped -29, +29 lines =@@ - } - - var a: { new>(x: T): string } -->a : new >(x: T) => string -+>a : new (x: T) => string - >x : T - - var b = { new(x: T) { return ''; } }; // not a construct signature, function called new -@@= skipped -11, +11 lines =@@ - >'' : "" - - function foo1b(x: B>); -->foo1b : { (x: B>): any; (x: B>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : B - - function foo1b(x: B>); // error -->foo1b : { (x: B>): any; (x: B>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : B - - function foo1b(x: any) { } -->foo1b : { (x: B>): any; (x: B>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : any - - function foo1c(x: C); -@@= skipped -36, +36 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -->x : new >(x: T) => string -->a : new >(x: T) => string -+>foo3 : { (x: new (x: T) => string): any; (x: new (x: T) => string): any; } -+>x : new (x: T) => string -+>a : new (x: T) => string - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -->x : new >(x: T) => string -->a : new >(x: T) => string -+>foo3 : { (x: new (x: T) => string): any; (x: new (x: T) => string): any; } -+>x : new (x: T) => string -+>a : new (x: T) => string - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T) => string): any; (x: new (x: T) => string): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T): string; }): any; (x: { "new"(x: T): string; }): any; } - >x : { "new"(x: T): string; } - >b : { "new"(x: T): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T): string; }): any; (x: { "new"(x: T): string; }): any; } - >x : { "new"(x: T): string; } - >b : { "new"(x: T): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T): string; }): any; (x: { "new"(x: T): string; }): any; } - >x : any - - function foo8(x: B>); -->foo8 : { (x: B>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : B - - function foo8(x: I); // ok -->foo8 : { (x: B>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : I - - function foo8(x: any) { } -->foo8 : { (x: B>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : any - - function foo9(x: B>); -->foo9 : { (x: B>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : B - - function foo9(x: C); // error, types are structurally equal -->foo9 : { (x: B>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : C - - function foo9(x: any) { } -->foo9 : { (x: B>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : any - - function foo10(x: B>); -->foo10 : { (x: B>): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T) => string): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B>): any; (x: typeof a): any; } -->x : new >(x: T) => string -->a : new >(x: T) => string -+>foo10 : { (x: B): any; (x: new (x: T) => string): any; } -+>x : new (x: T) => string -+>a : new (x: T) => string - - function foo10(x: any) { } -->foo10 : { (x: B>): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T) => string): any; } - >x : any - - function foo11(x: B>); -->foo11 : { (x: B>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T): string; }): any; } - >x : { "new"(x: T): string; } - >b : { "new"(x: T): string; } - - function foo11(x: any) { } -->foo11 : { (x: B>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T): string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -102, +102 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T) => string): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -->x : new >(x: T) => string -->a : new >(x: T) => string -+>foo13 : { (x: I): any; (x: new (x: T) => string): any; } -+>x : new (x: T) => string -+>a : new (x: T) => string - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T) => string): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T): string; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T): string; }): any; } - >x : { "new"(x: T): string; } - >b : { "new"(x: T): string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T): string; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types index bd996ab55b6..9d751c32435 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types @@ -42,7 +42,7 @@ interface I2 { } var a: { new>(x: T, y: U): string } ->a : new (x: T, y: U) => string +>a : new >(x: T, y: U) => string >x : T >y : U @@ -55,15 +55,15 @@ var b = { new(x: T, y: U) { return ''; } }; // no >'' : "" function foo1b(x: B, Array>); ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B, Array>): any; (x: B, Array>): any; } >x : B function foo1b(x: B, Array>); // error ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B, Array>): any; (x: B, Array>): any; } >x : B function foo1b(x: any) { } ->foo1b : { (x: B): any; (x: B): any; } +>foo1b : { (x: B, Array>): any; (x: B, Array>): any; } >x : any function foo1c(x: C); @@ -91,31 +91,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } ->x : new (x: T, y: U) => string ->a : new (x: T, y: U) => string +>foo3 : { (x: typeof a): any; (x: typeof a): any; } +>x : new >(x: T, y: U) => string +>a : new >(x: T, y: U) => string function foo3(x: typeof a); // error ->foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } ->x : new (x: T, y: U) => string ->a : new (x: T, y: U) => string +>foo3 : { (x: typeof a): any; (x: typeof a): any; } +>x : new >(x: T, y: U) => string +>a : new >(x: T, y: U) => string function foo3(x: any) { } ->foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): string; } >b : { "new"(x: T, y: U): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): string; } >b : { "new"(x: T, y: U): string; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5c(x: C); @@ -143,53 +143,53 @@ function foo6c(x: any) { } >x : any function foo8(x: B, Array>); ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B, Array>): any; (x: I): any; } >x : B function foo8(x: I); // ok ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B, Array>): any; (x: I): any; } >x : I function foo8(x: any) { } ->foo8 : { (x: B): any; (x: I): any; } +>foo8 : { (x: B, Array>): any; (x: I): any; } >x : any function foo9(x: B, Array>); ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B, Array>): any; (x: C): any; } >x : B function foo9(x: C); // error, types are structurally equal ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B, Array>): any; (x: C): any; } >x : C function foo9(x: any) { } ->foo9 : { (x: B): any; (x: C): any; } +>foo9 : { (x: B, Array>): any; (x: C): any; } >x : any function foo10(x: B, Array>); ->foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>foo10 : { (x: B, Array>): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } ->x : new (x: T, y: U) => string ->a : new (x: T, y: U) => string +>foo10 : { (x: B, Array>): any; (x: typeof a): any; } +>x : new >(x: T, y: U) => string +>a : new >(x: T, y: U) => string function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>foo10 : { (x: B, Array>): any; (x: typeof a): any; } >x : any function foo11(x: B, Array>); ->foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo11 : { (x: B, Array>): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo11 : { (x: B, Array>): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): string; } >b : { "new"(x: T, y: U): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo11 : { (x: B, Array>): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -217,28 +217,28 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: T, y: U) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: new (x: T, y: U) => string): any; } ->x : new (x: T, y: U) => string ->a : new (x: T, y: U) => string +>foo13 : { (x: I): any; (x: typeof a): any; } +>x : new >(x: T, y: U) => string +>a : new >(x: T, y: U) => string function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: T, y: U) => string): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): string; } >b : { "new"(x: T, y: U): string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types.diff deleted file mode 100644 index 1f3213fdf5d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types.diff +++ /dev/null @@ -1,176 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types -@@= skipped -41, +41 lines =@@ - } - - var a: { new>(x: T, y: U): string } -->a : new >(x: T, y: U) => string -+>a : new (x: T, y: U) => string - >x : T - >y : U - -@@= skipped -13, +13 lines =@@ - >'' : "" - - function foo1b(x: B, Array>); -->foo1b : { (x: B, Array>): any; (x: B, Array>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : B - - function foo1b(x: B, Array>); // error -->foo1b : { (x: B, Array>): any; (x: B, Array>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : B - - function foo1b(x: any) { } -->foo1b : { (x: B, Array>): any; (x: B, Array>): any; } -+>foo1b : { (x: B): any; (x: B): any; } - >x : any - - function foo1c(x: C); -@@= skipped -36, +36 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -->x : new >(x: T, y: U) => string -->a : new >(x: T, y: U) => string -+>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } -+>x : new (x: T, y: U) => string -+>a : new (x: T, y: U) => string - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -->x : new >(x: T, y: U) => string -->a : new >(x: T, y: U) => string -+>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } -+>x : new (x: T, y: U) => string -+>a : new (x: T, y: U) => string - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : { "new"(x: T, y: U): string; } - >b : { "new"(x: T, y: U): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : { "new"(x: T, y: U): string; } - >b : { "new"(x: T, y: U): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : any - - function foo5c(x: C); -@@= skipped -52, +52 lines =@@ - >x : any - - function foo8(x: B, Array>); -->foo8 : { (x: B, Array>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : B - - function foo8(x: I); // ok -->foo8 : { (x: B, Array>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : I - - function foo8(x: any) { } -->foo8 : { (x: B, Array>): any; (x: I): any; } -+>foo8 : { (x: B): any; (x: I): any; } - >x : any - - function foo9(x: B, Array>); -->foo9 : { (x: B, Array>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : B - - function foo9(x: C); // error, types are structurally equal -->foo9 : { (x: B, Array>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : C - - function foo9(x: any) { } -->foo9 : { (x: B, Array>): any; (x: C): any; } -+>foo9 : { (x: B): any; (x: C): any; } - >x : any - - function foo10(x: B, Array>); -->foo10 : { (x: B, Array>): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B, Array>): any; (x: typeof a): any; } -->x : new >(x: T, y: U) => string -->a : new >(x: T, y: U) => string -+>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } -+>x : new (x: T, y: U) => string -+>a : new (x: T, y: U) => string - - function foo10(x: any) { } -->foo10 : { (x: B, Array>): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } - >x : any - - function foo11(x: B, Array>); -->foo11 : { (x: B, Array>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B, Array>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : { "new"(x: T, y: U): string; } - >b : { "new"(x: T, y: U): string; } - - function foo11(x: any) { } -->foo11 : { (x: B, Array>): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -74, +74 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y: U) => string): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -->x : new >(x: T, y: U) => string -->a : new >(x: T, y: U) => string -+>foo13 : { (x: I): any; (x: new (x: T, y: U) => string): any; } -+>x : new (x: T, y: U) => string -+>a : new (x: T, y: U) => string - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y: U) => string): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : { "new"(x: T, y: U): string; } - >b : { "new"(x: T, y: U): string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types index 3e57de02dc2..3343455719c 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types @@ -111,31 +111,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T, y: U) => string >a : new (x: T, y: U) => string function foo3(x: typeof a); // error ->foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T, y: U) => string >a : new (x: T, y: U) => string function foo3(x: any) { } ->foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): string; } >b : { "new"(x: T, y: U): string; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): string; } >b : { "new"(x: T, y: U): string; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5c(x: C); @@ -187,29 +187,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: T, y: U) => string >a : new (x: T, y: U) => string function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): string; } >b : { "new"(x: T, y: U): string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I, Five>); @@ -237,28 +237,28 @@ function foo12b(x: any) { } >x : any function foo13(x: I, Five>); ->foo13 : { (x: I, Five>): any; (x: new (x: T, y: U) => string): any; } +>foo13 : { (x: I, Five>): any; (x: typeof a): any; } >x : I, Five> function foo13(x: typeof a); // ok ->foo13 : { (x: I, Five>): any; (x: new (x: T, y: U) => string): any; } +>foo13 : { (x: I, Five>): any; (x: typeof a): any; } >x : new (x: T, y: U) => string >a : new (x: T, y: U) => string function foo13(x: any) { } ->foo13 : { (x: I, Five>): any; (x: new (x: T, y: U) => string): any; } +>foo13 : { (x: I, Five>): any; (x: typeof a): any; } >x : any function foo14(x: I, Five>); ->foo14 : { (x: I, Five>): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo14 : { (x: I, Five>): any; (x: typeof b): any; } >x : I, Five> function foo14(x: typeof b); // ok ->foo14 : { (x: I, Five>): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo14 : { (x: I, Five>): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): string; } >b : { "new"(x: T, y: U): string; } function foo14(x: any) { } ->foo14 : { (x: I, Five>): any; (x: { "new"(x: T, y: U): string; }): any; } +>foo14 : { (x: I, Five>): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types.diff deleted file mode 100644 index aae5a327dc4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types.diff +++ /dev/null @@ -1,110 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types -@@= skipped -110, +110 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } - >x : new (x: T, y: U) => string - >a : new (x: T, y: U) => string - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } - >x : new (x: T, y: U) => string - >a : new (x: T, y: U) => string - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : { "new"(x: T, y: U): string; } - >b : { "new"(x: T, y: U): string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : { "new"(x: T, y: U): string; } - >b : { "new"(x: T, y: U): string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y: U): string; }): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : any - - function foo5c(x: C); -@@= skipped -76, +76 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } - >x : new (x: T, y: U) => string - >a : new (x: T, y: U) => string - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : { "new"(x: T, y: U): string; } - >b : { "new"(x: T, y: U): string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : any - - function foo12(x: I, Five>); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I, Five>); -->foo13 : { (x: I, Five>): any; (x: typeof a): any; } -+>foo13 : { (x: I, Five>): any; (x: new (x: T, y: U) => string): any; } - >x : I, Five> - - function foo13(x: typeof a); // ok -->foo13 : { (x: I, Five>): any; (x: typeof a): any; } -+>foo13 : { (x: I, Five>): any; (x: new (x: T, y: U) => string): any; } - >x : new (x: T, y: U) => string - >a : new (x: T, y: U) => string - - function foo13(x: any) { } -->foo13 : { (x: I, Five>): any; (x: typeof a): any; } -+>foo13 : { (x: I, Five>): any; (x: new (x: T, y: U) => string): any; } - >x : any - - function foo14(x: I, Five>); -->foo14 : { (x: I, Five>): any; (x: typeof b): any; } -+>foo14 : { (x: I, Five>): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : I, Five> - - function foo14(x: typeof b); // ok -->foo14 : { (x: I, Five>): any; (x: typeof b): any; } -+>foo14 : { (x: I, Five>): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : { "new"(x: T, y: U): string; } - >b : { "new"(x: T, y: U): string; } - - function foo14(x: any) { } -->foo14 : { (x: I, Five>): any; (x: typeof b): any; } -+>foo14 : { (x: I, Five>): any; (x: { "new"(x: T, y: U): string; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types index 1373e72fa1f..6a856fc6291 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types @@ -76,45 +76,45 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T) => T >a : new (x: T) => T function foo3(x: typeof a); // error ->foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T) => T >a : new (x: T) => T function foo3(x: any) { } ->foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: T): T; }): any; (x: { "new"(x: T): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T): T; } >b : { "new"(x: T): T; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: T): T; }): any; (x: { "new"(x: T): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T): T; } >b : { "new"(x: T): T; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: T): T; }): any; (x: { "new"(x: T): T; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: typeof a): number; ->foo5 : { (x: new (x: T) => T): number; (x: { "new"(x: T): T; }): string; } +>foo5 : { (x: typeof a): number; (x: typeof b): string; } >x : new (x: T) => T >a : new (x: T) => T function foo5(x: typeof b): string; // ok ->foo5 : { (x: new (x: T) => T): number; (x: { "new"(x: T): T; }): string; } +>foo5 : { (x: typeof a): number; (x: typeof b): string; } >x : { "new"(x: T): T; } >b : { "new"(x: T): T; } function foo5(x: any): any { } ->foo5 : { (x: new (x: T) => T): number; (x: { "new"(x: T): T; }): string; } +>foo5 : { (x: typeof a): number; (x: typeof b): string; } >x : any function foo8(x: B); @@ -142,29 +142,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: T) => T): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: new (x: T) => T): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: T) => T >a : new (x: T) => T function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: T) => T): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: T): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: T): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: T): T; } >b : { "new"(x: T): T; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: T): T; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -192,29 +192,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: T) => T): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: new (x: T) => T): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: T) => T >a : new (x: T) => T function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: T) => T): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: T): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: T): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: T): T; } >b : { "new"(x: T): T; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: T): T; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types.diff deleted file mode 100644 index ad26bdaeb4a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types.diff +++ /dev/null @@ -1,129 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types -@@= skipped -75, +75 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } - >x : new (x: T) => T - >a : new (x: T) => T - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } - >x : new (x: T) => T - >a : new (x: T) => T - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T): T; }): any; (x: { "new"(x: T): T; }): any; } - >x : { "new"(x: T): T; } - >b : { "new"(x: T): T; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T): T; }): any; (x: { "new"(x: T): T; }): any; } - >x : { "new"(x: T): T; } - >b : { "new"(x: T): T; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T): T; }): any; (x: { "new"(x: T): T; }): any; } - >x : any - - function foo5(x: typeof a): number; -->foo5 : { (x: typeof a): number; (x: typeof b): string; } -+>foo5 : { (x: new (x: T) => T): number; (x: { "new"(x: T): T; }): string; } - >x : new (x: T) => T - >a : new (x: T) => T - - function foo5(x: typeof b): string; // ok -->foo5 : { (x: typeof a): number; (x: typeof b): string; } -+>foo5 : { (x: new (x: T) => T): number; (x: { "new"(x: T): T; }): string; } - >x : { "new"(x: T): T; } - >b : { "new"(x: T): T; } - - function foo5(x: any): any { } -->foo5 : { (x: typeof a): number; (x: typeof b): string; } -+>foo5 : { (x: new (x: T) => T): number; (x: { "new"(x: T): T; }): string; } - >x : any - - function foo8(x: B); -@@= skipped -66, +66 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T) => T): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T) => T): any; } - >x : new (x: T) => T - >a : new (x: T) => T - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T) => T): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T): T; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T): T; }): any; } - >x : { "new"(x: T): T; } - >b : { "new"(x: T): T; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T): T; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T) => T): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T) => T): any; } - >x : new (x: T) => T - >a : new (x: T) => T - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T) => T): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T): T; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T): T; }): any; } - >x : { "new"(x: T): T; } - >b : { "new"(x: T): T; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T): T; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types index be754f47640..857703ee7f1 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types @@ -76,31 +76,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T) => T >a : new (x: T) => T function foo3(x: typeof a); // error ->foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T) => T >a : new (x: T) => T function foo3(x: any) { } ->foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: T): any; }): any; (x: { "new"(x: T): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T): any; } >b : { "new"(x: T): any; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: T): any; }): any; (x: { "new"(x: T): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T): any; } >b : { "new"(x: T): any; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: T): any; }): any; (x: { "new"(x: T): any; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo8(x: B); @@ -128,29 +128,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: T) => T): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: new (x: T) => T): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: T) => T >a : new (x: T) => T function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: T) => T): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: T): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: T): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: T): any; } >b : { "new"(x: T): any; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: T): any; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -178,29 +178,29 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: T) => T): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: new (x: T) => T): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: T) => T >a : new (x: T) => T function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: T) => T): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: T): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: T): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: T): any; } >b : { "new"(x: T): any; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: T): any; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I2); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types.diff deleted file mode 100644 index f1acb3a0570..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types.diff +++ /dev/null @@ -1,112 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types -@@= skipped -75, +75 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } - >x : new (x: T) => T - >a : new (x: T) => T - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } - >x : new (x: T) => T - >a : new (x: T) => T - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T) => T): any; (x: new (x: T) => T): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T): any; }): any; (x: { "new"(x: T): any; }): any; } - >x : { "new"(x: T): any; } - >b : { "new"(x: T): any; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T): any; }): any; (x: { "new"(x: T): any; }): any; } - >x : { "new"(x: T): any; } - >b : { "new"(x: T): any; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T): any; }): any; (x: { "new"(x: T): any; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -52, +52 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T) => T): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T) => T): any; } - >x : new (x: T) => T - >a : new (x: T) => T - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T) => T): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T): any; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T): any; }): any; } - >x : { "new"(x: T): any; } - >b : { "new"(x: T): any; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T): any; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T) => T): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T) => T): any; } - >x : new (x: T) => T - >a : new (x: T) => T - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T) => T): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T): any; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T): any; }): any; } - >x : { "new"(x: T): any; } - >b : { "new"(x: T): any; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T): any; }): any; } - >x : any - - function foo15(x: I2); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types index 237d81c6554..fce8c0226d3 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types @@ -75,31 +75,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: Z) => C): any; (x: new (x: Z) => C): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: Z) => C >a : new (x: Z) => C function foo3(x: typeof a); // error ->foo3 : { (x: new (x: Z) => C): any; (x: new (x: Z) => C): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: Z) => C >a : new (x: Z) => C function foo3(x: any) { } ->foo3 : { (x: new (x: Z) => C): any; (x: new (x: Z) => C): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: A): A; }): any; (x: { "new"(x: A): A; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: A): A; } >b : { "new"(x: A): A; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: A): A; }): any; (x: { "new"(x: A): A; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: A): A; } >b : { "new"(x: A): A; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: A): A; }): any; (x: { "new"(x: A): A; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo8(x: B); @@ -127,29 +127,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: Z) => C): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: new (x: Z) => C): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: Z) => C >a : new (x: Z) => C function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: Z) => C): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: A): A; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: A): A; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: A): A; } >b : { "new"(x: A): A; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: A): A; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I, number, Date, string>); @@ -177,28 +177,28 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: Z) => C): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: new (x: Z) => C): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: Z) => C >a : new (x: Z) => C function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: Z) => C): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: A): A; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: A): A; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: A): A; } >b : { "new"(x: A): A; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: A): A; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types.diff deleted file mode 100644 index 506945746fa..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types.diff +++ /dev/null @@ -1,110 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types -@@= skipped -74, +74 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: Z) => C): any; (x: new (x: Z) => C): any; } - >x : new (x: Z) => C - >a : new (x: Z) => C - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: Z) => C): any; (x: new (x: Z) => C): any; } - >x : new (x: Z) => C - >a : new (x: Z) => C - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: Z) => C): any; (x: new (x: Z) => C): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: A): A; }): any; (x: { "new"(x: A): A; }): any; } - >x : { "new"(x: A): A; } - >b : { "new"(x: A): A; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: A): A; }): any; (x: { "new"(x: A): A; }): any; } - >x : { "new"(x: A): A; } - >b : { "new"(x: A): A; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: A): A; }): any; (x: { "new"(x: A): A; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -52, +52 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: Z) => C): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: Z) => C): any; } - >x : new (x: Z) => C - >a : new (x: Z) => C - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: Z) => C): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: A): A; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: A): A; }): any; } - >x : { "new"(x: A): A; } - >b : { "new"(x: A): A; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: A): A; }): any; } - >x : any - - function foo12(x: I, number, Date, string>); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: Z) => C): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: Z) => C): any; } - >x : new (x: Z) => C - >a : new (x: Z) => C - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: Z) => C): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: A): A; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: A): A; }): any; } - >x : { "new"(x: A): A; } - >b : { "new"(x: A): A; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: A): A; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types index 0759c5c6198..a89d229bcc6 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types @@ -77,31 +77,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: Z) => B): any; (x: new (x: Z) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: Z) => B >a : new (x: Z) => B function foo3(x: typeof a); // error ->foo3 : { (x: new (x: Z) => B): any; (x: new (x: Z) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: Z) => B >a : new (x: Z) => B function foo3(x: any) { } ->foo3 : { (x: new (x: Z) => B): any; (x: new (x: Z) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: A): C; }): any; (x: { "new"(x: A): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: A): C; } >b : { "new"(x: A): C; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: A): C; }): any; (x: { "new"(x: A): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: A): C; } >b : { "new"(x: A): C; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: A): C; }): any; (x: { "new"(x: A): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo8(x: B); @@ -129,29 +129,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: Z) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // BUG 832086 ->foo10 : { (x: B): any; (x: new (x: Z) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: Z) => B >a : new (x: Z) => B function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: Z) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: A): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: A): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: A): C; } >b : { "new"(x: A): C; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: A): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -179,28 +179,28 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: Z) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // BUG 832086 ->foo13 : { (x: I): any; (x: new (x: Z) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: Z) => B >a : new (x: Z) => B function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: Z) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: A): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: A): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: A): C; } >b : { "new"(x: A): C; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: A): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types.diff deleted file mode 100644 index 1ee13359a26..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types.diff +++ /dev/null @@ -1,110 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types -@@= skipped -76, +76 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: Z) => B): any; (x: new (x: Z) => B): any; } - >x : new (x: Z) => B - >a : new (x: Z) => B - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: Z) => B): any; (x: new (x: Z) => B): any; } - >x : new (x: Z) => B - >a : new (x: Z) => B - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: Z) => B): any; (x: new (x: Z) => B): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: A): C; }): any; (x: { "new"(x: A): C; }): any; } - >x : { "new"(x: A): C; } - >b : { "new"(x: A): C; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: A): C; }): any; (x: { "new"(x: A): C; }): any; } - >x : { "new"(x: A): C; } - >b : { "new"(x: A): C; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: A): C; }): any; (x: { "new"(x: A): C; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -52, +52 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: Z) => B): any; } - >x : B - - function foo10(x: typeof a); // BUG 832086 -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: Z) => B): any; } - >x : new (x: Z) => B - >a : new (x: Z) => B - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: Z) => B): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: A): C; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: A): C; }): any; } - >x : { "new"(x: A): C; } - >b : { "new"(x: A): C; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: A): C; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: Z) => B): any; } - >x : I - - function foo13(x: typeof a); // BUG 832086 -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: Z) => B): any; } - >x : new (x: Z) => B - >a : new (x: Z) => B - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: Z) => B): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: A): C; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: A): C; }): any; } - >x : { "new"(x: A): C; } - >b : { "new"(x: A): C; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: A): C; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types index 6f17b5e54ee..402a2d2c00a 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types @@ -86,31 +86,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: T, y?: T) => B): any; (x: new (x: T, y?: T) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T, y?: T) => B >a : new (x: T, y?: T) => B function foo3(x: typeof a); // error ->foo3 : { (x: new (x: T, y?: T) => B): any; (x: new (x: T, y?: T) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T, y?: T) => B >a : new (x: T, y?: T) => B function foo3(x: any) { } ->foo3 : { (x: new (x: T, y?: T) => B): any; (x: new (x: T, y?: T) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: T, y?: T): C; }): any; (x: { "new"(x: T, y?: T): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y?: T): C; } >b : { "new"(x: T, y?: T): C; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: T, y?: T): C; }): any; (x: { "new"(x: T, y?: T): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y?: T): C; } >b : { "new"(x: T, y?: T): C; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: T, y?: T): C; }): any; (x: { "new"(x: T, y?: T): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo8(x: B): string; @@ -138,29 +138,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: T, y?: T) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // BUG 832086 ->foo10 : { (x: B): any; (x: new (x: T, y?: T) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: T, y?: T) => B >a : new (x: T, y?: T) => B function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: T, y?: T) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: T, y?: T): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: T, y?: T): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: T, y?: T): C; } >b : { "new"(x: T, y?: T): C; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: T, y?: T): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -188,28 +188,28 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: T, y?: T) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // BUG 832086 ->foo13 : { (x: I): any; (x: new (x: T, y?: T) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: T, y?: T) => B >a : new (x: T, y?: T) => B function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: T, y?: T) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: T, y?: T): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: T, y?: T): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: T, y?: T): C; } >b : { "new"(x: T, y?: T): C; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: T, y?: T): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types.diff deleted file mode 100644 index 6ad7f1f21fd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types.diff +++ /dev/null @@ -1,110 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types -@@= skipped -85, +85 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y?: T) => B): any; (x: new (x: T, y?: T) => B): any; } - >x : new (x: T, y?: T) => B - >a : new (x: T, y?: T) => B - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y?: T) => B): any; (x: new (x: T, y?: T) => B): any; } - >x : new (x: T, y?: T) => B - >a : new (x: T, y?: T) => B - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y?: T) => B): any; (x: new (x: T, y?: T) => B): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y?: T): C; }): any; (x: { "new"(x: T, y?: T): C; }): any; } - >x : { "new"(x: T, y?: T): C; } - >b : { "new"(x: T, y?: T): C; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y?: T): C; }): any; (x: { "new"(x: T, y?: T): C; }): any; } - >x : { "new"(x: T, y?: T): C; } - >b : { "new"(x: T, y?: T): C; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y?: T): C; }): any; (x: { "new"(x: T, y?: T): C; }): any; } - >x : any - - function foo8(x: B): string; -@@= skipped -52, +52 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y?: T) => B): any; } - >x : B - - function foo10(x: typeof a); // BUG 832086 -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y?: T) => B): any; } - >x : new (x: T, y?: T) => B - >a : new (x: T, y?: T) => B - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y?: T) => B): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y?: T): C; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y?: T): C; }): any; } - >x : { "new"(x: T, y?: T): C; } - >b : { "new"(x: T, y?: T): C; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y?: T): C; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y?: T) => B): any; } - >x : I - - function foo13(x: typeof a); // BUG 832086 -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y?: T) => B): any; } - >x : new (x: T, y?: T) => B - >a : new (x: T, y?: T) => B - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y?: T) => B): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y?: T): C; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y?: T): C; }): any; } - >x : { "new"(x: T, y?: T): C; } - >b : { "new"(x: T, y?: T): C; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y?: T): C; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types index 49b080f8f0a..1c0d8bc490c 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types @@ -86,31 +86,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T, y?: U) => B >a : new (x: T, y?: U) => B function foo3(x: typeof a); // error ->foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T, y?: U) => B >a : new (x: T, y?: U) => B function foo3(x: any) { } ->foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: T, y?: U): C; }): any; (x: { "new"(x: T, y?: U): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y?: U): C; } >b : { "new"(x: T, y?: U): C; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: T, y?: U): C; }): any; (x: { "new"(x: T, y?: U): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y?: U): C; } >b : { "new"(x: T, y?: U): C; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: T, y?: U): C; }): any; (x: { "new"(x: T, y?: U): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo8(x: B); @@ -138,29 +138,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // BUG 832086 ->foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: T, y?: U) => B >a : new (x: T, y?: U) => B function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: T, y?: U): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: T, y?: U): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: T, y?: U): C; } >b : { "new"(x: T, y?: U): C; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: T, y?: U): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -188,28 +188,28 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // BUG 832086 ->foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: T, y?: U) => B >a : new (x: T, y?: U) => B function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: T, y?: U): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: T, y?: U): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: T, y?: U): C; } >b : { "new"(x: T, y?: U): C; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: T, y?: U): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types.diff deleted file mode 100644 index 8a201ab6e9b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types.diff +++ /dev/null @@ -1,110 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types -@@= skipped -85, +85 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } - >x : new (x: T, y?: U) => B - >a : new (x: T, y?: U) => B - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } - >x : new (x: T, y?: U) => B - >a : new (x: T, y?: U) => B - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y?: U): C; }): any; (x: { "new"(x: T, y?: U): C; }): any; } - >x : { "new"(x: T, y?: U): C; } - >b : { "new"(x: T, y?: U): C; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y?: U): C; }): any; (x: { "new"(x: T, y?: U): C; }): any; } - >x : { "new"(x: T, y?: U): C; } - >b : { "new"(x: T, y?: U): C; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y?: U): C; }): any; (x: { "new"(x: T, y?: U): C; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -52, +52 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } - >x : B - - function foo10(x: typeof a); // BUG 832086 -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } - >x : new (x: T, y?: U) => B - >a : new (x: T, y?: U) => B - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y?: U): C; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y?: U): C; }): any; } - >x : { "new"(x: T, y?: U): C; } - >b : { "new"(x: T, y?: U): C; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y?: U): C; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } - >x : I - - function foo13(x: typeof a); // BUG 832086 -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } - >x : new (x: T, y?: U) => B - >a : new (x: T, y?: U) => B - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y?: U): C; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y?: U): C; }): any; } - >x : { "new"(x: T, y?: U): C; } - >b : { "new"(x: T, y?: U): C; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y?: U): C; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types index b177f303306..d28e78bb050 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types @@ -86,31 +86,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T, y?: U) => B >a : new (x: T, y?: U) => B function foo3(x: typeof a); // error ->foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : new (x: T, y?: U) => B >a : new (x: T, y?: U) => B function foo3(x: any) { } ->foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { "new"(x: T, y: U): C; }): any; (x: { "new"(x: T, y: U): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): C; } >b : { "new"(x: T, y: U): C; } function foo4(x: typeof b); // error ->foo4 : { (x: { "new"(x: T, y: U): C; }): any; (x: { "new"(x: T, y: U): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): C; } >b : { "new"(x: T, y: U): C; } function foo4(x: any) { } ->foo4 : { (x: { "new"(x: T, y: U): C; }): any; (x: { "new"(x: T, y: U): C; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo8(x: B); @@ -138,29 +138,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // BUG 832086 ->foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : new (x: T, y?: U) => B >a : new (x: T, y?: U) => B function foo10(x: any) { } ->foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { "new"(x: T, y: U): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { "new"(x: T, y: U): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): C; } >b : { "new"(x: T, y: U): C; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { "new"(x: T, y: U): C; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -188,28 +188,28 @@ function foo12b(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // BUG 832086 ->foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : new (x: T, y?: U) => B >a : new (x: T, y?: U) => B function foo13(x: any) { } ->foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { "new"(x: T, y: U): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { "new"(x: T, y: U): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { "new"(x: T, y: U): C; } >b : { "new"(x: T, y: U): C; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { "new"(x: T, y: U): C; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types.diff deleted file mode 100644 index 3a224d836a1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types.diff +++ /dev/null @@ -1,110 +0,0 @@ ---- old.objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types -+++ new.objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types -@@= skipped -85, +85 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } - >x : new (x: T, y?: U) => B - >a : new (x: T, y?: U) => B - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } - >x : new (x: T, y?: U) => B - >a : new (x: T, y?: U) => B - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: new (x: T, y?: U) => B): any; (x: new (x: T, y?: U) => B): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y: U): C; }): any; (x: { "new"(x: T, y: U): C; }): any; } - >x : { "new"(x: T, y: U): C; } - >b : { "new"(x: T, y: U): C; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y: U): C; }): any; (x: { "new"(x: T, y: U): C; }): any; } - >x : { "new"(x: T, y: U): C; } - >b : { "new"(x: T, y: U): C; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { "new"(x: T, y: U): C; }): any; (x: { "new"(x: T, y: U): C; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -52, +52 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } - >x : B - - function foo10(x: typeof a); // BUG 832086 -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } - >x : new (x: T, y?: U) => B - >a : new (x: T, y?: U) => B - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: new (x: T, y?: U) => B): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y: U): C; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y: U): C; }): any; } - >x : { "new"(x: T, y: U): C; } - >b : { "new"(x: T, y: U): C; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { "new"(x: T, y: U): C; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -50, +50 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } - >x : I - - function foo13(x: typeof a); // BUG 832086 -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } - >x : new (x: T, y?: U) => B - >a : new (x: T, y?: U) => B - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: new (x: T, y?: U) => B): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y: U): C; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y: U): C; }): any; } - >x : { "new"(x: T, y: U): C; } - >b : { "new"(x: T, y: U): C; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { "new"(x: T, y: U): C; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers1.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers1.types index 6b0695896f8..ebcf763eb9d 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers1.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers1.types @@ -101,31 +101,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: number]: string; } >a : { [x: number]: string; } function foo3(x: typeof a); // error ->foo3 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: number]: string; } >a : { [x: number]: string; } function foo3(x: any) { } ->foo3 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: number]: string; } >b : { [x: number]: string; } function foo4(x: typeof b); // error ->foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: number]: string; } >b : { [x: number]: string; } function foo4(x: any) { } ->foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -189,16 +189,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { [x: number]: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { [x: number]: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { [x: number]: string; } >a : { [x: number]: string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { [x: number]: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -226,29 +226,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { [x: number]: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // error ->foo10 : { (x: B): any; (x: { [x: number]: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { [x: number]: string; } >a : { [x: number]: string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { [x: number]: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // error ->foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { [x: number]: string; } >b : { [x: number]: string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo11b(x: B); @@ -288,29 +288,29 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { [x: number]: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: { [x: number]: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { [x: number]: string; } >a : { [x: number]: string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { [x: number]: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // error ->foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { [x: number]: string; } >b : { [x: number]: string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers1.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers1.types.diff deleted file mode 100644 index 7f0680eba02..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers1.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithNumericIndexers1.types -+++ new.objectTypesIdentityWithNumericIndexers1.types -@@= skipped -100, +100 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >a : { [x: number]: string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >a : { [x: number]: string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >b : { [x: number]: string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >b : { [x: number]: string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -88, +88 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: number]: string; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >a : { [x: number]: string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: number]: string; }): any; } - >x : B - - function foo10(x: typeof a); // error -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >a : { [x: number]: string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } - >x : B - - function foo11(x: typeof b); // error -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >b : { [x: number]: string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo11b(x: B); -@@= skipped -62, +62 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: number]: string; }): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >a : { [x: number]: string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } - >x : I - - function foo14(x: typeof b); // error -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >b : { [x: number]: string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo15(x: I); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers2.types index 4f6387b2652..e839eac0caf 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers2.types @@ -110,31 +110,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { [x: number]: Base; }): any; (x: { [x: number]: Base; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: number]: Base; } >a : { [x: number]: Base; } function foo3(x: typeof a); // error ->foo3 : { (x: { [x: number]: Base; }): any; (x: { [x: number]: Base; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: number]: Base; } >a : { [x: number]: Base; } function foo3(x: any) { } ->foo3 : { (x: { [x: number]: Base; }): any; (x: { [x: number]: Base; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { [x: number]: Derived; }): any; (x: { [x: number]: Derived; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: number]: Derived; } >b : { [x: number]: Derived; } function foo4(x: typeof b); // error ->foo4 : { (x: { [x: number]: Derived; }): any; (x: { [x: number]: Derived; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: number]: Derived; } >b : { [x: number]: Derived; } function foo4(x: any) { } ->foo4 : { (x: { [x: number]: Derived; }): any; (x: { [x: number]: Derived; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -198,16 +198,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { [x: number]: Base; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { [x: number]: Base; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { [x: number]: Base; } >a : { [x: number]: Base; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { [x: number]: Base; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -235,29 +235,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { [x: number]: Base; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { [x: number]: Base; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { [x: number]: Base; } >a : { [x: number]: Base; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { [x: number]: Base; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { [x: number]: Derived; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // error ->foo11 : { (x: B): any; (x: { [x: number]: Derived; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { [x: number]: Derived; } >b : { [x: number]: Derived; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { [x: number]: Derived; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo11b(x: B); @@ -297,29 +297,29 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { [x: number]: Base; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { [x: number]: Base; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { [x: number]: Base; } >a : { [x: number]: Base; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { [x: number]: Base; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { [x: number]: Derived; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // error ->foo14 : { (x: I): any; (x: { [x: number]: Derived; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { [x: number]: Derived; } >b : { [x: number]: Derived; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { [x: number]: Derived; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers2.types.diff deleted file mode 100644 index f5803d96d2d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers2.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithNumericIndexers2.types -+++ new.objectTypesIdentityWithNumericIndexers2.types -@@= skipped -109, +109 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: number]: Base; }): any; (x: { [x: number]: Base; }): any; } - >x : { [x: number]: Base; } - >a : { [x: number]: Base; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: number]: Base; }): any; (x: { [x: number]: Base; }): any; } - >x : { [x: number]: Base; } - >a : { [x: number]: Base; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: number]: Base; }): any; (x: { [x: number]: Base; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: number]: Derived; }): any; (x: { [x: number]: Derived; }): any; } - >x : { [x: number]: Derived; } - >b : { [x: number]: Derived; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: number]: Derived; }): any; (x: { [x: number]: Derived; }): any; } - >x : { [x: number]: Derived; } - >b : { [x: number]: Derived; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: number]: Derived; }): any; (x: { [x: number]: Derived; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -88, +88 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: number]: Base; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: number]: Base; }): any; } - >x : { [x: number]: Base; } - >a : { [x: number]: Base; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: number]: Base; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: number]: Base; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: number]: Base; }): any; } - >x : { [x: number]: Base; } - >a : { [x: number]: Base; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: number]: Base; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: number]: Derived; }): any; } - >x : B - - function foo11(x: typeof b); // error -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: number]: Derived; }): any; } - >x : { [x: number]: Derived; } - >b : { [x: number]: Derived; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: number]: Derived; }): any; } - >x : any - - function foo11b(x: B); -@@= skipped -62, +62 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: number]: Base; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: number]: Base; }): any; } - >x : { [x: number]: Base; } - >a : { [x: number]: Base; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: number]: Base; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: number]: Derived; }): any; } - >x : I - - function foo14(x: typeof b); // error -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: number]: Derived; }): any; } - >x : { [x: number]: Derived; } - >b : { [x: number]: Derived; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: number]: Derived; }): any; } - >x : any - - function foo15(x: I); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers3.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers3.types index ee09c8ab564..b5cce86b451 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers3.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers3.types @@ -101,31 +101,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo3(x: typeof a); // error ->foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo3(x: any) { } ->foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: number]: string; } >b : { [x: number]: string; } function foo4(x: typeof b); // error ->foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: number]: string; } >b : { [x: number]: string; } function foo4(x: any) { } ->foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -189,16 +189,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -226,29 +226,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // error ->foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // ok ->foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { [x: number]: string; } >b : { [x: number]: string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo11b(x: B); @@ -288,29 +288,29 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { [x: number]: string; } >b : { [x: number]: string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers3.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers3.types.diff deleted file mode 100644 index 4dbc257d960..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithNumericIndexers3.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithNumericIndexers3.types -+++ new.objectTypesIdentityWithNumericIndexers3.types -@@= skipped -100, +100 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >b : { [x: number]: string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >b : { [x: number]: string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: number]: string; }): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -88, +88 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } - >x : B - - function foo10(x: typeof a); // error -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } - >x : B - - function foo11(x: typeof b); // ok -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >b : { [x: number]: string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo11b(x: B); -@@= skipped -62, +62 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } - >x : { [x: number]: string; } - >b : { [x: number]: string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: number]: string; }): any; } - >x : any - - function foo15(x: I); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithOptionality.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithOptionality.types index c89c9c72588..a87dce0f82c 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithOptionality.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithOptionality.types @@ -52,17 +52,17 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo?: string; }): any; (x: { foo?: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo?: string; } >a : { foo?: string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo?: string; }): any; (x: { foo?: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo?: string; } >a : { foo?: string; } function foo3(x: any) { } ->foo3 : { (x: { foo?: string; }): any; (x: { foo?: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo6(x: A); @@ -78,16 +78,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo?: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // ok ->foo7 : { (x: A): any; (x: { foo?: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo?: string; } >a : { foo?: string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo?: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -103,16 +103,16 @@ function foo8(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo?: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { foo?: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo?: string; } >a : { foo?: string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo?: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo12(x: I); @@ -128,28 +128,28 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo?: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: { foo?: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo?: string; } >a : { foo?: string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo?: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // ok ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithOptionality.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithOptionality.types.diff deleted file mode 100644 index 35fe7cb4bd7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithOptionality.types.diff +++ /dev/null @@ -1,97 +0,0 @@ ---- old.objectTypesIdentityWithOptionality.types -+++ new.objectTypesIdentityWithOptionality.types -@@= skipped -51, +51 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo?: string; }): any; (x: { foo?: string; }): any; } - >x : { foo?: string; } - >a : { foo?: string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo?: string; }): any; (x: { foo?: string; }): any; } - >x : { foo?: string; } - >a : { foo?: string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo?: string; }): any; (x: { foo?: string; }): any; } - >x : any - - function foo6(x: A); -@@= skipped -26, +26 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo?: string; }): any; } - >x : A - - function foo7(x: typeof a); // ok -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo?: string; }): any; } - >x : { foo?: string; } - >a : { foo?: string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo?: string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -25, +25 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo?: string; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo?: string; }): any; } - >x : { foo?: string; } - >a : { foo?: string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo?: string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -25, +25 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo?: string; }): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo?: string; }): any; } - >x : { foo?: string; } - >a : { foo?: string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo?: string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : I - - function foo14(x: typeof b); // ok -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPrivates.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPrivates.types index 5d838c64a43..c00533b897b 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPrivates.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPrivates.types @@ -98,31 +98,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo3(x: any) { } ->foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo4(x: any) { } ->foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -186,16 +186,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // no error ->foo7 : { (x: A): any; (x: { foo: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -223,29 +223,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // no error ->foo10 : { (x: B): any; (x: { foo: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // no error ->foo11 : { (x: B): any; (x: { foo: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo11b(x: B); @@ -285,29 +285,29 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: { foo: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // error ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPrivates.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPrivates.types.diff deleted file mode 100644 index 34c74e4db0c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPrivates.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithPrivates.types -+++ new.objectTypesIdentityWithPrivates.types -@@= skipped -97, +97 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -88, +88 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: string; }): any; } - >x : A - - function foo7(x: typeof a); // no error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: string; }): any; } - >x : B - - function foo10(x: typeof a); // no error -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: string; }): any; } - >x : B - - function foo11(x: typeof b); // no error -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: string; }): any; } - >x : any - - function foo11b(x: B); -@@= skipped -62, +62 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: string; }): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : I - - function foo14(x: typeof b); // error -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : any - - function foo15(x: I); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPublics.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPublics.types index 6c472c76993..9e487fe94b3 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPublics.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPublics.types @@ -88,31 +88,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo3(x: typeof a); // error ->foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo3(x: any) { } ->foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo4(x: typeof b); // error ->foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo4(x: any) { } ->foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -152,16 +152,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { foo: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { foo: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { foo: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -189,29 +189,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { foo: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // error ->foo10 : { (x: B): any; (x: { foo: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { foo: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { foo: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // error ->foo11 : { (x: B): any; (x: { foo: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { foo: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo12(x: I); @@ -227,28 +227,28 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { foo: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: { foo: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { foo: string; } >a : { foo: string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { foo: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // error ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { foo: string; } >b : { foo: string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { foo: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPublics.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPublics.types.diff deleted file mode 100644 index 45b9cefee68..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithPublics.types.diff +++ /dev/null @@ -1,130 +0,0 @@ ---- old.objectTypesIdentityWithPublics.types -+++ new.objectTypesIdentityWithPublics.types -@@= skipped -87, +87 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { foo: string; }): any; (x: { foo: string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -64, +64 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: string; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { foo: string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: string; }): any; } - >x : B - - function foo10(x: typeof a); // error -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { foo: string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: string; }): any; } - >x : B - - function foo11(x: typeof b); // error -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { foo: string; }): any; } - >x : any - - function foo12(x: I); -@@= skipped -38, +38 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: string; }): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >a : { foo: string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { foo: string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : I - - function foo14(x: typeof b); // error -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : { foo: string; } - >b : { foo: string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { foo: string; }): any; } - >x : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers.types index 25eb0e8b91f..60ca6559be3 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers.types @@ -101,31 +101,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo3(x: typeof a); // error ->foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo3(x: any) { } ->foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: string]: string; } >b : { [x: string]: string; } function foo4(x: typeof b); // error ->foo4 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: string]: string; } >b : { [x: string]: string; } function foo4(x: any) { } ->foo4 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -189,16 +189,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -226,29 +226,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // error ->foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { [x: string]: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // error ->foo11 : { (x: B): any; (x: { [x: string]: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { [x: string]: string; } >b : { [x: string]: string; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { [x: string]: string; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo11b(x: B); @@ -288,29 +288,29 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // error ->foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { [x: string]: string; } >a : { [x: string]: string; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { [x: string]: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // error ->foo14 : { (x: I): any; (x: { [x: string]: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { [x: string]: string; } >b : { [x: string]: string; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { [x: string]: string; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers.types.diff deleted file mode 100644 index 8ea144802be..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithStringIndexers.types -+++ new.objectTypesIdentityWithStringIndexers.types -@@= skipped -100, +100 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >b : { [x: string]: string; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >b : { [x: string]: string; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: string]: string; }): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -88, +88 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } - >x : B - - function foo10(x: typeof a); // error -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: string]: string; }): any; } - >x : B - - function foo11(x: typeof b); // error -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >b : { [x: string]: string; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo11b(x: B); -@@= skipped -62, +62 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } - >x : I - - function foo13(x: typeof a); // error -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >a : { [x: string]: string; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: string]: string; }): any; } - >x : I - - function foo14(x: typeof b); // error -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: string]: string; }): any; } - >x : { [x: string]: string; } - >b : { [x: string]: string; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: string]: string; }): any; } - >x : any - - function foo15(x: I); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers2.types b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers2.types index f0229ce02b3..d6549f39d38 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers2.types @@ -110,31 +110,31 @@ function foo2(x: any) { } >x : any function foo3(x: typeof a); ->foo3 : { (x: { [x: string]: Base; }): any; (x: { [x: string]: Base; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: string]: Base; } >a : { [x: string]: Base; } function foo3(x: typeof a); // error ->foo3 : { (x: { [x: string]: Base; }): any; (x: { [x: string]: Base; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : { [x: string]: Base; } >a : { [x: string]: Base; } function foo3(x: any) { } ->foo3 : { (x: { [x: string]: Base; }): any; (x: { [x: string]: Base; }): any; } +>foo3 : { (x: typeof a): any; (x: typeof a): any; } >x : any function foo4(x: typeof b); ->foo4 : { (x: { [x: string]: Derived; }): any; (x: { [x: string]: Derived; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: string]: Derived; } >b : { [x: string]: Derived; } function foo4(x: typeof b); // error ->foo4 : { (x: { [x: string]: Derived; }): any; (x: { [x: string]: Derived; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : { [x: string]: Derived; } >b : { [x: string]: Derived; } function foo4(x: any) { } ->foo4 : { (x: { [x: string]: Derived; }): any; (x: { [x: string]: Derived; }): any; } +>foo4 : { (x: typeof b): any; (x: typeof b): any; } >x : any function foo5(x: A); @@ -198,16 +198,16 @@ function foo6(x: any) { } >x : any function foo7(x: A); ->foo7 : { (x: A): any; (x: { [x: string]: Base; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : A function foo7(x: typeof a); // error ->foo7 : { (x: A): any; (x: { [x: string]: Base; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : { [x: string]: Base; } >a : { [x: string]: Base; } function foo7(x: any) { } ->foo7 : { (x: A): any; (x: { [x: string]: Base; }): any; } +>foo7 : { (x: A): any; (x: typeof a): any; } >x : any function foo8(x: B); @@ -235,29 +235,29 @@ function foo9(x: any) { } >x : any function foo10(x: B); ->foo10 : { (x: B): any; (x: { [x: string]: Base; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : B function foo10(x: typeof a); // ok ->foo10 : { (x: B): any; (x: { [x: string]: Base; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : { [x: string]: Base; } >a : { [x: string]: Base; } function foo10(x: any) { } ->foo10 : { (x: B): any; (x: { [x: string]: Base; }): any; } +>foo10 : { (x: B): any; (x: typeof a): any; } >x : any function foo11(x: B); ->foo11 : { (x: B): any; (x: { [x: string]: Derived; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : B function foo11(x: typeof b); // error ->foo11 : { (x: B): any; (x: { [x: string]: Derived; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : { [x: string]: Derived; } >b : { [x: string]: Derived; } function foo11(x: any) { } ->foo11 : { (x: B): any; (x: { [x: string]: Derived; }): any; } +>foo11 : { (x: B): any; (x: typeof b): any; } >x : any function foo11b(x: B); @@ -297,29 +297,29 @@ function foo12(x: any) { } >x : any function foo13(x: I); ->foo13 : { (x: I): any; (x: { [x: string]: Base; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : I function foo13(x: typeof a); // ok ->foo13 : { (x: I): any; (x: { [x: string]: Base; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : { [x: string]: Base; } >a : { [x: string]: Base; } function foo13(x: any) { } ->foo13 : { (x: I): any; (x: { [x: string]: Base; }): any; } +>foo13 : { (x: I): any; (x: typeof a): any; } >x : any function foo14(x: I); ->foo14 : { (x: I): any; (x: { [x: string]: Derived; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : I function foo14(x: typeof b); // error ->foo14 : { (x: I): any; (x: { [x: string]: Derived; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : { [x: string]: Derived; } >b : { [x: string]: Derived; } function foo14(x: any) { } ->foo14 : { (x: I): any; (x: { [x: string]: Derived; }): any; } +>foo14 : { (x: I): any; (x: typeof b): any; } >x : any function foo15(x: I); diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers2.types.diff deleted file mode 100644 index cf8143c2189..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesIdentityWithStringIndexers2.types.diff +++ /dev/null @@ -1,132 +0,0 @@ ---- old.objectTypesIdentityWithStringIndexers2.types -+++ new.objectTypesIdentityWithStringIndexers2.types -@@= skipped -109, +109 lines =@@ - >x : any - - function foo3(x: typeof a); -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: string]: Base; }): any; (x: { [x: string]: Base; }): any; } - >x : { [x: string]: Base; } - >a : { [x: string]: Base; } - - function foo3(x: typeof a); // error -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: string]: Base; }): any; (x: { [x: string]: Base; }): any; } - >x : { [x: string]: Base; } - >a : { [x: string]: Base; } - - function foo3(x: any) { } -->foo3 : { (x: typeof a): any; (x: typeof a): any; } -+>foo3 : { (x: { [x: string]: Base; }): any; (x: { [x: string]: Base; }): any; } - >x : any - - function foo4(x: typeof b); -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: string]: Derived; }): any; (x: { [x: string]: Derived; }): any; } - >x : { [x: string]: Derived; } - >b : { [x: string]: Derived; } - - function foo4(x: typeof b); // error -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: string]: Derived; }): any; (x: { [x: string]: Derived; }): any; } - >x : { [x: string]: Derived; } - >b : { [x: string]: Derived; } - - function foo4(x: any) { } -->foo4 : { (x: typeof b): any; (x: typeof b): any; } -+>foo4 : { (x: { [x: string]: Derived; }): any; (x: { [x: string]: Derived; }): any; } - >x : any - - function foo5(x: A); -@@= skipped -88, +88 lines =@@ - >x : any - - function foo7(x: A); -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: string]: Base; }): any; } - >x : A - - function foo7(x: typeof a); // error -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: string]: Base; }): any; } - >x : { [x: string]: Base; } - >a : { [x: string]: Base; } - - function foo7(x: any) { } -->foo7 : { (x: A): any; (x: typeof a): any; } -+>foo7 : { (x: A): any; (x: { [x: string]: Base; }): any; } - >x : any - - function foo8(x: B); -@@= skipped -37, +37 lines =@@ - >x : any - - function foo10(x: B); -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: string]: Base; }): any; } - >x : B - - function foo10(x: typeof a); // ok -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: string]: Base; }): any; } - >x : { [x: string]: Base; } - >a : { [x: string]: Base; } - - function foo10(x: any) { } -->foo10 : { (x: B): any; (x: typeof a): any; } -+>foo10 : { (x: B): any; (x: { [x: string]: Base; }): any; } - >x : any - - function foo11(x: B); -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: string]: Derived; }): any; } - >x : B - - function foo11(x: typeof b); // error -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: string]: Derived; }): any; } - >x : { [x: string]: Derived; } - >b : { [x: string]: Derived; } - - function foo11(x: any) { } -->foo11 : { (x: B): any; (x: typeof b): any; } -+>foo11 : { (x: B): any; (x: { [x: string]: Derived; }): any; } - >x : any - - function foo11b(x: B); -@@= skipped -62, +62 lines =@@ - >x : any - - function foo13(x: I); -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: string]: Base; }): any; } - >x : I - - function foo13(x: typeof a); // ok -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: string]: Base; }): any; } - >x : { [x: string]: Base; } - >a : { [x: string]: Base; } - - function foo13(x: any) { } -->foo13 : { (x: I): any; (x: typeof a): any; } -+>foo13 : { (x: I): any; (x: { [x: string]: Base; }): any; } - >x : any - - function foo14(x: I); -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: string]: Derived; }): any; } - >x : I - - function foo14(x: typeof b); // error -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: string]: Derived; }): any; } - >x : { [x: string]: Derived; } - >b : { [x: string]: Derived; } - - function foo14(x: any) { } -->foo14 : { (x: I): any; (x: typeof b): any; } -+>foo14 : { (x: I): any; (x: { [x: string]: Derived; }): any; } - >x : any - - function foo15(x: I); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties.types b/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties.types index 76a26381663..0e044daa0fd 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties.types @@ -4,7 +4,7 @@ // Basic uses of optional properties var a: { ->a : { x?: number | undefined; } +>a : { x?: number; } x?: number; // ok >x : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties.types.diff deleted file mode 100644 index 20beb9b8277..00000000000 --- a/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.objectTypesWithOptionalProperties.types -+++ new.objectTypesWithOptionalProperties.types -@@= skipped -3, +3 lines =@@ - // Basic uses of optional properties - - var a: { -->a : { x?: number; } -+>a : { x?: number | undefined; } - - x?: number; // ok - >x : number | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters1.types b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters1.types index 348f4e2b05c..c73a458fc6f 100644 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters1.types +++ b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters1.types @@ -2,7 +2,7 @@ === optionalBindingParameters1.ts === function foo([x,y,z]?: [string, number, boolean]) { ->foo : ([x, y, z]?: [string, number, boolean] | undefined) => void +>foo : ([x, y, z]?: [string, number, boolean]) => void >x : string >y : number >z : boolean @@ -11,7 +11,7 @@ function foo([x,y,z]?: [string, number, boolean]) { foo(["", 0, false]); >foo(["", 0, false]) : void ->foo : ([x, y, z]?: [string, number, boolean] | undefined) => void +>foo : ([x, y, z]?: [string, number, boolean]) => void >["", 0, false] : [string, number, false] >"" : "" >0 : 0 @@ -19,7 +19,7 @@ foo(["", 0, false]); foo([false, 0, ""]); >foo([false, 0, ""]) : void ->foo : ([x, y, z]?: [string, number, boolean] | undefined) => void +>foo : ([x, y, z]?: [string, number, boolean]) => void >[false, 0, ""] : [boolean, number, string] >false : false >0 : 0 diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters1.types.diff b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters1.types.diff deleted file mode 100644 index 48ce5a5ff60..00000000000 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters1.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.optionalBindingParameters1.types -+++ new.optionalBindingParameters1.types -@@= skipped -1, +1 lines =@@ - - === optionalBindingParameters1.ts === - function foo([x,y,z]?: [string, number, boolean]) { -->foo : ([x, y, z]?: [string, number, boolean]) => void -+>foo : ([x, y, z]?: [string, number, boolean] | undefined) => void - >x : string - >y : number - >z : boolean -@@= skipped -9, +9 lines =@@ - - foo(["", 0, false]); - >foo(["", 0, false]) : void -->foo : ([x, y, z]?: [string, number, boolean]) => void -+>foo : ([x, y, z]?: [string, number, boolean] | undefined) => void - >["", 0, false] : [string, number, false] - >"" : "" - >0 : 0 -@@= skipped -8, +8 lines =@@ - - foo([false, 0, ""]); - >foo([false, 0, ""]) : void -->foo : ([x, y, z]?: [string, number, boolean]) => void -+>foo : ([x, y, z]?: [string, number, boolean] | undefined) => void - >[false, 0, ""] : [boolean, number, string] - >false : false - >0 : 0 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters2.types b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters2.types index 2d90d69ccb3..0ea09ec41f7 100644 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters2.types +++ b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters2.types @@ -2,7 +2,7 @@ === optionalBindingParameters2.ts === function foo({ x, y, z }?: { x: string; y: number; z: boolean }) { ->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => void +>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => void >x : string >y : number >z : boolean @@ -14,7 +14,7 @@ function foo({ x, y, z }?: { x: string; y: number; z: boolean }) { foo({ x: "", y: 0, z: false }); >foo({ x: "", y: 0, z: false }) : void ->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => void +>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => void >{ x: "", y: 0, z: false } : { x: string; y: number; z: false; } >x : string >"" : "" @@ -25,7 +25,7 @@ foo({ x: "", y: 0, z: false }); foo({ x: false, y: 0, z: "" }); >foo({ x: false, y: 0, z: "" }) : void ->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => void +>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => void >{ x: false, y: 0, z: "" } : { x: boolean; y: number; z: string; } >x : boolean >false : false diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters2.types.diff b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters2.types.diff deleted file mode 100644 index 0e9e491f083..00000000000 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters2.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.optionalBindingParameters2.types -+++ new.optionalBindingParameters2.types -@@= skipped -1, +1 lines =@@ - - === optionalBindingParameters2.ts === - function foo({ x, y, z }?: { x: string; y: number; z: boolean }) { -->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => void -+>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => void - >x : string - >y : number - >z : boolean -@@= skipped -12, +12 lines =@@ - - foo({ x: "", y: 0, z: false }); - >foo({ x: "", y: 0, z: false }) : void -->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => void -+>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => void - >{ x: "", y: 0, z: false } : { x: string; y: number; z: false; } - >x : string - >"" : "" -@@= skipped -11, +11 lines =@@ - - foo({ x: false, y: 0, z: "" }); - >foo({ x: false, y: 0, z: "" }) : void -->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => void -+>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => void - >{ x: false, y: 0, z: "" } : { x: boolean; y: number; z: string; } - >x : boolean - >false : false \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters3.types b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters3.types index 54b7ea530cc..dbd40ac8fdc 100644 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters3.types +++ b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters3.types @@ -10,7 +10,7 @@ * @param {Foo} [options] */ function f({ a = "a" }) {} ->f : ({ a }?: Foo | undefined) => void +>f : ({ a }?: Foo) => void >a : string >"a" : "a" diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters3.types.diff b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters3.types.diff deleted file mode 100644 index 56171407c0f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters3.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.optionalBindingParameters3.types -+++ new.optionalBindingParameters3.types -@@= skipped -9, +9 lines =@@ - * @param {Foo} [options] - */ - function f({ a = "a" }) {} -->f : ({ a }?: Foo) => void -+>f : ({ a }?: Foo | undefined) => void - >a : string - >"a" : "a" diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters4.types b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters4.types index 9ae6f19c2fa..f77503795af 100644 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters4.types +++ b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters4.types @@ -5,7 +5,7 @@ * @param {{ cause?: string }} [options] */ function foo({ cause } = {}) { ->foo : ({ cause }?: { cause?: string | undefined; }) => string | undefined +>foo : ({ cause }?: { cause?: string; }) => string | undefined >cause : string | undefined >{} : {} diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters4.types.diff b/testdata/baselines/reference/submodule/conformance/optionalBindingParameters4.types.diff deleted file mode 100644 index 2f5591a70fc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParameters4.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.optionalBindingParameters4.types -+++ new.optionalBindingParameters4.types -@@= skipped -4, +4 lines =@@ - * @param {{ cause?: string }} [options] - */ - function foo({ cause } = {}) { -->foo : ({ cause }?: { cause?: string; }) => string | undefined -+>foo : ({ cause }?: { cause?: string | undefined; }) => string | undefined - >cause : string | undefined - >{} : {} diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads1.types b/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads1.types index 0b20d1ff47b..7f21816affd 100644 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads1.types +++ b/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads1.types @@ -2,20 +2,20 @@ === optionalBindingParametersInOverloads1.ts === function foo([x, y, z] ?: [string, number, boolean]); ->foo : ([x, y, z]?: [string, number, boolean] | undefined) => any +>foo : ([x, y, z]?: [string, number, boolean]) => any >x : string >y : number >z : boolean function foo(...rest: any[]) { ->foo : ([x, y, z]?: [string, number, boolean] | undefined) => any +>foo : ([x, y, z]?: [string, number, boolean]) => any >rest : any[] } foo(["", 0, false]); >foo(["", 0, false]) : any ->foo : ([x, y, z]?: [string, number, boolean] | undefined) => any +>foo : ([x, y, z]?: [string, number, boolean]) => any >["", 0, false] : [string, number, false] >"" : "" >0 : 0 @@ -23,7 +23,7 @@ foo(["", 0, false]); foo([false, 0, ""]); >foo([false, 0, ""]) : any ->foo : ([x, y, z]?: [string, number, boolean] | undefined) => any +>foo : ([x, y, z]?: [string, number, boolean]) => any >[false, 0, ""] : [boolean, number, string] >false : false >0 : 0 diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads1.types.diff b/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads1.types.diff deleted file mode 100644 index 8758f473c6c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads1.types.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- old.optionalBindingParametersInOverloads1.types -+++ new.optionalBindingParametersInOverloads1.types -@@= skipped -1, +1 lines =@@ - - === optionalBindingParametersInOverloads1.ts === - function foo([x, y, z] ?: [string, number, boolean]); -->foo : ([x, y, z]?: [string, number, boolean]) => any -+>foo : ([x, y, z]?: [string, number, boolean] | undefined) => any - >x : string - >y : number - >z : boolean - - function foo(...rest: any[]) { -->foo : ([x, y, z]?: [string, number, boolean]) => any -+>foo : ([x, y, z]?: [string, number, boolean] | undefined) => any - >rest : any[] - - } - - foo(["", 0, false]); - >foo(["", 0, false]) : any -->foo : ([x, y, z]?: [string, number, boolean]) => any -+>foo : ([x, y, z]?: [string, number, boolean] | undefined) => any - >["", 0, false] : [string, number, false] - >"" : "" - >0 : 0 -@@= skipped -21, +21 lines =@@ - - foo([false, 0, ""]); - >foo([false, 0, ""]) : any -->foo : ([x, y, z]?: [string, number, boolean]) => any -+>foo : ([x, y, z]?: [string, number, boolean] | undefined) => any - >[false, 0, ""] : [boolean, number, string] - >false : false - >0 : 0 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads2.types b/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads2.types index 4c23b87f14c..ce56071ad60 100644 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads2.types +++ b/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads2.types @@ -2,7 +2,7 @@ === optionalBindingParametersInOverloads2.ts === function foo({ x, y, z }?: { x: string; y: number; z: boolean }); ->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => any +>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any >x : string >y : number >z : boolean @@ -11,14 +11,14 @@ function foo({ x, y, z }?: { x: string; y: number; z: boolean }); >z : boolean function foo(...rest: any[]) { ->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => any +>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any >rest : any[] } foo({ x: "", y: 0, z: false }); >foo({ x: "", y: 0, z: false }) : any ->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => any +>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any >{ x: "", y: 0, z: false } : { x: string; y: number; z: false; } >x : string >"" : "" @@ -29,7 +29,7 @@ foo({ x: "", y: 0, z: false }); foo({ x: false, y: 0, z: "" }); >foo({ x: false, y: 0, z: "" }) : any ->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => any +>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any >{ x: false, y: 0, z: "" } : { x: boolean; y: number; z: string; } >x : boolean >false : false diff --git a/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads2.types.diff b/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads2.types.diff deleted file mode 100644 index 5a2551b02c8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/optionalBindingParametersInOverloads2.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.optionalBindingParametersInOverloads2.types -+++ new.optionalBindingParametersInOverloads2.types -@@= skipped -1, +1 lines =@@ - - === optionalBindingParametersInOverloads2.ts === - function foo({ x, y, z }?: { x: string; y: number; z: boolean }); -->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any -+>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => any - >x : string - >y : number - >z : boolean -@@= skipped -9, +9 lines =@@ - >z : boolean - - function foo(...rest: any[]) { -->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any -+>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => any - >rest : any[] - - } - - foo({ x: "", y: 0, z: false }); - >foo({ x: "", y: 0, z: false }) : any -->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any -+>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => any - >{ x: "", y: 0, z: false } : { x: string; y: number; z: false; } - >x : string - >"" : "" -@@= skipped -18, +18 lines =@@ - - foo({ x: false, y: 0, z: "" }); - >foo({ x: false, y: 0, z: "" }) : any -->foo : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any -+>foo : ({ x, y, z }?: { x: string; y: number; z: boolean; } | undefined) => any - >{ x: false, y: 0, z: "" } : { x: boolean; y: number; z: string; } - >x : boolean - >false : false \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.errors.txt b/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.errors.txt index 48416c13188..9204b289dc5 100644 --- a/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.errors.txt @@ -2,7 +2,7 @@ optionalPropertyAssignableToStringIndexSignature.ts(6,1): error TS2322: Type '{ Property 'k1' is incompatible with index signature. Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. -optionalPropertyAssignableToStringIndexSignature.ts(10,1): error TS2322: Type '{ 1?: string | undefined; }' is not assignable to type '{ [key: number]: string; }'. +optionalPropertyAssignableToStringIndexSignature.ts(10,1): error TS2322: Type '{ 1?: string; }' is not assignable to type '{ [key: number]: string; }'. Property '1' is incompatible with index signature. Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. @@ -28,7 +28,7 @@ optionalPropertyAssignableToStringIndexSignature.ts(13,5): error TS2322: Type '{ declare let numberLiteralKeys: { 1?: string }; probablyArray = numberLiteralKeys; // error ~~~~~~~~~~~~~ -!!! error TS2322: Type '{ 1?: string | undefined; }' is not assignable to type '{ [key: number]: string; }'. +!!! error TS2322: Type '{ 1?: string; }' is not assignable to type '{ [key: number]: string; }'. !!! error TS2322: Property '1' is incompatible with index signature. !!! error TS2322: Type 'string | undefined' is not assignable to type 'string'. !!! error TS2322: Type 'undefined' is not assignable to type 'string'. diff --git a/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.errors.txt.diff new file mode 100644 index 00000000000..4c56dec0138 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.errors.txt.diff @@ -0,0 +1,20 @@ +--- old.optionalPropertyAssignableToStringIndexSignature.errors.txt ++++ new.optionalPropertyAssignableToStringIndexSignature.errors.txt +@@= skipped -1, +1 lines =@@ + Property 'k1' is incompatible with index signature. + Type 'string | undefined' is not assignable to type 'string'. + Type 'undefined' is not assignable to type 'string'. +-optionalPropertyAssignableToStringIndexSignature.ts(10,1): error TS2322: Type '{ 1?: string | undefined; }' is not assignable to type '{ [key: number]: string; }'. ++optionalPropertyAssignableToStringIndexSignature.ts(10,1): error TS2322: Type '{ 1?: string; }' is not assignable to type '{ [key: number]: string; }'. + Property '1' is incompatible with index signature. + Type 'string | undefined' is not assignable to type 'string'. + Type 'undefined' is not assignable to type 'string'. +@@= skipped -26, +26 lines =@@ + declare let numberLiteralKeys: { 1?: string }; + probablyArray = numberLiteralKeys; // error + ~~~~~~~~~~~~~ +-!!! error TS2322: Type '{ 1?: string | undefined; }' is not assignable to type '{ [key: number]: string; }'. ++!!! error TS2322: Type '{ 1?: string; }' is not assignable to type '{ [key: number]: string; }'. + !!! error TS2322: Property '1' is incompatible with index signature. + !!! error TS2322: Type 'string | undefined' is not assignable to type 'string'. + !!! error TS2322: Type 'undefined' is not assignable to type 'string'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.types b/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.types index 451c62210aa..865d94e620a 100644 --- a/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.types +++ b/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.types @@ -2,7 +2,7 @@ === optionalPropertyAssignableToStringIndexSignature.ts === declare let optionalProperties: { k1?: string }; ->optionalProperties : { k1?: string | undefined; } +>optionalProperties : { k1?: string; } >k1 : string | undefined declare let undefinedProperties: { k1: string | undefined }; @@ -14,9 +14,9 @@ declare let stringDictionary: { [key: string]: string }; >key : string stringDictionary = optionalProperties; // ok ->stringDictionary = optionalProperties : { k1?: string | undefined; } +>stringDictionary = optionalProperties : { k1?: string; } >stringDictionary : { [key: string]: string; } ->optionalProperties : { k1?: string | undefined; } +>optionalProperties : { k1?: string; } stringDictionary = undefinedProperties; // error >stringDictionary = undefinedProperties : { k1: string | undefined; } @@ -28,13 +28,13 @@ declare let probablyArray: { [key: number]: string }; >key : number declare let numberLiteralKeys: { 1?: string }; ->numberLiteralKeys : { 1?: string | undefined; } +>numberLiteralKeys : { 1?: string; } >1 : string | undefined probablyArray = numberLiteralKeys; // error ->probablyArray = numberLiteralKeys : { 1?: string | undefined; } +>probablyArray = numberLiteralKeys : { 1?: string; } >probablyArray : { [key: number]: string; } ->numberLiteralKeys : { 1?: string | undefined; } +>numberLiteralKeys : { 1?: string; } declare let optionalUndefined: { k1?: undefined }; >optionalUndefined : { k1?: undefined; } @@ -49,7 +49,7 @@ function f() { >f : () => void let optional: { k1?: T } = undefined!; ->optional : { k1?: T | undefined; } +>optional : { k1?: T; } >k1 : T | undefined >undefined! : never >undefined : undefined @@ -57,6 +57,6 @@ function f() { let dict: { [key: string]: T | number } = optional; // ok >dict : { [key: string]: number | T; } >key : string ->optional : { k1?: T | undefined; } +>optional : { k1?: T; } } diff --git a/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.types.diff b/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.types.diff deleted file mode 100644 index b878e7ae205..00000000000 --- a/testdata/baselines/reference/submodule/conformance/optionalPropertyAssignableToStringIndexSignature.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.optionalPropertyAssignableToStringIndexSignature.types -+++ new.optionalPropertyAssignableToStringIndexSignature.types -@@= skipped -1, +1 lines =@@ - - === optionalPropertyAssignableToStringIndexSignature.ts === - declare let optionalProperties: { k1?: string }; -->optionalProperties : { k1?: string; } -+>optionalProperties : { k1?: string | undefined; } - >k1 : string | undefined - - declare let undefinedProperties: { k1: string | undefined }; -@@= skipped -12, +12 lines =@@ - >key : string - - stringDictionary = optionalProperties; // ok -->stringDictionary = optionalProperties : { k1?: string; } -+>stringDictionary = optionalProperties : { k1?: string | undefined; } - >stringDictionary : { [key: string]: string; } -->optionalProperties : { k1?: string; } -+>optionalProperties : { k1?: string | undefined; } - - stringDictionary = undefinedProperties; // error - >stringDictionary = undefinedProperties : { k1: string | undefined; } -@@= skipped -14, +14 lines =@@ - >key : number - - declare let numberLiteralKeys: { 1?: string }; -->numberLiteralKeys : { 1?: string; } -+>numberLiteralKeys : { 1?: string | undefined; } - >1 : string | undefined - - probablyArray = numberLiteralKeys; // error -->probablyArray = numberLiteralKeys : { 1?: string; } -+>probablyArray = numberLiteralKeys : { 1?: string | undefined; } - >probablyArray : { [key: number]: string; } -->numberLiteralKeys : { 1?: string; } -+>numberLiteralKeys : { 1?: string | undefined; } - - declare let optionalUndefined: { k1?: undefined }; - >optionalUndefined : { k1?: undefined; } -@@= skipped -21, +21 lines =@@ - >f : () => void - - let optional: { k1?: T } = undefined!; -->optional : { k1?: T; } -+>optional : { k1?: T | undefined; } - >k1 : T | undefined - >undefined! : never - >undefined : undefined -@@= skipped -8, +8 lines =@@ - let dict: { [key: string]: T | number } = optional; // ok - >dict : { [key: string]: number | T; } - >key : string -->optional : { k1?: T; } -+>optional : { k1?: T | undefined; } - } diff --git a/testdata/baselines/reference/submodule/conformance/override19.types b/testdata/baselines/reference/submodule/conformance/override19.types index 5893baaf972..fc819c7587c 100644 --- a/testdata/baselines/reference/submodule/conformance/override19.types +++ b/testdata/baselines/reference/submodule/conformance/override19.types @@ -6,7 +6,7 @@ type Foo = abstract new(...args: any) => any; >args : any declare function CreateMixin(Context: C, Base: T): T & { ->CreateMixin : (Context: C, Base: T) => T & (new (...args: any[]) => { context: InstanceType; }) +>CreateMixin : (Context: C, Base: T) => T & { new (...args: any[]): { context: InstanceType; }; } >Context : C >Base : T @@ -27,7 +27,7 @@ class A { class B extends CreateMixin(Context, A) { >B : B >CreateMixin(Context, A) : A & { context: Context; } ->CreateMixin : (Context: C, Base: T) => T & (new (...args: any[]) => { context: InstanceType; }) +>CreateMixin : (Context: C, Base: T) => T & { new (...args: any[]): { context: InstanceType; }; } >Context : typeof Context >A : typeof A @@ -38,7 +38,7 @@ class B extends CreateMixin(Context, A) { class C extends CreateMixin(Context, A) { >C : C >CreateMixin(Context, A) : A & { context: Context; } ->CreateMixin : (Context: C, Base: T) => T & (new (...args: any[]) => { context: InstanceType; }) +>CreateMixin : (Context: C, Base: T) => T & { new (...args: any[]): { context: InstanceType; }; } >Context : typeof Context >A : typeof A diff --git a/testdata/baselines/reference/submodule/conformance/override19.types.diff b/testdata/baselines/reference/submodule/conformance/override19.types.diff deleted file mode 100644 index ece50df8464..00000000000 --- a/testdata/baselines/reference/submodule/conformance/override19.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.override19.types -+++ new.override19.types -@@= skipped -5, +5 lines =@@ - >args : any - - declare function CreateMixin(Context: C, Base: T): T & { -->CreateMixin : (Context: C, Base: T) => T & { new (...args: any[]): { context: InstanceType; }; } -+>CreateMixin : (Context: C, Base: T) => T & (new (...args: any[]) => { context: InstanceType; }) - >Context : C - >Base : T - -@@= skipped -21, +21 lines =@@ - class B extends CreateMixin(Context, A) { - >B : B - >CreateMixin(Context, A) : A & { context: Context; } -->CreateMixin : (Context: C, Base: T) => T & { new (...args: any[]): { context: InstanceType; }; } -+>CreateMixin : (Context: C, Base: T) => T & (new (...args: any[]) => { context: InstanceType; }) - >Context : typeof Context - >A : typeof A - -@@= skipped -11, +11 lines =@@ - class C extends CreateMixin(Context, A) { - >C : C - >CreateMixin(Context, A) : A & { context: Context; } -->CreateMixin : (Context: C, Base: T) => T & { new (...args: any[]): { context: InstanceType; }; } -+>CreateMixin : (Context: C, Base: T) => T & (new (...args: any[]) => { context: InstanceType; }) - >Context : typeof Context - >A : typeof A diff --git a/testdata/baselines/reference/submodule/conformance/override2.types b/testdata/baselines/reference/submodule/conformance/override2.types index 70bc54ad538..8ea6f28fc0d 100644 --- a/testdata/baselines/reference/submodule/conformance/override2.types +++ b/testdata/baselines/reference/submodule/conformance/override2.types @@ -28,7 +28,7 @@ abstract class AD2 extends AB { >AB : AB abstract foo(v: ''): void // need override? ->foo : (v: "") => void +>foo : (v: '') => void >v : "" } @@ -37,7 +37,7 @@ abstract class AD3 extends AB { >AB : AB override foo(v: ''): void { } // need override? ->foo : (v: "") => void +>foo : (v: '') => void >v : "" abstract bar(): void; @@ -52,11 +52,11 @@ class D4 extends AB { >AB : AB override foo(v: ''): void {} ->foo : (v: "") => void +>foo : (v: '') => void >v : "" override bar(v: ''): void {} ->bar : (v: "") => void +>bar : (v: '') => void >v : "" baz(): void { } diff --git a/testdata/baselines/reference/submodule/conformance/override2.types.diff b/testdata/baselines/reference/submodule/conformance/override2.types.diff new file mode 100644 index 00000000000..61ddd6e9177 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/override2.types.diff @@ -0,0 +1,34 @@ +--- old.override2.types ++++ new.override2.types +@@= skipped -27, +27 lines =@@ + >AB : AB + + abstract foo(v: ''): void // need override? +->foo : (v: "") => void ++>foo : (v: '') => void + >v : "" + } + +@@= skipped -9, +9 lines =@@ + >AB : AB + + override foo(v: ''): void { } // need override? +->foo : (v: "") => void ++>foo : (v: '') => void + >v : "" + + abstract bar(): void; +@@= skipped -15, +15 lines =@@ + >AB : AB + + override foo(v: ''): void {} +->foo : (v: "") => void ++>foo : (v: '') => void + >v : "" + + override bar(v: ''): void {} +->bar : (v: "") => void ++>bar : (v: '') => void + >v : "" + + baz(): void { } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/paramTagBracketsAddOptionalUndefined.types b/testdata/baselines/reference/submodule/conformance/paramTagBracketsAddOptionalUndefined.types index d0cc84ac6a2..fb45e8d8f64 100644 --- a/testdata/baselines/reference/submodule/conformance/paramTagBracketsAddOptionalUndefined.types +++ b/testdata/baselines/reference/submodule/conformance/paramTagBracketsAddOptionalUndefined.types @@ -7,7 +7,7 @@ * @param {number} [r=101] */ function f(p, q, r) { ->f : (p?: number | undefined, q?: number | undefined, r?: number | undefined) => void +>f : (p?: number, q?: number | undefined, r?: number) => void >p : number | undefined >q : number | undefined >r : number | undefined @@ -31,18 +31,18 @@ function f(p, q, r) { } f() >f() : void ->f : (p?: number | undefined, q?: number | undefined, r?: number | undefined) => void +>f : (p?: number, q?: number | undefined, r?: number) => void f(undefined, undefined, undefined) >f(undefined, undefined, undefined) : void ->f : (p?: number | undefined, q?: number | undefined, r?: number | undefined) => void +>f : (p?: number, q?: number | undefined, r?: number) => void >undefined : undefined >undefined : undefined >undefined : undefined f(1, 2, 3) >f(1, 2, 3) : void ->f : (p?: number | undefined, q?: number | undefined, r?: number | undefined) => void +>f : (p?: number, q?: number | undefined, r?: number) => void >1 : 1 >2 : 2 >3 : 3 diff --git a/testdata/baselines/reference/submodule/conformance/paramTagBracketsAddOptionalUndefined.types.diff b/testdata/baselines/reference/submodule/conformance/paramTagBracketsAddOptionalUndefined.types.diff deleted file mode 100644 index 7c9ef3d0d0c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/paramTagBracketsAddOptionalUndefined.types.diff +++ /dev/null @@ -1,33 +0,0 @@ ---- old.paramTagBracketsAddOptionalUndefined.types -+++ new.paramTagBracketsAddOptionalUndefined.types -@@= skipped -6, +6 lines =@@ - * @param {number} [r=101] - */ - function f(p, q, r) { -->f : (p?: number, q?: number | undefined, r?: number) => void -+>f : (p?: number | undefined, q?: number | undefined, r?: number | undefined) => void - >p : number | undefined - >q : number | undefined - >r : number | undefined -@@= skipped -24, +24 lines =@@ - } - f() - >f() : void -->f : (p?: number, q?: number | undefined, r?: number) => void -+>f : (p?: number | undefined, q?: number | undefined, r?: number | undefined) => void - - f(undefined, undefined, undefined) - >f(undefined, undefined, undefined) : void -->f : (p?: number, q?: number | undefined, r?: number) => void -+>f : (p?: number | undefined, q?: number | undefined, r?: number | undefined) => void - >undefined : undefined - >undefined : undefined - >undefined : undefined - - f(1, 2, 3) - >f(1, 2, 3) : void -->f : (p?: number, q?: number | undefined, r?: number) => void -+>f : (p?: number | undefined, q?: number | undefined, r?: number | undefined) => void - >1 : 1 - >2 : 2 - >3 : 3 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution2.types b/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution2.types index 94b55631f1d..5470054ab2c 100644 --- a/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution2.types +++ b/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution2.types @@ -22,7 +22,7 @@ f({ x: 42 }, { x(param) { param.toFixed() } }); >x : (param: number) => void >param : number >param.toFixed() : string ->param.toFixed : (fractionDigits?: number | undefined) => string +>param.toFixed : (fractionDigits?: number) => string >param : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution2.types.diff b/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution2.types.diff deleted file mode 100644 index 8563cbe8891..00000000000 --- a/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.paramTagTypeResolution2.types -+++ new.paramTagTypeResolution2.types -@@= skipped -21, +21 lines =@@ - >x : (param: number) => void - >param : number - >param.toFixed() : string -->param.toFixed : (fractionDigits?: number) => string -+>param.toFixed : (fractionDigits?: number | undefined) => string - >param : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/parser15.4.4.14-9-2.types b/testdata/baselines/reference/submodule/conformance/parser15.4.4.14-9-2.types index 2ba578670ff..f050b215caf 100644 --- a/testdata/baselines/reference/submodule/conformance/parser15.4.4.14-9-2.types +++ b/testdata/baselines/reference/submodule/conformance/parser15.4.4.14-9-2.types @@ -67,9 +67,9 @@ function testcase() { >a.indexOf(-(4/3)) === 14 && // a[14]=_float===-(4/3) a.indexOf(0) === 7 : boolean >a.indexOf(-(4/3)) === 14 : boolean >a.indexOf(-(4/3)) : number ->a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number +>a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number >a : (boolean | null | undefined)[] ->indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number +>indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number >-(4/3) : number >(4/3) : number >4/3 : number @@ -80,18 +80,18 @@ function testcase() { a.indexOf(0) === 7 && // a[7] = +0, 0===+0 >a.indexOf(0) === 7 : boolean >a.indexOf(0) : number ->a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number +>a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number >a : (boolean | null | undefined)[] ->indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number +>indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number >0 : 0 >7 : 7 a.indexOf(-0) === 7 && // a[7] = +0, -0===+0 >a.indexOf(-0) === 7 : boolean >a.indexOf(-0) : number ->a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number +>a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number >a : (boolean | null | undefined)[] ->indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number +>indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number >-0 : 0 >0 : 0 >7 : 7 @@ -99,9 +99,9 @@ function testcase() { a.indexOf(1) === 10 ) // a[10] =one=== 1 >a.indexOf(1) === 10 : boolean >a.indexOf(1) : number ->a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number +>a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number >a : (boolean | null | undefined)[] ->indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number +>indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number >1 : 1 >10 : 10 { diff --git a/testdata/baselines/reference/submodule/conformance/parser15.4.4.14-9-2.types.diff b/testdata/baselines/reference/submodule/conformance/parser15.4.4.14-9-2.types.diff deleted file mode 100644 index 7dbf97794ca..00000000000 --- a/testdata/baselines/reference/submodule/conformance/parser15.4.4.14-9-2.types.diff +++ /dev/null @@ -1,49 +0,0 @@ ---- old.parser15.4.4.14-9-2.types -+++ new.parser15.4.4.14-9-2.types -@@= skipped -66, +66 lines =@@ - >a.indexOf(-(4/3)) === 14 && // a[14]=_float===-(4/3) a.indexOf(0) === 7 : boolean - >a.indexOf(-(4/3)) === 14 : boolean - >a.indexOf(-(4/3)) : number -->a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number -+>a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number - >a : (boolean | null | undefined)[] -->indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number -+>indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number - >-(4/3) : number - >(4/3) : number - >4/3 : number -@@= skipped -13, +13 lines =@@ - a.indexOf(0) === 7 && // a[7] = +0, 0===+0 - >a.indexOf(0) === 7 : boolean - >a.indexOf(0) : number -->a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number -+>a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number - >a : (boolean | null | undefined)[] -->indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number -+>indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number - >0 : 0 - >7 : 7 - - a.indexOf(-0) === 7 && // a[7] = +0, -0===+0 - >a.indexOf(-0) === 7 : boolean - >a.indexOf(-0) : number -->a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number -+>a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number - >a : (boolean | null | undefined)[] -->indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number -+>indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number - >-0 : 0 - >0 : 0 - >7 : 7 -@@= skipped -19, +19 lines =@@ - a.indexOf(1) === 10 ) // a[10] =one=== 1 - >a.indexOf(1) === 10 : boolean - >a.indexOf(1) : number -->a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number -+>a.indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number - >a : (boolean | null | undefined)[] -->indexOf : (searchElement: boolean | null | undefined, fromIndex?: number) => number -+>indexOf : (searchElement: boolean | null | undefined, fromIndex?: number | undefined) => number - >1 : 1 - >10 : 10 - { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/parserArrowFunctionExpression14.types b/testdata/baselines/reference/submodule/conformance/parserArrowFunctionExpression14.types index 443d8d13404..47e0c8c6aa2 100644 --- a/testdata/baselines/reference/submodule/conformance/parserArrowFunctionExpression14.types +++ b/testdata/baselines/reference/submodule/conformance/parserArrowFunctionExpression14.types @@ -5,7 +5,7 @@ a() ? (b: number, c?: string): void => d() : e; // Not legal JS; "Unexpected tok >a() ? (b: number, c?: string): void => d() : e : any >a() : any >a : any ->(b: number, c?: string): void => d() : (b: number, c?: string | undefined) => void +>(b: number, c?: string): void => d() : (b: number, c?: string) => void >b : number >c : string | undefined >d() : any @@ -17,7 +17,7 @@ a() ? (b: number, c?: string): void => d() : e; >a() ? (b: number, c?: string): void => d() : e : any >a() : any >a : any ->(b: number, c?: string): void => d() : (b: number, c?: string | undefined) => void +>(b: number, c?: string): void => d() : (b: number, c?: string) => void >b : number >c : string | undefined >d() : any diff --git a/testdata/baselines/reference/submodule/conformance/parserArrowFunctionExpression14.types.diff b/testdata/baselines/reference/submodule/conformance/parserArrowFunctionExpression14.types.diff deleted file mode 100644 index e7d82cb39d6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/parserArrowFunctionExpression14.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.parserArrowFunctionExpression14.types -+++ new.parserArrowFunctionExpression14.types -@@= skipped -4, +4 lines =@@ - >a() ? (b: number, c?: string): void => d() : e : any - >a() : any - >a : any -->(b: number, c?: string): void => d() : (b: number, c?: string) => void -+>(b: number, c?: string): void => d() : (b: number, c?: string | undefined) => void - >b : number - >c : string | undefined - >d() : any -@@= skipped -12, +12 lines =@@ - >a() ? (b: number, c?: string): void => d() : e : any - >a() : any - >a : any -->(b: number, c?: string): void => d() : (b: number, c?: string) => void -+>(b: number, c?: string): void => d() : (b: number, c?: string | undefined) => void - >b : number - >c : string | undefined - >d() : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/parserMissingLambdaOpenBrace1.types b/testdata/baselines/reference/submodule/conformance/parserMissingLambdaOpenBrace1.types index 005aadb7675..27a6c514a89 100644 --- a/testdata/baselines/reference/submodule/conformance/parserMissingLambdaOpenBrace1.types +++ b/testdata/baselines/reference/submodule/conformance/parserMissingLambdaOpenBrace1.types @@ -5,7 +5,7 @@ class C { >C : C where(filter: Iterator): Query { ->where : (filter: Iterator) => Query +>where : (filter: Iterator) => Query >filter : Iterator return fromDoWhile(test => diff --git a/testdata/baselines/reference/submodule/conformance/parserMissingLambdaOpenBrace1.types.diff b/testdata/baselines/reference/submodule/conformance/parserMissingLambdaOpenBrace1.types.diff deleted file mode 100644 index 60401a2eb2c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/parserMissingLambdaOpenBrace1.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.parserMissingLambdaOpenBrace1.types -+++ new.parserMissingLambdaOpenBrace1.types -@@= skipped -4, +4 lines =@@ - >C : C - - where(filter: Iterator): Query { -->where : (filter: Iterator) => Query -+>where : (filter: Iterator) => Query - >filter : Iterator - - return fromDoWhile(test => \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/parserOverloadOnConstants1.types b/testdata/baselines/reference/submodule/conformance/parserOverloadOnConstants1.types index 4557be7bf4c..b054da1d65e 100644 --- a/testdata/baselines/reference/submodule/conformance/parserOverloadOnConstants1.types +++ b/testdata/baselines/reference/submodule/conformance/parserOverloadOnConstants1.types @@ -3,18 +3,18 @@ === parserOverloadOnConstants1.ts === interface Document { createElement(tagName: string): HTMLElement; ->createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } +>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: 'canvas'): HTMLCanvasElement; (tagName: 'div'): HTMLDivElement; (tagName: 'span'): HTMLSpanElement; } >tagName : string createElement(tagName: 'canvas'): HTMLCanvasElement; ->createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } +>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: 'canvas'): HTMLCanvasElement; (tagName: 'div'): HTMLDivElement; (tagName: 'span'): HTMLSpanElement; } >tagName : "canvas" createElement(tagName: 'div'): HTMLDivElement; ->createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } +>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: 'canvas'): HTMLCanvasElement; (tagName: 'div'): HTMLDivElement; (tagName: 'span'): HTMLSpanElement; } >tagName : "div" createElement(tagName: 'span'): HTMLSpanElement; ->createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } +>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: 'canvas'): HTMLCanvasElement; (tagName: 'div'): HTMLDivElement; (tagName: 'span'): HTMLSpanElement; } >tagName : "span" } diff --git a/testdata/baselines/reference/submodule/conformance/parserOverloadOnConstants1.types.diff b/testdata/baselines/reference/submodule/conformance/parserOverloadOnConstants1.types.diff index df512c3a208..f6e04b5fcfd 100644 --- a/testdata/baselines/reference/submodule/conformance/parserOverloadOnConstants1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/parserOverloadOnConstants1.types.diff @@ -5,21 +5,21 @@ interface Document { createElement(tagName: string): HTMLElement; ->createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } -+>createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } ++>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: 'canvas'): HTMLCanvasElement; (tagName: 'div'): HTMLDivElement; (tagName: 'span'): HTMLSpanElement; } >tagName : string createElement(tagName: 'canvas'): HTMLCanvasElement; ->createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } -+>createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } ++>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: 'canvas'): HTMLCanvasElement; (tagName: 'div'): HTMLDivElement; (tagName: 'span'): HTMLSpanElement; } >tagName : "canvas" createElement(tagName: 'div'): HTMLDivElement; ->createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } -+>createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } ++>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: 'canvas'): HTMLCanvasElement; (tagName: 'div'): HTMLDivElement; (tagName: 'span'): HTMLSpanElement; } >tagName : "div" createElement(tagName: 'span'): HTMLSpanElement; ->createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } -+>createElement : { (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions | undefined): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions | undefined): HTMLElement; (tagName: string): HTMLElement; (tagName: "canvas"): HTMLCanvasElement; (tagName: "div"): HTMLDivElement; (tagName: "span"): HTMLSpanElement; } ++>createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K]; (tagName: string, options?: ElementCreationOptions): HTMLElement; (tagName: string): HTMLElement; (tagName: 'canvas'): HTMLCanvasElement; (tagName: 'div'): HTMLDivElement; (tagName: 'span'): HTMLSpanElement; } >tagName : "span" } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/parserParameterList2.types b/testdata/baselines/reference/submodule/conformance/parserParameterList2.types index af0b1222981..09a598eec03 100644 --- a/testdata/baselines/reference/submodule/conformance/parserParameterList2.types +++ b/testdata/baselines/reference/submodule/conformance/parserParameterList2.types @@ -5,7 +5,7 @@ class C { >C : C F(A?= 0) { } ->F : (A?: number | undefined) => void +>F : (A?: number) => void >A : number | undefined >0 : 0 } diff --git a/testdata/baselines/reference/submodule/conformance/parserParameterList2.types.diff b/testdata/baselines/reference/submodule/conformance/parserParameterList2.types.diff new file mode 100644 index 00000000000..314cf9849ad --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/parserParameterList2.types.diff @@ -0,0 +1,11 @@ +--- old.parserParameterList2.types ++++ new.parserParameterList2.types +@@= skipped -4, +4 lines =@@ + >C : C + + F(A?= 0) { } +->F : (A?: number | undefined) => void ++>F : (A?: number) => void + >A : number | undefined + >0 : 0 + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/parserRealSource14.types b/testdata/baselines/reference/submodule/conformance/parserRealSource14.types index 5b7dd006c2d..51270661799 100644 --- a/testdata/baselines/reference/submodule/conformance/parserRealSource14.types +++ b/testdata/baselines/reference/submodule/conformance/parserRealSource14.types @@ -172,11 +172,11 @@ namespace TypeScript { this.asts.pop(); >this.asts.pop() : TypeScript.AST ->this.asts.pop : () => TypeScript.AST +>this.asts.pop : () => TypeScript.AST | undefined >this.asts : TypeScript.AST[] >this : this >asts : TypeScript.AST[] ->pop : () => TypeScript.AST +>pop : () => TypeScript.AST | undefined } return head; >head : TypeScript.AST @@ -201,11 +201,11 @@ namespace TypeScript { this.asts.pop(); >this.asts.pop() : TypeScript.AST ->this.asts.pop : () => TypeScript.AST +>this.asts.pop : () => TypeScript.AST | undefined >this.asts : TypeScript.AST[] >this : this >asts : TypeScript.AST[] ->pop : () => TypeScript.AST +>pop : () => TypeScript.AST | undefined } this.top = this.asts.length; >this.top = this.asts.length : number @@ -3814,7 +3814,7 @@ namespace TypeScript { /// Return the stack of AST nodes containing "position" /// export function getAstPathToPosition(script: TypeScript.AST, pos: number, options = GetAstPathOptions.Default): TypeScript.AstPath { ->getAstPathToPosition : (script: TypeScript.AST, pos: number, options?: GetAstPathOptions) => AstPath +>getAstPathToPosition : (script: TypeScript.AST, pos: number, options?: GetAstPathOptions) => TypeScript.AstPath >script : TypeScript.AST >TypeScript : any >pos : number diff --git a/testdata/baselines/reference/submodule/conformance/parserRealSource14.types.diff b/testdata/baselines/reference/submodule/conformance/parserRealSource14.types.diff index 6de76bbd28b..2ca70c1d428 100644 --- a/testdata/baselines/reference/submodule/conformance/parserRealSource14.types.diff +++ b/testdata/baselines/reference/submodule/conformance/parserRealSource14.types.diff @@ -1,11 +1,30 @@ --- old.parserRealSource14.types +++ new.parserRealSource14.types -@@= skipped -3813, +3813 lines =@@ - /// Return the stack of AST nodes containing "position" - /// - export function getAstPathToPosition(script: TypeScript.AST, pos: number, options = GetAstPathOptions.Default): TypeScript.AstPath { -->getAstPathToPosition : (script: TypeScript.AST, pos: number, options?: GetAstPathOptions) => TypeScript.AstPath -+>getAstPathToPosition : (script: TypeScript.AST, pos: number, options?: GetAstPathOptions) => AstPath - >script : TypeScript.AST - >TypeScript : any - >pos : number \ No newline at end of file +@@= skipped -171, +171 lines =@@ + + this.asts.pop(); + >this.asts.pop() : TypeScript.AST +->this.asts.pop : () => TypeScript.AST ++>this.asts.pop : () => TypeScript.AST | undefined + >this.asts : TypeScript.AST[] + >this : this + >asts : TypeScript.AST[] +->pop : () => TypeScript.AST ++>pop : () => TypeScript.AST | undefined + } + return head; + >head : TypeScript.AST +@@= skipped -29, +29 lines =@@ + + this.asts.pop(); + >this.asts.pop() : TypeScript.AST +->this.asts.pop : () => TypeScript.AST ++>this.asts.pop : () => TypeScript.AST | undefined + >this.asts : TypeScript.AST[] + >this : this + >asts : TypeScript.AST[] +->pop : () => TypeScript.AST ++>pop : () => TypeScript.AST | undefined + } + this.top = this.asts.length; + >this.top = this.asts.length : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/parserRealSource8.types b/testdata/baselines/reference/submodule/conformance/parserRealSource8.types index 4e33cd08576..14c3a744d98 100644 --- a/testdata/baselines/reference/submodule/conformance/parserRealSource8.types +++ b/testdata/baselines/reference/submodule/conformance/parserRealSource8.types @@ -2178,11 +2178,11 @@ namespace TypeScript { context.modDeclChain.pop(); >context.modDeclChain.pop() : any ->context.modDeclChain.pop : () => any +>context.modDeclChain.pop : () => ModuleDeclaration | undefined >context.modDeclChain : ModuleDeclaration[] >context : AssignScopeContext >modDeclChain : ModuleDeclaration[] ->pop : () => any +>pop : () => ModuleDeclaration | undefined if (context.modDeclChain.length >= 1) { >context.modDeclChain.length >= 1 : boolean diff --git a/testdata/baselines/reference/submodule/conformance/parserRealSource8.types.diff b/testdata/baselines/reference/submodule/conformance/parserRealSource8.types.diff new file mode 100644 index 00000000000..68502091d71 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/parserRealSource8.types.diff @@ -0,0 +1,16 @@ +--- old.parserRealSource8.types ++++ new.parserRealSource8.types +@@= skipped -2177, +2177 lines =@@ + + context.modDeclChain.pop(); + >context.modDeclChain.pop() : any +->context.modDeclChain.pop : () => any ++>context.modDeclChain.pop : () => ModuleDeclaration | undefined + >context.modDeclChain : ModuleDeclaration[] + >context : AssignScopeContext + >modDeclChain : ModuleDeclaration[] +->pop : () => any ++>pop : () => ModuleDeclaration | undefined + + if (context.modDeclChain.length >= 1) { + >context.modDeclChain.length >= 1 : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/parserShorthandPropertyAssignment1.types b/testdata/baselines/reference/submodule/conformance/parserShorthandPropertyAssignment1.types index e1994b8e5ff..6ea8cc1a8b9 100644 --- a/testdata/baselines/reference/submodule/conformance/parserShorthandPropertyAssignment1.types +++ b/testdata/baselines/reference/submodule/conformance/parserShorthandPropertyAssignment1.types @@ -2,8 +2,8 @@ === parserShorthandPropertyAssignment1.ts === function foo(obj: { name?: string; id: number }) { } ->foo : (obj: { name?: string | undefined; id: number; }) => void ->obj : { name?: string | undefined; id: number; } +>foo : (obj: { name?: string; id: number; }) => void +>obj : { name?: string; id: number; } >name : string | undefined >id : number @@ -13,7 +13,7 @@ var name:any, id: any; foo({ name?, id? }); >foo({ name?, id? }) : void ->foo : (obj: { name?: string | undefined; id: number; }) => void +>foo : (obj: { name?: string; id: number; }) => void >{ name?, id? } : { name: any; id: any; } >name : any >id : any diff --git a/testdata/baselines/reference/submodule/conformance/parserShorthandPropertyAssignment1.types.diff b/testdata/baselines/reference/submodule/conformance/parserShorthandPropertyAssignment1.types.diff deleted file mode 100644 index 23d832c6f76..00000000000 --- a/testdata/baselines/reference/submodule/conformance/parserShorthandPropertyAssignment1.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.parserShorthandPropertyAssignment1.types -+++ new.parserShorthandPropertyAssignment1.types -@@= skipped -1, +1 lines =@@ - - === parserShorthandPropertyAssignment1.ts === - function foo(obj: { name?: string; id: number }) { } -->foo : (obj: { name?: string; id: number; }) => void -->obj : { name?: string; id: number; } -+>foo : (obj: { name?: string | undefined; id: number; }) => void -+>obj : { name?: string | undefined; id: number; } - >name : string | undefined - >id : number - -@@= skipped -11, +11 lines =@@ - - foo({ name?, id? }); - >foo({ name?, id? }) : void -->foo : (obj: { name?: string; id: number; }) => void -+>foo : (obj: { name?: string | undefined; id: number; }) => void - >{ name?, id? } : { name: any; id: any; } - >name : any - >id : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/parserUsingConstructorAsIdentifier.types b/testdata/baselines/reference/submodule/conformance/parserUsingConstructorAsIdentifier.types index 2aaab7c709b..f2547181ef0 100644 --- a/testdata/baselines/reference/submodule/conformance/parserUsingConstructorAsIdentifier.types +++ b/testdata/baselines/reference/submodule/conformance/parserUsingConstructorAsIdentifier.types @@ -76,9 +76,9 @@ >constructor : any >prototype : any >Object.create(basePrototype) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >Object : ObjectConstructor ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } >basePrototype : any PluginUtilities.Utilities.markSupportedForProcessing(constructor); diff --git a/testdata/baselines/reference/submodule/conformance/parserUsingConstructorAsIdentifier.types.diff b/testdata/baselines/reference/submodule/conformance/parserUsingConstructorAsIdentifier.types.diff deleted file mode 100644 index ff085ca1686..00000000000 --- a/testdata/baselines/reference/submodule/conformance/parserUsingConstructorAsIdentifier.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.parserUsingConstructorAsIdentifier.types -+++ new.parserUsingConstructorAsIdentifier.types -@@= skipped -75, +75 lines =@@ - >constructor : any - >prototype : any - >Object.create(basePrototype) : any -->Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >Object : ObjectConstructor -->create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } -+>create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } - >basePrototype : any - - PluginUtilities.Utilities.markSupportedForProcessing(constructor); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/parserharness.types b/testdata/baselines/reference/submodule/conformance/parserharness.types index 8e0dd7bd4ad..34c24f4588d 100644 --- a/testdata/baselines/reference/submodule/conformance/parserharness.types +++ b/testdata/baselines/reference/submodule/conformance/parserharness.types @@ -67,17 +67,17 @@ function filePath(fullPath: string) { var components = fullPath.split("/"); >components : string[] >fullPath.split("/") : string[] ->fullPath.split : (separator: string | RegExp, limit?: number | undefined) => string[] +>fullPath.split : (separator: string | RegExp, limit?: number) => string[] >fullPath : string ->split : (separator: string | RegExp, limit?: number | undefined) => string[] +>split : (separator: string | RegExp, limit?: number) => string[] >"/" : "/" var path: string[] = components.slice(0, components.length - 1); >path : string[] >components.slice(0, components.length - 1) : string[] ->components.slice : (start?: number | undefined, end?: number | undefined) => string[] +>components.slice : (start?: number, end?: number) => string[] >components : string[] ->slice : (start?: number | undefined, end?: number | undefined) => string[] +>slice : (start?: number, end?: number) => string[] >0 : 0 >components.length - 1 : number >components.length : number @@ -88,9 +88,9 @@ function filePath(fullPath: string) { return path.join("/") + "/"; >path.join("/") + "/" : string >path.join("/") : string ->path.join : (separator?: string | undefined) => string +>path.join : (separator?: string) => string >path : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"/" : "/" >"/" : "/" } @@ -257,9 +257,9 @@ namespace Harness { if (bugIds.indexOf(id) < 0) { >bugIds.indexOf(id) < 0 : boolean >bugIds.indexOf(id) : number ->bugIds.indexOf : (searchElement: string, fromIndex?: number | undefined) => number +>bugIds.indexOf : (searchElement: string, fromIndex?: number) => number >bugIds : string[] ->indexOf : (searchElement: string, fromIndex?: number | undefined) => number +>indexOf : (searchElement: string, fromIndex?: number) => number >id : string >0 : 0 @@ -304,7 +304,7 @@ namespace Harness { } export function is(result: boolean, msg?: string) { ->is : (result: boolean, msg?: string | undefined) => void +>is : (result: boolean, msg?: string) => void >result : boolean >msg : string | undefined @@ -773,9 +773,9 @@ namespace Harness { var lines = content.split('\r\n'); >lines : string[] >content.split('\r\n') : string[] ->content.split : (separator: string | RegExp, limit?: number | undefined) => string[] +>content.split : (separator: string | RegExp, limit?: number) => string[] >content : string ->split : (separator: string | RegExp, limit?: number | undefined) => string[] +>split : (separator: string | RegExp, limit?: number) => string[] >'\r\n' : "\r\n" if (lines.length === 1) { @@ -789,9 +789,9 @@ namespace Harness { >lines = content.split('\n') : string[] >lines : string[] >content.split('\n') : string[] ->content.split : (separator: string | RegExp, limit?: number | undefined) => string[] +>content.split : (separator: string | RegExp, limit?: number) => string[] >content : string ->split : (separator: string | RegExp, limit?: number | undefined) => string[] +>split : (separator: string | RegExp, limit?: number) => string[] >'\n' : "\n" } return lines; @@ -806,9 +806,9 @@ namespace Harness { if (path.indexOf('tests') < 0) { >path.indexOf('tests') < 0 : boolean >path.indexOf('tests') : number ->path.indexOf : (searchString: string, position?: number | undefined) => number +>path.indexOf : (searchString: string, position?: number) => number >path : string ->indexOf : (searchString: string, position?: number | undefined) => number +>indexOf : (searchString: string, position?: number) => number >'tests' : "tests" >0 : 0 @@ -857,12 +857,12 @@ namespace Harness { // Logger export interface ILogger { start: (fileName?: string, priority?: number) => void; ->start : (fileName?: string | undefined, priority?: number | undefined) => void +>start : (fileName?: string, priority?: number) => void >fileName : string | undefined >priority : number | undefined end: (fileName?: string) => void; ->end : (fileName?: string | undefined) => void +>end : (fileName?: string) => void >fileName : string | undefined scenarioStart: (scenario: IScenarioMetadata) => void; @@ -870,7 +870,7 @@ namespace Harness { >scenario : IScenarioMetadata scenarioEnd: (scenario: IScenarioMetadata, error?: Error) => void; ->scenarioEnd : (scenario: IScenarioMetadata, error?: Error | undefined) => void +>scenarioEnd : (scenario: IScenarioMetadata, error?: Error) => void >scenario : IScenarioMetadata >error : Error | undefined @@ -912,12 +912,12 @@ namespace Harness { >Logger : Logger public start(fileName?: string, priority?: number) { } ->start : (fileName?: string | undefined, priority?: number | undefined) => void +>start : (fileName?: string, priority?: number) => void >fileName : string | undefined >priority : number | undefined public end(fileName?: string) { } ->end : (fileName?: string | undefined) => void +>end : (fileName?: string) => void >fileName : string | undefined public scenarioStart(scenario: IScenarioMetadata) { } @@ -925,7 +925,7 @@ namespace Harness { >scenario : IScenarioMetadata public scenarioEnd(scenario: IScenarioMetadata, error?: Error) { } ->scenarioEnd : (scenario: IScenarioMetadata, error?: Error | undefined) => void +>scenarioEnd : (scenario: IScenarioMetadata, error?: Error) => void >scenario : IScenarioMetadata >error : Error | undefined @@ -1076,8 +1076,8 @@ namespace Harness { * on whether the function was asynchronous or not. */ public call(fn: (done?: IDone) => void , done: IDone) { ->call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean ->fn : (done?: IDone | undefined) => void +>call : (fn: (done?: IDone) => void, done: IDone) => boolean +>fn : (done?: IDone) => void >done : IDone | undefined >done : IDone @@ -1089,14 +1089,14 @@ namespace Harness { if (fn.length === 0) { >fn.length === 0 : boolean >fn.length : number ->fn : (done?: IDone | undefined) => void +>fn : (done?: IDone) => void >length : number >0 : 0 // No async. fn(); >fn() : void ->fn : (done?: IDone | undefined) => void +>fn : (done?: IDone) => void done(); >done() : void @@ -1117,7 +1117,7 @@ namespace Harness { fn(function () { >fn(function () { isAsync = false; // If we execute synchronously, this will get called before the return below. Runnable.popGlobalErrorHandler(); done(); }) : void ->fn : (done?: IDone | undefined) => void +>fn : (done?: IDone) => void >function () { isAsync = false; // If we execute synchronously, this will get called before the return below. Runnable.popGlobalErrorHandler(); done(); } : () => void isAsync = false; // If we execute synchronously, this will get called before the return below. @@ -1164,9 +1164,9 @@ namespace Harness { return this.call(this.block, done); >this.call(this.block, done) : boolean ->this.call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean +>this.call : (fn: (done?: IDone) => void, done: IDone) => boolean >this : this ->call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean +>call : (fn: (done?: IDone) => void, done: IDone) => boolean >this.block : any >this : this >block : any @@ -1180,9 +1180,9 @@ namespace Harness { return this.call(((done) => this.children[index].run(done)), done); >this.call(((done) => this.children[index].run(done)), done) : boolean ->this.call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean +>this.call : (fn: (done?: IDone) => void, done: IDone) => boolean >this : this ->call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean +>call : (fn: (done?: IDone) => void, done: IDone) => boolean >((done) => this.children[index].run(done)) : any >((done) => this.children[index].run(done)) : (done: any) => void >(done) => this.children[index].run(done) : (done: any) => void @@ -2193,7 +2193,7 @@ namespace Harness { >"" : "" public bench(subBench?: () => void ) { } ->bench : (subBench?: (() => void) | undefined) => void +>bench : (subBench?: () => void) => void >subBench : (() => void) | undefined public before() { } @@ -2254,7 +2254,7 @@ namespace Harness { >[] : never[] var timeFunction: ( ->timeFunction : (benchmark: Benchmark, description?: string | undefined, name?: string | undefined, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void +>timeFunction : (benchmark: Benchmark, description?: string, name?: string, f?: (bench?: { (): void; }) => void) => void benchmark: Benchmark, >benchmark : Benchmark @@ -2266,15 +2266,15 @@ namespace Harness { >name : string | undefined f?: (bench?: { (): void; }) => void ->f : ((bench?: (() => void) | undefined) => void) | undefined +>f : ((bench?: { (): void; }) => void) | undefined >bench : (() => void) | undefined ) => void; timeFunction = function ( ->timeFunction = function ( benchmark: Benchmark, description: string = benchmark.description, name: string = '', f = benchmark.bench ): void { var t = new Timer(); t.start(); var subBenchmark = function (name, f): void { timeFunction(benchmark, description, name, f); } f.call(benchmark, subBenchmark); t.end(); benchmark.addTimingFor(name, t.time); } : (benchmark: Benchmark, description?: string, name?: string, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void ->timeFunction : (benchmark: Benchmark, description?: string | undefined, name?: string | undefined, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void ->function ( benchmark: Benchmark, description: string = benchmark.description, name: string = '', f = benchmark.bench ): void { var t = new Timer(); t.start(); var subBenchmark = function (name, f): void { timeFunction(benchmark, description, name, f); } f.call(benchmark, subBenchmark); t.end(); benchmark.addTimingFor(name, t.time); } : (benchmark: Benchmark, description?: string, name?: string, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void +>timeFunction = function ( benchmark: Benchmark, description: string = benchmark.description, name: string = '', f = benchmark.bench ): void { var t = new Timer(); t.start(); var subBenchmark = function (name, f): void { timeFunction(benchmark, description, name, f); } f.call(benchmark, subBenchmark); t.end(); benchmark.addTimingFor(name, t.time); } : (benchmark: Benchmark, description?: string, name?: string, f?: ((bench?: { (): void; }) => void) | undefined) => void +>timeFunction : (benchmark: Benchmark, description?: string, name?: string, f?: (bench?: { (): void; }) => void) => void +>function ( benchmark: Benchmark, description: string = benchmark.description, name: string = '', f = benchmark.bench ): void { var t = new Timer(); t.start(); var subBenchmark = function (name, f): void { timeFunction(benchmark, description, name, f); } f.call(benchmark, subBenchmark); t.end(); benchmark.addTimingFor(name, t.time); } : (benchmark: Benchmark, description?: string, name?: string, f?: ((bench?: { (): void; }) => void) | undefined) => void benchmark: Benchmark, >benchmark : Benchmark @@ -2290,10 +2290,10 @@ namespace Harness { >'' : "" f = benchmark.bench ->f : ((bench?: (() => void) | undefined) => void) | undefined ->benchmark.bench : (subBench?: (() => void) | undefined) => void +>f : ((bench?: { (): void; }) => void) | undefined +>benchmark.bench : (subBench?: () => void) => void >benchmark : Benchmark ->bench : (subBench?: (() => void) | undefined) => void +>bench : (subBench?: () => void) => void ): void { @@ -2316,7 +2316,7 @@ namespace Harness { timeFunction(benchmark, description, name, f); >timeFunction(benchmark, description, name, f) : void ->timeFunction : (benchmark: Benchmark, description?: string | undefined, name?: string | undefined, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void +>timeFunction : (benchmark: Benchmark, description?: string, name?: string, f?: (bench?: { (): void; }) => void) => void >benchmark : Benchmark >description : string >name : any @@ -2326,7 +2326,7 @@ namespace Harness { f.call(benchmark, subBenchmark); >f.call(benchmark, subBenchmark) : void >f.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R ->f : (bench?: (() => void) | undefined) => void +>f : (bench?: { (): void; }) => void >call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R >benchmark : Benchmark >subBenchmark : (name: any, f: any) => void @@ -2400,7 +2400,7 @@ namespace Harness { timeFunction(b); >timeFunction(b) : void ->timeFunction : (benchmark: Benchmark, description?: string | undefined, name?: string | undefined, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void +>timeFunction : (benchmark: Benchmark, description?: string, name?: string, f?: (bench?: { (): void; }) => void) => void >b : Benchmark b.afterEach(); @@ -2648,7 +2648,7 @@ namespace Harness { /** create file gets the whole path to create, so this works as expected with the --out parameter */ public createFile(s: string, useUTF8?: boolean): ITextWriter { ->createFile : (s: string, useUTF8?: boolean | undefined) => ITextWriter +>createFile : (s: string, useUTF8?: boolean) => ITextWriter >s : string >useUTF8 : boolean | undefined @@ -2860,7 +2860,7 @@ namespace Harness { } export function makeDefaultCompilerForTest(c?: TypeScript.TypeScriptCompiler) { ->makeDefaultCompilerForTest : (c?: any) => any +>makeDefaultCompilerForTest : (c?: TypeScript.TypeScriptCompiler) => any >c : any >TypeScript : any @@ -2987,7 +2987,7 @@ namespace Harness { >true : true export function compile(code?: string, filename?: string) { ->compile : (code?: string | undefined, filename?: string | undefined) => void +>compile : (code?: string, filename?: string) => void >code : string | undefined >filename : string | undefined @@ -3093,7 +3093,7 @@ namespace Harness { compileString(testCode, 'test.ts', function (compilerResult) { >compileString(testCode, 'test.ts', function (compilerResult) { errors = compilerResult.errors; }) : void ->compileString : (code: string, unitName: string, callback: (res: CompilerResult) => void, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void >testCode : any >'test.ts' : "test.ts" >function (compilerResult) { errors = compilerResult.errors; } : (compilerResult: CompilerResult) => void @@ -3710,7 +3710,7 @@ namespace Harness { compileString(code, 'test.ts', function (compilerResult) { >compileString(code, 'test.ts', function (compilerResult) { errors = compilerResult.errors; }) : void ->compileString : (code: string, unitName: string, callback: (res: CompilerResult) => void, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void >code : string >'test.ts' : "test.ts" >function (compilerResult) { errors = compilerResult.errors; } : (compilerResult: CompilerResult) => void @@ -4465,7 +4465,7 @@ namespace Harness { * @param references the set of referenced files used by the given code */ export function generateDeclFile(code: string, verifyNoDeclFile: boolean, unitName?: string, compilationContext?: Harness.Compiler.CompilationContext, references?: TypeScript.IFileReference[]): string { ->generateDeclFile : (code: string, verifyNoDeclFile: boolean, unitName?: string | undefined, compilationContext?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => string +>generateDeclFile : (code: string, verifyNoDeclFile: boolean, unitName?: string, compilationContext?: Harness.Compiler.CompilationContext, references?: TypeScript.IFileReference[]) => string >code : string >verifyNoDeclFile : boolean >unitName : string | undefined @@ -4521,7 +4521,7 @@ namespace Harness { addUnit(code, unitName, false, false, references); >addUnit(code, unitName, false, false, references) : TypeScript.Script ->addUnit : (code: string, unitName?: string | undefined, isResident?: boolean | undefined, isDeclareFile?: boolean | undefined, references?: TypeScript.IFileReference[] | undefined) => TypeScript.Script +>addUnit : (code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) => TypeScript.Script >code : string >unitName : string | undefined >false : false @@ -4613,9 +4613,9 @@ namespace Harness { if (fn.indexOf('.d.ts') >= 0) { >fn.indexOf('.d.ts') >= 0 : boolean >fn.indexOf('.d.ts') : number ->fn.indexOf : (searchString: string, position?: number | undefined) => number +>fn.indexOf : (searchString: string, position?: number) => number >fn : string ->indexOf : (searchString: string, position?: number | undefined) => number +>indexOf : (searchString: string, position?: number) => number >'.d.ts' : ".d.ts" >0 : 0 @@ -4638,11 +4638,11 @@ namespace Harness { >results = writer.lines.join('\n') : string >results : string >writer.lines.join('\n') : string ->writer.lines.join : (separator?: string | undefined) => string +>writer.lines.join : (separator?: string) => string >writer.lines : string[] >writer : WriterAggregator >lines : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >'\n' : "\n" if (verifyNoDeclFile && results != "") { @@ -4726,7 +4726,7 @@ namespace Harness { updateUnit('', uName); >updateUnit('', uName) : void ->updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void +>updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void >'' : "" >uName : string } @@ -4783,9 +4783,9 @@ namespace Harness { >this : this >code : string >lines.join("\n") : string ->lines.join : (separator?: string | undefined) => string +>lines.join : (separator?: string) => string >lines : any[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >"\n" : "\n" this.errors = []; @@ -5003,7 +5003,7 @@ namespace Harness { >compiler = makeDefaultCompilerForTest() : any >compiler : TypeScript.TypeScriptCompiler >makeDefaultCompilerForTest() : any ->makeDefaultCompilerForTest : (c?: any) => any +>makeDefaultCompilerForTest : (c?: TypeScript.TypeScriptCompiler) => any if (usePull) { >usePull : boolean @@ -5077,7 +5077,7 @@ namespace Harness { updateUnit('', fname); >updateUnit('', fname) : void ->updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void +>updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void >'' : "" >fname : any } @@ -5107,7 +5107,7 @@ namespace Harness { } export function addUnit(code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) { ->addUnit : (code: string, unitName?: string | undefined, isResident?: boolean | undefined, isDeclareFile?: boolean | undefined, references?: TypeScript.IFileReference[] | undefined) => TypeScript.Script +>addUnit : (code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) => TypeScript.Script >code : string >unitName : string | undefined >isResident : boolean | undefined @@ -5157,7 +5157,7 @@ namespace Harness { updateUnit(code, uName); >updateUnit(code, uName) : void ->updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void +>updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void >code : string >uName : string @@ -5206,7 +5206,7 @@ namespace Harness { } export function updateUnit(code: string, unitName: string, setRecovery?: boolean) { ->updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void +>updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void >code : string >unitName : string >setRecovery : boolean | undefined @@ -5242,11 +5242,11 @@ namespace Harness { } export function compileFile(path: string, callback: (res: CompilerResult) => void , settingsCallback?: (settings?: TypeScript.CompilationSettings) => void , context?: CompilationContext, references?: TypeScript.IFileReference[]) { ->compileFile : (path: string, callback: (res: CompilerResult) => void, settingsCallback?: ((settings?: any) => void) | undefined, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>compileFile : (path: string, callback: (res: CompilerResult) => void, settingsCallback?: (settings?: TypeScript.CompilationSettings) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void >path : string >callback : (res: CompilerResult) => void >res : CompilerResult ->settingsCallback : ((settings?: any) => void) | undefined +>settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined >settings : any >TypeScript : any >context : CompilationContext | undefined @@ -5278,22 +5278,22 @@ namespace Harness { compileUnit(code, filename, callback, settingsCallback, context, references); >compileUnit(code, filename, callback, settingsCallback, context, references) : void ->compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: ((settings?: any) => void) | undefined, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: (settings?: TypeScript.CompilationSettings) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void >code : any >filename : string >callback : (res: CompilerResult) => void ->settingsCallback : ((settings?: any) => void) | undefined +>settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined >context : CompilationContext | undefined >references : TypeScript.IFileReference[] | undefined } export function compileUnit(code: string, filename: string, callback: (res: CompilerResult) => void , settingsCallback?: (settings?: TypeScript.CompilationSettings) => void , context?: CompilationContext, references?: TypeScript.IFileReference[]) { ->compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: ((settings?: any) => void) | undefined, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: (settings?: TypeScript.CompilationSettings) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void >code : string >filename : string >callback : (res: CompilerResult) => void >res : CompilerResult ->settingsCallback : ((settings?: any) => void) | undefined +>settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined >settings : any >TypeScript : any >context : CompilationContext | undefined @@ -5361,11 +5361,11 @@ namespace Harness { >moduleGenTarget : any if (settingsCallback) { ->settingsCallback : ((settings?: any) => void) | undefined +>settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined settingsCallback(compiler.settings); >settingsCallback(compiler.settings) : void ->settingsCallback : (settings?: any) => void +>settingsCallback : (settings?: TypeScript.CompilationSettings) => void >compiler.settings : any >compiler : TypeScript.TypeScriptCompiler >settings : any @@ -5386,7 +5386,7 @@ namespace Harness { try { compileString(code, filename, callback, context, references); >compileString(code, filename, callback, context, references) : void ->compileString : (code: string, unitName: string, callback: (res: CompilerResult) => void, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void >code : string >filename : string >callback : (res: CompilerResult) => void @@ -5397,7 +5397,7 @@ namespace Harness { // If settingsCallback exists, assume that it modified the global compiler instance's settings in some way. // So that a test doesn't have side effects for tests run after it, restore the compiler settings to their previous state. if (settingsCallback) { ->settingsCallback : ((settings?: any) => void) | undefined +>settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined compiler.settings = oldCompilerSettings; >compiler.settings = oldCompilerSettings : any @@ -5424,10 +5424,10 @@ namespace Harness { } export function compileUnits(units: TestCaseParser.TestUnitData[], callback: (res: Compiler.CompilerResult) => void , settingsCallback?: () => void ) { ->compileUnits : (units: TestCaseParser.TestUnitData[], callback: (res: CompilerResult) => void, settingsCallback?: (() => void) | undefined) => void +>compileUnits : (units: TestCaseParser.TestUnitData[], callback: (res: Compiler.CompilerResult) => void, settingsCallback?: () => void) => void >units : TestCaseParser.TestUnitData[] >TestCaseParser : any ->callback : (res: CompilerResult) => void +>callback : (res: Compiler.CompilerResult) => void >res : CompilerResult >Compiler : any >settingsCallback : (() => void) | undefined @@ -5459,9 +5459,9 @@ namespace Harness { var dependencies = units.slice(0, units.length - 1); >dependencies : TestCaseParser.TestUnitData[] >units.slice(0, units.length - 1) : TestCaseParser.TestUnitData[] ->units.slice : (start?: number | undefined, end?: number | undefined) => TestCaseParser.TestUnitData[] +>units.slice : (start?: number, end?: number) => TestCaseParser.TestUnitData[] >units : TestCaseParser.TestUnitData[] ->slice : (start?: number | undefined, end?: number | undefined) => TestCaseParser.TestUnitData[] +>slice : (start?: number, end?: number) => TestCaseParser.TestUnitData[] >0 : 0 >units.length - 1 : number >units.length : number @@ -5482,12 +5482,12 @@ namespace Harness { compileUnit(lastUnit.content, unitName, callback, settingsCallback, compilationContext, lastUnit.references); >compileUnit(lastUnit.content, unitName, callback, settingsCallback, compilationContext, lastUnit.references) : void ->compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: ((settings?: any) => void) | undefined, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: (settings?: TypeScript.CompilationSettings) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void >lastUnit.content : string >lastUnit : TestCaseParser.TestUnitData >content : string >unitName : string ->callback : (res: CompilerResult) => void +>callback : (res: Compiler.CompilerResult) => void >settingsCallback : (() => void) | undefined >compilationContext : CompilationContext >lastUnit.references : TypeScript.IFileReference[] @@ -5508,7 +5508,7 @@ namespace Harness { } export function emit(ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean) { ->emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean | undefined) => void +>emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean) => void >ioHost : TypeScript.EmitterIOHost >TypeScript : any >usePullEmitter : boolean | undefined @@ -5523,10 +5523,10 @@ namespace Harness { } export function compileString(code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void , context?: CompilationContext, references?: TypeScript.IFileReference[]) { ->compileString : (code: string, unitName: string, callback: (res: CompilerResult) => void, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void >code : string >unitName : string ->callback : (res: CompilerResult) => void +>callback : (res: Compiler.CompilerResult) => void >res : CompilerResult >Compiler : any >context : CompilationContext | undefined @@ -5581,7 +5581,7 @@ namespace Harness { >scripts : TypeScript.Script[] >push : (...items: TypeScript.Script[]) => number >addUnit(code, uName, false, isDeclareFile, references) : TypeScript.Script ->addUnit : (code: string, unitName?: string | undefined, isResident?: boolean | undefined, isDeclareFile?: boolean | undefined, references?: TypeScript.IFileReference[] | undefined) => TypeScript.Script +>addUnit : (code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) => TypeScript.Script >code : string >uName : string >false : false @@ -5590,7 +5590,7 @@ namespace Harness { compile(code, uName); >compile(code, uName) : void ->compile : (code?: string | undefined, filename?: string | undefined) => void +>compile : (code?: string, filename?: string) => void >code : string >uName : string @@ -5612,7 +5612,7 @@ namespace Harness { emit(stdout, true); >emit(stdout, true) : void ->emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean | undefined) => void +>emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean) => void >stdout : EmitterIOHost >true : true } @@ -5626,7 +5626,7 @@ namespace Harness { emit(stdout, false); >emit(stdout, false) : void ->emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean | undefined) => void +>emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean) => void >stdout : EmitterIOHost >false : false @@ -5650,7 +5650,7 @@ namespace Harness { callback(new CompilerResult(stdout.toArray(), errors, scripts)); >callback(new CompilerResult(stdout.toArray(), errors, scripts)) : void ->callback : (res: CompilerResult) => void +>callback : (res: Compiler.CompilerResult) => void >new CompilerResult(stdout.toArray(), errors, scripts) : CompilerResult >CompilerResult : typeof CompilerResult >stdout.toArray() : { filename: string; file: WriterAggregator; }[] @@ -5700,7 +5700,7 @@ namespace Harness { addUnit(dep.content, dep.name, false, Harness.Compiler.isDeclareFile(dep.name)); >addUnit(dep.content, dep.name, false, Harness.Compiler.isDeclareFile(dep.name)) : TypeScript.Script ->addUnit : (code: string, unitName?: string | undefined, isResident?: boolean | undefined, isDeclareFile?: boolean | undefined, references?: TypeScript.IFileReference[] | undefined) => TypeScript.Script +>addUnit : (code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) => TypeScript.Script >dep.content : string >dep : TestCaseParser.TestUnitData >content : string @@ -5743,7 +5743,7 @@ namespace Harness { updateUnit('', file); >updateUnit('', file) : void ->updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void +>updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void >'' : "" >file : any @@ -6006,9 +6006,9 @@ namespace Harness { var fileNameIndex = fileMetadataNames.indexOf(testMetaData[1].toLowerCase()); >fileNameIndex : number >fileMetadataNames.indexOf(testMetaData[1].toLowerCase()) : number ->fileMetadataNames.indexOf : (searchElement: string, fromIndex?: number | undefined) => number +>fileMetadataNames.indexOf : (searchElement: string, fromIndex?: number) => number >fileMetadataNames : string[] ->indexOf : (searchElement: string, fromIndex?: number | undefined) => number +>indexOf : (searchElement: string, fromIndex?: number) => number >testMetaData[1].toLowerCase() : any >testMetaData[1].toLowerCase : any >testMetaData[1] : any @@ -6034,9 +6034,9 @@ namespace Harness { >1 : 1 >'". Available file metadata names are: ' : "\". Available file metadata names are: " >fileMetadataNames.join(', ') : string ->fileMetadataNames.join : (separator?: string | undefined) => string +>fileMetadataNames.join : (separator?: string) => string >fileMetadataNames : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >', ' : ", " } else if (fileNameIndex == 0) { @@ -6285,11 +6285,11 @@ namespace Harness { var prefix = this.content.substring(0, minChar); >prefix : string >this.content.substring(0, minChar) : string ->this.content.substring : (start: number, end?: number | undefined) => string +>this.content.substring : (start: number, end?: number) => string >this.content : string >this : this >content : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >0 : 0 >minChar : number @@ -6300,11 +6300,11 @@ namespace Harness { var suffix = this.content.substring(limChar); >suffix : string >this.content.substring(limChar) : string ->this.content.substring : (start: number, end?: number | undefined) => string +>this.content.substring : (start: number, end?: number) => string >this.content : string >this : this >content : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >limChar : number this.content = prefix + middle + suffix; @@ -6368,11 +6368,11 @@ namespace Harness { this.editRanges.splice(0, this.maxScriptVersions - this.editRanges.length); >this.editRanges.splice(0, this.maxScriptVersions - this.editRanges.length) : { length: number; editRange: TypeScript.ScriptEditRange; }[] ->this.editRanges.splice : { (start: number, deleteCount?: number | undefined): { length: number; editRange: TypeScript.ScriptEditRange; }[]; (start: number, deleteCount: number, ...items: { length: number; editRange: TypeScript.ScriptEditRange; }[]): { length: number; editRange: TypeScript.ScriptEditRange; }[]; } +>this.editRanges.splice : { (start: number, deleteCount?: number): { length: number; editRange: TypeScript.ScriptEditRange; }[]; (start: number, deleteCount: number, ...items: { length: number; editRange: TypeScript.ScriptEditRange; }[]): { length: number; editRange: TypeScript.ScriptEditRange; }[]; } >this.editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] >this : this >editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] ->splice : { (start: number, deleteCount?: number | undefined): { length: number; editRange: TypeScript.ScriptEditRange; }[]; (start: number, deleteCount: number, ...items: { length: number; editRange: TypeScript.ScriptEditRange; }[]): { length: number; editRange: TypeScript.ScriptEditRange; }[]; } +>splice : { (start: number, deleteCount?: number): { length: number; editRange: TypeScript.ScriptEditRange; }[]; (start: number, deleteCount: number, ...items: { length: number; editRange: TypeScript.ScriptEditRange; }[]): { length: number; editRange: TypeScript.ScriptEditRange; }[]; } >0 : 0 >this.maxScriptVersions - this.editRanges.length : number >this.maxScriptVersions : number @@ -6450,11 +6450,11 @@ namespace Harness { var entries = this.editRanges.slice(initialEditRangeIndex); >entries : { length: number; editRange: TypeScript.ScriptEditRange; }[] >this.editRanges.slice(initialEditRangeIndex) : { length: number; editRange: TypeScript.ScriptEditRange; }[] ->this.editRanges.slice : (start?: number | undefined, end?: number | undefined) => { length: number; editRange: TypeScript.ScriptEditRange; }[] +>this.editRanges.slice : (start?: number, end?: number) => { length: number; editRange: TypeScript.ScriptEditRange; }[] >this.editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] >this : this >editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] ->slice : (start?: number | undefined, end?: number | undefined) => { length: number; editRange: TypeScript.ScriptEditRange; }[] +>slice : (start?: number, end?: number) => { length: number; editRange: TypeScript.ScriptEditRange; }[] >initialEditRangeIndex : number var minDistFromStart = entries.map(x => x.editRange.minChar).reduce((prev, current) => Math.min(prev, current)); @@ -6826,7 +6826,7 @@ namespace Harness { return this.scripts[scriptIndex].content.substring(start, end); >this.scripts[scriptIndex].content.substring(start, end) : string ->this.scripts[scriptIndex].content.substring : (start: number, end?: number | undefined) => string +>this.scripts[scriptIndex].content.substring : (start: number, end?: number) => string >this.scripts[scriptIndex].content : string >this.scripts[scriptIndex] : ScriptInfo >this.scripts : ScriptInfo[] @@ -6834,7 +6834,7 @@ namespace Harness { >scripts : ScriptInfo[] >scriptIndex : number >content : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >start : number >end : number } @@ -7274,9 +7274,9 @@ namespace Harness { var prefix = result.substring(0, edit.minChar); >prefix : string >result.substring(0, edit.minChar) : string ->result.substring : (start: number, end?: number | undefined) => string +>result.substring : (start: number, end?: number) => string >result : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >0 : 0 >edit.minChar : any >edit : Services.TextEdit @@ -7291,9 +7291,9 @@ namespace Harness { var suffix = result.substring(edit.limChar); >suffix : string >result.substring(edit.limChar) : string ->result.substring : (start: number, end?: number | undefined) => string +>result.substring : (start: number, end?: number) => string >result : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >edit.limChar : any >edit : Services.TextEdit >limChar : any @@ -7531,9 +7531,9 @@ namespace Harness { return JSON.stringify({ usePullLanguageService: usePull }); >JSON.stringify({ usePullLanguageService: usePull }) : string ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >JSON : JSON ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } >{ usePullLanguageService: usePull } : { usePullLanguageService: boolean; } >usePullLanguageService : boolean >usePull : boolean @@ -7792,9 +7792,9 @@ namespace Harness { Compiler.compileString(code, unitName, function (res) { >Compiler.compileString(code, unitName, function (res) { runJSString(res.code, callback); }) : void ->Compiler.compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: Compiler.CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>Compiler.compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: Compiler.CompilationContext, references?: TypeScript.IFileReference[]) => void >Compiler : typeof Compiler ->compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: Compiler.CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void +>compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: Compiler.CompilationContext, references?: TypeScript.IFileReference[]) => void >code : string >unitName : string >function (res) { runJSString(res.code, callback); } : (res: Compiler.CompilerResult) => void @@ -8336,7 +8336,7 @@ namespace Harness { } export function runBaseline( ->runBaseline : (descriptionForDescribe: string, relativeFilename: string, generateContent: () => string, runImmediately?: boolean | undefined, opts?: BaselineOptions | undefined) => void +>runBaseline : (descriptionForDescribe: string, relativeFilename: string, generateContent: () => string, runImmediately?: boolean, opts?: BaselineOptions) => void descriptionForDescribe: string, >descriptionForDescribe : string diff --git a/testdata/baselines/reference/submodule/conformance/parserharness.types.diff b/testdata/baselines/reference/submodule/conformance/parserharness.types.diff index 57cf4dace19..80f58f0c029 100644 --- a/testdata/baselines/reference/submodule/conformance/parserharness.types.diff +++ b/testdata/baselines/reference/submodule/conformance/parserharness.types.diff @@ -1,789 +1,11 @@ --- old.parserharness.types +++ new.parserharness.types -@@= skipped -66, +66 lines =@@ - var components = fullPath.split("/"); - >components : string[] - >fullPath.split("/") : string[] -->fullPath.split : (separator: string | RegExp, limit?: number) => string[] -+>fullPath.split : (separator: string | RegExp, limit?: number | undefined) => string[] - >fullPath : string -->split : (separator: string | RegExp, limit?: number) => string[] -+>split : (separator: string | RegExp, limit?: number | undefined) => string[] - >"/" : "/" - - var path: string[] = components.slice(0, components.length - 1); - >path : string[] - >components.slice(0, components.length - 1) : string[] -->components.slice : (start?: number, end?: number) => string[] -+>components.slice : (start?: number | undefined, end?: number | undefined) => string[] - >components : string[] -->slice : (start?: number, end?: number) => string[] -+>slice : (start?: number | undefined, end?: number | undefined) => string[] - >0 : 0 - >components.length - 1 : number - >components.length : number -@@= skipped -21, +21 lines =@@ - return path.join("/") + "/"; - >path.join("/") + "/" : string - >path.join("/") : string -->path.join : (separator?: string) => string -+>path.join : (separator?: string | undefined) => string - >path : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"/" : "/" - >"/" : "/" - } -@@= skipped -169, +169 lines =@@ - if (bugIds.indexOf(id) < 0) { - >bugIds.indexOf(id) < 0 : boolean - >bugIds.indexOf(id) : number -->bugIds.indexOf : (searchElement: string, fromIndex?: number) => number -+>bugIds.indexOf : (searchElement: string, fromIndex?: number | undefined) => number - >bugIds : string[] -->indexOf : (searchElement: string, fromIndex?: number) => number -+>indexOf : (searchElement: string, fromIndex?: number | undefined) => number - >id : string - >0 : 0 - -@@= skipped -47, +47 lines =@@ - } - - export function is(result: boolean, msg?: string) { -->is : (result: boolean, msg?: string) => void -+>is : (result: boolean, msg?: string | undefined) => void - >result : boolean - >msg : string | undefined - -@@= skipped -469, +469 lines =@@ - var lines = content.split('\r\n'); - >lines : string[] - >content.split('\r\n') : string[] -->content.split : (separator: string | RegExp, limit?: number) => string[] -+>content.split : (separator: string | RegExp, limit?: number | undefined) => string[] - >content : string -->split : (separator: string | RegExp, limit?: number) => string[] -+>split : (separator: string | RegExp, limit?: number | undefined) => string[] - >'\r\n' : "\r\n" - - if (lines.length === 1) { -@@= skipped -16, +16 lines =@@ - >lines = content.split('\n') : string[] - >lines : string[] - >content.split('\n') : string[] -->content.split : (separator: string | RegExp, limit?: number) => string[] -+>content.split : (separator: string | RegExp, limit?: number | undefined) => string[] - >content : string -->split : (separator: string | RegExp, limit?: number) => string[] -+>split : (separator: string | RegExp, limit?: number | undefined) => string[] - >'\n' : "\n" - } - return lines; -@@= skipped -17, +17 lines =@@ - if (path.indexOf('tests') < 0) { - >path.indexOf('tests') < 0 : boolean - >path.indexOf('tests') : number -->path.indexOf : (searchString: string, position?: number) => number -+>path.indexOf : (searchString: string, position?: number | undefined) => number - >path : string -->indexOf : (searchString: string, position?: number) => number -+>indexOf : (searchString: string, position?: number | undefined) => number - >'tests' : "tests" - >0 : 0 - -@@= skipped -51, +51 lines =@@ - // Logger - export interface ILogger { - start: (fileName?: string, priority?: number) => void; -->start : (fileName?: string, priority?: number) => void -+>start : (fileName?: string | undefined, priority?: number | undefined) => void - >fileName : string | undefined - >priority : number | undefined - - end: (fileName?: string) => void; -->end : (fileName?: string) => void -+>end : (fileName?: string | undefined) => void - >fileName : string | undefined - - scenarioStart: (scenario: IScenarioMetadata) => void; -@@= skipped -13, +13 lines =@@ - >scenario : IScenarioMetadata - - scenarioEnd: (scenario: IScenarioMetadata, error?: Error) => void; -->scenarioEnd : (scenario: IScenarioMetadata, error?: Error) => void -+>scenarioEnd : (scenario: IScenarioMetadata, error?: Error | undefined) => void - >scenario : IScenarioMetadata - >error : Error | undefined - -@@= skipped -42, +42 lines =@@ - >Logger : Logger - - public start(fileName?: string, priority?: number) { } -->start : (fileName?: string, priority?: number) => void -+>start : (fileName?: string | undefined, priority?: number | undefined) => void - >fileName : string | undefined - >priority : number | undefined - - public end(fileName?: string) { } -->end : (fileName?: string) => void -+>end : (fileName?: string | undefined) => void - >fileName : string | undefined - - public scenarioStart(scenario: IScenarioMetadata) { } -@@= skipped -13, +13 lines =@@ - >scenario : IScenarioMetadata - - public scenarioEnd(scenario: IScenarioMetadata, error?: Error) { } -->scenarioEnd : (scenario: IScenarioMetadata, error?: Error) => void -+>scenarioEnd : (scenario: IScenarioMetadata, error?: Error | undefined) => void - >scenario : IScenarioMetadata - >error : Error | undefined - -@@= skipped -151, +151 lines =@@ - * on whether the function was asynchronous or not. - */ - public call(fn: (done?: IDone) => void , done: IDone) { -->call : (fn: (done?: IDone) => void, done: IDone) => boolean -->fn : (done?: IDone) => void -+>call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean -+>fn : (done?: IDone | undefined) => void - >done : IDone | undefined - >done : IDone - -@@= skipped -13, +13 lines =@@ - if (fn.length === 0) { - >fn.length === 0 : boolean - >fn.length : number -->fn : (done?: IDone) => void -+>fn : (done?: IDone | undefined) => void - >length : number - >0 : 0 - - // No async. - fn(); - >fn() : void -->fn : (done?: IDone) => void -+>fn : (done?: IDone | undefined) => void - - done(); - >done() : void -@@= skipped -28, +28 lines =@@ - - fn(function () { - >fn(function () { isAsync = false; // If we execute synchronously, this will get called before the return below. Runnable.popGlobalErrorHandler(); done(); }) : void -->fn : (done?: IDone) => void -+>fn : (done?: IDone | undefined) => void - >function () { isAsync = false; // If we execute synchronously, this will get called before the return below. Runnable.popGlobalErrorHandler(); done(); } : () => void - - isAsync = false; // If we execute synchronously, this will get called before the return below. -@@= skipped -47, +47 lines =@@ - - return this.call(this.block, done); - >this.call(this.block, done) : boolean -->this.call : (fn: (done?: IDone) => void, done: IDone) => boolean -+>this.call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean - >this : this -->call : (fn: (done?: IDone) => void, done: IDone) => boolean -+>call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean - >this.block : any - >this : this - >block : any -@@= skipped -16, +16 lines =@@ - - return this.call(((done) => this.children[index].run(done)), done); - >this.call(((done) => this.children[index].run(done)), done) : boolean -->this.call : (fn: (done?: IDone) => void, done: IDone) => boolean -+>this.call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean - >this : this -->call : (fn: (done?: IDone) => void, done: IDone) => boolean -+>call : (fn: (done?: IDone | undefined) => void, done: IDone) => boolean - >((done) => this.children[index].run(done)) : any - >((done) => this.children[index].run(done)) : (done: any) => void - >(done) => this.children[index].run(done) : (done: any) => void -@@= skipped -1013, +1013 lines =@@ - >"" : "" - - public bench(subBench?: () => void ) { } -->bench : (subBench?: () => void) => void -+>bench : (subBench?: (() => void) | undefined) => void - >subBench : (() => void) | undefined - - public before() { } -@@= skipped -61, +61 lines =@@ - >[] : never[] - - var timeFunction: ( -->timeFunction : (benchmark: Benchmark, description?: string, name?: string, f?: (bench?: { (): void; }) => void) => void -+>timeFunction : (benchmark: Benchmark, description?: string | undefined, name?: string | undefined, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void - - benchmark: Benchmark, - >benchmark : Benchmark -@@= skipped -12, +12 lines =@@ - >name : string | undefined - - f?: (bench?: { (): void; }) => void -->f : ((bench?: { (): void; }) => void) | undefined -+>f : ((bench?: (() => void) | undefined) => void) | undefined - >bench : (() => void) | undefined - - ) => void; - - timeFunction = function ( -->timeFunction = function ( benchmark: Benchmark, description: string = benchmark.description, name: string = '', f = benchmark.bench ): void { var t = new Timer(); t.start(); var subBenchmark = function (name, f): void { timeFunction(benchmark, description, name, f); } f.call(benchmark, subBenchmark); t.end(); benchmark.addTimingFor(name, t.time); } : (benchmark: Benchmark, description?: string, name?: string, f?: ((bench?: { (): void; }) => void) | undefined) => void -->timeFunction : (benchmark: Benchmark, description?: string, name?: string, f?: (bench?: { (): void; }) => void) => void -->function ( benchmark: Benchmark, description: string = benchmark.description, name: string = '', f = benchmark.bench ): void { var t = new Timer(); t.start(); var subBenchmark = function (name, f): void { timeFunction(benchmark, description, name, f); } f.call(benchmark, subBenchmark); t.end(); benchmark.addTimingFor(name, t.time); } : (benchmark: Benchmark, description?: string, name?: string, f?: ((bench?: { (): void; }) => void) | undefined) => void -+>timeFunction = function ( benchmark: Benchmark, description: string = benchmark.description, name: string = '', f = benchmark.bench ): void { var t = new Timer(); t.start(); var subBenchmark = function (name, f): void { timeFunction(benchmark, description, name, f); } f.call(benchmark, subBenchmark); t.end(); benchmark.addTimingFor(name, t.time); } : (benchmark: Benchmark, description?: string, name?: string, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void -+>timeFunction : (benchmark: Benchmark, description?: string | undefined, name?: string | undefined, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void -+>function ( benchmark: Benchmark, description: string = benchmark.description, name: string = '', f = benchmark.bench ): void { var t = new Timer(); t.start(); var subBenchmark = function (name, f): void { timeFunction(benchmark, description, name, f); } f.call(benchmark, subBenchmark); t.end(); benchmark.addTimingFor(name, t.time); } : (benchmark: Benchmark, description?: string, name?: string, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void - - benchmark: Benchmark, - >benchmark : Benchmark -@@= skipped -24, +24 lines =@@ - >'' : "" - - f = benchmark.bench -->f : ((bench?: { (): void; }) => void) | undefined -->benchmark.bench : (subBench?: () => void) => void -+>f : ((bench?: (() => void) | undefined) => void) | undefined -+>benchmark.bench : (subBench?: (() => void) | undefined) => void - >benchmark : Benchmark -->bench : (subBench?: () => void) => void -+>bench : (subBench?: (() => void) | undefined) => void - - ): void { - -@@= skipped -26, +26 lines =@@ - - timeFunction(benchmark, description, name, f); - >timeFunction(benchmark, description, name, f) : void -->timeFunction : (benchmark: Benchmark, description?: string, name?: string, f?: (bench?: { (): void; }) => void) => void -+>timeFunction : (benchmark: Benchmark, description?: string | undefined, name?: string | undefined, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void - >benchmark : Benchmark - >description : string - >name : any -@@= skipped -10, +10 lines =@@ - f.call(benchmark, subBenchmark); - >f.call(benchmark, subBenchmark) : void - >f.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -->f : (bench?: { (): void; }) => void -+>f : (bench?: (() => void) | undefined) => void - >call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R - >benchmark : Benchmark - >subBenchmark : (name: any, f: any) => void -@@= skipped -74, +74 lines =@@ - - timeFunction(b); - >timeFunction(b) : void -->timeFunction : (benchmark: Benchmark, description?: string, name?: string, f?: (bench?: { (): void; }) => void) => void -+>timeFunction : (benchmark: Benchmark, description?: string | undefined, name?: string | undefined, f?: ((bench?: (() => void) | undefined) => void) | undefined) => void - >b : Benchmark - - b.afterEach(); -@@= skipped -248, +248 lines =@@ - - /** create file gets the whole path to create, so this works as expected with the --out parameter */ - public createFile(s: string, useUTF8?: boolean): ITextWriter { -->createFile : (s: string, useUTF8?: boolean) => ITextWriter -+>createFile : (s: string, useUTF8?: boolean | undefined) => ITextWriter - >s : string - >useUTF8 : boolean | undefined - -@@= skipped -212, +212 lines =@@ - } - - export function makeDefaultCompilerForTest(c?: TypeScript.TypeScriptCompiler) { -->makeDefaultCompilerForTest : (c?: TypeScript.TypeScriptCompiler) => any -+>makeDefaultCompilerForTest : (c?: any) => any - >c : any - >TypeScript : any - -@@= skipped -127, +127 lines =@@ - >true : true - - export function compile(code?: string, filename?: string) { -->compile : (code?: string, filename?: string) => void -+>compile : (code?: string | undefined, filename?: string | undefined) => void - >code : string | undefined - >filename : string | undefined - -@@= skipped -106, +106 lines =@@ - - compileString(testCode, 'test.ts', function (compilerResult) { - >compileString(testCode, 'test.ts', function (compilerResult) { errors = compilerResult.errors; }) : void -->compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void -+>compileString : (code: string, unitName: string, callback: (res: CompilerResult) => void, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >testCode : any - >'test.ts' : "test.ts" - >function (compilerResult) { errors = compilerResult.errors; } : (compilerResult: CompilerResult) => void -@@= skipped -617, +617 lines =@@ - - compileString(code, 'test.ts', function (compilerResult) { - >compileString(code, 'test.ts', function (compilerResult) { errors = compilerResult.errors; }) : void -->compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void -+>compileString : (code: string, unitName: string, callback: (res: CompilerResult) => void, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >code : string - >'test.ts' : "test.ts" - >function (compilerResult) { errors = compilerResult.errors; } : (compilerResult: CompilerResult) => void -@@= skipped -755, +755 lines =@@ - * @param references the set of referenced files used by the given code - */ - export function generateDeclFile(code: string, verifyNoDeclFile: boolean, unitName?: string, compilationContext?: Harness.Compiler.CompilationContext, references?: TypeScript.IFileReference[]): string { -->generateDeclFile : (code: string, verifyNoDeclFile: boolean, unitName?: string, compilationContext?: Harness.Compiler.CompilationContext, references?: TypeScript.IFileReference[]) => string -+>generateDeclFile : (code: string, verifyNoDeclFile: boolean, unitName?: string | undefined, compilationContext?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => string - >code : string - >verifyNoDeclFile : boolean - >unitName : string | undefined -@@= skipped -56, +56 lines =@@ - - addUnit(code, unitName, false, false, references); - >addUnit(code, unitName, false, false, references) : TypeScript.Script -->addUnit : (code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) => TypeScript.Script -+>addUnit : (code: string, unitName?: string | undefined, isResident?: boolean | undefined, isDeclareFile?: boolean | undefined, references?: TypeScript.IFileReference[] | undefined) => TypeScript.Script - >code : string - >unitName : string | undefined - >false : false -@@= skipped -92, +92 lines =@@ - if (fn.indexOf('.d.ts') >= 0) { - >fn.indexOf('.d.ts') >= 0 : boolean - >fn.indexOf('.d.ts') : number -->fn.indexOf : (searchString: string, position?: number) => number -+>fn.indexOf : (searchString: string, position?: number | undefined) => number - >fn : string -->indexOf : (searchString: string, position?: number) => number -+>indexOf : (searchString: string, position?: number | undefined) => number - >'.d.ts' : ".d.ts" - >0 : 0 - -@@= skipped -25, +25 lines =@@ - >results = writer.lines.join('\n') : string - >results : string - >writer.lines.join('\n') : string -->writer.lines.join : (separator?: string) => string -+>writer.lines.join : (separator?: string | undefined) => string - >writer.lines : string[] - >writer : WriterAggregator - >lines : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >'\n' : "\n" - - if (verifyNoDeclFile && results != "") { -@@= skipped -88, +88 lines =@@ - - updateUnit('', uName); - >updateUnit('', uName) : void -->updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void -+>updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void - >'' : "" - >uName : string - } -@@= skipped -57, +57 lines =@@ - >this : this - >code : string - >lines.join("\n") : string -->lines.join : (separator?: string) => string -+>lines.join : (separator?: string | undefined) => string - >lines : any[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >"\n" : "\n" - - this.errors = []; -@@= skipped -220, +220 lines =@@ - >compiler = makeDefaultCompilerForTest() : any - >compiler : TypeScript.TypeScriptCompiler - >makeDefaultCompilerForTest() : any -->makeDefaultCompilerForTest : (c?: TypeScript.TypeScriptCompiler) => any -+>makeDefaultCompilerForTest : (c?: any) => any - - if (usePull) { - >usePull : boolean -@@= skipped -74, +74 lines =@@ - - updateUnit('', fname); - >updateUnit('', fname) : void -->updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void -+>updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void - >'' : "" - >fname : any - } -@@= skipped -30, +30 lines =@@ - } - - export function addUnit(code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) { -->addUnit : (code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) => TypeScript.Script -+>addUnit : (code: string, unitName?: string | undefined, isResident?: boolean | undefined, isDeclareFile?: boolean | undefined, references?: TypeScript.IFileReference[] | undefined) => TypeScript.Script - >code : string - >unitName : string | undefined - >isResident : boolean | undefined -@@= skipped -50, +50 lines =@@ - - updateUnit(code, uName); - >updateUnit(code, uName) : void -->updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void -+>updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void - >code : string - >uName : string - -@@= skipped -49, +49 lines =@@ - } - - export function updateUnit(code: string, unitName: string, setRecovery?: boolean) { -->updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void -+>updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void - >code : string - >unitName : string - >setRecovery : boolean | undefined -@@= skipped -36, +36 lines =@@ - } - - export function compileFile(path: string, callback: (res: CompilerResult) => void , settingsCallback?: (settings?: TypeScript.CompilationSettings) => void , context?: CompilationContext, references?: TypeScript.IFileReference[]) { -->compileFile : (path: string, callback: (res: CompilerResult) => void, settingsCallback?: (settings?: TypeScript.CompilationSettings) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void -+>compileFile : (path: string, callback: (res: CompilerResult) => void, settingsCallback?: ((settings?: any) => void) | undefined, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >path : string - >callback : (res: CompilerResult) => void - >res : CompilerResult -->settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined -+>settingsCallback : ((settings?: any) => void) | undefined - >settings : any - >TypeScript : any - >context : CompilationContext | undefined -@@= skipped -36, +36 lines =@@ - - compileUnit(code, filename, callback, settingsCallback, context, references); - >compileUnit(code, filename, callback, settingsCallback, context, references) : void -->compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: (settings?: TypeScript.CompilationSettings) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void -+>compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: ((settings?: any) => void) | undefined, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >code : any - >filename : string - >callback : (res: CompilerResult) => void -->settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined -+>settingsCallback : ((settings?: any) => void) | undefined - >context : CompilationContext | undefined - >references : TypeScript.IFileReference[] | undefined - } - - export function compileUnit(code: string, filename: string, callback: (res: CompilerResult) => void , settingsCallback?: (settings?: TypeScript.CompilationSettings) => void , context?: CompilationContext, references?: TypeScript.IFileReference[]) { -->compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: (settings?: TypeScript.CompilationSettings) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void -+>compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: ((settings?: any) => void) | undefined, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >code : string - >filename : string - >callback : (res: CompilerResult) => void - >res : CompilerResult -->settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined -+>settingsCallback : ((settings?: any) => void) | undefined - >settings : any - >TypeScript : any - >context : CompilationContext | undefined -@@= skipped -83, +83 lines =@@ - >moduleGenTarget : any - - if (settingsCallback) { -->settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined -+>settingsCallback : ((settings?: any) => void) | undefined - - settingsCallback(compiler.settings); - >settingsCallback(compiler.settings) : void -->settingsCallback : (settings?: TypeScript.CompilationSettings) => void -+>settingsCallback : (settings?: any) => void - >compiler.settings : any - >compiler : TypeScript.TypeScriptCompiler - >settings : any -@@= skipped -25, +25 lines =@@ - try { - compileString(code, filename, callback, context, references); - >compileString(code, filename, callback, context, references) : void -->compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void -+>compileString : (code: string, unitName: string, callback: (res: CompilerResult) => void, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >code : string - >filename : string - >callback : (res: CompilerResult) => void -@@= skipped -11, +11 lines =@@ - // If settingsCallback exists, assume that it modified the global compiler instance's settings in some way. - // So that a test doesn't have side effects for tests run after it, restore the compiler settings to their previous state. - if (settingsCallback) { -->settingsCallback : ((settings?: TypeScript.CompilationSettings) => void) | undefined -+>settingsCallback : ((settings?: any) => void) | undefined - - compiler.settings = oldCompilerSettings; - >compiler.settings = oldCompilerSettings : any -@@= skipped -27, +27 lines =@@ - } - - export function compileUnits(units: TestCaseParser.TestUnitData[], callback: (res: Compiler.CompilerResult) => void , settingsCallback?: () => void ) { -->compileUnits : (units: TestCaseParser.TestUnitData[], callback: (res: Compiler.CompilerResult) => void, settingsCallback?: () => void) => void -+>compileUnits : (units: TestCaseParser.TestUnitData[], callback: (res: CompilerResult) => void, settingsCallback?: (() => void) | undefined) => void - >units : TestCaseParser.TestUnitData[] - >TestCaseParser : any -->callback : (res: Compiler.CompilerResult) => void -+>callback : (res: CompilerResult) => void - >res : CompilerResult - >Compiler : any - >settingsCallback : (() => void) | undefined -@@= skipped -35, +35 lines =@@ - var dependencies = units.slice(0, units.length - 1); - >dependencies : TestCaseParser.TestUnitData[] - >units.slice(0, units.length - 1) : TestCaseParser.TestUnitData[] -->units.slice : (start?: number, end?: number) => TestCaseParser.TestUnitData[] -+>units.slice : (start?: number | undefined, end?: number | undefined) => TestCaseParser.TestUnitData[] - >units : TestCaseParser.TestUnitData[] -->slice : (start?: number, end?: number) => TestCaseParser.TestUnitData[] -+>slice : (start?: number | undefined, end?: number | undefined) => TestCaseParser.TestUnitData[] - >0 : 0 - >units.length - 1 : number - >units.length : number -@@= skipped -23, +23 lines =@@ - - compileUnit(lastUnit.content, unitName, callback, settingsCallback, compilationContext, lastUnit.references); - >compileUnit(lastUnit.content, unitName, callback, settingsCallback, compilationContext, lastUnit.references) : void -->compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: (settings?: TypeScript.CompilationSettings) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void -+>compileUnit : (code: string, filename: string, callback: (res: CompilerResult) => void, settingsCallback?: ((settings?: any) => void) | undefined, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >lastUnit.content : string - >lastUnit : TestCaseParser.TestUnitData - >content : string - >unitName : string -->callback : (res: Compiler.CompilerResult) => void -+>callback : (res: CompilerResult) => void - >settingsCallback : (() => void) | undefined - >compilationContext : CompilationContext - >lastUnit.references : TypeScript.IFileReference[] -@@= skipped -26, +26 lines =@@ - } - - export function emit(ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean) { -->emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean) => void -+>emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean | undefined) => void - >ioHost : TypeScript.EmitterIOHost - >TypeScript : any - >usePullEmitter : boolean | undefined -@@= skipped -15, +15 lines =@@ - } - - export function compileString(code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void , context?: CompilationContext, references?: TypeScript.IFileReference[]) { -->compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: CompilationContext, references?: TypeScript.IFileReference[]) => void -+>compileString : (code: string, unitName: string, callback: (res: CompilerResult) => void, context?: CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >code : string - >unitName : string -->callback : (res: Compiler.CompilerResult) => void -+>callback : (res: CompilerResult) => void - >res : CompilerResult - >Compiler : any - >context : CompilationContext | undefined -@@= skipped -58, +58 lines =@@ - >scripts : TypeScript.Script[] - >push : (...items: TypeScript.Script[]) => number - >addUnit(code, uName, false, isDeclareFile, references) : TypeScript.Script -->addUnit : (code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) => TypeScript.Script -+>addUnit : (code: string, unitName?: string | undefined, isResident?: boolean | undefined, isDeclareFile?: boolean | undefined, references?: TypeScript.IFileReference[] | undefined) => TypeScript.Script - >code : string - >uName : string - >false : false -@@= skipped -9, +9 lines =@@ - - compile(code, uName); - >compile(code, uName) : void -->compile : (code?: string, filename?: string) => void -+>compile : (code?: string | undefined, filename?: string | undefined) => void - >code : string - >uName : string - -@@= skipped -22, +22 lines =@@ - - emit(stdout, true); - >emit(stdout, true) : void -->emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean) => void -+>emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean | undefined) => void - >stdout : EmitterIOHost - >true : true - } -@@= skipped -14, +14 lines =@@ - - emit(stdout, false); - >emit(stdout, false) : void -->emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean) => void -+>emit : (ioHost: TypeScript.EmitterIOHost, usePullEmitter?: boolean | undefined) => void - >stdout : EmitterIOHost - >false : false - -@@= skipped -24, +24 lines =@@ - - callback(new CompilerResult(stdout.toArray(), errors, scripts)); - >callback(new CompilerResult(stdout.toArray(), errors, scripts)) : void -->callback : (res: Compiler.CompilerResult) => void -+>callback : (res: CompilerResult) => void - >new CompilerResult(stdout.toArray(), errors, scripts) : CompilerResult - >CompilerResult : typeof CompilerResult - >stdout.toArray() : { filename: string; file: WriterAggregator; }[] -@@= skipped -50, +50 lines =@@ - - addUnit(dep.content, dep.name, false, Harness.Compiler.isDeclareFile(dep.name)); - >addUnit(dep.content, dep.name, false, Harness.Compiler.isDeclareFile(dep.name)) : TypeScript.Script -->addUnit : (code: string, unitName?: string, isResident?: boolean, isDeclareFile?: boolean, references?: TypeScript.IFileReference[]) => TypeScript.Script -+>addUnit : (code: string, unitName?: string | undefined, isResident?: boolean | undefined, isDeclareFile?: boolean | undefined, references?: TypeScript.IFileReference[] | undefined) => TypeScript.Script - >dep.content : string - >dep : TestCaseParser.TestUnitData - >content : string -@@= skipped -43, +43 lines =@@ - - updateUnit('', file); - >updateUnit('', file) : void -->updateUnit : (code: string, unitName: string, setRecovery?: boolean) => void -+>updateUnit : (code: string, unitName: string, setRecovery?: boolean | undefined) => void - >'' : "" - >file : any - -@@= skipped -263, +263 lines =@@ - var fileNameIndex = fileMetadataNames.indexOf(testMetaData[1].toLowerCase()); - >fileNameIndex : number - >fileMetadataNames.indexOf(testMetaData[1].toLowerCase()) : number -->fileMetadataNames.indexOf : (searchElement: string, fromIndex?: number) => number -+>fileMetadataNames.indexOf : (searchElement: string, fromIndex?: number | undefined) => number - >fileMetadataNames : string[] -->indexOf : (searchElement: string, fromIndex?: number) => number -+>indexOf : (searchElement: string, fromIndex?: number | undefined) => number - >testMetaData[1].toLowerCase() : any - >testMetaData[1].toLowerCase : any - >testMetaData[1] : any -@@= skipped -28, +28 lines =@@ - >1 : 1 - >'". Available file metadata names are: ' : "\". Available file metadata names are: " - >fileMetadataNames.join(', ') : string -->fileMetadataNames.join : (separator?: string) => string -+>fileMetadataNames.join : (separator?: string | undefined) => string - >fileMetadataNames : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >', ' : ", " - - } else if (fileNameIndex == 0) { -@@= skipped -251, +251 lines =@@ - var prefix = this.content.substring(0, minChar); - >prefix : string - >this.content.substring(0, minChar) : string -->this.content.substring : (start: number, end?: number) => string -+>this.content.substring : (start: number, end?: number | undefined) => string - >this.content : string - >this : this - >content : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >0 : 0 - >minChar : number - -@@= skipped -15, +15 lines =@@ - var suffix = this.content.substring(limChar); - >suffix : string - >this.content.substring(limChar) : string -->this.content.substring : (start: number, end?: number) => string -+>this.content.substring : (start: number, end?: number | undefined) => string - >this.content : string - >this : this - >content : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >limChar : number - - this.content = prefix + middle + suffix; -@@= skipped -68, +68 lines =@@ - - this.editRanges.splice(0, this.maxScriptVersions - this.editRanges.length); - >this.editRanges.splice(0, this.maxScriptVersions - this.editRanges.length) : { length: number; editRange: TypeScript.ScriptEditRange; }[] -->this.editRanges.splice : { (start: number, deleteCount?: number): { length: number; editRange: TypeScript.ScriptEditRange; }[]; (start: number, deleteCount: number, ...items: { length: number; editRange: TypeScript.ScriptEditRange; }[]): { length: number; editRange: TypeScript.ScriptEditRange; }[]; } -+>this.editRanges.splice : { (start: number, deleteCount?: number | undefined): { length: number; editRange: TypeScript.ScriptEditRange; }[]; (start: number, deleteCount: number, ...items: { length: number; editRange: TypeScript.ScriptEditRange; }[]): { length: number; editRange: TypeScript.ScriptEditRange; }[]; } - >this.editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] - >this : this - >editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] -->splice : { (start: number, deleteCount?: number): { length: number; editRange: TypeScript.ScriptEditRange; }[]; (start: number, deleteCount: number, ...items: { length: number; editRange: TypeScript.ScriptEditRange; }[]): { length: number; editRange: TypeScript.ScriptEditRange; }[]; } -+>splice : { (start: number, deleteCount?: number | undefined): { length: number; editRange: TypeScript.ScriptEditRange; }[]; (start: number, deleteCount: number, ...items: { length: number; editRange: TypeScript.ScriptEditRange; }[]): { length: number; editRange: TypeScript.ScriptEditRange; }[]; } - >0 : 0 - >this.maxScriptVersions - this.editRanges.length : number - >this.maxScriptVersions : number -@@= skipped -82, +82 lines =@@ - var entries = this.editRanges.slice(initialEditRangeIndex); - >entries : { length: number; editRange: TypeScript.ScriptEditRange; }[] - >this.editRanges.slice(initialEditRangeIndex) : { length: number; editRange: TypeScript.ScriptEditRange; }[] -->this.editRanges.slice : (start?: number, end?: number) => { length: number; editRange: TypeScript.ScriptEditRange; }[] -+>this.editRanges.slice : (start?: number | undefined, end?: number | undefined) => { length: number; editRange: TypeScript.ScriptEditRange; }[] - >this.editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] - >this : this - >editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] -->slice : (start?: number, end?: number) => { length: number; editRange: TypeScript.ScriptEditRange; }[] -+>slice : (start?: number | undefined, end?: number | undefined) => { length: number; editRange: TypeScript.ScriptEditRange; }[] - >initialEditRangeIndex : number - - var minDistFromStart = entries.map(x => x.editRange.minChar).reduce((prev, current) => Math.min(prev, current)); -@@= skipped -376, +376 lines =@@ - - return this.scripts[scriptIndex].content.substring(start, end); - >this.scripts[scriptIndex].content.substring(start, end) : string -->this.scripts[scriptIndex].content.substring : (start: number, end?: number) => string -+>this.scripts[scriptIndex].content.substring : (start: number, end?: number | undefined) => string - >this.scripts[scriptIndex].content : string - >this.scripts[scriptIndex] : ScriptInfo - >this.scripts : ScriptInfo[] -@@= skipped -8, +8 lines =@@ - >scripts : ScriptInfo[] - >scriptIndex : number - >content : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >start : number - >end : number - } -@@= skipped -440, +440 lines =@@ - var prefix = result.substring(0, edit.minChar); - >prefix : string - >result.substring(0, edit.minChar) : string -->result.substring : (start: number, end?: number) => string -+>result.substring : (start: number, end?: number | undefined) => string - >result : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >0 : 0 - >edit.minChar : any - >edit : Services.TextEdit -@@= skipped -17, +17 lines =@@ - var suffix = result.substring(edit.limChar); - >suffix : string - >result.substring(edit.limChar) : string -->result.substring : (start: number, end?: number) => string -+>result.substring : (start: number, end?: number | undefined) => string - >result : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >edit.limChar : any - >edit : Services.TextEdit - >limChar : any -@@= skipped -240, +240 lines =@@ - - return JSON.stringify({ usePullLanguageService: usePull }); - >JSON.stringify({ usePullLanguageService: usePull }) : string -->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >JSON : JSON -->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } -+>stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } - >{ usePullLanguageService: usePull } : { usePullLanguageService: boolean; } - >usePullLanguageService : boolean - >usePull : boolean -@@= skipped -261, +261 lines =@@ - - Compiler.compileString(code, unitName, function (res) { - >Compiler.compileString(code, unitName, function (res) { runJSString(res.code, callback); }) : void -->Compiler.compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: Compiler.CompilationContext, references?: TypeScript.IFileReference[]) => void -+>Compiler.compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: Compiler.CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >Compiler : typeof Compiler -->compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: Compiler.CompilationContext, references?: TypeScript.IFileReference[]) => void -+>compileString : (code: string, unitName: string, callback: (res: Compiler.CompilerResult) => void, context?: Compiler.CompilationContext | undefined, references?: TypeScript.IFileReference[] | undefined) => void - >code : string - >unitName : string - >function (res) { runJSString(res.code, callback); } : (res: Compiler.CompilerResult) => void -@@= skipped -544, +544 lines =@@ +@@= skipped -8335, +8335 lines =@@ } export function runBaseline( ->runBaseline : (descriptionForDescribe: string, relativeFilename: string, generateContent: () => string, runImmediately?: boolean | undefined, opts?: BaselineOptions) => void -+>runBaseline : (descriptionForDescribe: string, relativeFilename: string, generateContent: () => string, runImmediately?: boolean | undefined, opts?: BaselineOptions | undefined) => void ++>runBaseline : (descriptionForDescribe: string, relativeFilename: string, generateContent: () => string, runImmediately?: boolean, opts?: BaselineOptions) => void descriptionForDescribe: string, >descriptionForDescribe : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/partiallyNamedTuples2.types b/testdata/baselines/reference/submodule/conformance/partiallyNamedTuples2.types index a8f8b220622..62826044429 100644 --- a/testdata/baselines/reference/submodule/conformance/partiallyNamedTuples2.types +++ b/testdata/baselines/reference/submodule/conformance/partiallyNamedTuples2.types @@ -38,8 +38,8 @@ const id1 = "abc" as string; const matches = x.get(id1); >matches : Iterable<[id2: string, object]> >x.get(id1) : Iterable<[id2: string, object]> ->x.get : (...key: Key) => GetResult<[id1: string, id2: string], Key, object> +>x.get : >(...key: Key) => GetResult<[id1: string, id2: string], Key, object> >x : MultiKeyMap<[id1: string, id2: string], object> ->get : (...key: Key) => GetResult<[id1: string, id2: string], Key, object> +>get : >(...key: Key) => GetResult<[id1: string, id2: string], Key, object> >id1 : string diff --git a/testdata/baselines/reference/submodule/conformance/partiallyNamedTuples2.types.diff b/testdata/baselines/reference/submodule/conformance/partiallyNamedTuples2.types.diff new file mode 100644 index 00000000000..827bbe20d0d --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/partiallyNamedTuples2.types.diff @@ -0,0 +1,12 @@ +--- old.partiallyNamedTuples2.types ++++ new.partiallyNamedTuples2.types +@@= skipped -37, +37 lines =@@ + const matches = x.get(id1); + >matches : Iterable<[id2: string, object]> + >x.get(id1) : Iterable<[id2: string, object]> +->x.get : (...key: Key) => GetResult<[id1: string, id2: string], Key, object> ++>x.get : >(...key: Key) => GetResult<[id1: string, id2: string], Key, object> + >x : MultiKeyMap<[id1: string, id2: string], object> +->get : (...key: Key) => GetResult<[id1: string, id2: string], Key, object> ++>get : >(...key: Key) => GetResult<[id1: string, id2: string], Key, object> + >id1 : string diff --git a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare.types b/testdata/baselines/reference/submodule/conformance/plainJSRedeclare.types index e6490a30b9c..5c0092a3cdc 100644 --- a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare.types +++ b/testdata/baselines/reference/submodule/conformance/plainJSRedeclare.types @@ -13,7 +13,7 @@ var orbitol = 1 + false orbitol.toExponential() >orbitol.toExponential() : string ->orbitol.toExponential : (fractionDigits?: number | undefined) => string +>orbitol.toExponential : (fractionDigits?: number) => string >orbitol : 1 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare.types.diff b/testdata/baselines/reference/submodule/conformance/plainJSRedeclare.types.diff deleted file mode 100644 index 929cbc2cc05..00000000000 --- a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.plainJSRedeclare.types -+++ new.plainJSRedeclare.types -@@= skipped -12, +12 lines =@@ - - orbitol.toExponential() - >orbitol.toExponential() : string -->orbitol.toExponential : (fractionDigits?: number) => string -+>orbitol.toExponential : (fractionDigits?: number | undefined) => string - >orbitol : 1 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare2.types b/testdata/baselines/reference/submodule/conformance/plainJSRedeclare2.types index b8fa4b7af03..ea7da17348d 100644 --- a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare2.types +++ b/testdata/baselines/reference/submodule/conformance/plainJSRedeclare2.types @@ -13,7 +13,7 @@ var orbitol = 1 + false orbitol.toExponential() >orbitol.toExponential() : string ->orbitol.toExponential : (fractionDigits?: number | undefined) => string +>orbitol.toExponential : (fractionDigits?: number) => string >orbitol : 1 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare2.types.diff b/testdata/baselines/reference/submodule/conformance/plainJSRedeclare2.types.diff deleted file mode 100644 index 251303586da..00000000000 --- a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.plainJSRedeclare2.types -+++ new.plainJSRedeclare2.types -@@= skipped -12, +12 lines =@@ - - orbitol.toExponential() - >orbitol.toExponential() : string -->orbitol.toExponential : (fractionDigits?: number) => string -+>orbitol.toExponential : (fractionDigits?: number | undefined) => string - >orbitol : 1 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare3.types b/testdata/baselines/reference/submodule/conformance/plainJSRedeclare3.types index c2d167ffc2a..6e12b944f77 100644 --- a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare3.types +++ b/testdata/baselines/reference/submodule/conformance/plainJSRedeclare3.types @@ -13,7 +13,7 @@ var orbitol = 1 + false orbitol.toExponential() >orbitol.toExponential() : string ->orbitol.toExponential : (fractionDigits?: number | undefined) => string +>orbitol.toExponential : (fractionDigits?: number) => string >orbitol : 1 ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare3.types.diff b/testdata/baselines/reference/submodule/conformance/plainJSRedeclare3.types.diff deleted file mode 100644 index 2b3b0dcc33f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/plainJSRedeclare3.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.plainJSRedeclare3.types -+++ new.plainJSRedeclare3.types -@@= skipped -12, +12 lines =@@ - - orbitol.toExponential() - >orbitol.toExponential() : string -->orbitol.toExponential : (fractionDigits?: number) => string -+>orbitol.toExponential : (fractionDigits?: number | undefined) => string - >orbitol : 1 -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/primtiveTypesAreIdentical.types b/testdata/baselines/reference/submodule/conformance/primtiveTypesAreIdentical.types index cb6843bbf06..c55931f5be0 100644 --- a/testdata/baselines/reference/submodule/conformance/primtiveTypesAreIdentical.types +++ b/testdata/baselines/reference/submodule/conformance/primtiveTypesAreIdentical.types @@ -52,19 +52,19 @@ function foo4(x: any) { } >x : any function foo5(x: 'a'); ->foo5 : { (x: "a"): any; (x: "a"): any; (x: string): any; } +>foo5 : { (x: 'a'): any; (x: 'a'): any; (x: string): any; } >x : "a" function foo5(x: 'a'); ->foo5 : { (x: "a"): any; (x: "a"): any; (x: string): any; } +>foo5 : { (x: 'a'): any; (x: 'a'): any; (x: string): any; } >x : "a" function foo5(x: string); ->foo5 : { (x: "a"): any; (x: "a"): any; (x: string): any; } +>foo5 : { (x: 'a'): any; (x: 'a'): any; (x: string): any; } >x : string function foo5(x: any) { } ->foo5 : { (x: "a"): any; (x: "a"): any; (x: string): any; } +>foo5 : { (x: 'a'): any; (x: 'a'): any; (x: string): any; } >x : any enum E { A } diff --git a/testdata/baselines/reference/submodule/conformance/primtiveTypesAreIdentical.types.diff b/testdata/baselines/reference/submodule/conformance/primtiveTypesAreIdentical.types.diff new file mode 100644 index 00000000000..d26c367b123 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/primtiveTypesAreIdentical.types.diff @@ -0,0 +1,26 @@ +--- old.primtiveTypesAreIdentical.types ++++ new.primtiveTypesAreIdentical.types +@@= skipped -51, +51 lines =@@ + >x : any + + function foo5(x: 'a'); +->foo5 : { (x: "a"): any; (x: "a"): any; (x: string): any; } ++>foo5 : { (x: 'a'): any; (x: 'a'): any; (x: string): any; } + >x : "a" + + function foo5(x: 'a'); +->foo5 : { (x: "a"): any; (x: "a"): any; (x: string): any; } ++>foo5 : { (x: 'a'): any; (x: 'a'): any; (x: string): any; } + >x : "a" + + function foo5(x: string); +->foo5 : { (x: "a"): any; (x: "a"): any; (x: string): any; } ++>foo5 : { (x: 'a'): any; (x: 'a'): any; (x: string): any; } + >x : string + + function foo5(x: any) { } +->foo5 : { (x: "a"): any; (x: "a"): any; (x: string): any; } ++>foo5 : { (x: 'a'): any; (x: 'a'): any; (x: string): any; } + >x : any + + enum E { A } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/privateNameAndPropertySignature.types b/testdata/baselines/reference/submodule/conformance/privateNameAndPropertySignature.types index b83d0d44dac..9f46f5ee50e 100644 --- a/testdata/baselines/reference/submodule/conformance/privateNameAndPropertySignature.types +++ b/testdata/baselines/reference/submodule/conformance/privateNameAndPropertySignature.types @@ -20,7 +20,7 @@ interface B { } declare const x: { ->x : { bar: {}; } +>x : { bar: { #baz: string; #taz(): string; }; } #foo: number; >#foo : number @@ -40,7 +40,7 @@ declare const x: { }; declare const y: [{ qux: { #quux: 3 } }]; ->y : [{ qux: {}; }] +>y : [{ qux: { #quux: 3; }; }] >qux : {} >#quux : 3 diff --git a/testdata/baselines/reference/submodule/conformance/privateNameAndPropertySignature.types.diff b/testdata/baselines/reference/submodule/conformance/privateNameAndPropertySignature.types.diff deleted file mode 100644 index 9f5078890f7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/privateNameAndPropertySignature.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.privateNameAndPropertySignature.types -+++ new.privateNameAndPropertySignature.types -@@= skipped -19, +19 lines =@@ - } - - declare const x: { -->x : { bar: { #baz: string; #taz(): string; }; } -+>x : { bar: {}; } - - #foo: number; - >#foo : number -@@= skipped -20, +20 lines =@@ - }; - - declare const y: [{ qux: { #quux: 3 } }]; -->y : [{ qux: { #quux: 3; }; }] -+>y : [{ qux: {}; }] - >qux : {} - >#quux : 3 diff --git a/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=es2022).types b/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=es2022).types index 9411ffac8a6..81b3ca31a93 100644 --- a/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=es2022).types +++ b/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=es2022).types @@ -118,7 +118,7 @@ class Foo { >v : any } flow(u: unknown, n: never, fb: Foo | Bar, fs: FooSub, b: Bar, fsb: FooSub | Bar, fsfb: Foo | FooSub | Bar) { ->flow : (u: unknown, n: never, fb: Bar | Foo, fs: FooSub, b: Bar, fsb: Bar | FooSub, fsfb: Bar | Foo | FooSub) => void +>flow : (u: unknown, n: never, fb: Foo | Bar, fs: FooSub, b: Bar, fsb: FooSub | Bar, fsfb: Foo | FooSub | Bar) => void >u : unknown >n : never >fb : Bar | Foo diff --git a/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=es2022).types.diff b/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=es2022).types.diff deleted file mode 100644 index 8316b6a0907..00000000000 --- a/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=es2022).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.privateNameInInExpression(target=es2022).types -+++ new.privateNameInInExpression(target=es2022).types -@@= skipped -117, +117 lines =@@ - >v : any - } - flow(u: unknown, n: never, fb: Foo | Bar, fs: FooSub, b: Bar, fsb: FooSub | Bar, fsfb: Foo | FooSub | Bar) { -->flow : (u: unknown, n: never, fb: Foo | Bar, fs: FooSub, b: Bar, fsb: FooSub | Bar, fsfb: Foo | FooSub | Bar) => void -+>flow : (u: unknown, n: never, fb: Bar | Foo, fs: FooSub, b: Bar, fsb: Bar | FooSub, fsfb: Bar | Foo | FooSub) => void - >u : unknown - >n : never - >fb : Bar | Foo \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=esnext).types b/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=esnext).types index 9411ffac8a6..81b3ca31a93 100644 --- a/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=esnext).types @@ -118,7 +118,7 @@ class Foo { >v : any } flow(u: unknown, n: never, fb: Foo | Bar, fs: FooSub, b: Bar, fsb: FooSub | Bar, fsfb: Foo | FooSub | Bar) { ->flow : (u: unknown, n: never, fb: Bar | Foo, fs: FooSub, b: Bar, fsb: Bar | FooSub, fsfb: Bar | Foo | FooSub) => void +>flow : (u: unknown, n: never, fb: Foo | Bar, fs: FooSub, b: Bar, fsb: FooSub | Bar, fsfb: Foo | FooSub | Bar) => void >u : unknown >n : never >fb : Bar | Foo diff --git a/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=esnext).types.diff deleted file mode 100644 index 4db79241b85..00000000000 --- a/testdata/baselines/reference/submodule/conformance/privateNameInInExpression(target=esnext).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.privateNameInInExpression(target=esnext).types -+++ new.privateNameInInExpression(target=esnext).types -@@= skipped -117, +117 lines =@@ - >v : any - } - flow(u: unknown, n: never, fb: Foo | Bar, fs: FooSub, b: Bar, fsb: FooSub | Bar, fsfb: Foo | FooSub | Bar) { -->flow : (u: unknown, n: never, fb: Foo | Bar, fs: FooSub, b: Bar, fsb: FooSub | Bar, fsfb: Foo | FooSub | Bar) => void -+>flow : (u: unknown, n: never, fb: Bar | Foo, fs: FooSub, b: Bar, fsb: Bar | FooSub, fsfb: Bar | Foo | FooSub) => void - >u : unknown - >n : never - >fb : Bar | Foo \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/privateNamesUnique-2.types b/testdata/baselines/reference/submodule/conformance/privateNamesUnique-2.types index e5f87df19f4..0560496fa81 100644 --- a/testdata/baselines/reference/submodule/conformance/privateNamesUnique-2.types +++ b/testdata/baselines/reference/submodule/conformance/privateNamesUnique-2.types @@ -46,8 +46,8 @@ const b = new B(); a.copy(b); // error >a.copy(b) : void ->a.copy : (other: B) => void +>a.copy : (other: import("./b").Foo) => void >a : A ->copy : (other: B) => void +>copy : (other: import("./b").Foo) => void >b : B diff --git a/testdata/baselines/reference/submodule/conformance/privateNamesUnique-2.types.diff b/testdata/baselines/reference/submodule/conformance/privateNamesUnique-2.types.diff deleted file mode 100644 index 3c155c0ab4d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/privateNamesUnique-2.types.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.privateNamesUnique-2.types -+++ new.privateNamesUnique-2.types -@@= skipped -45, +45 lines =@@ - - a.copy(b); // error - >a.copy(b) : void -->a.copy : (other: import("./b").Foo) => void -+>a.copy : (other: B) => void - >a : A -->copy : (other: import("./b").Foo) => void -+>copy : (other: B) => void - >b : B diff --git a/testdata/baselines/reference/submodule/conformance/propertyAccessChain.2.types b/testdata/baselines/reference/submodule/conformance/propertyAccessChain.2.types index 8626394792f..c2f3d8ffdd3 100644 --- a/testdata/baselines/reference/submodule/conformance/propertyAccessChain.2.types +++ b/testdata/baselines/reference/submodule/conformance/propertyAccessChain.2.types @@ -23,14 +23,14 @@ o2?.b.c; >c : string declare const o3: { b: undefined | { c: string } }; ->o3 : { b: { c: string; }; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } >c : string o3.b?.c; >o3.b?.c : string >o3.b : { c: string; } ->o3 : { b: { c: string; }; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } >c : string diff --git a/testdata/baselines/reference/submodule/conformance/propertyAccessChain.2.types.diff b/testdata/baselines/reference/submodule/conformance/propertyAccessChain.2.types.diff deleted file mode 100644 index 9f15ed596d7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/propertyAccessChain.2.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.propertyAccessChain.2.types -+++ new.propertyAccessChain.2.types -@@= skipped -22, +22 lines =@@ - >c : string - - declare const o3: { b: undefined | { c: string } }; -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; }; } - >b : { c: string; } - >c : string - - o3.b?.c; - >o3.b?.c : string - >o3.b : { c: string; } -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; }; } - >b : { c: string; } - >c : string diff --git a/testdata/baselines/reference/submodule/conformance/propertyAccessChain.types b/testdata/baselines/reference/submodule/conformance/propertyAccessChain.types index 0f017568c08..47568d94a13 100644 --- a/testdata/baselines/reference/submodule/conformance/propertyAccessChain.types +++ b/testdata/baselines/reference/submodule/conformance/propertyAccessChain.types @@ -23,63 +23,63 @@ o2?.b.c; >c : string | undefined declare const o3: { b: undefined | { c: string } }; ->o3 : { b: { c: string; } | undefined; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } | undefined >c : string o3.b?.c; >o3.b?.c : string | undefined >o3.b : { c: string; } | undefined ->o3 : { b: { c: string; } | undefined; } +>o3 : { b: undefined | { c: string; }; } >b : { c: string; } | undefined >c : string | undefined declare const o4: { b?: { c: { d?: { e: string } } } }; ->o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined ->c : { d?: { e: string; } | undefined; } +>o4 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined +>c : { d?: { e: string; }; } >d : { e: string; } | undefined >e : string o4.b?.c.d?.e; >o4.b?.c.d?.e : string | undefined >o4.b?.c.d : { e: string; } | undefined ->o4.b?.c : { d?: { e: string; } | undefined; } | undefined ->o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined ->o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } ->b : { c: { d?: { e: string; } | undefined; }; } | undefined ->c : { d?: { e: string; } | undefined; } | undefined +>o4.b?.c : { d?: { e: string; }; } | undefined +>o4.b : { c: { d?: { e: string; }; }; } | undefined +>o4 : { b?: { c: { d?: { e: string; }; }; }; } +>b : { c: { d?: { e: string; }; }; } | undefined +>c : { d?: { e: string; }; } | undefined >d : { e: string; } | undefined >e : string | undefined declare const o5: { b?(): { c: { d?: { e: string } } } }; ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } ->b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->c : { d?: { e: string; } | undefined; } +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } +>b : (() => { c: { d?: { e: string; }; }; }) | undefined +>c : { d?: { e: string; }; } >d : { e: string; } | undefined >e : string o5.b?.().c.d?.e; >o5.b?.().c.d?.e : string | undefined >o5.b?.().c.d : { e: string; } | undefined ->o5.b?.().c : { d?: { e: string; } | undefined; } | undefined ->o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined ->o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } ->b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined ->c : { d?: { e: string; } | undefined; } | undefined +>o5.b?.().c : { d?: { e: string; }; } | undefined +>o5.b?.() : { c: { d?: { e: string; }; }; } | undefined +>o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined +>o5 : { b?(): { c: { d?: { e: string; }; }; }; } +>b : (() => { c: { d?: { e: string; }; }; }) | undefined +>c : { d?: { e: string; }; } | undefined >d : { e: string; } | undefined >e : string | undefined // GH#33744 declare const o6: () => undefined | ({ x: number }); ->o6 : () => { x: number; } | undefined +>o6 : () => undefined | ({ x: number; }) >x : number o6()?.x; >o6()?.x : number | undefined >o6() : { x: number; } | undefined ->o6 : () => { x: number; } | undefined +>o6 : () => undefined | ({ x: number; }) >x : number | undefined // GH#34109 diff --git a/testdata/baselines/reference/submodule/conformance/propertyAccessChain.types.diff b/testdata/baselines/reference/submodule/conformance/propertyAccessChain.types.diff deleted file mode 100644 index f03c50193ba..00000000000 --- a/testdata/baselines/reference/submodule/conformance/propertyAccessChain.types.diff +++ /dev/null @@ -1,87 +0,0 @@ ---- old.propertyAccessChain.types -+++ new.propertyAccessChain.types -@@= skipped -22, +22 lines =@@ - >c : string | undefined - - declare const o3: { b: undefined | { c: string } }; -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; } | undefined; } - >b : { c: string; } | undefined - >c : string - - o3.b?.c; - >o3.b?.c : string | undefined - >o3.b : { c: string; } | undefined -->o3 : { b: undefined | { c: string; }; } -+>o3 : { b: { c: string; } | undefined; } - >b : { c: string; } | undefined - >c : string | undefined - - declare const o4: { b?: { c: { d?: { e: string } } } }; -->o4 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -->c : { d?: { e: string; }; } -+>o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>c : { d?: { e: string; } | undefined; } - >d : { e: string; } | undefined - >e : string - - o4.b?.c.d?.e; - >o4.b?.c.d?.e : string | undefined - >o4.b?.c.d : { e: string; } | undefined -->o4.b?.c : { d?: { e: string; }; } | undefined -->o4.b : { c: { d?: { e: string; }; }; } | undefined -->o4 : { b?: { c: { d?: { e: string; }; }; }; } -->b : { c: { d?: { e: string; }; }; } | undefined -->c : { d?: { e: string; }; } | undefined -+>o4.b?.c : { d?: { e: string; } | undefined; } | undefined -+>o4.b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } -+>b : { c: { d?: { e: string; } | undefined; }; } | undefined -+>c : { d?: { e: string; } | undefined; } | undefined - >d : { e: string; } | undefined - >e : string | undefined - - declare const o5: { b?(): { c: { d?: { e: string } } } }; -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -->b : (() => { c: { d?: { e: string; }; }; }) | undefined -->c : { d?: { e: string; }; } -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } -+>b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>c : { d?: { e: string; } | undefined; } - >d : { e: string; } | undefined - >e : string - - o5.b?.().c.d?.e; - >o5.b?.().c.d?.e : string | undefined - >o5.b?.().c.d : { e: string; } | undefined -->o5.b?.().c : { d?: { e: string; }; } | undefined -->o5.b?.() : { c: { d?: { e: string; }; }; } | undefined -->o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined -->o5 : { b?(): { c: { d?: { e: string; }; }; }; } -->b : (() => { c: { d?: { e: string; }; }; }) | undefined -->c : { d?: { e: string; }; } | undefined -+>o5.b?.().c : { d?: { e: string; } | undefined; } | undefined -+>o5.b?.() : { c: { d?: { e: string; } | undefined; }; } | undefined -+>o5.b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } -+>b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -+>c : { d?: { e: string; } | undefined; } | undefined - >d : { e: string; } | undefined - >e : string | undefined - - // GH#33744 - declare const o6: () => undefined | ({ x: number }); -->o6 : () => undefined | ({ x: number; }) -+>o6 : () => { x: number; } | undefined - >x : number - - o6()?.x; - >o6()?.x : number | undefined - >o6() : { x: number; } | undefined -->o6 : () => undefined | ({ x: number; }) -+>o6 : () => { x: number; } | undefined - >x : number | undefined - - // GH#34109 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/propertyAccessWidening.types b/testdata/baselines/reference/submodule/conformance/propertyAccessWidening.types index d69d05f3c7e..d45b5b3d59e 100644 --- a/testdata/baselines/reference/submodule/conformance/propertyAccessWidening.types +++ b/testdata/baselines/reference/submodule/conformance/propertyAccessWidening.types @@ -56,7 +56,7 @@ function g2(headerNames: any) { // Object in property or element access is widened when target of assignment function foo(options?: { a: string, b: number }) { ->foo : (options?: { a: string; b: number; } | undefined) => void +>foo : (options?: { a: string; b: number; }) => void >options : { a: string; b: number; } | undefined >a : string >b : number diff --git a/testdata/baselines/reference/submodule/conformance/propertyAccessWidening.types.diff b/testdata/baselines/reference/submodule/conformance/propertyAccessWidening.types.diff deleted file mode 100644 index 940b4cabdda..00000000000 --- a/testdata/baselines/reference/submodule/conformance/propertyAccessWidening.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.propertyAccessWidening.types -+++ new.propertyAccessWidening.types -@@= skipped -55, +55 lines =@@ - // Object in property or element access is widened when target of assignment - - function foo(options?: { a: string, b: number }) { -->foo : (options?: { a: string; b: number; }) => void -+>foo : (options?: { a: string; b: number; } | undefined) => void - >options : { a: string; b: number; } | undefined - >a : string - >b : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/propertyAssignmentUseParentType3.types b/testdata/baselines/reference/submodule/conformance/propertyAssignmentUseParentType3.types index 804908f78a8..2e56de5ebff 100644 --- a/testdata/baselines/reference/submodule/conformance/propertyAssignmentUseParentType3.types +++ b/testdata/baselines/reference/submodule/conformance/propertyAssignmentUseParentType3.types @@ -43,7 +43,7 @@ foo3.trim = ""; >"" : "" function foo4(): ({x: number}) { ->foo4 : { (): { x: number; }; x: string; } +>foo4 : { (): ({ x: number; }); x: string; } >x : number return {x: 123}; @@ -54,7 +54,7 @@ function foo4(): ({x: number}) { foo4.x = "456"; >foo4.x = "456" : "456" >foo4.x : string ->foo4 : { (): { x: number; }; x: string; } +>foo4 : { (): ({ x: number; }); x: string; } >x : string >"456" : "456" diff --git a/testdata/baselines/reference/submodule/conformance/propertyAssignmentUseParentType3.types.diff b/testdata/baselines/reference/submodule/conformance/propertyAssignmentUseParentType3.types.diff index 92b88e6ce08..5b9b2be592a 100644 --- a/testdata/baselines/reference/submodule/conformance/propertyAssignmentUseParentType3.types.diff +++ b/testdata/baselines/reference/submodule/conformance/propertyAssignmentUseParentType3.types.diff @@ -50,7 +50,7 @@ function foo4(): ({x: number}) { ->foo4 : typeof foo4 -+>foo4 : { (): { x: number; }; x: string; } ++>foo4 : { (): ({ x: number; }); x: string; } >x : number return {x: 123}; @@ -59,6 +59,6 @@ >foo4.x = "456" : "456" >foo4.x : string ->foo4 : typeof foo4 -+>foo4 : { (): { x: number; }; x: string; } ++>foo4 : { (): ({ x: number; }); x: string; } >x : string >"456" : "456" diff --git a/testdata/baselines/reference/submodule/conformance/prototypePropertyAssignmentMergeWithInterfaceMethod.types b/testdata/baselines/reference/submodule/conformance/prototypePropertyAssignmentMergeWithInterfaceMethod.types index d8a938cb131..c3fbce98ca8 100644 --- a/testdata/baselines/reference/submodule/conformance/prototypePropertyAssignmentMergeWithInterfaceMethod.types +++ b/testdata/baselines/reference/submodule/conformance/prototypePropertyAssignmentMergeWithInterfaceMethod.types @@ -5,12 +5,12 @@ declare namespace lf { export interface Transaction { attach(query: query.Builder): Promise> ->attach : (query: query.Builder) => Promise +>attach : (query: query.Builder) => Promise> >query : query.Builder >query : any begin(scope: Array): Promise ->begin : (scope: schema.Table[]) => Promise +>begin : (scope: Array) => Promise >scope : schema.Table[] >schema : any @@ -18,7 +18,7 @@ declare namespace lf { >commit : () => Promise exec(queries: Array): Promise>> ->exec : (queries: query.Builder[]) => Promise +>exec : (queries: Array) => Promise>> >queries : query.Builder[] >query : any @@ -42,7 +42,7 @@ lf.Transaction = function() {}; * @return {!IThenable} */ lf.Transaction.prototype.begin = function(scope) {}; ->lf.Transaction.prototype.begin = function(scope) {} : (scope: lf.schema.Table[]) => IThenable +>lf.Transaction.prototype.begin = function(scope) {} : (scope: Array) => IThenable >lf.Transaction.prototype.begin : any >lf.Transaction.prototype : any >lf.Transaction : any @@ -50,6 +50,6 @@ lf.Transaction.prototype.begin = function(scope) {}; >Transaction : any >prototype : any >begin : any ->function(scope) {} : (scope: lf.schema.Table[]) => IThenable +>function(scope) {} : (scope: Array) => IThenable >scope : lf.schema.Table[] diff --git a/testdata/baselines/reference/submodule/conformance/prototypePropertyAssignmentMergeWithInterfaceMethod.types.diff b/testdata/baselines/reference/submodule/conformance/prototypePropertyAssignmentMergeWithInterfaceMethod.types.diff index 71879fc5e90..06af26b8c2e 100644 --- a/testdata/baselines/reference/submodule/conformance/prototypePropertyAssignmentMergeWithInterfaceMethod.types.diff +++ b/testdata/baselines/reference/submodule/conformance/prototypePropertyAssignmentMergeWithInterfaceMethod.types.diff @@ -1,30 +1,6 @@ --- old.prototypePropertyAssignmentMergeWithInterfaceMethod.types +++ new.prototypePropertyAssignmentMergeWithInterfaceMethod.types -@@= skipped -4, +4 lines =@@ - declare namespace lf { - export interface Transaction { - attach(query: query.Builder): Promise> -->attach : (query: query.Builder) => Promise> -+>attach : (query: query.Builder) => Promise - >query : query.Builder - >query : any - - begin(scope: Array): Promise -->begin : (scope: Array) => Promise -+>begin : (scope: schema.Table[]) => Promise - >scope : schema.Table[] - >schema : any - -@@= skipped -13, +13 lines =@@ - >commit : () => Promise - - exec(queries: Array): Promise>> -->exec : (queries: Array) => Promise>> -+>exec : (queries: query.Builder[]) => Promise - >queries : query.Builder[] - >query : any - -@@= skipped -13, +13 lines =@@ +@@= skipped -30, +30 lines =@@ } === lovefield.js === lf.Transaction = function() {}; @@ -41,11 +17,8 @@ /** * @param {!Array} scope - * @return {!IThenable} - */ - lf.Transaction.prototype.begin = function(scope) {}; -->lf.Transaction.prototype.begin = function(scope) {} : (scope: Array) => IThenable -+>lf.Transaction.prototype.begin = function(scope) {} : (scope: lf.schema.Table[]) => IThenable +@@= skipped -14, +14 lines =@@ + >lf.Transaction.prototype.begin = function(scope) {} : (scope: Array) => IThenable >lf.Transaction.prototype.begin : any >lf.Transaction.prototype : any ->lf.Transaction : typeof Transaction @@ -56,6 +29,4 @@ +>Transaction : any >prototype : any >begin : any -->function(scope) {} : (scope: Array) => IThenable -+>function(scope) {} : (scope: lf.schema.Table[]) => IThenable - >scope : lf.schema.Table[] + >function(scope) {} : (scope: Array) => IThenable \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/recursiveMappedTypes.types b/testdata/baselines/reference/submodule/conformance/recursiveMappedTypes.types index 36f07af878b..0aa3180e171 100644 --- a/testdata/baselines/reference/submodule/conformance/recursiveMappedTypes.types +++ b/testdata/baselines/reference/submodule/conformance/recursiveMappedTypes.types @@ -30,7 +30,7 @@ type tup = [number, number, number, number]; >tup : tup function foo(arg: Circular): tup { ->foo : (arg: any) => tup +>foo : (arg: Circular) => tup >arg : any return arg; diff --git a/testdata/baselines/reference/submodule/conformance/recursiveMappedTypes.types.diff b/testdata/baselines/reference/submodule/conformance/recursiveMappedTypes.types.diff deleted file mode 100644 index dd28c24d573..00000000000 --- a/testdata/baselines/reference/submodule/conformance/recursiveMappedTypes.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.recursiveMappedTypes.types -+++ new.recursiveMappedTypes.types -@@= skipped -29, +29 lines =@@ - >tup : tup - - function foo(arg: Circular): tup { -->foo : (arg: Circular) => tup -+>foo : (arg: any) => tup - >arg : any - - return arg; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences1.types b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences1.types index 681de51a013..3ec55e77e57 100644 --- a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences1.types +++ b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences1.types @@ -184,20 +184,20 @@ type RecArray = Array>; >RecArray : RecArray declare function flat(a: RecArray): Array; ->flat : (a: RecArray) => T[] +>flat : (a: RecArray) => Array >a : RecArray declare function flat1(a: Array>): Array ->flat1 : (a: (T | T[])[]) => T[] +>flat1 : (a: Array>) => Array >a : (T | T[])[] declare function flat2(a: Array>>): Array; ->flat2 : (a: (T | (T | T[])[])[]) => T[] +>flat2 : (a: Array>>) => Array >a : (T | (T | T[])[])[] flat([1, [2, [3]]]); // number[] >flat([1, [2, [3]]]) : number[] ->flat : (a: RecArray) => T[] +>flat : (a: RecArray) => Array >[1, [2, [3]]] : (number | (number | number[])[])[] >1 : 1 >[2, [3]] : (number | number[])[] @@ -207,7 +207,7 @@ flat([1, [2, [3]]]); // number[] flat([[[0]]]); // number[] >flat([[[0]]]) : number[] ->flat : (a: RecArray) => T[] +>flat : (a: RecArray) => Array >[[[0]]] : number[][][] >[[0]] : number[][] >[0] : number[] @@ -215,7 +215,7 @@ flat([[[0]]]); // number[] flat([[[[[[[[[[[4]]]]]]]]]]]); // number[] >flat([[[[[[[[[[[4]]]]]]]]]]]) : number[] ->flat : (a: RecArray) => T[] +>flat : (a: RecArray) => Array >[[[[[[[[[[[4]]]]]]]]]]] : number[][][][][][][][][][][] >[[[[[[[[[[4]]]]]]]]]] : number[][][][][][][][][][] >[[[[[[[[[4]]]]]]]]] : number[][][][][][][][][] @@ -231,7 +231,7 @@ flat([[[[[[[[[[[4]]]]]]]]]]]); // number[] flat([1, 'a', [2]]); // (string | number)[] >flat([1, 'a', [2]]) : (string | number)[] ->flat : (a: RecArray) => T[] +>flat : (a: RecArray) => Array >[1, 'a', [2]] : (string | number | number[])[] >1 : 1 >'a' : "a" @@ -240,7 +240,7 @@ flat([1, 'a', [2]]); // (string | number)[] flat([1, [2, 'a']]); // (string | number)[] >flat([1, [2, 'a']]) : (string | number)[] ->flat : (a: RecArray) => T[] +>flat : (a: RecArray) => Array >[1, [2, 'a']] : (number | (string | number)[])[] >1 : 1 >[2, 'a'] : (string | number)[] @@ -249,7 +249,7 @@ flat([1, [2, 'a']]); // (string | number)[] flat([1, ['a']]); // Error >flat([1, ['a']]) : string[] ->flat : (a: RecArray) => T[] +>flat : (a: RecArray) => Array >[1, ['a']] : (number | string[])[] >1 : 1 >['a'] : string[] @@ -257,7 +257,7 @@ flat([1, ['a']]); // Error flat1([1, [2, [3]]]); // (number | number[])[] >flat1([1, [2, [3]]]) : (number | number[])[] ->flat1 : (a: (T | T[])[]) => T[] +>flat1 : (a: Array>) => Array >[1, [2, [3]]] : (number | (number | number[])[])[] >1 : 1 >[2, [3]] : (number | number[])[] @@ -267,7 +267,7 @@ flat1([1, [2, [3]]]); // (number | number[])[] flat1([[[0]]]); // number[][] >flat1([[[0]]]) : number[][] ->flat1 : (a: (T | T[])[]) => T[] +>flat1 : (a: Array>) => Array >[[[0]]] : number[][][] >[[0]] : number[][] >[0] : number[] @@ -275,7 +275,7 @@ flat1([[[0]]]); // number[][] flat1([1, 'a', [2]]); // (string | number)[] >flat1([1, 'a', [2]]) : (string | number)[] ->flat1 : (a: (T | T[])[]) => T[] +>flat1 : (a: Array>) => Array >[1, 'a', [2]] : (string | number | number[])[] >1 : 1 >'a' : "a" @@ -284,7 +284,7 @@ flat1([1, 'a', [2]]); // (string | number)[] flat1([1, [2, 'a']]); // (string | number)[] >flat1([1, [2, 'a']]) : (string | number)[] ->flat1 : (a: (T | T[])[]) => T[] +>flat1 : (a: Array>) => Array >[1, [2, 'a']] : (number | (string | number)[])[] >1 : 1 >[2, 'a'] : (string | number)[] @@ -293,7 +293,7 @@ flat1([1, [2, 'a']]); // (string | number)[] flat1([1, ['a']]); // Error >flat1([1, ['a']]) : string[] ->flat1 : (a: (T | T[])[]) => T[] +>flat1 : (a: Array>) => Array >[1, ['a']] : (number | string[])[] >1 : 1 >['a'] : string[] @@ -301,7 +301,7 @@ flat1([1, ['a']]); // Error flat2([1, [2, [3]]]); // number[] >flat2([1, [2, [3]]]) : number[] ->flat2 : (a: (T | (T | T[])[])[]) => T[] +>flat2 : (a: Array>>) => Array >[1, [2, [3]]] : (number | (number | number[])[])[] >1 : 1 >[2, [3]] : (number | number[])[] @@ -311,7 +311,7 @@ flat2([1, [2, [3]]]); // number[] flat2([[[0]]]); // number[] >flat2([[[0]]]) : number[] ->flat2 : (a: (T | (T | T[])[])[]) => T[] +>flat2 : (a: Array>>) => Array >[[[0]]] : number[][][] >[[0]] : number[][] >[0] : number[] @@ -319,7 +319,7 @@ flat2([[[0]]]); // number[] flat2([1, 'a', [2]]); // (string | number)[] >flat2([1, 'a', [2]]) : (string | number)[] ->flat2 : (a: (T | (T | T[])[])[]) => T[] +>flat2 : (a: Array>>) => Array >[1, 'a', [2]] : (string | number | number[])[] >1 : 1 >'a' : "a" @@ -328,7 +328,7 @@ flat2([1, 'a', [2]]); // (string | number)[] flat2([1, [2, 'a']]); // (string | number)[] >flat2([1, [2, 'a']]) : (string | number)[] ->flat2 : (a: (T | (T | T[])[])[]) => T[] +>flat2 : (a: Array>>) => Array >[1, [2, 'a']] : (number | (string | number)[])[] >1 : 1 >[2, 'a'] : (string | number)[] @@ -337,7 +337,7 @@ flat2([1, [2, 'a']]); // (string | number)[] flat2([1, ['a']]); // Error >flat2([1, ['a']]) : string[] ->flat2 : (a: (T | (T | T[])[])[]) => T[] +>flat2 : (a: Array>>) => Array >[1, ['a']] : (number | string[])[] >1 : 1 >['a'] : string[] @@ -453,9 +453,9 @@ function parse(node: Tree, index: number[] = []): HTMLUListElement { >'noopener' : "noopener" >'data-index' : string >idx.join('.') : string ->idx.join : (separator?: string | undefined) => string +>idx.join : (separator?: string) => string >idx : number[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >'.' : "." >el.textContent! : string >el.textContent : string diff --git a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences1.types.diff b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences1.types.diff deleted file mode 100644 index 6e5f2ee9993..00000000000 --- a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences1.types.diff +++ /dev/null @@ -1,174 +0,0 @@ ---- old.recursiveTypeReferences1.types -+++ new.recursiveTypeReferences1.types -@@= skipped -183, +183 lines =@@ - >RecArray : RecArray - - declare function flat(a: RecArray): Array; -->flat : (a: RecArray) => Array -+>flat : (a: RecArray) => T[] - >a : RecArray - - declare function flat1(a: Array>): Array -->flat1 : (a: Array>) => Array -+>flat1 : (a: (T | T[])[]) => T[] - >a : (T | T[])[] - - declare function flat2(a: Array>>): Array; -->flat2 : (a: Array>>) => Array -+>flat2 : (a: (T | (T | T[])[])[]) => T[] - >a : (T | (T | T[])[])[] - - flat([1, [2, [3]]]); // number[] - >flat([1, [2, [3]]]) : number[] -->flat : (a: RecArray) => Array -+>flat : (a: RecArray) => T[] - >[1, [2, [3]]] : (number | (number | number[])[])[] - >1 : 1 - >[2, [3]] : (number | number[])[] -@@= skipped -23, +23 lines =@@ - - flat([[[0]]]); // number[] - >flat([[[0]]]) : number[] -->flat : (a: RecArray) => Array -+>flat : (a: RecArray) => T[] - >[[[0]]] : number[][][] - >[[0]] : number[][] - >[0] : number[] -@@= skipped -8, +8 lines =@@ - - flat([[[[[[[[[[[4]]]]]]]]]]]); // number[] - >flat([[[[[[[[[[[4]]]]]]]]]]]) : number[] -->flat : (a: RecArray) => Array -+>flat : (a: RecArray) => T[] - >[[[[[[[[[[[4]]]]]]]]]]] : number[][][][][][][][][][][] - >[[[[[[[[[[4]]]]]]]]]] : number[][][][][][][][][][] - >[[[[[[[[[4]]]]]]]]] : number[][][][][][][][][] -@@= skipped -16, +16 lines =@@ - - flat([1, 'a', [2]]); // (string | number)[] - >flat([1, 'a', [2]]) : (string | number)[] -->flat : (a: RecArray) => Array -+>flat : (a: RecArray) => T[] - >[1, 'a', [2]] : (string | number | number[])[] - >1 : 1 - >'a' : "a" -@@= skipped -9, +9 lines =@@ - - flat([1, [2, 'a']]); // (string | number)[] - >flat([1, [2, 'a']]) : (string | number)[] -->flat : (a: RecArray) => Array -+>flat : (a: RecArray) => T[] - >[1, [2, 'a']] : (number | (string | number)[])[] - >1 : 1 - >[2, 'a'] : (string | number)[] -@@= skipped -9, +9 lines =@@ - - flat([1, ['a']]); // Error - >flat([1, ['a']]) : string[] -->flat : (a: RecArray) => Array -+>flat : (a: RecArray) => T[] - >[1, ['a']] : (number | string[])[] - >1 : 1 - >['a'] : string[] -@@= skipped -8, +8 lines =@@ - - flat1([1, [2, [3]]]); // (number | number[])[] - >flat1([1, [2, [3]]]) : (number | number[])[] -->flat1 : (a: Array>) => Array -+>flat1 : (a: (T | T[])[]) => T[] - >[1, [2, [3]]] : (number | (number | number[])[])[] - >1 : 1 - >[2, [3]] : (number | number[])[] -@@= skipped -10, +10 lines =@@ - - flat1([[[0]]]); // number[][] - >flat1([[[0]]]) : number[][] -->flat1 : (a: Array>) => Array -+>flat1 : (a: (T | T[])[]) => T[] - >[[[0]]] : number[][][] - >[[0]] : number[][] - >[0] : number[] -@@= skipped -8, +8 lines =@@ - - flat1([1, 'a', [2]]); // (string | number)[] - >flat1([1, 'a', [2]]) : (string | number)[] -->flat1 : (a: Array>) => Array -+>flat1 : (a: (T | T[])[]) => T[] - >[1, 'a', [2]] : (string | number | number[])[] - >1 : 1 - >'a' : "a" -@@= skipped -9, +9 lines =@@ - - flat1([1, [2, 'a']]); // (string | number)[] - >flat1([1, [2, 'a']]) : (string | number)[] -->flat1 : (a: Array>) => Array -+>flat1 : (a: (T | T[])[]) => T[] - >[1, [2, 'a']] : (number | (string | number)[])[] - >1 : 1 - >[2, 'a'] : (string | number)[] -@@= skipped -9, +9 lines =@@ - - flat1([1, ['a']]); // Error - >flat1([1, ['a']]) : string[] -->flat1 : (a: Array>) => Array -+>flat1 : (a: (T | T[])[]) => T[] - >[1, ['a']] : (number | string[])[] - >1 : 1 - >['a'] : string[] -@@= skipped -8, +8 lines =@@ - - flat2([1, [2, [3]]]); // number[] - >flat2([1, [2, [3]]]) : number[] -->flat2 : (a: Array>>) => Array -+>flat2 : (a: (T | (T | T[])[])[]) => T[] - >[1, [2, [3]]] : (number | (number | number[])[])[] - >1 : 1 - >[2, [3]] : (number | number[])[] -@@= skipped -10, +10 lines =@@ - - flat2([[[0]]]); // number[] - >flat2([[[0]]]) : number[] -->flat2 : (a: Array>>) => Array -+>flat2 : (a: (T | (T | T[])[])[]) => T[] - >[[[0]]] : number[][][] - >[[0]] : number[][] - >[0] : number[] -@@= skipped -8, +8 lines =@@ - - flat2([1, 'a', [2]]); // (string | number)[] - >flat2([1, 'a', [2]]) : (string | number)[] -->flat2 : (a: Array>>) => Array -+>flat2 : (a: (T | (T | T[])[])[]) => T[] - >[1, 'a', [2]] : (string | number | number[])[] - >1 : 1 - >'a' : "a" -@@= skipped -9, +9 lines =@@ - - flat2([1, [2, 'a']]); // (string | number)[] - >flat2([1, [2, 'a']]) : (string | number)[] -->flat2 : (a: Array>>) => Array -+>flat2 : (a: (T | (T | T[])[])[]) => T[] - >[1, [2, 'a']] : (number | (string | number)[])[] - >1 : 1 - >[2, 'a'] : (string | number)[] -@@= skipped -9, +9 lines =@@ - - flat2([1, ['a']]); // Error - >flat2([1, ['a']]) : string[] -->flat2 : (a: Array>>) => Array -+>flat2 : (a: (T | (T | T[])[])[]) => T[] - >[1, ['a']] : (number | string[])[] - >1 : 1 - >['a'] : string[] -@@= skipped -116, +116 lines =@@ - >'noopener' : "noopener" - >'data-index' : string - >idx.join('.') : string -->idx.join : (separator?: string) => string -+>idx.join : (separator?: string | undefined) => string - >idx : number[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >'.' : "." - >el.textContent! : string - >el.textContent : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.errors.txt b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.errors.txt index 9ca49bb9bce..d6c4574ea07 100644 --- a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.errors.txt @@ -1,5 +1,5 @@ bug39372.js(25,7): error TS2322: Type '{}' is not assignable to type 'XMLObject<{ foo: string; }>'. - Type '{}' is missing the following properties from type '{ $A: { foo?: XMLObject[] | undefined; }; $O: { foo?: ({ $$?: Record | undefined; } & { $: string; }) | undefined; }; $$?: Record | undefined; }': $A, $O + Type '{}' is missing the following properties from type '{ $A: { foo?: XMLObject[] | undefined; }; $O: { foo?: ({ $$?: Record; } & { $: string; }) | undefined; }; $$?: Record; }': $A, $O ==== bug39372.js (1 errors) ==== @@ -30,5 +30,5 @@ bug39372.js(25,7): error TS2322: Type '{}' is not assignable to type 'XMLObject< const p = {}; ~ !!! error TS2322: Type '{}' is not assignable to type 'XMLObject<{ foo: string; }>'. -!!! error TS2322: Type '{}' is missing the following properties from type '{ $A: { foo?: XMLObject[] | undefined; }; $O: { foo?: ({ $$?: Record | undefined; } & { $: string; }) | undefined; }; $$?: Record | undefined; }': $A, $O +!!! error TS2322: Type '{}' is missing the following properties from type '{ $A: { foo?: XMLObject[] | undefined; }; $O: { foo?: ({ $$?: Record; } & { $: string; }) | undefined; }; $$?: Record; }': $A, $O \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.errors.txt.diff new file mode 100644 index 00000000000..2014ff7fafe --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.errors.txt.diff @@ -0,0 +1,16 @@ +--- old.recursiveTypeReferences2.errors.txt ++++ new.recursiveTypeReferences2.errors.txt +@@= skipped -0, +0 lines =@@ + bug39372.js(25,7): error TS2322: Type '{}' is not assignable to type 'XMLObject<{ foo: string; }>'. +- Type '{}' is missing the following properties from type '{ $A: { foo?: XMLObject[] | undefined; }; $O: { foo?: ({ $$?: Record | undefined; } & { $: string; }) | undefined; }; $$?: Record | undefined; }': $A, $O ++ Type '{}' is missing the following properties from type '{ $A: { foo?: XMLObject[] | undefined; }; $O: { foo?: ({ $$?: Record; } & { $: string; }) | undefined; }; $$?: Record; }': $A, $O + + + ==== bug39372.js (1 errors) ==== +@@= skipped -29, +29 lines =@@ + const p = {}; + ~ + !!! error TS2322: Type '{}' is not assignable to type 'XMLObject<{ foo: string; }>'. +-!!! error TS2322: Type '{}' is missing the following properties from type '{ $A: { foo?: XMLObject[] | undefined; }; $O: { foo?: ({ $$?: Record | undefined; } & { $: string; }) | undefined; }; $$?: Record | undefined; }': $A, $O ++!!! error TS2322: Type '{}' is missing the following properties from type '{ $A: { foo?: XMLObject[] | undefined; }; $O: { foo?: ({ $$?: Record; } & { $: string; }) | undefined; }; $$?: Record; }': $A, $O + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/recursiveTypesWithTypeof.types b/testdata/baselines/reference/submodule/conformance/recursiveTypesWithTypeof.types index 8a2a4f5f54c..5137f1db99b 100644 --- a/testdata/baselines/reference/submodule/conformance/recursiveTypesWithTypeof.types +++ b/testdata/baselines/reference/submodule/conformance/recursiveTypesWithTypeof.types @@ -48,80 +48,80 @@ var f3: any; // None of these declarations should have any errors! // Truly recursive types var g: { x: typeof g; }; ->g : { x: any; } ->x : { x: any; } ->g : { x: any; } +>g : { x: typeof g; } +>x : { x: typeof g; } +>g : { x: typeof g; } var g: typeof g.x; ->g : { x: any; } ->g.x : { x: any; } ->g : { x: any; } ->x : { x: any; } +>g : { x: typeof g; } +>g.x : { x: typeof g; } +>g : { x: typeof g; } +>x : { x: typeof g; } var h: () => typeof h; ->h : () => any ->h : () => any +>h : () => typeof h +>h : () => typeof h var h = h(); ->h : () => any ->h() : () => any ->h : () => any +>h : () => typeof h +>h() : () => typeof h +>h : () => typeof h var i: (x: typeof i) => typeof x; ->i : (x: any) => any ->x : (x: any) => any ->i : (x: any) => any ->x : (x: any) => any +>i : (x: typeof i) => typeof x +>x : (x: typeof i) => typeof x +>i : (x: typeof i) => typeof x +>x : (x: typeof i) => typeof x var i = i(i); ->i : (x: any) => any ->i(i) : (x: any) => any ->i : (x: any) => any ->i : (x: any) => any +>i : (x: typeof i) => typeof x +>i(i) : (x: typeof i) => typeof x +>i : (x: typeof i) => typeof x +>i : (x: typeof i) => typeof x var j: (x: T) => T; ->j : (x: T) => T ->j : (x: T) => T +>j : (x: T) => T +>j : (x: T) => T >x : T var j = j(j); ->j : (x: T) => T ->j(j) : (x: T) => T ->j : (x: T) => T ->j : (x: T) => T +>j : (x: T) => T +>j(j) : (x: T) => T +>j : (x: T) => T +>j : (x: T) => T // Same as h, i, j with construct signatures var h2: new () => typeof h2; ->h2 : new () => any ->h2 : new () => any +>h2 : new () => typeof h2 +>h2 : new () => typeof h2 var h2 = new h2(); ->h2 : new () => any ->new h2() : new () => any ->h2 : new () => any +>h2 : new () => typeof h2 +>new h2() : new () => typeof h2 +>h2 : new () => typeof h2 var i2: new (x: typeof i2) => typeof x; ->i2 : new (x: any) => any ->x : new (x: any) => any ->i2 : new (x: any) => any ->x : new (x: any) => any +>i2 : new (x: typeof i2) => typeof x +>x : new (x: typeof i2) => typeof x +>i2 : new (x: typeof i2) => typeof x +>x : new (x: typeof i2) => typeof x var i2 = new i2(i2); ->i2 : new (x: any) => any ->new i2(i2) : new (x: any) => any ->i2 : new (x: any) => any ->i2 : new (x: any) => any +>i2 : new (x: typeof i2) => typeof x +>new i2(i2) : new (x: typeof i2) => typeof x +>i2 : new (x: typeof i2) => typeof x +>i2 : new (x: typeof i2) => typeof x var j2: new (x: T) => T; ->j2 : new (x: T) => T ->j2 : new (x: T) => T +>j2 : new (x: T) => T +>j2 : new (x: T) => T >x : T var j2 = new j2(j2); ->j2 : new (x: T) => T ->new j2(j2) : new (x: T) => T ->j2 : new (x: T) => T ->j2 : new (x: T) => T +>j2 : new (x: T) => T +>new j2(j2) : new (x: T) => T +>j2 : new (x: T) => T +>j2 : new (x: T) => T // Indexers var k: { [n: number]: typeof k;[s: string]: typeof k }; @@ -146,29 +146,29 @@ var k = k['']; // Hybrid - contains type literals as well as type arguments // These two are recursive var hy1: { x: typeof hy1 }[]; ->hy1 : { x: any[]; }[] ->x : { x: any[]; }[] ->hy1 : { x: any[]; }[] +>hy1 : { x: typeof hy1; }[] +>x : { x: typeof hy1; }[] +>hy1 : { x: typeof hy1; }[] var hy1 = hy1[0].x; ->hy1 : { x: any[]; }[] ->hy1[0].x : { x: any[]; }[] ->hy1[0] : { x: any[]; } ->hy1 : { x: any[]; }[] +>hy1 : { x: typeof hy1; }[] +>hy1[0].x : { x: typeof hy1; }[] +>hy1[0] : { x: typeof hy1; } +>hy1 : { x: typeof hy1; }[] >0 : 0 ->x : { x: any[]; }[] +>x : { x: typeof hy1; }[] var hy2: { x: Array }; ->hy2 : { x: any[]; } ->x : { x: any[]; }[] ->hy2 : { x: any[]; } +>hy2 : { x: Array; } +>x : { x: Array; }[] +>hy2 : { x: Array; } var hy2 = hy2.x[0]; ->hy2 : { x: any[]; } ->hy2.x[0] : { x: any[]; } ->hy2.x : { x: any[]; }[] ->hy2 : { x: any[]; } ->x : { x: any[]; }[] +>hy2 : { x: Array; } +>hy2.x[0] : { x: Array; } +>hy2.x : { x: Array; }[] +>hy2 : { x: Array; } +>x : { x: Array; }[] >0 : 0 interface Foo2 { } diff --git a/testdata/baselines/reference/submodule/conformance/recursiveTypesWithTypeof.types.diff b/testdata/baselines/reference/submodule/conformance/recursiveTypesWithTypeof.types.diff deleted file mode 100644 index 67d09f89273..00000000000 --- a/testdata/baselines/reference/submodule/conformance/recursiveTypesWithTypeof.types.diff +++ /dev/null @@ -1,174 +0,0 @@ ---- old.recursiveTypesWithTypeof.types -+++ new.recursiveTypesWithTypeof.types -@@= skipped -47, +47 lines =@@ - // None of these declarations should have any errors! - // Truly recursive types - var g: { x: typeof g; }; -->g : { x: typeof g; } -->x : { x: typeof g; } -->g : { x: typeof g; } -+>g : { x: any; } -+>x : { x: any; } -+>g : { x: any; } - - var g: typeof g.x; -->g : { x: typeof g; } -->g.x : { x: typeof g; } -->g : { x: typeof g; } -->x : { x: typeof g; } -+>g : { x: any; } -+>g.x : { x: any; } -+>g : { x: any; } -+>x : { x: any; } - - var h: () => typeof h; -->h : () => typeof h -->h : () => typeof h -+>h : () => any -+>h : () => any - - var h = h(); -->h : () => typeof h -->h() : () => typeof h -->h : () => typeof h -+>h : () => any -+>h() : () => any -+>h : () => any - - var i: (x: typeof i) => typeof x; -->i : (x: typeof i) => typeof x -->x : (x: typeof i) => typeof x -->i : (x: typeof i) => typeof x -->x : (x: typeof i) => typeof x -+>i : (x: any) => any -+>x : (x: any) => any -+>i : (x: any) => any -+>x : (x: any) => any - - var i = i(i); -->i : (x: typeof i) => typeof x -->i(i) : (x: typeof i) => typeof x -->i : (x: typeof i) => typeof x -->i : (x: typeof i) => typeof x -+>i : (x: any) => any -+>i(i) : (x: any) => any -+>i : (x: any) => any -+>i : (x: any) => any - - var j: (x: T) => T; -->j : (x: T) => T -->j : (x: T) => T -+>j : (x: T) => T -+>j : (x: T) => T - >x : T - - var j = j(j); -->j : (x: T) => T -->j(j) : (x: T) => T -->j : (x: T) => T -->j : (x: T) => T -+>j : (x: T) => T -+>j(j) : (x: T) => T -+>j : (x: T) => T -+>j : (x: T) => T - - // Same as h, i, j with construct signatures - var h2: new () => typeof h2; -->h2 : new () => typeof h2 -->h2 : new () => typeof h2 -+>h2 : new () => any -+>h2 : new () => any - - var h2 = new h2(); -->h2 : new () => typeof h2 -->new h2() : new () => typeof h2 -->h2 : new () => typeof h2 -+>h2 : new () => any -+>new h2() : new () => any -+>h2 : new () => any - - var i2: new (x: typeof i2) => typeof x; -->i2 : new (x: typeof i2) => typeof x -->x : new (x: typeof i2) => typeof x -->i2 : new (x: typeof i2) => typeof x -->x : new (x: typeof i2) => typeof x -+>i2 : new (x: any) => any -+>x : new (x: any) => any -+>i2 : new (x: any) => any -+>x : new (x: any) => any - - var i2 = new i2(i2); -->i2 : new (x: typeof i2) => typeof x -->new i2(i2) : new (x: typeof i2) => typeof x -->i2 : new (x: typeof i2) => typeof x -->i2 : new (x: typeof i2) => typeof x -+>i2 : new (x: any) => any -+>new i2(i2) : new (x: any) => any -+>i2 : new (x: any) => any -+>i2 : new (x: any) => any - - var j2: new (x: T) => T; -->j2 : new (x: T) => T -->j2 : new (x: T) => T -+>j2 : new (x: T) => T -+>j2 : new (x: T) => T - >x : T - - var j2 = new j2(j2); -->j2 : new (x: T) => T -->new j2(j2) : new (x: T) => T -->j2 : new (x: T) => T -->j2 : new (x: T) => T -+>j2 : new (x: T) => T -+>new j2(j2) : new (x: T) => T -+>j2 : new (x: T) => T -+>j2 : new (x: T) => T - - // Indexers - var k: { [n: number]: typeof k;[s: string]: typeof k }; -@@= skipped -98, +98 lines =@@ - // Hybrid - contains type literals as well as type arguments - // These two are recursive - var hy1: { x: typeof hy1 }[]; -->hy1 : { x: typeof hy1; }[] -->x : { x: typeof hy1; }[] -->hy1 : { x: typeof hy1; }[] -+>hy1 : { x: any[]; }[] -+>x : { x: any[]; }[] -+>hy1 : { x: any[]; }[] - - var hy1 = hy1[0].x; -->hy1 : { x: typeof hy1; }[] -->hy1[0].x : { x: typeof hy1; }[] -->hy1[0] : { x: typeof hy1; } -->hy1 : { x: typeof hy1; }[] -+>hy1 : { x: any[]; }[] -+>hy1[0].x : { x: any[]; }[] -+>hy1[0] : { x: any[]; } -+>hy1 : { x: any[]; }[] - >0 : 0 -->x : { x: typeof hy1; }[] -+>x : { x: any[]; }[] - - var hy2: { x: Array }; -->hy2 : { x: Array; } -->x : { x: Array; }[] -->hy2 : { x: Array; } -+>hy2 : { x: any[]; } -+>x : { x: any[]; }[] -+>hy2 : { x: any[]; } - - var hy2 = hy2.x[0]; -->hy2 : { x: Array; } -->hy2.x[0] : { x: Array; } -->hy2.x : { x: Array; }[] -->hy2 : { x: Array; } -->x : { x: Array; }[] -+>hy2 : { x: any[]; } -+>hy2.x[0] : { x: any[]; } -+>hy2.x : { x: any[]; }[] -+>hy2 : { x: any[]; } -+>x : { x: any[]; }[] - >0 : 0 - - interface Foo2 { } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/requireAssertsFromTypescript.types b/testdata/baselines/reference/submodule/conformance/requireAssertsFromTypescript.types index d6ca76d5479..9b84f83fcfe 100644 --- a/testdata/baselines/reference/submodule/conformance/requireAssertsFromTypescript.types +++ b/testdata/baselines/reference/submodule/conformance/requireAssertsFromTypescript.types @@ -2,14 +2,14 @@ === 38379.js === const { art } = require('./ex') ->art : (value: any, message?: string | Error | undefined) => asserts value +>art : (value: any, message?: string | Error) => asserts value >require('./ex') : typeof import("./ex") >require : any >'./ex' : "./ex" const artoo = require('./ex2') ->artoo : (value: any, message?: string | Error | undefined) => asserts value ->require('./ex2') : (value: any, message?: string | Error | undefined) => asserts value +>artoo : (value: any, message?: string | Error) => asserts value +>require('./ex2') : (value: any, message?: string | Error) => asserts value >require : any >'./ex2' : "./ex2" @@ -19,7 +19,7 @@ let x = 1 art(x) >art(x) : void ->art : (value: any, message?: string | Error | undefined) => asserts value +>art : (value: any, message?: string | Error) => asserts value >x : number let y = 1 @@ -28,22 +28,22 @@ let y = 1 artoo(y) >artoo(y) : void ->artoo : (value: any, message?: string | Error | undefined) => asserts value +>artoo : (value: any, message?: string | Error) => asserts value >y : number === ex.d.ts === // based on assert in @types/node export function art(value: any, message?: string | Error): asserts value; ->art : (value: any, message?: string | Error | undefined) => asserts value +>art : (value: any, message?: string | Error) => asserts value >value : any >message : string | Error | undefined === ex2.d.ts === declare function art(value: any, message?: string | Error): asserts value; ->art : (value: any, message?: string | Error | undefined) => asserts value +>art : (value: any, message?: string | Error) => asserts value >value : any >message : string | Error | undefined export = art; ->art : (value: any, message?: string | Error | undefined) => asserts value +>art : (value: any, message?: string | Error) => asserts value diff --git a/testdata/baselines/reference/submodule/conformance/requireAssertsFromTypescript.types.diff b/testdata/baselines/reference/submodule/conformance/requireAssertsFromTypescript.types.diff deleted file mode 100644 index 2b195e38faa..00000000000 --- a/testdata/baselines/reference/submodule/conformance/requireAssertsFromTypescript.types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.requireAssertsFromTypescript.types -+++ new.requireAssertsFromTypescript.types -@@= skipped -1, +1 lines =@@ - - === 38379.js === - const { art } = require('./ex') -->art : (value: any, message?: string | Error) => asserts value -+>art : (value: any, message?: string | Error | undefined) => asserts value - >require('./ex') : typeof import("./ex") - >require : any - >'./ex' : "./ex" - - const artoo = require('./ex2') -->artoo : (value: any, message?: string | Error) => asserts value -->require('./ex2') : (value: any, message?: string | Error) => asserts value -+>artoo : (value: any, message?: string | Error | undefined) => asserts value -+>require('./ex2') : (value: any, message?: string | Error | undefined) => asserts value - >require : any - >'./ex2' : "./ex2" - -@@= skipped -17, +17 lines =@@ - - art(x) - >art(x) : void -->art : (value: any, message?: string | Error) => asserts value -+>art : (value: any, message?: string | Error | undefined) => asserts value - >x : number - - let y = 1 -@@= skipped -9, +9 lines =@@ - - artoo(y) - >artoo(y) : void -->artoo : (value: any, message?: string | Error) => asserts value -+>artoo : (value: any, message?: string | Error | undefined) => asserts value - >y : number - - === ex.d.ts === - // based on assert in @types/node - export function art(value: any, message?: string | Error): asserts value; -->art : (value: any, message?: string | Error) => asserts value -+>art : (value: any, message?: string | Error | undefined) => asserts value - >value : any - >message : string | Error | undefined - - === ex2.d.ts === - declare function art(value: any, message?: string | Error): asserts value; -->art : (value: any, message?: string | Error) => asserts value -+>art : (value: any, message?: string | Error | undefined) => asserts value - >value : any - >message : string | Error | undefined - - export = art; -->art : (value: any, message?: string | Error) => asserts value -+>art : (value: any, message?: string | Error | undefined) => asserts value diff --git a/testdata/baselines/reference/submodule/conformance/restParametersWithArrayTypeAnnotations.types b/testdata/baselines/reference/submodule/conformance/restParametersWithArrayTypeAnnotations.types index 9554293de8f..bbcd3de76b2 100644 --- a/testdata/baselines/reference/submodule/conformance/restParametersWithArrayTypeAnnotations.types +++ b/testdata/baselines/reference/submodule/conformance/restParametersWithArrayTypeAnnotations.types @@ -73,18 +73,18 @@ var b = { function foo2(...x: Array) { } ->foo2 : (...x: string[]) => void +>foo2 : (...x: Array) => void >x : string[] var f3 = function foo(...x: Array) { } ->f3 : (...x: string[]) => void ->function foo(...x: Array) { } : (...x: string[]) => void ->foo : (...x: string[]) => void +>f3 : (...x: Array) => void +>function foo(...x: Array) { } : (...x: Array) => void +>foo : (...x: Array) => void >x : string[] var f4 = (...x: Array, ...y: Array) => { } ->f4 : (...x: string[], ...y: string[]) => void ->(...x: Array, ...y: Array) => { } : (...x: string[], ...y: string[]) => void +>f4 : (...x: Array, ...y: Array) => void +>(...x: Array, ...y: Array) => { } : (...x: Array, ...y: Array) => void >x : string[] >y : string[] @@ -92,7 +92,7 @@ class C2 { >C2 : C2 foo(...x: Array) { } ->foo : (...x: string[]) => void +>foo : (...x: Array) => void >x : string[] } @@ -101,39 +101,39 @@ interface I2 { >x : string[] foo(...x: Array, ...y: Array); ->foo : (...x: string[], ...y: string[]) => any +>foo : (...x: Array, ...y: Array) => any >x : string[] >y : string[] } var a2: { ->a2 : { (...x: string[]): any; foo(...x: string[]): any; } +>a2 : { (...x: Array): any; foo(...x: Array): any; } (...x: Array); >x : string[] foo(...x: Array); ->foo : (...x: string[]) => any +>foo : (...x: Array) => any >x : string[] } var b2 = { ->b2 : { foo(...x: string[]): void; a: (...x: string[], ...y: string[]) => void; b: (...x: string[]) => void; } ->{ foo(...x: Array) { }, a: function foo(...x: Array, ...y: Array) { }, b: (...x: Array) => { }} : { foo(...x: string[]): void; a: (...x: string[], ...y: string[]) => void; b: (...x: string[]) => void; } +>b2 : { foo(...x: Array): void; a: (...x: Array, ...y: Array) => void; b: (...x: Array) => void; } +>{ foo(...x: Array) { }, a: function foo(...x: Array, ...y: Array) { }, b: (...x: Array) => { }} : { foo(...x: Array): void; a: (...x: Array, ...y: Array) => void; b: (...x: Array) => void; } foo(...x: Array) { }, ->foo : (...x: string[]) => void +>foo : (...x: Array) => void >x : string[] a: function foo(...x: Array, ...y: Array) { }, ->a : (...x: string[], ...y: string[]) => void ->function foo(...x: Array, ...y: Array) { } : (...x: string[], ...y: string[]) => void ->foo : (...x: string[], ...y: string[]) => void +>a : (...x: Array, ...y: Array) => void +>function foo(...x: Array, ...y: Array) { } : (...x: Array, ...y: Array) => void +>foo : (...x: Array, ...y: Array) => void >x : string[] >y : string[] b: (...x: Array) => { } ->b : (...x: string[]) => void ->(...x: Array) => { } : (...x: string[]) => void +>b : (...x: Array) => void +>(...x: Array) => { } : (...x: Array) => void >x : string[] } diff --git a/testdata/baselines/reference/submodule/conformance/restParametersWithArrayTypeAnnotations.types.diff b/testdata/baselines/reference/submodule/conformance/restParametersWithArrayTypeAnnotations.types.diff deleted file mode 100644 index 0b402911751..00000000000 --- a/testdata/baselines/reference/submodule/conformance/restParametersWithArrayTypeAnnotations.types.diff +++ /dev/null @@ -1,87 +0,0 @@ ---- old.restParametersWithArrayTypeAnnotations.types -+++ new.restParametersWithArrayTypeAnnotations.types -@@= skipped -72, +72 lines =@@ - - - function foo2(...x: Array) { } -->foo2 : (...x: Array) => void -+>foo2 : (...x: string[]) => void - >x : string[] - - var f3 = function foo(...x: Array) { } -->f3 : (...x: Array) => void -->function foo(...x: Array) { } : (...x: Array) => void -->foo : (...x: Array) => void -+>f3 : (...x: string[]) => void -+>function foo(...x: Array) { } : (...x: string[]) => void -+>foo : (...x: string[]) => void - >x : string[] - - var f4 = (...x: Array, ...y: Array) => { } -->f4 : (...x: Array, ...y: Array) => void -->(...x: Array, ...y: Array) => { } : (...x: Array, ...y: Array) => void -+>f4 : (...x: string[], ...y: string[]) => void -+>(...x: Array, ...y: Array) => { } : (...x: string[], ...y: string[]) => void - >x : string[] - >y : string[] - -@@= skipped -19, +19 lines =@@ - >C2 : C2 - - foo(...x: Array) { } -->foo : (...x: Array) => void -+>foo : (...x: string[]) => void - >x : string[] - } - -@@= skipped -9, +9 lines =@@ - >x : string[] - - foo(...x: Array, ...y: Array); -->foo : (...x: Array, ...y: Array) => any -+>foo : (...x: string[], ...y: string[]) => any - >x : string[] - >y : string[] - } - - var a2: { -->a2 : { (...x: Array): any; foo(...x: Array): any; } -+>a2 : { (...x: string[]): any; foo(...x: string[]): any; } - - (...x: Array); - >x : string[] - - foo(...x: Array); -->foo : (...x: Array) => any -+>foo : (...x: string[]) => any - >x : string[] - } - - var b2 = { -->b2 : { foo(...x: Array): void; a: (...x: Array, ...y: Array) => void; b: (...x: Array) => void; } -->{ foo(...x: Array) { }, a: function foo(...x: Array, ...y: Array) { }, b: (...x: Array) => { }} : { foo(...x: Array): void; a: (...x: Array, ...y: Array) => void; b: (...x: Array) => void; } -+>b2 : { foo(...x: string[]): void; a: (...x: string[], ...y: string[]) => void; b: (...x: string[]) => void; } -+>{ foo(...x: Array) { }, a: function foo(...x: Array, ...y: Array) { }, b: (...x: Array) => { }} : { foo(...x: string[]): void; a: (...x: string[], ...y: string[]) => void; b: (...x: string[]) => void; } - - foo(...x: Array) { }, -->foo : (...x: Array) => void -+>foo : (...x: string[]) => void - >x : string[] - - a: function foo(...x: Array, ...y: Array) { }, -->a : (...x: Array, ...y: Array) => void -->function foo(...x: Array, ...y: Array) { } : (...x: Array, ...y: Array) => void -->foo : (...x: Array, ...y: Array) => void -+>a : (...x: string[], ...y: string[]) => void -+>function foo(...x: Array, ...y: Array) { } : (...x: string[], ...y: string[]) => void -+>foo : (...x: string[], ...y: string[]) => void - >x : string[] - >y : string[] - - b: (...x: Array) => { } -->b : (...x: Array) => void -->(...x: Array) => { } : (...x: Array) => void -+>b : (...x: string[]) => void -+>(...x: Array) => { } : (...x: string[]) => void - >x : string[] - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/restPropertyWithBindingPattern(target=es2015).types b/testdata/baselines/reference/submodule/conformance/restPropertyWithBindingPattern(target=es2015).types index 2d4b7e0e27c..34f6734a86e 100644 --- a/testdata/baselines/reference/submodule/conformance/restPropertyWithBindingPattern(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/restPropertyWithBindingPattern(target=es2015).types @@ -19,14 +19,14 @@ ({...[]} = {}); >({...[]} = {}) : {} >{...[]} = {} : {} ->{...[]} : { [n: number]: never; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): undefined; push(...items: never[]): number; concat(...items: ConcatArray[]): never[]; concat(...items: ConcatArray[]): never[]; join(separator?: string | undefined): string; reverse(): never[]; shift(): undefined; slice(start?: number | undefined, end?: number | undefined): never[]; sort(compareFn?: ((a: never, b: never) => number) | undefined): []; splice(start: number, deleteCount?: number | undefined): never[]; splice(start: number, deleteCount: number, ...items: never[]): never[]; unshift(...items: never[]): number; indexOf(searchElement: never, fromIndex?: number | undefined): number; lastIndexOf(searchElement: never, fromIndex?: number | undefined): number; every(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; some(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: never, index: number, array: never[]) => void, thisArg?: any): void; map(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any): U[]; filter(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): never[]; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduce(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduceRight(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; find(predicate: (value: never, index: number, obj: never[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): undefined; findIndex(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): number; fill(value: never, start?: number | undefined, end?: number | undefined): []; copyWithin(target: number, start: number, end?: number | undefined): []; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, never]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; length: 0; } +>{...[]} : { [n: number]: never; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): undefined; push(...items: never[]): number; concat(...items: ConcatArray[]): never[]; concat(...items: ConcatArray[]): never[]; join(separator?: string): string; reverse(): never[]; shift(): undefined; slice(start?: number, end?: number): never[]; sort(compareFn?: ((a: never, b: never) => number) | undefined): []; splice(start: number, deleteCount?: number): never[]; splice(start: number, deleteCount: number, ...items: never[]): never[]; unshift(...items: never[]): number; indexOf(searchElement: never, fromIndex?: number): number; lastIndexOf(searchElement: never, fromIndex?: number): number; every(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; some(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: never, index: number, array: never[]) => void, thisArg?: any): void; map(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any): U[]; filter(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): never[]; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduce(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduceRight(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; find(predicate: (value: never, index: number, obj: never[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): undefined; findIndex(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): number; fill(value: never, start?: number, end?: number): []; copyWithin(target: number, start: number, end?: number): []; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, never]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; length: 0; } >[] : [] >{} : {} ({...([])} = {}); >({...([])} = {}) : {} >{...([])} = {} : {} ->{...([])} : { [n: number]: never; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): undefined; push(...items: never[]): number; concat(...items: ConcatArray[]): never[]; concat(...items: ConcatArray[]): never[]; join(separator?: string | undefined): string; reverse(): never[]; shift(): undefined; slice(start?: number | undefined, end?: number | undefined): never[]; sort(compareFn?: ((a: never, b: never) => number) | undefined): []; splice(start: number, deleteCount?: number | undefined): never[]; splice(start: number, deleteCount: number, ...items: never[]): never[]; unshift(...items: never[]): number; indexOf(searchElement: never, fromIndex?: number | undefined): number; lastIndexOf(searchElement: never, fromIndex?: number | undefined): number; every(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; some(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: never, index: number, array: never[]) => void, thisArg?: any): void; map(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any): U[]; filter(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): never[]; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduce(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduceRight(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; find(predicate: (value: never, index: number, obj: never[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): undefined; findIndex(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): number; fill(value: never, start?: number | undefined, end?: number | undefined): []; copyWithin(target: number, start: number, end?: number | undefined): []; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, never]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; length: 0; } +>{...([])} : { [n: number]: never; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): undefined; push(...items: never[]): number; concat(...items: ConcatArray[]): never[]; concat(...items: ConcatArray[]): never[]; join(separator?: string): string; reverse(): never[]; shift(): undefined; slice(start?: number, end?: number): never[]; sort(compareFn?: ((a: never, b: never) => number) | undefined): []; splice(start: number, deleteCount?: number): never[]; splice(start: number, deleteCount: number, ...items: never[]): never[]; unshift(...items: never[]): number; indexOf(searchElement: never, fromIndex?: number): number; lastIndexOf(searchElement: never, fromIndex?: number): number; every(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; some(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: never, index: number, array: never[]) => void, thisArg?: any): void; map(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any): U[]; filter(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): never[]; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduce(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduceRight(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; find(predicate: (value: never, index: number, obj: never[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): undefined; findIndex(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): number; fill(value: never, start?: number, end?: number): []; copyWithin(target: number, start: number, end?: number): []; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, never]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; length: 0; } >([]) : [] >[] : [] >{} : {} diff --git a/testdata/baselines/reference/submodule/conformance/restPropertyWithBindingPattern(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/restPropertyWithBindingPattern(target=es2015).types.diff deleted file mode 100644 index 07c08fb5ed9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/restPropertyWithBindingPattern(target=es2015).types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.restPropertyWithBindingPattern(target=es2015).types -+++ new.restPropertyWithBindingPattern(target=es2015).types -@@= skipped -18, +18 lines =@@ - ({...[]} = {}); - >({...[]} = {}) : {} - >{...[]} = {} : {} -->{...[]} : { [n: number]: never; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): undefined; push(...items: never[]): number; concat(...items: ConcatArray[]): never[]; concat(...items: ConcatArray[]): never[]; join(separator?: string): string; reverse(): never[]; shift(): undefined; slice(start?: number, end?: number): never[]; sort(compareFn?: ((a: never, b: never) => number) | undefined): []; splice(start: number, deleteCount?: number): never[]; splice(start: number, deleteCount: number, ...items: never[]): never[]; unshift(...items: never[]): number; indexOf(searchElement: never, fromIndex?: number): number; lastIndexOf(searchElement: never, fromIndex?: number): number; every(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; some(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: never, index: number, array: never[]) => void, thisArg?: any): void; map(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any): U[]; filter(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): never[]; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduce(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduceRight(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; find(predicate: (value: never, index: number, obj: never[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): undefined; findIndex(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): number; fill(value: never, start?: number, end?: number): []; copyWithin(target: number, start: number, end?: number): []; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, never]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; length: 0; } -+>{...[]} : { [n: number]: never; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): undefined; push(...items: never[]): number; concat(...items: ConcatArray[]): never[]; concat(...items: ConcatArray[]): never[]; join(separator?: string | undefined): string; reverse(): never[]; shift(): undefined; slice(start?: number | undefined, end?: number | undefined): never[]; sort(compareFn?: ((a: never, b: never) => number) | undefined): []; splice(start: number, deleteCount?: number | undefined): never[]; splice(start: number, deleteCount: number, ...items: never[]): never[]; unshift(...items: never[]): number; indexOf(searchElement: never, fromIndex?: number | undefined): number; lastIndexOf(searchElement: never, fromIndex?: number | undefined): number; every(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; some(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: never, index: number, array: never[]) => void, thisArg?: any): void; map(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any): U[]; filter(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): never[]; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduce(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduceRight(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; find(predicate: (value: never, index: number, obj: never[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): undefined; findIndex(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): number; fill(value: never, start?: number | undefined, end?: number | undefined): []; copyWithin(target: number, start: number, end?: number | undefined): []; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, never]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; length: 0; } - >[] : [] - >{} : {} - - ({...([])} = {}); - >({...([])} = {}) : {} - >{...([])} = {} : {} -->{...([])} : { [n: number]: never; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; pop(): undefined; push(...items: never[]): number; concat(...items: ConcatArray[]): never[]; concat(...items: ConcatArray[]): never[]; join(separator?: string): string; reverse(): never[]; shift(): undefined; slice(start?: number, end?: number): never[]; sort(compareFn?: ((a: never, b: never) => number) | undefined): []; splice(start: number, deleteCount?: number): never[]; splice(start: number, deleteCount: number, ...items: never[]): never[]; unshift(...items: never[]): number; indexOf(searchElement: never, fromIndex?: number): number; lastIndexOf(searchElement: never, fromIndex?: number): number; every(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; some(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: never, index: number, array: never[]) => void, thisArg?: any): void; map(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any): U[]; filter(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): never[]; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduce(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduceRight(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; find(predicate: (value: never, index: number, obj: never[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): undefined; findIndex(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): number; fill(value: never, start?: number, end?: number): []; copyWithin(target: number, start: number, end?: number): []; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, never]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; length: 0; } -+>{...([])} : { [n: number]: never; toString(): string; toLocaleString(): string; toLocaleString(locales: string | string[], options?: (Intl.NumberFormatOptions & Intl.DateTimeFormatOptions) | undefined): string; pop(): undefined; push(...items: never[]): number; concat(...items: ConcatArray[]): never[]; concat(...items: ConcatArray[]): never[]; join(separator?: string | undefined): string; reverse(): never[]; shift(): undefined; slice(start?: number | undefined, end?: number | undefined): never[]; sort(compareFn?: ((a: never, b: never) => number) | undefined): []; splice(start: number, deleteCount?: number | undefined): never[]; splice(start: number, deleteCount: number, ...items: never[]): never[]; unshift(...items: never[]): number; indexOf(searchElement: never, fromIndex?: number | undefined): number; lastIndexOf(searchElement: never, fromIndex?: number | undefined): number; every(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; some(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: never, index: number, array: never[]) => void, thisArg?: any): void; map(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any): U[]; filter(predicate: (value: never, index: number, array: never[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: never, index: number, array: never[]) => unknown, thisArg?: any): never[]; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduce(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduce(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never): never; reduceRight(callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: never[]) => never, initialValue: never): never; reduceRight(callbackfn: (previousValue: U, currentValue: never, currentIndex: number, array: never[]) => U, initialValue: U): U; find(predicate: (value: never, index: number, obj: never[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): undefined; findIndex(predicate: (value: never, index: number, obj: never[]) => unknown, thisArg?: any): number; fill(value: never, start?: number | undefined, end?: number | undefined): []; copyWithin(target: number, start: number, end?: number | undefined): []; [Symbol.iterator](): ArrayIterator; entries(): ArrayIterator<[number, never]>; keys(): ArrayIterator; values(): ArrayIterator; [Symbol.unscopables]: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }; length: 0; } - >([]) : [] - >[] : [] - >{} : {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/restTuplesFromContextualTypes.types b/testdata/baselines/reference/submodule/conformance/restTuplesFromContextualTypes.types index fef5174a562..ba64642093c 100644 --- a/testdata/baselines/reference/submodule/conformance/restTuplesFromContextualTypes.types +++ b/testdata/baselines/reference/submodule/conformance/restTuplesFromContextualTypes.types @@ -53,14 +53,14 @@ declare const t1: [number, boolean, string]; >t1 : [number, boolean, string] declare function f1(cb: (...args: typeof t1) => void): void; ->f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void +>f1 : (cb: (...args: typeof t1) => void) => void >cb : (args_0: number, args_1: boolean, args_2: string) => void >args : [number, boolean, string] >t1 : [number, boolean, string] f1((a, b, c) => {}) >f1((a, b, c) => {}) : void ->f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void +>f1 : (cb: (...args: typeof t1) => void) => void >(a, b, c) => {} : (a: number, b: boolean, c: string) => void >a : number >b : boolean @@ -68,20 +68,20 @@ f1((a, b, c) => {}) f1((...x) => {}) >f1((...x) => {}) : void ->f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void +>f1 : (cb: (...args: typeof t1) => void) => void >(...x) => {} : (x_0: number, x_1: boolean, x_2: string) => void >x : [number, boolean, string] f1((a, ...x) => {}) >f1((a, ...x) => {}) : void ->f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void +>f1 : (cb: (...args: typeof t1) => void) => void >(a, ...x) => {} : (a: number, x_0: boolean, x_1: string) => void >a : number >x : [boolean, string] f1((a, b, ...x) => {}) >f1((a, b, ...x) => {}) : void ->f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void +>f1 : (cb: (...args: typeof t1) => void) => void >(a, b, ...x) => {} : (a: number, b: boolean, x_0: string) => void >a : number >b : boolean @@ -89,7 +89,7 @@ f1((a, b, ...x) => {}) f1((a, b, c, ...x) => {}) >f1((a, b, c, ...x) => {}) : void ->f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void +>f1 : (cb: (...args: typeof t1) => void) => void >(a, b, c, ...x) => {} : (a: number, b: boolean, c: string) => void >a : number >b : boolean @@ -148,14 +148,14 @@ declare const t2: [number, boolean, ...string[]]; >t2 : [number, boolean, ...string[]] declare function f2(cb: (...args: typeof t2) => void): void; ->f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void +>f2 : (cb: (...args: typeof t2) => void) => void >cb : (args_0: number, args_1: boolean, ...args: string[]) => void >args : [number, boolean, ...string[]] >t2 : [number, boolean, ...string[]] f2((a, b, c) => {}) >f2((a, b, c) => {}) : void ->f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void +>f2 : (cb: (...args: typeof t2) => void) => void >(a, b, c) => {} : (a: number, b: boolean, c: string) => void >a : number >b : boolean @@ -163,20 +163,20 @@ f2((a, b, c) => {}) f2((...x) => {}) >f2((...x) => {}) : void ->f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void +>f2 : (cb: (...args: typeof t2) => void) => void >(...x) => {} : (x_0: number, x_1: boolean, ...x: string[]) => void >x : [number, boolean, ...string[]] f2((a, ...x) => {}) >f2((a, ...x) => {}) : void ->f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void +>f2 : (cb: (...args: typeof t2) => void) => void >(a, ...x) => {} : (a: number, x_0: boolean, ...x: string[]) => void >a : number >x : [boolean, ...string[]] f2((a, b, ...x) => {}) >f2((a, b, ...x) => {}) : void ->f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void +>f2 : (cb: (...args: typeof t2) => void) => void >(a, b, ...x) => {} : (a: number, b: boolean, ...x: string[]) => void >a : number >b : boolean @@ -184,7 +184,7 @@ f2((a, b, ...x) => {}) f2((a, b, c, ...x) => {}) >f2((a, b, c, ...x) => {}) : void ->f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void +>f2 : (cb: (...args: typeof t2) => void) => void >(a, b, c, ...x) => {} : (a: number, b: boolean, c: string, ...x: string[]) => void >a : number >b : boolean @@ -248,7 +248,7 @@ declare const t3: [boolean, ...string[]]; >t3 : [boolean, ...string[]] declare function f3(cb: (x: number, ...args: typeof t3) => void): void; ->f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void +>f3 : (cb: (x: number, ...args: typeof t3) => void) => void >cb : (x: number, args_0: boolean, ...args: string[]) => void >x : number >args : [boolean, ...string[]] @@ -256,7 +256,7 @@ declare function f3(cb: (x: number, ...args: typeof t3) => void): void; f3((a, b, c) => {}) >f3((a, b, c) => {}) : void ->f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void +>f3 : (cb: (x: number, ...args: typeof t3) => void) => void >(a, b, c) => {} : (a: number, b: boolean, c: string) => void >a : number >b : boolean @@ -264,20 +264,20 @@ f3((a, b, c) => {}) f3((...x) => {}) >f3((...x) => {}) : void ->f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void +>f3 : (cb: (x: number, ...args: typeof t3) => void) => void >(...x) => {} : (x: number, x_1: boolean, ...x_2: string[]) => void >x : [x: number, boolean, ...string[]] f3((a, ...x) => {}) >f3((a, ...x) => {}) : void ->f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void +>f3 : (cb: (x: number, ...args: typeof t3) => void) => void >(a, ...x) => {} : (a: number, x_0: boolean, ...x: string[]) => void >a : number >x : [boolean, ...string[]] f3((a, b, ...x) => {}) >f3((a, b, ...x) => {}) : void ->f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void +>f3 : (cb: (x: number, ...args: typeof t3) => void) => void >(a, b, ...x) => {} : (a: number, b: boolean, ...x: string[]) => void >a : number >b : boolean @@ -285,7 +285,7 @@ f3((a, b, ...x) => {}) f3((a, b, c, ...x) => {}) >f3((a, b, c, ...x) => {}) : void ->f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void +>f3 : (cb: (x: number, ...args: typeof t3) => void) => void >(a, b, c, ...x) => {} : (a: number, b: boolean, c: string, ...x: string[]) => void >a : number >b : boolean diff --git a/testdata/baselines/reference/submodule/conformance/restTuplesFromContextualTypes.types.diff b/testdata/baselines/reference/submodule/conformance/restTuplesFromContextualTypes.types.diff deleted file mode 100644 index e06869c340b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/restTuplesFromContextualTypes.types.diff +++ /dev/null @@ -1,153 +0,0 @@ ---- old.restTuplesFromContextualTypes.types -+++ new.restTuplesFromContextualTypes.types -@@= skipped -52, +52 lines =@@ - >t1 : [number, boolean, string] - - declare function f1(cb: (...args: typeof t1) => void): void; -->f1 : (cb: (...args: typeof t1) => void) => void -+>f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void - >cb : (args_0: number, args_1: boolean, args_2: string) => void - >args : [number, boolean, string] - >t1 : [number, boolean, string] - - f1((a, b, c) => {}) - >f1((a, b, c) => {}) : void -->f1 : (cb: (...args: typeof t1) => void) => void -+>f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void - >(a, b, c) => {} : (a: number, b: boolean, c: string) => void - >a : number - >b : boolean -@@= skipped -15, +15 lines =@@ - - f1((...x) => {}) - >f1((...x) => {}) : void -->f1 : (cb: (...args: typeof t1) => void) => void -+>f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void - >(...x) => {} : (x_0: number, x_1: boolean, x_2: string) => void - >x : [number, boolean, string] - - f1((a, ...x) => {}) - >f1((a, ...x) => {}) : void -->f1 : (cb: (...args: typeof t1) => void) => void -+>f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void - >(a, ...x) => {} : (a: number, x_0: boolean, x_1: string) => void - >a : number - >x : [boolean, string] - - f1((a, b, ...x) => {}) - >f1((a, b, ...x) => {}) : void -->f1 : (cb: (...args: typeof t1) => void) => void -+>f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void - >(a, b, ...x) => {} : (a: number, b: boolean, x_0: string) => void - >a : number - >b : boolean -@@= skipped -21, +21 lines =@@ - - f1((a, b, c, ...x) => {}) - >f1((a, b, c, ...x) => {}) : void -->f1 : (cb: (...args: typeof t1) => void) => void -+>f1 : (cb: (args_0: number, args_1: boolean, args_2: string) => void) => void - >(a, b, c, ...x) => {} : (a: number, b: boolean, c: string) => void - >a : number - >b : boolean -@@= skipped -59, +59 lines =@@ - >t2 : [number, boolean, ...string[]] - - declare function f2(cb: (...args: typeof t2) => void): void; -->f2 : (cb: (...args: typeof t2) => void) => void -+>f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void - >cb : (args_0: number, args_1: boolean, ...args: string[]) => void - >args : [number, boolean, ...string[]] - >t2 : [number, boolean, ...string[]] - - f2((a, b, c) => {}) - >f2((a, b, c) => {}) : void -->f2 : (cb: (...args: typeof t2) => void) => void -+>f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void - >(a, b, c) => {} : (a: number, b: boolean, c: string) => void - >a : number - >b : boolean -@@= skipped -15, +15 lines =@@ - - f2((...x) => {}) - >f2((...x) => {}) : void -->f2 : (cb: (...args: typeof t2) => void) => void -+>f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void - >(...x) => {} : (x_0: number, x_1: boolean, ...x: string[]) => void - >x : [number, boolean, ...string[]] - - f2((a, ...x) => {}) - >f2((a, ...x) => {}) : void -->f2 : (cb: (...args: typeof t2) => void) => void -+>f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void - >(a, ...x) => {} : (a: number, x_0: boolean, ...x: string[]) => void - >a : number - >x : [boolean, ...string[]] - - f2((a, b, ...x) => {}) - >f2((a, b, ...x) => {}) : void -->f2 : (cb: (...args: typeof t2) => void) => void -+>f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void - >(a, b, ...x) => {} : (a: number, b: boolean, ...x: string[]) => void - >a : number - >b : boolean -@@= skipped -21, +21 lines =@@ - - f2((a, b, c, ...x) => {}) - >f2((a, b, c, ...x) => {}) : void -->f2 : (cb: (...args: typeof t2) => void) => void -+>f2 : (cb: (args_0: number, args_1: boolean, ...args: string[]) => void) => void - >(a, b, c, ...x) => {} : (a: number, b: boolean, c: string, ...x: string[]) => void - >a : number - >b : boolean -@@= skipped -64, +64 lines =@@ - >t3 : [boolean, ...string[]] - - declare function f3(cb: (x: number, ...args: typeof t3) => void): void; -->f3 : (cb: (x: number, ...args: typeof t3) => void) => void -+>f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void - >cb : (x: number, args_0: boolean, ...args: string[]) => void - >x : number - >args : [boolean, ...string[]] -@@= skipped -8, +8 lines =@@ - - f3((a, b, c) => {}) - >f3((a, b, c) => {}) : void -->f3 : (cb: (x: number, ...args: typeof t3) => void) => void -+>f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void - >(a, b, c) => {} : (a: number, b: boolean, c: string) => void - >a : number - >b : boolean -@@= skipped -8, +8 lines =@@ - - f3((...x) => {}) - >f3((...x) => {}) : void -->f3 : (cb: (x: number, ...args: typeof t3) => void) => void -+>f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void - >(...x) => {} : (x: number, x_1: boolean, ...x_2: string[]) => void - >x : [x: number, boolean, ...string[]] - - f3((a, ...x) => {}) - >f3((a, ...x) => {}) : void -->f3 : (cb: (x: number, ...args: typeof t3) => void) => void -+>f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void - >(a, ...x) => {} : (a: number, x_0: boolean, ...x: string[]) => void - >a : number - >x : [boolean, ...string[]] - - f3((a, b, ...x) => {}) - >f3((a, b, ...x) => {}) : void -->f3 : (cb: (x: number, ...args: typeof t3) => void) => void -+>f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void - >(a, b, ...x) => {} : (a: number, b: boolean, ...x: string[]) => void - >a : number - >b : boolean -@@= skipped -21, +21 lines =@@ - - f3((a, b, c, ...x) => {}) - >f3((a, b, c, ...x) => {}) : void -->f3 : (cb: (x: number, ...args: typeof t3) => void) => void -+>f3 : (cb: (x: number, args_0: boolean, ...args: string[]) => void) => void - >(a, b, c, ...x) => {} : (a: number, b: boolean, c: string, ...x: string[]) => void - >a : number - >b : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/returnTagTypeGuard.types b/testdata/baselines/reference/submodule/conformance/returnTagTypeGuard.types index c74bd049230..b3aa4278fb8 100644 --- a/testdata/baselines/reference/submodule/conformance/returnTagTypeGuard.types +++ b/testdata/baselines/reference/submodule/conformance/returnTagTypeGuard.types @@ -88,7 +88,7 @@ function isBoolean(value) { /** @param {boolean | number} val */ function foo(val) { ->foo : (val: number | boolean) => void +>foo : (val: boolean | number) => void >val : number | boolean if (isBoolean(val)) { diff --git a/testdata/baselines/reference/submodule/conformance/returnTagTypeGuard.types.diff b/testdata/baselines/reference/submodule/conformance/returnTagTypeGuard.types.diff deleted file mode 100644 index 3c6c7b52136..00000000000 --- a/testdata/baselines/reference/submodule/conformance/returnTagTypeGuard.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.returnTagTypeGuard.types -+++ new.returnTagTypeGuard.types -@@= skipped -87, +87 lines =@@ - - /** @param {boolean | number} val */ - function foo(val) { -->foo : (val: boolean | number) => void -+>foo : (val: number | boolean) => void - >val : number | boolean - - if (isBoolean(val)) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/sharedMemory.types b/testdata/baselines/reference/submodule/conformance/sharedMemory.types index adcb01a1bde..2ced7bebee9 100644 --- a/testdata/baselines/reference/submodule/conformance/sharedMemory.types +++ b/testdata/baselines/reference/submodule/conformance/sharedMemory.types @@ -36,9 +36,9 @@ const int64 = new BigInt64Array(sab64); const waitValue = Atomics.wait(int32, 0, 0); >waitValue : "not-equal" | "ok" | "timed-out" >Atomics.wait(int32, 0, 0) : "not-equal" | "ok" | "timed-out" ->Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; } +>Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } >Atomics : Atomics ->wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; } +>wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } >int32 : Int32Array >0 : 0 >0 : 0 @@ -47,9 +47,9 @@ const { async, value } = Atomics.waitAsync(int32, 0, 0); >async : boolean >value : "not-equal" | "timed-out" | Promise<"ok" | "timed-out"> >Atomics.waitAsync(int32, 0, 0) : { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; } ->Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } +>Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } >Atomics : Atomics ->waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } +>waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } >int32 : Int32Array >0 : 0 >0 : 0 @@ -60,9 +60,9 @@ const { async: async64, value: value64 } = Atomics.waitAsync(int64, 0, BigInt(0) >value : any >value64 : "not-equal" | "timed-out" | Promise<"ok" | "timed-out"> >Atomics.waitAsync(int64, 0, BigInt(0)) : { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; } ->Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } +>Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } >Atomics : Atomics ->waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } +>waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } >int64 : BigInt64Array >0 : 0 >BigInt(0) : bigint diff --git a/testdata/baselines/reference/submodule/conformance/sharedMemory.types.diff b/testdata/baselines/reference/submodule/conformance/sharedMemory.types.diff deleted file mode 100644 index be963241bfc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/sharedMemory.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.sharedMemory.types -+++ new.sharedMemory.types -@@= skipped -35, +35 lines =@@ - const waitValue = Atomics.wait(int32, 0, 0); - >waitValue : "not-equal" | "ok" | "timed-out" - >Atomics.wait(int32, 0, 0) : "not-equal" | "ok" | "timed-out" -->Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } -+>Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; } - >Atomics : Atomics -->wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } -+>wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "not-equal" | "ok" | "timed-out"; } - >int32 : Int32Array - >0 : 0 - >0 : 0 -@@= skipped -11, +11 lines =@@ - >async : boolean - >value : "not-equal" | "timed-out" | Promise<"ok" | "timed-out"> - >Atomics.waitAsync(int32, 0, 0) : { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; } -->Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } -+>Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } - >Atomics : Atomics -->waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } -+>waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } - >int32 : Int32Array - >0 : 0 - >0 : 0 -@@= skipped -13, +13 lines =@@ - >value : any - >value64 : "not-equal" | "timed-out" | Promise<"ok" | "timed-out"> - >Atomics.waitAsync(int64, 0, BigInt(0)) : { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; } -->Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } -+>Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } - >Atomics : Atomics -->waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } -+>waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } - >int64 : BigInt64Array - >0 : 0 - >BigInt(0) : bigint \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types b/testdata/baselines/reference/submodule/conformance/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types index 0ad39149568..f0f09df06b1 100644 --- a/testdata/baselines/reference/submodule/conformance/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types +++ b/testdata/baselines/reference/submodule/conformance/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types @@ -2,26 +2,26 @@ === specializedSignatureIsNotSubtypeOfNonSpecializedSignature.ts === function foo(x: 'a'); ->foo : (x: "a") => any +>foo : (x: 'a') => any >x : "a" function foo(x: number) { } ->foo : (x: "a") => any +>foo : (x: 'a') => any >x : number class C { >C : C foo(x: 'a'); ->foo : { (x: "a"): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: number): any; } >x : "a" foo(x: number); ->foo : { (x: "a"): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: number): any; } >x : number foo(x: any) { } ->foo : { (x: "a"): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: number): any; } >x : any } @@ -29,15 +29,15 @@ class C2 { >C2 : C2 foo(x: 'a'); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : "a" foo(x: T); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : T foo(x: any) { } ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : any } @@ -45,15 +45,15 @@ class C3 { >C3 : C3 foo(x: 'a'); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : "a" foo(x: T); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : T foo(x: any) { } ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : any } @@ -65,11 +65,11 @@ interface I { >x : number foo(x: 'a'); ->foo : { (x: "a"): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: number): any; } >x : "a" foo(x: number); ->foo : { (x: "a"): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: number): any; } >x : number } @@ -81,11 +81,11 @@ interface I2 { >x : T foo(x: 'a'); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : "a" foo(x: T); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : T } @@ -97,16 +97,16 @@ interface I3 { >x : T foo(x: 'a'); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : "a" foo(x: T); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : T } var a: { ->a : { (x: "a"): any; (x: number): any; foo(x: "a"): any; foo(x: number): any; } +>a : { (x: 'a'): any; (x: number): any; foo(x: 'a'): any; foo(x: number): any; } (x: 'a'); >x : "a" @@ -115,16 +115,16 @@ var a: { >x : number foo(x: 'a'); ->foo : { (x: "a"): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: number): any; } >x : "a" foo(x: number); ->foo : { (x: "a"): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: number): any; } >x : number } var a2: { ->a2 : { (x: "a"): any; (x: T): any; foo(x: "a"): any; foo(x: T): any; } +>a2 : { (x: 'a'): any; (x: T): any; foo(x: 'a'): any; foo(x: T): any; } (x: 'a'); >x : "a" @@ -133,16 +133,16 @@ var a2: { >x : T foo(x: 'a'); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : "a" foo(x: T); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : T } var a3: { ->a3 : { (x: "a"): any; (x: T): any; foo(x: "a"): any; foo(x: T): any; } +>a3 : { (x: 'a'): any; (x: T): any; foo(x: 'a'): any; foo(x: T): any; } (x: 'a'); >x : "a" @@ -151,11 +151,11 @@ var a3: { >x : T foo(x: 'a'); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : "a" foo(x: T); ->foo : { (x: "a"): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: T): any; } >x : T } diff --git a/testdata/baselines/reference/submodule/conformance/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types.diff b/testdata/baselines/reference/submodule/conformance/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types.diff new file mode 100644 index 00000000000..7618d7bc574 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types.diff @@ -0,0 +1,173 @@ +--- old.specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types ++++ new.specializedSignatureIsNotSubtypeOfNonSpecializedSignature.types +@@= skipped -1, +1 lines =@@ + + === specializedSignatureIsNotSubtypeOfNonSpecializedSignature.ts === + function foo(x: 'a'); +->foo : (x: "a") => any ++>foo : (x: 'a') => any + >x : "a" + + function foo(x: number) { } +->foo : (x: "a") => any ++>foo : (x: 'a') => any + >x : number + + class C { + >C : C + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: number): any; } + >x : "a" + + foo(x: number); +->foo : { (x: "a"): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: number): any; } + >x : number + + foo(x: any) { } +->foo : { (x: "a"): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: number): any; } + >x : any + } + +@@= skipped -27, +27 lines =@@ + >C2 : C2 + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : "a" + + foo(x: T); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : T + + foo(x: any) { } +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : any + } + +@@= skipped -16, +16 lines =@@ + >C3 : C3 + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : "a" + + foo(x: T); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : T + + foo(x: any) { } +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : any + } + +@@= skipped -20, +20 lines =@@ + >x : number + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: number): any; } + >x : "a" + + foo(x: number); +->foo : { (x: "a"): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: number): any; } + >x : number + } + +@@= skipped -16, +16 lines =@@ + >x : T + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : "a" + + foo(x: T); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : T + } + +@@= skipped -16, +16 lines =@@ + >x : T + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : "a" + + foo(x: T); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : T + } + + var a: { +->a : { (x: "a"): any; (x: number): any; foo(x: "a"): any; foo(x: number): any; } ++>a : { (x: 'a'): any; (x: number): any; foo(x: 'a'): any; foo(x: number): any; } + + (x: 'a'); + >x : "a" +@@= skipped -18, +18 lines =@@ + >x : number + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: number): any; } + >x : "a" + + foo(x: number); +->foo : { (x: "a"): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: number): any; } + >x : number + } + + var a2: { +->a2 : { (x: "a"): any; (x: T): any; foo(x: "a"): any; foo(x: T): any; } ++>a2 : { (x: 'a'): any; (x: T): any; foo(x: 'a'): any; foo(x: T): any; } + + (x: 'a'); + >x : "a" +@@= skipped -18, +18 lines =@@ + >x : T + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : "a" + + foo(x: T); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : T + } + + var a3: { +->a3 : { (x: "a"): any; (x: T): any; foo(x: "a"): any; foo(x: T): any; } ++>a3 : { (x: 'a'): any; (x: T): any; foo(x: 'a'): any; foo(x: T): any; } + + (x: 'a'); + >x : "a" +@@= skipped -18, +18 lines =@@ + >x : T + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : "a" + + foo(x: T); +->foo : { (x: "a"): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: T): any; } + >x : T + } diff --git a/testdata/baselines/reference/submodule/conformance/specializedSignatureIsSubtypeOfNonSpecializedSignature.types b/testdata/baselines/reference/submodule/conformance/specializedSignatureIsSubtypeOfNonSpecializedSignature.types index 0e79b65ef1a..6aa06fb8ace 100644 --- a/testdata/baselines/reference/submodule/conformance/specializedSignatureIsSubtypeOfNonSpecializedSignature.types +++ b/testdata/baselines/reference/submodule/conformance/specializedSignatureIsSubtypeOfNonSpecializedSignature.types @@ -5,30 +5,30 @@ // All the below should not be errors function foo(x: 'a'); ->foo : { (x: "a"): any; (x: string): any; } +>foo : { (x: 'a'): any; (x: string): any; } >x : "a" function foo(x: string); ->foo : { (x: "a"): any; (x: string): any; } +>foo : { (x: 'a'): any; (x: string): any; } >x : string function foo(x: any) { } ->foo : { (x: "a"): any; (x: string): any; } +>foo : { (x: 'a'): any; (x: string): any; } >x : any class C { >C : C foo(x: 'a'); ->foo : { (x: "a"): any; (x: string): any; } +>foo : { (x: 'a'): any; (x: string): any; } >x : "a" foo(x: string); ->foo : { (x: "a"): any; (x: string): any; } +>foo : { (x: 'a'): any; (x: string): any; } >x : string foo(x: any) { } ->foo : { (x: "a"): any; (x: string): any; } +>foo : { (x: 'a'): any; (x: string): any; } >x : any } @@ -36,19 +36,19 @@ class C2 { >C2 : C2 foo(x: 'a'); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : "a" foo(x: string); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : string foo(x: T); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : T foo(x: any) { } ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : any } @@ -56,19 +56,19 @@ class C3 { >C3 : C3 foo(x: 'a'); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : "a" foo(x: string); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : string foo(x: T); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : T foo(x: any) { } ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : any } @@ -83,15 +83,15 @@ interface I { >x : string foo(x: 'a'); ->foo : { (x: "a"): any; (x: string): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: number): any; } >x : "a" foo(x: string); ->foo : { (x: "a"): any; (x: string): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: number): any; } >x : string foo(x: number); ->foo : { (x: "a"): any; (x: string): any; (x: number): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: number): any; } >x : number } @@ -106,15 +106,15 @@ interface I2 { >x : string foo(x: 'a'); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : "a" foo(x: string); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : string foo(x: T); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : T } @@ -129,20 +129,20 @@ interface I3 { >x : T foo(x: 'a'); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : "a" foo(x: string); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : string foo(x: T); ->foo : { (x: "a"): any; (x: string): any; (x: T): any; } +>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } >x : T } var a: { ->a : { (x: string): any; (x: "a"): any; (x: number): any; foo(x: string): any; foo(x: "a"): any; foo(x: number): any; } +>a : { (x: string): any; (x: 'a'): any; (x: number): any; foo(x: string): any; foo(x: 'a'): any; foo(x: number): any; } (x: string); >x : string @@ -154,20 +154,20 @@ var a: { >x : number foo(x: string); ->foo : { (x: string): any; (x: "a"): any; (x: number): any; } +>foo : { (x: string): any; (x: 'a'): any; (x: number): any; } >x : string foo(x: 'a'); ->foo : { (x: string): any; (x: "a"): any; (x: number): any; } +>foo : { (x: string): any; (x: 'a'): any; (x: number): any; } >x : "a" foo(x: number); ->foo : { (x: string): any; (x: "a"): any; (x: number): any; } +>foo : { (x: string): any; (x: 'a'): any; (x: number): any; } >x : number } var a2: { ->a2 : { (x: "a"): any; (x: string): any; (x: T): any; foo(x: string): any; foo(x: "a"): any; foo(x: T): any; } +>a2 : { (x: 'a'): any; (x: string): any; (x: T): any; foo(x: string): any; foo(x: 'a'): any; foo(x: T): any; } (x: 'a'); >x : "a" @@ -179,20 +179,20 @@ var a2: { >x : T foo(x: string); ->foo : { (x: string): any; (x: "a"): any; (x: T): any; } +>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } >x : string foo(x: 'a'); ->foo : { (x: string): any; (x: "a"): any; (x: T): any; } +>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } >x : "a" foo(x: T); ->foo : { (x: string): any; (x: "a"): any; (x: T): any; } +>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } >x : T } var a3: { ->a3 : { (x: "a"): any; (x: T): any; (x: string): any; foo(x: string): any; foo(x: "a"): any; foo(x: T): any; } +>a3 : { (x: 'a'): any; (x: T): any; (x: string): any; foo(x: string): any; foo(x: 'a'): any; foo(x: T): any; } (x: 'a'); >x : "a" @@ -204,15 +204,15 @@ var a3: { >x : string foo(x: string); ->foo : { (x: string): any; (x: "a"): any; (x: T): any; } +>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } >x : string foo(x: 'a'); ->foo : { (x: string): any; (x: "a"): any; (x: T): any; } +>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } >x : "a" foo(x: T); ->foo : { (x: string): any; (x: "a"): any; (x: T): any; } +>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } >x : T } diff --git a/testdata/baselines/reference/submodule/conformance/specializedSignatureIsSubtypeOfNonSpecializedSignature.types.diff b/testdata/baselines/reference/submodule/conformance/specializedSignatureIsSubtypeOfNonSpecializedSignature.types.diff new file mode 100644 index 00000000000..d63fed8a2da --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/specializedSignatureIsSubtypeOfNonSpecializedSignature.types.diff @@ -0,0 +1,218 @@ +--- old.specializedSignatureIsSubtypeOfNonSpecializedSignature.types ++++ new.specializedSignatureIsSubtypeOfNonSpecializedSignature.types +@@= skipped -4, +4 lines =@@ + // All the below should not be errors + + function foo(x: 'a'); +->foo : { (x: "a"): any; (x: string): any; } ++>foo : { (x: 'a'): any; (x: string): any; } + >x : "a" + + function foo(x: string); +->foo : { (x: "a"): any; (x: string): any; } ++>foo : { (x: 'a'): any; (x: string): any; } + >x : string + + function foo(x: any) { } +->foo : { (x: "a"): any; (x: string): any; } ++>foo : { (x: 'a'): any; (x: string): any; } + >x : any + + class C { + >C : C + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: string): any; } ++>foo : { (x: 'a'): any; (x: string): any; } + >x : "a" + + foo(x: string); +->foo : { (x: "a"): any; (x: string): any; } ++>foo : { (x: 'a'): any; (x: string): any; } + >x : string + + foo(x: any) { } +->foo : { (x: "a"): any; (x: string): any; } ++>foo : { (x: 'a'): any; (x: string): any; } + >x : any + } + +@@= skipped -31, +31 lines =@@ + >C2 : C2 + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : "a" + + foo(x: string); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : string + + foo(x: T); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : T + + foo(x: any) { } +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : any + } + +@@= skipped -20, +20 lines =@@ + >C3 : C3 + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : "a" + + foo(x: string); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : string + + foo(x: T); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : T + + foo(x: any) { } +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : any + } + +@@= skipped -27, +27 lines =@@ + >x : string + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: string): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: number): any; } + >x : "a" + + foo(x: string); +->foo : { (x: "a"): any; (x: string): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: number): any; } + >x : string + + foo(x: number); +->foo : { (x: "a"): any; (x: string): any; (x: number): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: number): any; } + >x : number + } + +@@= skipped -23, +23 lines =@@ + >x : string + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : "a" + + foo(x: string); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : string + + foo(x: T); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : T + } + +@@= skipped -23, +23 lines =@@ + >x : T + + foo(x: 'a'); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : "a" + + foo(x: string); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : string + + foo(x: T); +->foo : { (x: "a"): any; (x: string): any; (x: T): any; } ++>foo : { (x: 'a'): any; (x: string): any; (x: T): any; } + >x : T + } + + var a: { +->a : { (x: string): any; (x: "a"): any; (x: number): any; foo(x: string): any; foo(x: "a"): any; foo(x: number): any; } ++>a : { (x: string): any; (x: 'a'): any; (x: number): any; foo(x: string): any; foo(x: 'a'): any; foo(x: number): any; } + + (x: string); + >x : string +@@= skipped -25, +25 lines =@@ + >x : number + + foo(x: string); +->foo : { (x: string): any; (x: "a"): any; (x: number): any; } ++>foo : { (x: string): any; (x: 'a'): any; (x: number): any; } + >x : string + + foo(x: 'a'); +->foo : { (x: string): any; (x: "a"): any; (x: number): any; } ++>foo : { (x: string): any; (x: 'a'): any; (x: number): any; } + >x : "a" + + foo(x: number); +->foo : { (x: string): any; (x: "a"): any; (x: number): any; } ++>foo : { (x: string): any; (x: 'a'): any; (x: number): any; } + >x : number + } + + var a2: { +->a2 : { (x: "a"): any; (x: string): any; (x: T): any; foo(x: string): any; foo(x: "a"): any; foo(x: T): any; } ++>a2 : { (x: 'a'): any; (x: string): any; (x: T): any; foo(x: string): any; foo(x: 'a'): any; foo(x: T): any; } + + (x: 'a'); + >x : "a" +@@= skipped -25, +25 lines =@@ + >x : T + + foo(x: string); +->foo : { (x: string): any; (x: "a"): any; (x: T): any; } ++>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } + >x : string + + foo(x: 'a'); +->foo : { (x: string): any; (x: "a"): any; (x: T): any; } ++>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } + >x : "a" + + foo(x: T); +->foo : { (x: string): any; (x: "a"): any; (x: T): any; } ++>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } + >x : T + } + + var a3: { +->a3 : { (x: "a"): any; (x: T): any; (x: string): any; foo(x: string): any; foo(x: "a"): any; foo(x: T): any; } ++>a3 : { (x: 'a'): any; (x: T): any; (x: string): any; foo(x: string): any; foo(x: 'a'): any; foo(x: T): any; } + + (x: 'a'); + >x : "a" +@@= skipped -25, +25 lines =@@ + >x : string + + foo(x: string); +->foo : { (x: string): any; (x: "a"): any; (x: T): any; } ++>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } + >x : string + + foo(x: 'a'); +->foo : { (x: string): any; (x: "a"): any; (x: T): any; } ++>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } + >x : "a" + + foo(x: T); +->foo : { (x: string): any; (x: "a"): any; (x: T): any; } ++>foo : { (x: string): any; (x: 'a'): any; (x: T): any; } + >x : T + } diff --git a/testdata/baselines/reference/submodule/conformance/specializedSignatureWithOptional.types b/testdata/baselines/reference/submodule/conformance/specializedSignatureWithOptional.types index 669321ff6ee..e6800e9e7b0 100644 --- a/testdata/baselines/reference/submodule/conformance/specializedSignatureWithOptional.types +++ b/testdata/baselines/reference/submodule/conformance/specializedSignatureWithOptional.types @@ -2,10 +2,10 @@ === specializedSignatureWithOptional.ts === declare function f(x?: "hi"): void; ->f : { (x?: "hi" | undefined): void; (x?: string | undefined): void; } +>f : { (x?: "hi"): void; (x?: string): void; } >x : "hi" | undefined declare function f(x?: string): void; ->f : { (x?: "hi" | undefined): void; (x?: string | undefined): void; } +>f : { (x?: "hi"): void; (x?: string): void; } >x : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/specializedSignatureWithOptional.types.diff b/testdata/baselines/reference/submodule/conformance/specializedSignatureWithOptional.types.diff deleted file mode 100644 index d6d1aee916d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/specializedSignatureWithOptional.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.specializedSignatureWithOptional.types -+++ new.specializedSignatureWithOptional.types -@@= skipped -1, +1 lines =@@ - - === specializedSignatureWithOptional.ts === - declare function f(x?: "hi"): void; -->f : { (x?: "hi"): void; (x?: string): void; } -+>f : { (x?: "hi" | undefined): void; (x?: string | undefined): void; } - >x : "hi" | undefined - - declare function f(x?: string): void; -->f : { (x?: "hi"): void; (x?: string): void; } -+>f : { (x?: "hi" | undefined): void; (x?: string | undefined): void; } - >x : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/spreadDuplicate.types b/testdata/baselines/reference/submodule/conformance/spreadDuplicate.types index 3789c59e9b7..3e455095417 100644 --- a/testdata/baselines/reference/submodule/conformance/spreadDuplicate.types +++ b/testdata/baselines/reference/submodule/conformance/spreadDuplicate.types @@ -8,7 +8,7 @@ declare let a: { a: string }; >a : string declare let b: { a?: string }; ->b : { a?: string | undefined; } +>b : { a?: string; } >a : string | undefined declare let c: { a: string | undefined }; @@ -34,7 +34,7 @@ let b1 = { a: 123, ...b }; // string | number >{ a: 123, ...b } : { a: string | number; } >a : number >123 : 123 ->b : { a?: string | undefined; } +>b : { a?: string; } let c1 = { a: 123, ...c }; // string | undefined (Error) >c1 : { a: string | undefined; } @@ -66,10 +66,10 @@ let b2 = { a: 123, ...(t ? b : {}) }; // string | number >{ a: 123, ...(t ? b : {}) } : { a: string | number; } >a : number >123 : 123 ->(t ? b : {}) : { a?: string | undefined; } ->t ? b : {} : { a?: string | undefined; } +>(t ? b : {}) : { a?: string; } +>t ? b : {} : { a?: string; } >t : boolean ->b : { a?: string | undefined; } +>b : { a?: string; } >{} : {} let c2 = { a: 123, ...(t ? c : {}) }; // string | number diff --git a/testdata/baselines/reference/submodule/conformance/spreadDuplicate.types.diff b/testdata/baselines/reference/submodule/conformance/spreadDuplicate.types.diff deleted file mode 100644 index 7da624f6fe9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/spreadDuplicate.types.diff +++ /dev/null @@ -1,34 +0,0 @@ ---- old.spreadDuplicate.types -+++ new.spreadDuplicate.types -@@= skipped -7, +7 lines =@@ - >a : string - - declare let b: { a?: string }; -->b : { a?: string; } -+>b : { a?: string | undefined; } - >a : string | undefined - - declare let c: { a: string | undefined }; -@@= skipped -26, +26 lines =@@ - >{ a: 123, ...b } : { a: string | number; } - >a : number - >123 : 123 -->b : { a?: string; } -+>b : { a?: string | undefined; } - - let c1 = { a: 123, ...c }; // string | undefined (Error) - >c1 : { a: string | undefined; } -@@= skipped -32, +32 lines =@@ - >{ a: 123, ...(t ? b : {}) } : { a: string | number; } - >a : number - >123 : 123 -->(t ? b : {}) : { a?: string; } -->t ? b : {} : { a?: string; } -+>(t ? b : {}) : { a?: string | undefined; } -+>t ? b : {} : { a?: string | undefined; } - >t : boolean -->b : { a?: string; } -+>b : { a?: string | undefined; } - >{} : {} - - let c2 = { a: 123, ...(t ? c : {}) }; // string | number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/spreadObjectOrFalsy.types b/testdata/baselines/reference/submodule/conformance/spreadObjectOrFalsy.types index fef37c9a6a3..39977e26d85 100644 --- a/testdata/baselines/reference/submodule/conformance/spreadObjectOrFalsy.types +++ b/testdata/baselines/reference/submodule/conformance/spreadObjectOrFalsy.types @@ -58,7 +58,7 @@ function f6(a: T) { // Repro from #46976 function g1(a: A) { ->g1 : (a: A) => T +>g1 : (a: A) => T >z : T >a : A @@ -99,11 +99,11 @@ class Foo { this.data.toLocaleLowerCase(); >this.data.toLocaleLowerCase() : string ->this.data.toLocaleLowerCase : (locales?: string | string[] | undefined) => string +>this.data.toLocaleLowerCase : (locales?: string | string[]) => string >this.data : T >this : this & DatafulFoo >data : T ->toLocaleLowerCase : (locales?: string | string[] | undefined) => string +>toLocaleLowerCase : (locales?: string | string[]) => string } } hasData(): this is DatafulFoo { diff --git a/testdata/baselines/reference/submodule/conformance/spreadObjectOrFalsy.types.diff b/testdata/baselines/reference/submodule/conformance/spreadObjectOrFalsy.types.diff deleted file mode 100644 index 64a745c0986..00000000000 --- a/testdata/baselines/reference/submodule/conformance/spreadObjectOrFalsy.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.spreadObjectOrFalsy.types -+++ new.spreadObjectOrFalsy.types -@@= skipped -57, +57 lines =@@ - // Repro from #46976 - - function g1(a: A) { -->g1 : (a: A) => T -+>g1 : (a: A) => T - >z : T - >a : A - -@@= skipped -41, +41 lines =@@ - - this.data.toLocaleLowerCase(); - >this.data.toLocaleLowerCase() : string -->this.data.toLocaleLowerCase : (locales?: string | string[]) => string -+>this.data.toLocaleLowerCase : (locales?: string | string[] | undefined) => string - >this.data : T - >this : this & DatafulFoo - >data : T -->toLocaleLowerCase : (locales?: string | string[]) => string -+>toLocaleLowerCase : (locales?: string | string[] | undefined) => string - } - } - hasData(): this is DatafulFoo { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/spreadOverwritesProperty.types b/testdata/baselines/reference/submodule/conformance/spreadOverwritesProperty.types index 319f04d0f0d..b8ac216cca5 100644 --- a/testdata/baselines/reference/submodule/conformance/spreadOverwritesProperty.types +++ b/testdata/baselines/reference/submodule/conformance/spreadOverwritesProperty.types @@ -8,7 +8,7 @@ declare var ab: { a: number, b: number }; >b : number declare var abq: { a: number, b?: number }; ->abq : { a: number; b?: number | undefined; } +>abq : { a: number; b?: number; } >a : number >b : number | undefined @@ -30,7 +30,7 @@ var unused3 = { b: 1, ...abq } >{ b: 1, ...abq } : { a: number; b: number; } >b : number >1 : 1 ->abq : { a: number; b?: number | undefined; } +>abq : { a: number; b?: number; } function g(obj: { x: number | undefined }) { >g : (obj: { x: number | undefined; }) => { x: number | undefined; } diff --git a/testdata/baselines/reference/submodule/conformance/spreadOverwritesProperty.types.diff b/testdata/baselines/reference/submodule/conformance/spreadOverwritesProperty.types.diff deleted file mode 100644 index 66bd4830307..00000000000 --- a/testdata/baselines/reference/submodule/conformance/spreadOverwritesProperty.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.spreadOverwritesProperty.types -+++ new.spreadOverwritesProperty.types -@@= skipped -7, +7 lines =@@ - >b : number - - declare var abq: { a: number, b?: number }; -->abq : { a: number; b?: number; } -+>abq : { a: number; b?: number | undefined; } - >a : number - >b : number | undefined - -@@= skipped -22, +22 lines =@@ - >{ b: 1, ...abq } : { a: number; b: number; } - >b : number - >1 : 1 -->abq : { a: number; b?: number; } -+>abq : { a: number; b?: number | undefined; } - - function g(obj: { x: number | undefined }) { - >g : (obj: { x: number | undefined; }) => { x: number | undefined; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/spreadOverwritesPropertyStrict.types b/testdata/baselines/reference/submodule/conformance/spreadOverwritesPropertyStrict.types index 68b1caa5e73..3276279838d 100644 --- a/testdata/baselines/reference/submodule/conformance/spreadOverwritesPropertyStrict.types +++ b/testdata/baselines/reference/submodule/conformance/spreadOverwritesPropertyStrict.types @@ -7,7 +7,7 @@ declare var ab: { a: number, b: number }; >b : number declare var abq: { a: number, b?: number }; ->abq : { a: number; b?: number | undefined; } +>abq : { a: number; b?: number; } >a : number >b : number | undefined @@ -29,7 +29,7 @@ var unused3 = { b: 1, ...abq } // ok, abq might have b: undefined >{ b: 1, ...abq } : { a: number; b: number; } >b : number >1 : 1 ->abq : { a: number; b?: number | undefined; } +>abq : { a: number; b?: number; } var unused4 = { ...ab, b: 1 } // ok, we don't care that b in ab is overwritten >unused4 : { a: number; b: number; } @@ -41,7 +41,7 @@ var unused4 = { ...ab, b: 1 } // ok, we don't care that b in ab is overwritten var unused5 = { ...abq, b: 1 } // ok >unused5 : { a: number; b: number; } >{ ...abq, b: 1 } : { a: number; b: number; } ->abq : { a: number; b?: number | undefined; } +>abq : { a: number; b?: number; } >b : number >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/spreadOverwritesPropertyStrict.types.diff b/testdata/baselines/reference/submodule/conformance/spreadOverwritesPropertyStrict.types.diff deleted file mode 100644 index 9cab2247b82..00000000000 --- a/testdata/baselines/reference/submodule/conformance/spreadOverwritesPropertyStrict.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.spreadOverwritesPropertyStrict.types -+++ new.spreadOverwritesPropertyStrict.types -@@= skipped -6, +6 lines =@@ - >b : number - - declare var abq: { a: number, b?: number }; -->abq : { a: number; b?: number; } -+>abq : { a: number; b?: number | undefined; } - >a : number - >b : number | undefined - -@@= skipped -22, +22 lines =@@ - >{ b: 1, ...abq } : { a: number; b: number; } - >b : number - >1 : 1 -->abq : { a: number; b?: number; } -+>abq : { a: number; b?: number | undefined; } - - var unused4 = { ...ab, b: 1 } // ok, we don't care that b in ab is overwritten - >unused4 : { a: number; b: number; } -@@= skipped -12, +12 lines =@@ - var unused5 = { ...abq, b: 1 } // ok - >unused5 : { a: number; b: number; } - >{ ...abq, b: 1 } : { a: number; b: number; } -->abq : { a: number; b?: number; } -+>abq : { a: number; b?: number | undefined; } - >b : number - >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/spreadUnion3.types b/testdata/baselines/reference/submodule/conformance/spreadUnion3.types index 64ecce2270b..7433305d0ac 100644 --- a/testdata/baselines/reference/submodule/conformance/spreadUnion3.types +++ b/testdata/baselines/reference/submodule/conformance/spreadUnion3.types @@ -20,7 +20,7 @@ f(undefined) function g(t?: { a: number } | null): void { ->g : (t?: { a: number; } | null | undefined) => void +>g : (t?: { a: number; } | null) => void >t : { a: number; } | null | undefined >a : number @@ -37,16 +37,16 @@ function g(t?: { a: number } | null): void { } g() >g() : void ->g : (t?: { a: number; } | null | undefined) => void +>g : (t?: { a: number; } | null) => void g(undefined) >g(undefined) : void ->g : (t?: { a: number; } | null | undefined) => void +>g : (t?: { a: number; } | null) => void >undefined : undefined g(null) >g(null) : void ->g : (t?: { a: number; } | null | undefined) => void +>g : (t?: { a: number; } | null) => void // spreading nothing but null and undefined is not allowed declare const nullAndUndefinedUnion: null | undefined; diff --git a/testdata/baselines/reference/submodule/conformance/spreadUnion3.types.diff b/testdata/baselines/reference/submodule/conformance/spreadUnion3.types.diff deleted file mode 100644 index b255cf31f05..00000000000 --- a/testdata/baselines/reference/submodule/conformance/spreadUnion3.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.spreadUnion3.types -+++ new.spreadUnion3.types -@@= skipped -19, +19 lines =@@ - - - function g(t?: { a: number } | null): void { -->g : (t?: { a: number; } | null) => void -+>g : (t?: { a: number; } | null | undefined) => void - >t : { a: number; } | null | undefined - >a : number - -@@= skipped -17, +17 lines =@@ - } - g() - >g() : void -->g : (t?: { a: number; } | null) => void -+>g : (t?: { a: number; } | null | undefined) => void - - g(undefined) - >g(undefined) : void -->g : (t?: { a: number; } | null) => void -+>g : (t?: { a: number; } | null | undefined) => void - >undefined : undefined - - g(null) - >g(null) : void -->g : (t?: { a: number; } | null) => void -+>g : (t?: { a: number; } | null | undefined) => void - - // spreading nothing but null and undefined is not allowed - declare const nullAndUndefinedUnion: null | undefined; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/spreadUnion4.types b/testdata/baselines/reference/submodule/conformance/spreadUnion4.types index 06072b7a03c..c93cc7a06ef 100644 --- a/testdata/baselines/reference/submodule/conformance/spreadUnion4.types +++ b/testdata/baselines/reference/submodule/conformance/spreadUnion4.types @@ -6,12 +6,12 @@ declare const a: { x: () => void } >x : () => void declare const b: { x?: () => void } ->b : { x?: (() => void) | undefined; } +>b : { x?: () => void; } >x : (() => void) | undefined const c = { ...a, ...b }; >c : { x: () => void; } >{ ...a, ...b } : { x: () => void; } >a : { x: () => void; } ->b : { x?: (() => void) | undefined; } +>b : { x?: () => void; } diff --git a/testdata/baselines/reference/submodule/conformance/spreadUnion4.types.diff b/testdata/baselines/reference/submodule/conformance/spreadUnion4.types.diff deleted file mode 100644 index 7ddc8dd5449..00000000000 --- a/testdata/baselines/reference/submodule/conformance/spreadUnion4.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.spreadUnion4.types -+++ new.spreadUnion4.types -@@= skipped -5, +5 lines =@@ - >x : () => void - - declare const b: { x?: () => void } -->b : { x?: () => void; } -+>b : { x?: (() => void) | undefined; } - >x : (() => void) | undefined - - const c = { ...a, ...b }; - >c : { x: () => void; } - >{ ...a, ...b } : { x: () => void; } - >a : { x: () => void; } -->b : { x?: () => void; } -+>b : { x?: (() => void) | undefined; } diff --git a/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types b/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types index 517261cefca..fefe61aa299 100644 --- a/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types +++ b/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types @@ -2,9 +2,9 @@ === staticPropertyNameConflicts.ts === const FunctionPropertyNames = { ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ->{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} as const : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ->{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } +>{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} as const : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } +>{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } name: 'name', >name : "name" @@ -45,13 +45,13 @@ class StaticName2 { static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields >[FunctionPropertyNames.name] : number >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]: number; // ok >[FunctionPropertyNames.name] : number >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -71,13 +71,13 @@ class StaticNameFn2 { static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]() {} // ok >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -98,13 +98,13 @@ class StaticLength2 { static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields >[FunctionPropertyNames.length] : number >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]: number; // ok >[FunctionPropertyNames.length] : number >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -124,13 +124,13 @@ class StaticLengthFn2 { static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]() {} // ok >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -151,13 +151,13 @@ class StaticPrototype2 { static [FunctionPropertyNames.prototype]: number; // always an error >[FunctionPropertyNames.prototype] : StaticPrototype2 >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]: string; // ok >[FunctionPropertyNames.prototype] : string >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -177,13 +177,13 @@ class StaticPrototypeFn2 { static [FunctionPropertyNames.prototype]() {} // always an error >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]() {} // ok >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -204,13 +204,13 @@ class StaticCaller2 { static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields >[FunctionPropertyNames.caller] : number >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]: string; // ok >[FunctionPropertyNames.caller] : string >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -230,13 +230,13 @@ class StaticCallerFn2 { static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]() {} // ok >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -257,13 +257,13 @@ class StaticArguments2 { static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : number >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]: string; // ok >[FunctionPropertyNames.arguments] : string >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -283,13 +283,13 @@ class StaticArgumentsFn2 { static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]() {} // ok >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -315,13 +315,13 @@ var StaticName_Anonymous2 = class { static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields >[FunctionPropertyNames.name] : number >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]: string; // ok >[FunctionPropertyNames.name] : string >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -343,13 +343,13 @@ var StaticNameFn_Anonymous2 = class { static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]() {} // ok >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -372,13 +372,13 @@ var StaticLength_Anonymous2 = class { static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields >[FunctionPropertyNames.length] : number >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]: string; // ok >[FunctionPropertyNames.length] : string >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -400,13 +400,13 @@ var StaticLengthFn_Anonymous2 = class { static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]() {} // ok >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -429,13 +429,13 @@ var StaticPrototype_Anonymous2 = class { static [FunctionPropertyNames.prototype]: number; // always an error >[FunctionPropertyNames.prototype] : StaticPrototype_Anonymous2 >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]: string; // ok >[FunctionPropertyNames.prototype] : string >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -457,13 +457,13 @@ var StaticPrototypeFn_Anonymous2 = class { static [FunctionPropertyNames.prototype]() {} // always an error >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]() {} // ok >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -486,13 +486,13 @@ var StaticCaller_Anonymous2 = class { static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields >[FunctionPropertyNames.caller] : number >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]: string; // ok >[FunctionPropertyNames.caller] : string >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -514,13 +514,13 @@ var StaticCallerFn_Anonymous2 = class { static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]() {} // ok >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -543,13 +543,13 @@ var StaticArguments_Anonymous2 = class { static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : number >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]: string; // ok >[FunctionPropertyNames.arguments] : string >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -571,13 +571,13 @@ var StaticArgumentsFn_Anonymous2 = class { static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]() {} // ok >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -605,13 +605,13 @@ export class ExportedStaticName { static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields >[FunctionPropertyNames.name] : number >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]: string; // ok >[FunctionPropertyNames.name] : string >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -635,13 +635,13 @@ export class ExportedStaticNameFn { static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]() {} // ok >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -666,13 +666,13 @@ export class ExportedStaticLength { static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields >[FunctionPropertyNames.length] : number >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]: string; // ok >[FunctionPropertyNames.length] : string >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -696,13 +696,13 @@ export class ExportedStaticLengthFn { static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]() {} // ok >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -727,13 +727,13 @@ export class ExportedStaticPrototype { static [FunctionPropertyNames.prototype]: number; // always an error >[FunctionPropertyNames.prototype] : ExportedStaticPrototype >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]: string; // ok >[FunctionPropertyNames.prototype] : string >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -757,13 +757,13 @@ export class ExportedStaticPrototypeFn { static [FunctionPropertyNames.prototype]() {} // always an error >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]() {} // ok >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -788,13 +788,13 @@ export class ExportedStaticCaller { static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields >[FunctionPropertyNames.caller] : number >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]: string; // ok >[FunctionPropertyNames.caller] : string >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -818,13 +818,13 @@ export class ExportedStaticCallerFn { static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]() {} // ok >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -849,13 +849,13 @@ export class ExportedStaticArguments { static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : number >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]: string; // ok >[FunctionPropertyNames.arguments] : string >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -879,12 +879,12 @@ export class ExportedStaticArgumentsFn { static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]() {} // ok >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } diff --git a/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types.diff b/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types.diff new file mode 100644 index 00000000000..7c4c47a345a --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types.diff @@ -0,0 +1,494 @@ +--- old.staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types ++++ new.staticPropertyNameConflicts(target=es2015,usedefineforclassfields=false).types +@@= skipped -1, +1 lines =@@ + + === staticPropertyNameConflicts.ts === + const FunctionPropertyNames = { +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +->{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} as const : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +->{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } ++>{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} as const : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } ++>{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + + name: 'name', + >name : "name" +@@= skipped -43, +43 lines =@@ + static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.name] : number + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]: number; // ok + >[FunctionPropertyNames.name] : number + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]() {} // ok + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -27, +27 lines =@@ + static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.length] : number + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]: number; // ok + >[FunctionPropertyNames.length] : number + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]() {} // ok + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -27, +27 lines =@@ + static [FunctionPropertyNames.prototype]: number; // always an error + >[FunctionPropertyNames.prototype] : StaticPrototype2 + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]: string; // ok + >[FunctionPropertyNames.prototype] : string + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.prototype]() {} // always an error + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]() {} // ok + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -27, +27 lines =@@ + static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : number + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]: string; // ok + >[FunctionPropertyNames.caller] : string + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]() {} // ok + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -27, +27 lines =@@ + static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : number + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]: string; // ok + >[FunctionPropertyNames.arguments] : string + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]() {} // ok + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -32, +32 lines =@@ + static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.name] : number + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]: string; // ok + >[FunctionPropertyNames.name] : string + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]() {} // ok + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -29, +29 lines =@@ + static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.length] : number + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]: string; // ok + >[FunctionPropertyNames.length] : string + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]() {} // ok + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -29, +29 lines =@@ + static [FunctionPropertyNames.prototype]: number; // always an error + >[FunctionPropertyNames.prototype] : StaticPrototype_Anonymous2 + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]: string; // ok + >[FunctionPropertyNames.prototype] : string + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.prototype]() {} // always an error + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]() {} // ok + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -29, +29 lines =@@ + static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : number + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]: string; // ok + >[FunctionPropertyNames.caller] : string + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]() {} // ok + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -29, +29 lines =@@ + static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : number + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]: string; // ok + >[FunctionPropertyNames.arguments] : string + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]() {} // ok + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -34, +34 lines =@@ + static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.name] : number + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]: string; // ok + >[FunctionPropertyNames.name] : string + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]() {} // ok + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -31, +31 lines =@@ + static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.length] : number + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]: string; // ok + >[FunctionPropertyNames.length] : string + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]() {} // ok + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -31, +31 lines =@@ + static [FunctionPropertyNames.prototype]: number; // always an error + >[FunctionPropertyNames.prototype] : ExportedStaticPrototype + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]: string; // ok + >[FunctionPropertyNames.prototype] : string + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.prototype]() {} // always an error + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]() {} // ok + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -31, +31 lines =@@ + static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : number + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]: string; // ok + >[FunctionPropertyNames.caller] : string + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]() {} // ok + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -31, +31 lines =@@ + static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : number + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]: string; // ok + >[FunctionPropertyNames.arguments] : string + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]() {} // ok + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types b/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types index 517261cefca..fefe61aa299 100644 --- a/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types +++ b/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types @@ -2,9 +2,9 @@ === staticPropertyNameConflicts.ts === const FunctionPropertyNames = { ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ->{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} as const : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ->{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } +>{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} as const : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } +>{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } name: 'name', >name : "name" @@ -45,13 +45,13 @@ class StaticName2 { static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields >[FunctionPropertyNames.name] : number >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]: number; // ok >[FunctionPropertyNames.name] : number >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -71,13 +71,13 @@ class StaticNameFn2 { static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]() {} // ok >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -98,13 +98,13 @@ class StaticLength2 { static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields >[FunctionPropertyNames.length] : number >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]: number; // ok >[FunctionPropertyNames.length] : number >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -124,13 +124,13 @@ class StaticLengthFn2 { static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]() {} // ok >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -151,13 +151,13 @@ class StaticPrototype2 { static [FunctionPropertyNames.prototype]: number; // always an error >[FunctionPropertyNames.prototype] : StaticPrototype2 >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]: string; // ok >[FunctionPropertyNames.prototype] : string >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -177,13 +177,13 @@ class StaticPrototypeFn2 { static [FunctionPropertyNames.prototype]() {} // always an error >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]() {} // ok >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -204,13 +204,13 @@ class StaticCaller2 { static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields >[FunctionPropertyNames.caller] : number >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]: string; // ok >[FunctionPropertyNames.caller] : string >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -230,13 +230,13 @@ class StaticCallerFn2 { static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]() {} // ok >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -257,13 +257,13 @@ class StaticArguments2 { static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : number >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]: string; // ok >[FunctionPropertyNames.arguments] : string >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -283,13 +283,13 @@ class StaticArgumentsFn2 { static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]() {} // ok >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -315,13 +315,13 @@ var StaticName_Anonymous2 = class { static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields >[FunctionPropertyNames.name] : number >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]: string; // ok >[FunctionPropertyNames.name] : string >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -343,13 +343,13 @@ var StaticNameFn_Anonymous2 = class { static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]() {} // ok >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -372,13 +372,13 @@ var StaticLength_Anonymous2 = class { static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields >[FunctionPropertyNames.length] : number >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]: string; // ok >[FunctionPropertyNames.length] : string >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -400,13 +400,13 @@ var StaticLengthFn_Anonymous2 = class { static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]() {} // ok >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -429,13 +429,13 @@ var StaticPrototype_Anonymous2 = class { static [FunctionPropertyNames.prototype]: number; // always an error >[FunctionPropertyNames.prototype] : StaticPrototype_Anonymous2 >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]: string; // ok >[FunctionPropertyNames.prototype] : string >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -457,13 +457,13 @@ var StaticPrototypeFn_Anonymous2 = class { static [FunctionPropertyNames.prototype]() {} // always an error >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]() {} // ok >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -486,13 +486,13 @@ var StaticCaller_Anonymous2 = class { static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields >[FunctionPropertyNames.caller] : number >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]: string; // ok >[FunctionPropertyNames.caller] : string >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -514,13 +514,13 @@ var StaticCallerFn_Anonymous2 = class { static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]() {} // ok >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -543,13 +543,13 @@ var StaticArguments_Anonymous2 = class { static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : number >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]: string; // ok >[FunctionPropertyNames.arguments] : string >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -571,13 +571,13 @@ var StaticArgumentsFn_Anonymous2 = class { static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]() {} // ok >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -605,13 +605,13 @@ export class ExportedStaticName { static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields >[FunctionPropertyNames.name] : number >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]: string; // ok >[FunctionPropertyNames.name] : string >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -635,13 +635,13 @@ export class ExportedStaticNameFn { static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" [FunctionPropertyNames.name]() {} // ok >[FunctionPropertyNames.name] : () => void >FunctionPropertyNames.name : "name" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >name : "name" } @@ -666,13 +666,13 @@ export class ExportedStaticLength { static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields >[FunctionPropertyNames.length] : number >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]: string; // ok >[FunctionPropertyNames.length] : string >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -696,13 +696,13 @@ export class ExportedStaticLengthFn { static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" [FunctionPropertyNames.length]() {} // ok >[FunctionPropertyNames.length] : () => void >FunctionPropertyNames.length : "length" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >length : "length" } @@ -727,13 +727,13 @@ export class ExportedStaticPrototype { static [FunctionPropertyNames.prototype]: number; // always an error >[FunctionPropertyNames.prototype] : ExportedStaticPrototype >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]: string; // ok >[FunctionPropertyNames.prototype] : string >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -757,13 +757,13 @@ export class ExportedStaticPrototypeFn { static [FunctionPropertyNames.prototype]() {} // always an error >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" [FunctionPropertyNames.prototype]() {} // ok >[FunctionPropertyNames.prototype] : () => void >FunctionPropertyNames.prototype : "prototype" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >prototype : "prototype" } @@ -788,13 +788,13 @@ export class ExportedStaticCaller { static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields >[FunctionPropertyNames.caller] : number >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]: string; // ok >[FunctionPropertyNames.caller] : string >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -818,13 +818,13 @@ export class ExportedStaticCallerFn { static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" [FunctionPropertyNames.caller]() {} // ok >[FunctionPropertyNames.caller] : () => void >FunctionPropertyNames.caller : "caller" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >caller : "caller" } @@ -849,13 +849,13 @@ export class ExportedStaticArguments { static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : number >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]: string; // ok >[FunctionPropertyNames.arguments] : string >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } @@ -879,12 +879,12 @@ export class ExportedStaticArgumentsFn { static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" [FunctionPropertyNames.arguments]() {} // ok >[FunctionPropertyNames.arguments] : () => void >FunctionPropertyNames.arguments : "arguments" ->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } >arguments : "arguments" } diff --git a/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types.diff b/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types.diff new file mode 100644 index 00000000000..0720c52a586 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types.diff @@ -0,0 +1,494 @@ +--- old.staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types ++++ new.staticPropertyNameConflicts(target=es2015,usedefineforclassfields=true).types +@@= skipped -1, +1 lines =@@ + + === staticPropertyNameConflicts.ts === + const FunctionPropertyNames = { +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +->{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} as const : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } +->{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } ++>{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} as const : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } ++>{ name: 'name', length: 'length', prototype: 'prototype', caller: 'caller', arguments: 'arguments',} : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + + name: 'name', + >name : "name" +@@= skipped -43, +43 lines =@@ + static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.name] : number + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]: number; // ok + >[FunctionPropertyNames.name] : number + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]() {} // ok + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -27, +27 lines =@@ + static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.length] : number + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]: number; // ok + >[FunctionPropertyNames.length] : number + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]() {} // ok + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -27, +27 lines =@@ + static [FunctionPropertyNames.prototype]: number; // always an error + >[FunctionPropertyNames.prototype] : StaticPrototype2 + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]: string; // ok + >[FunctionPropertyNames.prototype] : string + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.prototype]() {} // always an error + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]() {} // ok + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -27, +27 lines =@@ + static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : number + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]: string; // ok + >[FunctionPropertyNames.caller] : string + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]() {} // ok + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -27, +27 lines =@@ + static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : number + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]: string; // ok + >[FunctionPropertyNames.arguments] : string + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -26, +26 lines =@@ + static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]() {} // ok + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -32, +32 lines =@@ + static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.name] : number + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]: string; // ok + >[FunctionPropertyNames.name] : string + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]() {} // ok + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -29, +29 lines =@@ + static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.length] : number + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]: string; // ok + >[FunctionPropertyNames.length] : string + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]() {} // ok + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -29, +29 lines =@@ + static [FunctionPropertyNames.prototype]: number; // always an error + >[FunctionPropertyNames.prototype] : StaticPrototype_Anonymous2 + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]: string; // ok + >[FunctionPropertyNames.prototype] : string + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.prototype]() {} // always an error + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]() {} // ok + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -29, +29 lines =@@ + static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : number + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]: string; // ok + >[FunctionPropertyNames.caller] : string + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]() {} // ok + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -29, +29 lines =@@ + static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : number + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]: string; // ok + >[FunctionPropertyNames.arguments] : string + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -28, +28 lines =@@ + static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]() {} // ok + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -34, +34 lines =@@ + static [FunctionPropertyNames.name]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.name] : number + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]: string; // ok + >[FunctionPropertyNames.name] : string + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.name]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + + [FunctionPropertyNames.name]() {} // ok + >[FunctionPropertyNames.name] : () => void + >FunctionPropertyNames.name : "name" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >name : "name" + } + +@@= skipped -31, +31 lines =@@ + static [FunctionPropertyNames.length]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.length] : number + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]: string; // ok + >[FunctionPropertyNames.length] : string + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.length]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + + [FunctionPropertyNames.length]() {} // ok + >[FunctionPropertyNames.length] : () => void + >FunctionPropertyNames.length : "length" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >length : "length" + } + +@@= skipped -31, +31 lines =@@ + static [FunctionPropertyNames.prototype]: number; // always an error + >[FunctionPropertyNames.prototype] : ExportedStaticPrototype + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]: string; // ok + >[FunctionPropertyNames.prototype] : string + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.prototype]() {} // always an error + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + + [FunctionPropertyNames.prototype]() {} // ok + >[FunctionPropertyNames.prototype] : () => void + >FunctionPropertyNames.prototype : "prototype" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >prototype : "prototype" + } + +@@= skipped -31, +31 lines =@@ + static [FunctionPropertyNames.caller]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : number + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]: string; // ok + >[FunctionPropertyNames.caller] : string + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.caller]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + + [FunctionPropertyNames.caller]() {} // ok + >[FunctionPropertyNames.caller] : () => void + >FunctionPropertyNames.caller : "caller" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >caller : "caller" + } + +@@= skipped -31, +31 lines =@@ + static [FunctionPropertyNames.arguments]: number; // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : number + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]: string; // ok + >[FunctionPropertyNames.arguments] : string + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } + +@@= skipped -30, +30 lines =@@ + static [FunctionPropertyNames.arguments]() {} // error without useDefineForClassFields + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + + [FunctionPropertyNames.arguments]() {} // ok + >[FunctionPropertyNames.arguments] : () => void + >FunctionPropertyNames.arguments : "arguments" +->FunctionPropertyNames : { readonly name: "name"; readonly length: "length"; readonly prototype: "prototype"; readonly caller: "caller"; readonly arguments: "arguments"; } ++>FunctionPropertyNames : { readonly name: 'name'; readonly length: 'length'; readonly prototype: 'prototype'; readonly caller: 'caller'; readonly arguments: 'arguments'; } + >arguments : "arguments" + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/stringEnumLiteralTypes3.types b/testdata/baselines/reference/submodule/conformance/stringEnumLiteralTypes3.types index f33dc131388..ad7da126eb0 100644 --- a/testdata/baselines/reference/submodule/conformance/stringEnumLiteralTypes3.types +++ b/testdata/baselines/reference/submodule/conformance/stringEnumLiteralTypes3.types @@ -31,7 +31,7 @@ type UnknownYesNo = Choice.Unknown | Choice.Yes | Choice.No; >Choice : any function f1(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f1 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f1 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -59,7 +59,7 @@ function f1(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f2(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f2 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f2 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -87,7 +87,7 @@ function f2(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f3(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f3 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f3 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -115,7 +115,7 @@ function f3(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f4(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f4 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f4 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -143,7 +143,7 @@ function f4(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f5(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f5 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f5 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -235,7 +235,7 @@ function f5(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f6(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f6 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f6 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -327,7 +327,7 @@ function f6(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f7(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { ->f7 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void +>f7 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void >a : Choice.Yes >b : YesNo >c : UnknownYesNo @@ -415,7 +415,7 @@ function f7(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { } function f10(x: Yes): Yes { ->f10 : (x: Choice.Yes) => Choice.Yes +>f10 : (x: Yes) => Yes >x : Choice.Yes switch (x) { diff --git a/testdata/baselines/reference/submodule/conformance/stringEnumLiteralTypes3.types.diff b/testdata/baselines/reference/submodule/conformance/stringEnumLiteralTypes3.types.diff deleted file mode 100644 index 7aef69c3cf9..00000000000 --- a/testdata/baselines/reference/submodule/conformance/stringEnumLiteralTypes3.types.diff +++ /dev/null @@ -1,74 +0,0 @@ ---- old.stringEnumLiteralTypes3.types -+++ new.stringEnumLiteralTypes3.types -@@= skipped -30, +30 lines =@@ - >Choice : any - - function f1(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f1 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f1 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -28, +28 lines =@@ - } - - function f2(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f2 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f2 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -28, +28 lines =@@ - } - - function f3(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f3 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f3 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -28, +28 lines =@@ - } - - function f4(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f4 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f4 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -28, +28 lines =@@ - } - - function f5(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f5 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f5 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -92, +92 lines =@@ - } - - function f6(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f6 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f6 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -92, +92 lines =@@ - } - - function f7(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { -->f7 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -+>f7 : (a: Choice.Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void - >a : Choice.Yes - >b : YesNo - >c : UnknownYesNo -@@= skipped -88, +88 lines =@@ - } - - function f10(x: Yes): Yes { -->f10 : (x: Yes) => Yes -+>f10 : (x: Choice.Yes) => Choice.Yes - >x : Choice.Yes - - switch (x) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralType.types b/testdata/baselines/reference/submodule/conformance/stringLiteralType.types index 224ca2d5f47..51a036aaeb9 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralType.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralType.types @@ -5,14 +5,14 @@ var x: 'hi'; >x : "hi" function f(x: 'hi'); ->f : { (x: "hi"): any; (x: string): any; } +>f : { (x: 'hi'): any; (x: string): any; } >x : "hi" function f(x: string); ->f : { (x: "hi"): any; (x: string): any; } +>f : { (x: 'hi'): any; (x: string): any; } >x : string function f(x: any) { ->f : { (x: "hi"): any; (x: string): any; } +>f : { (x: 'hi'): any; (x: string): any; } >x : any } diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralType.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralType.types.diff new file mode 100644 index 00000000000..33166b849de --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralType.types.diff @@ -0,0 +1,20 @@ +--- old.stringLiteralType.types ++++ new.stringLiteralType.types +@@= skipped -4, +4 lines =@@ + >x : "hi" + + function f(x: 'hi'); +->f : { (x: "hi"): any; (x: string): any; } ++>f : { (x: 'hi'): any; (x: string): any; } + >x : "hi" + + function f(x: string); +->f : { (x: "hi"): any; (x: string): any; } ++>f : { (x: 'hi'): any; (x: string): any; } + >x : string + + function f(x: any) { +->f : { (x: "hi"): any; (x: string): any; } ++>f : { (x: 'hi'): any; (x: string): any; } + >x : any + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypeIsSubtypeOfString.types b/testdata/baselines/reference/submodule/conformance/stringLiteralTypeIsSubtypeOfString.types index 4fcd43b453a..824901a8442 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypeIsSubtypeOfString.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypeIsSubtypeOfString.types @@ -5,113 +5,113 @@ // ok function f1(x: 'a'); ->f1 : { (x: "a"): any; (x: string): any; } +>f1 : { (x: 'a'): any; (x: string): any; } >x : "a" function f1(x: string); ->f1 : { (x: "a"): any; (x: string): any; } +>f1 : { (x: 'a'): any; (x: string): any; } >x : string function f1(x: string) { } ->f1 : { (x: "a"): any; (x: string): any; } +>f1 : { (x: 'a'): any; (x: string): any; } >x : string // ok function f2(x: 'a'); ->f2 : { (x: "a"): any; (x: any): any; } +>f2 : { (x: 'a'): any; (x: any): any; } >x : "a" function f2(x: any); ->f2 : { (x: "a"): any; (x: any): any; } +>f2 : { (x: 'a'): any; (x: any): any; } >x : any function f2(x: any) { } ->f2 : { (x: "a"): any; (x: any): any; } +>f2 : { (x: 'a'): any; (x: any): any; } >x : any // errors function f3(x: 'a'); ->f3 : { (x: "a"): any; (x: Object): any; } +>f3 : { (x: 'a'): any; (x: Object): any; } >x : "a" function f3(x: Object); ->f3 : { (x: "a"): any; (x: Object): any; } +>f3 : { (x: 'a'): any; (x: Object): any; } >x : Object function f3(x: any) { } ->f3 : { (x: "a"): any; (x: Object): any; } +>f3 : { (x: 'a'): any; (x: Object): any; } >x : any function f4(x: 'a'); ->f4 : { (x: "a"): any; (x: {}): any; } +>f4 : { (x: 'a'): any; (x: {}): any; } >x : "a" function f4(x: {}); ->f4 : { (x: "a"): any; (x: {}): any; } +>f4 : { (x: 'a'): any; (x: {}): any; } >x : {} function f4(x: any) { } ->f4 : { (x: "a"): any; (x: {}): any; } +>f4 : { (x: 'a'): any; (x: {}): any; } >x : any function f5(x: 'a'); ->f5 : { (x: "a"): any; (x: number): any; } +>f5 : { (x: 'a'): any; (x: number): any; } >x : "a" function f5(x: number); ->f5 : { (x: "a"): any; (x: number): any; } +>f5 : { (x: 'a'): any; (x: number): any; } >x : number function f5(x: any) { } ->f5 : { (x: "a"): any; (x: number): any; } +>f5 : { (x: 'a'): any; (x: number): any; } >x : any function f6(x: 'a'); ->f6 : { (x: "a"): any; (x: boolean): any; } +>f6 : { (x: 'a'): any; (x: boolean): any; } >x : "a" function f6(x: boolean); ->f6 : { (x: "a"): any; (x: boolean): any; } +>f6 : { (x: 'a'): any; (x: boolean): any; } >x : boolean function f6(x: any) { } ->f6 : { (x: "a"): any; (x: boolean): any; } +>f6 : { (x: 'a'): any; (x: boolean): any; } >x : any function f7(x: 'a'); ->f7 : { (x: "a"): any; (x: Date): any; } +>f7 : { (x: 'a'): any; (x: Date): any; } >x : "a" function f7(x: Date); ->f7 : { (x: "a"): any; (x: Date): any; } +>f7 : { (x: 'a'): any; (x: Date): any; } >x : Date function f7(x: any) { } ->f7 : { (x: "a"): any; (x: Date): any; } +>f7 : { (x: 'a'): any; (x: Date): any; } >x : any function f8(x: 'a'); ->f8 : { (x: "a"): any; (x: RegExp): any; } +>f8 : { (x: 'a'): any; (x: RegExp): any; } >x : "a" function f8(x: RegExp); ->f8 : { (x: "a"): any; (x: RegExp): any; } +>f8 : { (x: 'a'): any; (x: RegExp): any; } >x : RegExp function f8(x: any) { } ->f8 : { (x: "a"): any; (x: RegExp): any; } +>f8 : { (x: 'a'): any; (x: RegExp): any; } >x : any function f9(x: 'a'); ->f9 : { (x: "a"): any; (x: () => {}): any; } +>f9 : { (x: 'a'): any; (x: () => {}): any; } >x : "a" function f9(x: () => {}); ->f9 : { (x: "a"): any; (x: () => {}): any; } +>f9 : { (x: 'a'): any; (x: () => {}): any; } >x : () => {} function f9(x: any) { } ->f9 : { (x: "a"): any; (x: () => {}): any; } +>f9 : { (x: 'a'): any; (x: () => {}): any; } >x : any class C implements String { @@ -206,15 +206,15 @@ class C implements String { // BUG 831846 function f10(x: 'a'); ->f10 : { (x: "a"): any; (x: C): any; } +>f10 : { (x: 'a'): any; (x: C): any; } >x : "a" function f10(x: C); ->f10 : { (x: "a"): any; (x: C): any; } +>f10 : { (x: 'a'): any; (x: C): any; } >x : C function f10(x: any) { } ->f10 : { (x: "a"): any; (x: C): any; } +>f10 : { (x: 'a'): any; (x: C): any; } >x : any interface I extends String { @@ -224,39 +224,39 @@ interface I extends String { // BUG 831846 function f11(x: 'a'); ->f11 : { (x: "a"): any; (x: I): any; } +>f11 : { (x: 'a'): any; (x: I): any; } >x : "a" function f11(x: I); ->f11 : { (x: "a"): any; (x: I): any; } +>f11 : { (x: 'a'): any; (x: I): any; } >x : I function f11(x: any) { } ->f11 : { (x: "a"): any; (x: I): any; } +>f11 : { (x: 'a'): any; (x: I): any; } >x : any function f12(x: 'a'); ->f12 : { (x: "a"): any; (x: T): any; } +>f12 : { (x: 'a'): any; (x: T): any; } >x : "a" function f12(x: T); ->f12 : { (x: "a"): any; (x: T): any; } +>f12 : { (x: 'a'): any; (x: T): any; } >x : T function f12(x: any) { } ->f12 : { (x: "a"): any; (x: T): any; } +>f12 : { (x: 'a'): any; (x: T): any; } >x : any function f13(x: 'a'); ->f13 : { (x: "a"): any; (x: T): any; } +>f13 : { (x: 'a'): any; (x: T): any; } >x : "a" function f13(x: T); ->f13 : { (x: "a"): any; (x: T): any; } +>f13 : { (x: 'a'): any; (x: T): any; } >x : T function f13(x: any) { } ->f13 : { (x: "a"): any; (x: T): any; } +>f13 : { (x: 'a'): any; (x: T): any; } >x : any enum E { A } @@ -264,38 +264,38 @@ enum E { A } >A : E.A function f14(x: 'a'); ->f14 : { (x: "a"): any; (x: E): any; } +>f14 : { (x: 'a'): any; (x: E): any; } >x : "a" function f14(x: E); ->f14 : { (x: "a"): any; (x: E): any; } +>f14 : { (x: 'a'): any; (x: E): any; } >x : E function f14(x: any) { } ->f14 : { (x: "a"): any; (x: E): any; } +>f14 : { (x: 'a'): any; (x: E): any; } >x : any function f15(x: 'a'); ->f15 : { (x: "a"): any; (x: U): any; } +>f15 : { (x: 'a'): any; (x: U): any; } >x : "a" function f15(x: U); ->f15 : { (x: "a"): any; (x: U): any; } +>f15 : { (x: 'a'): any; (x: U): any; } >x : U function f15(x: any) { } ->f15 : { (x: "a"): any; (x: U): any; } +>f15 : { (x: 'a'): any; (x: U): any; } >x : any function f16(x: 'a'); ->f16 : { (x: "a"): any; (x: U): any; } +>f16 : { (x: 'a'): any; (x: U): any; } >x : "a" function f16(x: U); ->f16 : { (x: "a"): any; (x: U): any; } +>f16 : { (x: 'a'): any; (x: U): any; } >x : U function f16(x: any) { } ->f16 : { (x: "a"): any; (x: U): any; } +>f16 : { (x: 'a'): any; (x: U): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypeIsSubtypeOfString.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralTypeIsSubtypeOfString.types.diff index 924c1d5938e..148d7168148 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypeIsSubtypeOfString.types.diff +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypeIsSubtypeOfString.types.diff @@ -1,68 +1,258 @@ --- old.stringLiteralTypeIsSubtypeOfString.types +++ new.stringLiteralTypeIsSubtypeOfString.types -@@= skipped -235, +235 lines =@@ +@@= skipped -4, +4 lines =@@ + + // ok + function f1(x: 'a'); +->f1 : { (x: "a"): any; (x: string): any; } ++>f1 : { (x: 'a'): any; (x: string): any; } + >x : "a" + + function f1(x: string); +->f1 : { (x: "a"): any; (x: string): any; } ++>f1 : { (x: 'a'): any; (x: string): any; } + >x : string + + function f1(x: string) { } +->f1 : { (x: "a"): any; (x: string): any; } ++>f1 : { (x: 'a'): any; (x: string): any; } + >x : string + + // ok + function f2(x: 'a'); +->f2 : { (x: "a"): any; (x: any): any; } ++>f2 : { (x: 'a'): any; (x: any): any; } + >x : "a" + + function f2(x: any); +->f2 : { (x: "a"): any; (x: any): any; } ++>f2 : { (x: 'a'): any; (x: any): any; } + >x : any + + function f2(x: any) { } +->f2 : { (x: "a"): any; (x: any): any; } ++>f2 : { (x: 'a'): any; (x: any): any; } + >x : any + + // errors + function f3(x: 'a'); +->f3 : { (x: "a"): any; (x: Object): any; } ++>f3 : { (x: 'a'): any; (x: Object): any; } + >x : "a" + + function f3(x: Object); +->f3 : { (x: "a"): any; (x: Object): any; } ++>f3 : { (x: 'a'): any; (x: Object): any; } + >x : Object + + function f3(x: any) { } +->f3 : { (x: "a"): any; (x: Object): any; } ++>f3 : { (x: 'a'): any; (x: Object): any; } + >x : any + + function f4(x: 'a'); +->f4 : { (x: "a"): any; (x: {}): any; } ++>f4 : { (x: 'a'): any; (x: {}): any; } + >x : "a" + + function f4(x: {}); +->f4 : { (x: "a"): any; (x: {}): any; } ++>f4 : { (x: 'a'): any; (x: {}): any; } + >x : {} + + function f4(x: any) { } +->f4 : { (x: "a"): any; (x: {}): any; } ++>f4 : { (x: 'a'): any; (x: {}): any; } + >x : any + + function f5(x: 'a'); +->f5 : { (x: "a"): any; (x: number): any; } ++>f5 : { (x: 'a'): any; (x: number): any; } + >x : "a" + + function f5(x: number); +->f5 : { (x: "a"): any; (x: number): any; } ++>f5 : { (x: 'a'): any; (x: number): any; } + >x : number + + function f5(x: any) { } +->f5 : { (x: "a"): any; (x: number): any; } ++>f5 : { (x: 'a'): any; (x: number): any; } + >x : any + + function f6(x: 'a'); +->f6 : { (x: "a"): any; (x: boolean): any; } ++>f6 : { (x: 'a'): any; (x: boolean): any; } + >x : "a" + + function f6(x: boolean); +->f6 : { (x: "a"): any; (x: boolean): any; } ++>f6 : { (x: 'a'): any; (x: boolean): any; } + >x : boolean + + function f6(x: any) { } +->f6 : { (x: "a"): any; (x: boolean): any; } ++>f6 : { (x: 'a'): any; (x: boolean): any; } + >x : any + + function f7(x: 'a'); +->f7 : { (x: "a"): any; (x: Date): any; } ++>f7 : { (x: 'a'): any; (x: Date): any; } + >x : "a" + + function f7(x: Date); +->f7 : { (x: "a"): any; (x: Date): any; } ++>f7 : { (x: 'a'): any; (x: Date): any; } + >x : Date + + function f7(x: any) { } +->f7 : { (x: "a"): any; (x: Date): any; } ++>f7 : { (x: 'a'): any; (x: Date): any; } + >x : any + + function f8(x: 'a'); +->f8 : { (x: "a"): any; (x: RegExp): any; } ++>f8 : { (x: 'a'): any; (x: RegExp): any; } + >x : "a" + + function f8(x: RegExp); +->f8 : { (x: "a"): any; (x: RegExp): any; } ++>f8 : { (x: 'a'): any; (x: RegExp): any; } + >x : RegExp + + function f8(x: any) { } +->f8 : { (x: "a"): any; (x: RegExp): any; } ++>f8 : { (x: 'a'): any; (x: RegExp): any; } + >x : any + + function f9(x: 'a'); +->f9 : { (x: "a"): any; (x: () => {}): any; } ++>f9 : { (x: 'a'): any; (x: () => {}): any; } + >x : "a" + + function f9(x: () => {}); +->f9 : { (x: "a"): any; (x: () => {}): any; } ++>f9 : { (x: 'a'): any; (x: () => {}): any; } + >x : () => {} + + function f9(x: any) { } +->f9 : { (x: "a"): any; (x: () => {}): any; } ++>f9 : { (x: 'a'): any; (x: () => {}): any; } + >x : any + + class C implements String { +@@= skipped -201, +201 lines =@@ + + // BUG 831846 + function f10(x: 'a'); +->f10 : { (x: "a"): any; (x: C): any; } ++>f10 : { (x: 'a'): any; (x: C): any; } + >x : "a" + + function f10(x: C); +->f10 : { (x: "a"): any; (x: C): any; } ++>f10 : { (x: 'a'): any; (x: C): any; } + >x : C + + function f10(x: any) { } +->f10 : { (x: "a"): any; (x: C): any; } ++>f10 : { (x: 'a'): any; (x: C): any; } + >x : any + + interface I extends String { +@@= skipped -18, +18 lines =@@ + + // BUG 831846 + function f11(x: 'a'); +->f11 : { (x: "a"): any; (x: I): any; } ++>f11 : { (x: 'a'): any; (x: I): any; } + >x : "a" + + function f11(x: I); +->f11 : { (x: "a"): any; (x: I): any; } ++>f11 : { (x: 'a'): any; (x: I): any; } + >x : I + + function f11(x: any) { } +->f11 : { (x: "a"): any; (x: I): any; } ++>f11 : { (x: 'a'): any; (x: I): any; } >x : any function f12(x: 'a'); ->f12 : { (x: "a"): any; (x: T_1): any; } -+>f12 : { (x: "a"): any; (x: T): any; } ++>f12 : { (x: 'a'): any; (x: T): any; } >x : "a" function f12(x: T); ->f12 : { (x: "a"): any; (x: T): any; } -+>f12 : { (x: "a"): any; (x: T): any; } ++>f12 : { (x: 'a'): any; (x: T): any; } >x : T function f12(x: any) { } ->f12 : { (x: "a"): any; (x: T_1): any; } -+>f12 : { (x: "a"): any; (x: T): any; } ++>f12 : { (x: 'a'): any; (x: T): any; } >x : any function f13(x: 'a'); ->f13 : { (x: "a"): any; (x: T_1): any; } -+>f13 : { (x: "a"): any; (x: T): any; } ++>f13 : { (x: 'a'): any; (x: T): any; } >x : "a" function f13(x: T); ->f13 : { (x: "a"): any; (x: T): any; } -+>f13 : { (x: "a"): any; (x: T): any; } ++>f13 : { (x: 'a'): any; (x: T): any; } >x : T function f13(x: any) { } ->f13 : { (x: "a"): any; (x: T_1): any; } -+>f13 : { (x: "a"): any; (x: T): any; } ++>f13 : { (x: 'a'): any; (x: T): any; } >x : any enum E { A } @@= skipped -40, +40 lines =@@ + >A : E.A + + function f14(x: 'a'); +->f14 : { (x: "a"): any; (x: E): any; } ++>f14 : { (x: 'a'): any; (x: E): any; } + >x : "a" + + function f14(x: E); +->f14 : { (x: "a"): any; (x: E): any; } ++>f14 : { (x: 'a'): any; (x: E): any; } + >x : E + + function f14(x: any) { } +->f14 : { (x: "a"): any; (x: E): any; } ++>f14 : { (x: 'a'): any; (x: E): any; } >x : any function f15(x: 'a'); ->f15 : { (x: "a"): any; (x: U_1): any; } -+>f15 : { (x: "a"): any; (x: U): any; } ++>f15 : { (x: 'a'): any; (x: U): any; } >x : "a" function f15(x: U); ->f15 : { (x: "a"): any; (x: U): any; } -+>f15 : { (x: "a"): any; (x: U): any; } ++>f15 : { (x: 'a'): any; (x: U): any; } >x : U function f15(x: any) { } ->f15 : { (x: "a"): any; (x: U_1): any; } -+>f15 : { (x: "a"): any; (x: U): any; } ++>f15 : { (x: 'a'): any; (x: U): any; } >x : any function f16(x: 'a'); ->f16 : { (x: "a"): any; (x: U_1): any; } -+>f16 : { (x: "a"): any; (x: U): any; } ++>f16 : { (x: 'a'): any; (x: U): any; } >x : "a" function f16(x: U); ->f16 : { (x: "a"): any; (x: U): any; } -+>f16 : { (x: "a"): any; (x: U): any; } ++>f16 : { (x: 'a'): any; (x: U): any; } >x : U function f16(x: any) { } ->f16 : { (x: "a"): any; (x: U_1): any; } -+>f16 : { (x: "a"): any; (x: U): any; } ++>f16 : { (x: 'a'): any; (x: U): any; } >x : any diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTags03.types b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTags03.types index cb13c657a33..02a820a2ab8 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTags03.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTags03.types @@ -30,17 +30,17 @@ interface B extends Entity { // That way, we can avoid the need to look for a compatible overload // signature and simply check compatibility with the implementation. function hasKind(entity: Entity, kind: "A" | "A"): entity is A; ->hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } +>hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } >entity : Entity >kind : "A" function hasKind(entity: Entity, kind: "B" | "B"): entity is B; ->hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } +>hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } >entity : Entity >kind : "B" function hasKind(entity: Entity, kind: Kind): entity is Entity { ->hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } +>hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } >entity : Entity >kind : Kind @@ -67,7 +67,7 @@ let x: A = { if (hasKind(x, "A")) { >hasKind(x, "A") : boolean ->hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } +>hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } >x : A >"A" : "A" @@ -84,7 +84,7 @@ else { if (!hasKind(x, "B")) { >!hasKind(x, "B") : boolean >hasKind(x, "B") : boolean ->hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } +>hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } >x : A >"B" : "B" diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTags03.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTags03.types.diff deleted file mode 100644 index 085dbcf5362..00000000000 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTags03.types.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.stringLiteralTypesAsTags03.types -+++ new.stringLiteralTypesAsTags03.types -@@= skipped -29, +29 lines =@@ - // That way, we can avoid the need to look for a compatible overload - // signature and simply check compatibility with the implementation. - function hasKind(entity: Entity, kind: "A" | "A"): entity is A; -->hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } -+>hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } - >entity : Entity - >kind : "A" - - function hasKind(entity: Entity, kind: "B" | "B"): entity is B; -->hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } -+>hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } - >entity : Entity - >kind : "B" - - function hasKind(entity: Entity, kind: Kind): entity is Entity { -->hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } -+>hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } - >entity : Entity - >kind : Kind - -@@= skipped -37, +37 lines =@@ - - if (hasKind(x, "A")) { - >hasKind(x, "A") : boolean -->hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } -+>hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } - >x : A - >"A" : "A" - -@@= skipped -17, +17 lines =@@ - if (!hasKind(x, "B")) { - >!hasKind(x, "B") : boolean - >hasKind(x, "B") : boolean -->hasKind : { (entity: Entity, kind: "A" | "A"): entity is A; (entity: Entity, kind: "B" | "B"): entity is B; } -+>hasKind : { (entity: Entity, kind: "A"): entity is A; (entity: Entity, kind: "B"): entity is B; } - >x : A - >"B" : "B" diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint01.types b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint01.types index 5120782a4d0..5032cb63e9e 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint01.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint01.types @@ -11,7 +11,7 @@ function foo(f: (x: T) => T) { } function bar(f: (x: T) => T) { ->bar : (f: (x: T) => T) => (x: T) => T +>bar : (f: (x: T) => T) => (x: T) => T >f : (x: T) => T >x : T @@ -51,7 +51,7 @@ let gResult = g("foo"); let h = bar(x => x); >h : (x: "bar" | "foo") => "bar" | "foo" >bar(x => x) : (x: "bar" | "foo") => "bar" | "foo" ->bar : (f: (x: T) => T) => (x: T) => T +>bar : (f: (x: T) => T) => (x: T) => T >x => x : (x: "bar" | "foo") => "bar" | "foo" >x : "bar" | "foo" >x : "bar" | "foo" diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint01.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint01.types.diff deleted file mode 100644 index e812da2a5f5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint01.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.stringLiteralTypesAsTypeParameterConstraint01.types -+++ new.stringLiteralTypesAsTypeParameterConstraint01.types -@@= skipped -10, +10 lines =@@ - } - - function bar(f: (x: T) => T) { -->bar : (f: (x: T) => T) => (x: T) => T -+>bar : (f: (x: T) => T) => (x: T) => T - >f : (x: T) => T - >x : T - -@@= skipped -40, +40 lines =@@ - let h = bar(x => x); - >h : (x: "bar" | "foo") => "bar" | "foo" - >bar(x => x) : (x: "bar" | "foo") => "bar" | "foo" -->bar : (f: (x: T) => T) => (x: T) => T -+>bar : (f: (x: T) => T) => (x: T) => T - >x => x : (x: "bar" | "foo") => "bar" | "foo" - >x : "bar" | "foo" - >x : "bar" | "foo" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint02.types b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint02.types index d65dc54ed3c..a89ef3564e6 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint02.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint02.types @@ -14,7 +14,7 @@ let f = foo((y: "foo" | "bar") => y === "foo" ? y : "foo"); >f : (x: "foo") => "foo" >foo((y: "foo" | "bar") => y === "foo" ? y : "foo") : (x: "foo") => "foo" >foo : (f: (x: T) => T) => (x: T) => T ->(y: "foo" | "bar") => y === "foo" ? y : "foo" : (y: "bar" | "foo") => "foo" +>(y: "foo" | "bar") => y === "foo" ? y : "foo" : (y: "foo" | "bar") => "foo" >y : "bar" | "foo" >y === "foo" ? y : "foo" : "foo" >y === "foo" : boolean diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint02.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint02.types.diff deleted file mode 100644 index 9f75fc86cbd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesAsTypeParameterConstraint02.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.stringLiteralTypesAsTypeParameterConstraint02.types -+++ new.stringLiteralTypesAsTypeParameterConstraint02.types -@@= skipped -13, +13 lines =@@ - >f : (x: "foo") => "foo" - >foo((y: "foo" | "bar") => y === "foo" ? y : "foo") : (x: "foo") => "foo" - >foo : (f: (x: T) => T) => (x: T) => T -->(y: "foo" | "bar") => y === "foo" ? y : "foo" : (y: "foo" | "bar") => "foo" -+>(y: "foo" | "bar") => y === "foo" ? y : "foo" : (y: "bar" | "foo") => "foo" - >y : "bar" | "foo" - >y === "foo" ? y : "foo" : "foo" - >y === "foo" : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures.types b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures.types index b0a5fcc7063..f09c2ef3c0c 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures.types @@ -4,18 +4,18 @@ // String literal types are only valid in overload signatures function foo(x: 'hi') { } ->foo : (x: "hi") => void +>foo : (x: 'hi') => void >x : "hi" var f = function foo(x: 'hi') { } ->f : (x: "hi") => void ->function foo(x: 'hi') { } : (x: "hi") => void ->foo : (x: "hi") => void +>f : (x: 'hi') => void +>function foo(x: 'hi') { } : (x: 'hi') => void +>foo : (x: 'hi') => void >x : "hi" var f2 = (x: 'hi', y: 'hi') => { } ->f2 : (x: "hi", y: "hi") => void ->(x: 'hi', y: 'hi') => { } : (x: "hi", y: "hi") => void +>f2 : (x: 'hi', y: 'hi') => void +>(x: 'hi', y: 'hi') => { } : (x: 'hi', y: 'hi') => void >x : "hi" >y : "hi" @@ -23,7 +23,7 @@ class C { >C : C foo(x: 'hi') { } ->foo : (x: "hi") => void +>foo : (x: 'hi') => void >x : "hi" } @@ -32,40 +32,40 @@ interface I { >x : "hi" foo(x: 'hi', y: 'hi'); ->foo : (x: "hi", y: "hi") => any +>foo : (x: 'hi', y: 'hi') => any >x : "hi" >y : "hi" } var a: { ->a : { (x: "hi"): any; foo(x: "hi"): any; } +>a : { (x: 'hi'): any; foo(x: 'hi'): any; } (x: 'hi'); >x : "hi" foo(x: 'hi'); ->foo : (x: "hi") => any +>foo : (x: 'hi') => any >x : "hi" } var b = { ->b : { foo(x: "hi"): void; a: (x: "hi", y: "hi") => void; b: (x: "hi") => void; } ->{ foo(x: 'hi') { }, a: function foo(x: 'hi', y: 'hi') { }, b: (x: 'hi') => { }} : { foo(x: "hi"): void; a: (x: "hi", y: "hi") => void; b: (x: "hi") => void; } +>b : { foo(x: 'hi'): void; a: (x: 'hi', y: 'hi') => void; b: (x: 'hi') => void; } +>{ foo(x: 'hi') { }, a: function foo(x: 'hi', y: 'hi') { }, b: (x: 'hi') => { }} : { foo(x: 'hi'): void; a: (x: 'hi', y: 'hi') => void; b: (x: 'hi') => void; } foo(x: 'hi') { }, ->foo : (x: "hi") => void +>foo : (x: 'hi') => void >x : "hi" a: function foo(x: 'hi', y: 'hi') { }, ->a : (x: "hi", y: "hi") => void ->function foo(x: 'hi', y: 'hi') { } : (x: "hi", y: "hi") => void ->foo : (x: "hi", y: "hi") => void +>a : (x: 'hi', y: 'hi') => void +>function foo(x: 'hi', y: 'hi') { } : (x: 'hi', y: 'hi') => void +>foo : (x: 'hi', y: 'hi') => void >x : "hi" >y : "hi" b: (x: 'hi') => { } ->b : (x: "hi") => void ->(x: 'hi') => { } : (x: "hi") => void +>b : (x: 'hi') => void +>(x: 'hi') => { } : (x: 'hi') => void >x : "hi" } diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures.types.diff new file mode 100644 index 00000000000..4d498efa9d6 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures.types.diff @@ -0,0 +1,87 @@ +--- old.stringLiteralTypesInImplementationSignatures.types ++++ new.stringLiteralTypesInImplementationSignatures.types +@@= skipped -3, +3 lines =@@ + // String literal types are only valid in overload signatures + + function foo(x: 'hi') { } +->foo : (x: "hi") => void ++>foo : (x: 'hi') => void + >x : "hi" + + var f = function foo(x: 'hi') { } +->f : (x: "hi") => void +->function foo(x: 'hi') { } : (x: "hi") => void +->foo : (x: "hi") => void ++>f : (x: 'hi') => void ++>function foo(x: 'hi') { } : (x: 'hi') => void ++>foo : (x: 'hi') => void + >x : "hi" + + var f2 = (x: 'hi', y: 'hi') => { } +->f2 : (x: "hi", y: "hi") => void +->(x: 'hi', y: 'hi') => { } : (x: "hi", y: "hi") => void ++>f2 : (x: 'hi', y: 'hi') => void ++>(x: 'hi', y: 'hi') => { } : (x: 'hi', y: 'hi') => void + >x : "hi" + >y : "hi" + +@@= skipped -19, +19 lines =@@ + >C : C + + foo(x: 'hi') { } +->foo : (x: "hi") => void ++>foo : (x: 'hi') => void + >x : "hi" + } + +@@= skipped -9, +9 lines =@@ + >x : "hi" + + foo(x: 'hi', y: 'hi'); +->foo : (x: "hi", y: "hi") => any ++>foo : (x: 'hi', y: 'hi') => any + >x : "hi" + >y : "hi" + } + + var a: { +->a : { (x: "hi"): any; foo(x: "hi"): any; } ++>a : { (x: 'hi'): any; foo(x: 'hi'): any; } + + (x: 'hi'); + >x : "hi" + + foo(x: 'hi'); +->foo : (x: "hi") => any ++>foo : (x: 'hi') => any + >x : "hi" + } + + var b = { +->b : { foo(x: "hi"): void; a: (x: "hi", y: "hi") => void; b: (x: "hi") => void; } +->{ foo(x: 'hi') { }, a: function foo(x: 'hi', y: 'hi') { }, b: (x: 'hi') => { }} : { foo(x: "hi"): void; a: (x: "hi", y: "hi") => void; b: (x: "hi") => void; } ++>b : { foo(x: 'hi'): void; a: (x: 'hi', y: 'hi') => void; b: (x: 'hi') => void; } ++>{ foo(x: 'hi') { }, a: function foo(x: 'hi', y: 'hi') { }, b: (x: 'hi') => { }} : { foo(x: 'hi'): void; a: (x: 'hi', y: 'hi') => void; b: (x: 'hi') => void; } + + foo(x: 'hi') { }, +->foo : (x: "hi") => void ++>foo : (x: 'hi') => void + >x : "hi" + + a: function foo(x: 'hi', y: 'hi') { }, +->a : (x: "hi", y: "hi") => void +->function foo(x: 'hi', y: 'hi') { } : (x: "hi", y: "hi") => void +->foo : (x: "hi", y: "hi") => void ++>a : (x: 'hi', y: 'hi') => void ++>function foo(x: 'hi', y: 'hi') { } : (x: 'hi', y: 'hi') => void ++>foo : (x: 'hi', y: 'hi') => void + >x : "hi" + >y : "hi" + + b: (x: 'hi') => { } +->b : (x: "hi") => void +->(x: 'hi') => { } : (x: "hi") => void ++>b : (x: 'hi') => void ++>(x: 'hi') => { } : (x: 'hi') => void + >x : "hi" + } diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures2.types b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures2.types index b3a9fa469f5..743b6662894 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures2.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures2.types @@ -31,18 +31,18 @@ interface I { >x : "hi" foo(x: 'a', y: 'a'); ->foo : { (x: "a", y: "a"): any; (x: "hi", y: "hi"): any; } +>foo : { (x: 'a', y: 'a'): any; (x: 'hi', y: 'hi'): any; } >x : "a" >y : "a" foo(x: 'hi', y: 'hi'); ->foo : { (x: "a", y: "a"): any; (x: "hi", y: "hi"): any; } +>foo : { (x: 'a', y: 'a'): any; (x: 'hi', y: 'hi'): any; } >x : "hi" >y : "hi" } var a: { ->a : { (x: "hi"): any; (x: "a"): any; foo(x: "hi"): any; foo(x: "a"): any; } +>a : { (x: 'hi'): any; (x: 'a'): any; foo(x: 'hi'): any; foo(x: 'a'): any; } (x: 'hi'); >x : "hi" @@ -51,24 +51,24 @@ var a: { >x : "a" foo(x: 'hi'); ->foo : { (x: "hi"): any; (x: "a"): any; } +>foo : { (x: 'hi'): any; (x: 'a'): any; } >x : "hi" foo(x: 'a'); ->foo : { (x: "hi"): any; (x: "a"): any; } +>foo : { (x: 'hi'): any; (x: 'a'): any; } >x : "a" } var b = { ->b : { foo(x: "a"): void; } ->{ foo(x: 'hi') { }, foo(x: 'a') { },} : { foo(x: "a"): void; } +>b : { foo(x: 'a'): void; } +>{ foo(x: 'hi') { }, foo(x: 'a') { },} : { foo(x: 'a'): void; } foo(x: 'hi') { }, ->foo : (x: "hi") => void +>foo : (x: 'hi') => void >x : "hi" foo(x: 'a') { }, ->foo : (x: "a") => void +>foo : (x: 'a') => void >x : "a" } diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures2.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures2.types.diff index 77da14b58d8..7532791b212 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesInImplementationSignatures2.types.diff @@ -1,21 +1,54 @@ --- old.stringLiteralTypesInImplementationSignatures2.types +++ new.stringLiteralTypesInImplementationSignatures2.types -@@= skipped -59, +59 lines =@@ +@@= skipped -30, +30 lines =@@ + >x : "hi" + + foo(x: 'a', y: 'a'); +->foo : { (x: "a", y: "a"): any; (x: "hi", y: "hi"): any; } ++>foo : { (x: 'a', y: 'a'): any; (x: 'hi', y: 'hi'): any; } + >x : "a" + >y : "a" + + foo(x: 'hi', y: 'hi'); +->foo : { (x: "a", y: "a"): any; (x: "hi", y: "hi"): any; } ++>foo : { (x: 'a', y: 'a'): any; (x: 'hi', y: 'hi'): any; } + >x : "hi" + >y : "hi" + } + + var a: { +->a : { (x: "hi"): any; (x: "a"): any; foo(x: "hi"): any; foo(x: "a"): any; } ++>a : { (x: 'hi'): any; (x: 'a'): any; foo(x: 'hi'): any; foo(x: 'a'): any; } + + (x: 'hi'); + >x : "hi" +@@= skipped -20, +20 lines =@@ + >x : "a" + + foo(x: 'hi'); +->foo : { (x: "hi"): any; (x: "a"): any; } ++>foo : { (x: 'hi'): any; (x: 'a'): any; } + >x : "hi" + + foo(x: 'a'); +->foo : { (x: "hi"): any; (x: "a"): any; } ++>foo : { (x: 'hi'): any; (x: 'a'): any; } + >x : "a" } var b = { ->b : { foo(x: "hi"): void; foo(x: "a"): void; } ->{ foo(x: 'hi') { }, foo(x: 'a') { },} : { foo(x: "hi"): void; foo(x: "a"): void; } -+>b : { foo(x: "a"): void; } -+>{ foo(x: 'hi') { }, foo(x: 'a') { },} : { foo(x: "a"): void; } ++>b : { foo(x: 'a'): void; } ++>{ foo(x: 'hi') { }, foo(x: 'a') { },} : { foo(x: 'a'): void; } foo(x: 'hi') { }, ->foo : { (x: "hi"): void; (x: "a"): void; } -+>foo : (x: "hi") => void ++>foo : (x: 'hi') => void >x : "hi" foo(x: 'a') { }, ->foo : { (x: "hi"): void; (x: "a"): void; } -+>foo : (x: "a") => void ++>foo : (x: 'a') => void >x : "a" } diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads01.types b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads01.types index ef400234929..a61c9650d6e 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads01.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads01.types @@ -5,35 +5,35 @@ type PrimitiveName = 'string' | 'number' | 'boolean'; >PrimitiveName : PrimitiveName function getFalsyPrimitive(x: "string"): string; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "string" function getFalsyPrimitive(x: "number"): number; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "number" function getFalsyPrimitive(x: "boolean"): boolean; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "boolean" function getFalsyPrimitive(x: "boolean" | "string"): boolean | string; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "boolean" | "string" function getFalsyPrimitive(x: "boolean" | "number"): boolean | number; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "boolean" | "number" function getFalsyPrimitive(x: "number" | "string"): number | string; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "number" | "string" function getFalsyPrimitive(x: "number" | "string" | "boolean"): number | string | boolean; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "boolean" | "number" | "string" function getFalsyPrimitive(x: PrimitiveName): number | string | boolean { ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : PrimitiveName if (x === "string") { @@ -72,19 +72,19 @@ namespace Consts1 { const EMPTY_STRING = getFalsyPrimitive("string"); >EMPTY_STRING : string >getFalsyPrimitive("string") : string ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >"string" : "string" const ZERO = getFalsyPrimitive('number'); >ZERO : number >getFalsyPrimitive('number') : number ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >'number' : "number" const FALSE = getFalsyPrimitive("boolean"); >FALSE : boolean >getFalsyPrimitive("boolean") : boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >"boolean" : "boolean" } @@ -130,43 +130,43 @@ namespace Consts2 { const EMPTY_STRING = getFalsyPrimitive(string); >EMPTY_STRING : string >getFalsyPrimitive(string) : string ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >string : "string" const ZERO = getFalsyPrimitive(number); >ZERO : number >getFalsyPrimitive(number) : number ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >number : "number" const FALSE = getFalsyPrimitive(boolean); >FALSE : boolean >getFalsyPrimitive(boolean) : boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >boolean : "boolean" const a = getFalsyPrimitive(stringOrNumber); >a : string | number >getFalsyPrimitive(stringOrNumber) : string | number ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >stringOrNumber : "number" | "string" const b = getFalsyPrimitive(stringOrBoolean); >b : string | boolean >getFalsyPrimitive(stringOrBoolean) : string | boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >stringOrBoolean : "boolean" | "string" const c = getFalsyPrimitive(booleanOrNumber); >c : number | boolean >getFalsyPrimitive(booleanOrNumber) : number | boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >booleanOrNumber : "boolean" | "number" const d = getFalsyPrimitive(stringOrBooleanOrNumber); >d : string | number | boolean >getFalsyPrimitive(stringOrBooleanOrNumber) : string | number | boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >stringOrBooleanOrNumber : "boolean" | "number" | "string" } diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads01.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads01.types.diff deleted file mode 100644 index 91b5e36abb5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads01.types.diff +++ /dev/null @@ -1,119 +0,0 @@ ---- old.stringLiteralTypesOverloads01.types -+++ new.stringLiteralTypesOverloads01.types -@@= skipped -4, +4 lines =@@ - >PrimitiveName : PrimitiveName - - function getFalsyPrimitive(x: "string"): string; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "string" - - function getFalsyPrimitive(x: "number"): number; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "number" - - function getFalsyPrimitive(x: "boolean"): boolean; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "boolean" - - function getFalsyPrimitive(x: "boolean" | "string"): boolean | string; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "boolean" | "string" - - function getFalsyPrimitive(x: "boolean" | "number"): boolean | number; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "boolean" | "number" - - function getFalsyPrimitive(x: "number" | "string"): number | string; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "number" | "string" - - function getFalsyPrimitive(x: "number" | "string" | "boolean"): number | string | boolean; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "boolean" | "number" | "string" - - function getFalsyPrimitive(x: PrimitiveName): number | string | boolean { -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : PrimitiveName - - if (x === "string") { -@@= skipped -67, +67 lines =@@ - const EMPTY_STRING = getFalsyPrimitive("string"); - >EMPTY_STRING : string - >getFalsyPrimitive("string") : string -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >"string" : "string" - - const ZERO = getFalsyPrimitive('number'); - >ZERO : number - >getFalsyPrimitive('number') : number -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >'number' : "number" - - const FALSE = getFalsyPrimitive("boolean"); - >FALSE : boolean - >getFalsyPrimitive("boolean") : boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >"boolean" : "boolean" - } - -@@= skipped -58, +58 lines =@@ - const EMPTY_STRING = getFalsyPrimitive(string); - >EMPTY_STRING : string - >getFalsyPrimitive(string) : string -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >string : "string" - - const ZERO = getFalsyPrimitive(number); - >ZERO : number - >getFalsyPrimitive(number) : number -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >number : "number" - - const FALSE = getFalsyPrimitive(boolean); - >FALSE : boolean - >getFalsyPrimitive(boolean) : boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >boolean : "boolean" - - const a = getFalsyPrimitive(stringOrNumber); - >a : string | number - >getFalsyPrimitive(stringOrNumber) : string | number -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >stringOrNumber : "number" | "string" - - const b = getFalsyPrimitive(stringOrBoolean); - >b : string | boolean - >getFalsyPrimitive(stringOrBoolean) : string | boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >stringOrBoolean : "boolean" | "string" - - const c = getFalsyPrimitive(booleanOrNumber); - >c : number | boolean - >getFalsyPrimitive(booleanOrNumber) : number | boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >booleanOrNumber : "boolean" | "number" - - const d = getFalsyPrimitive(stringOrBooleanOrNumber); - >d : string | number | boolean - >getFalsyPrimitive(stringOrBooleanOrNumber) : string | number | boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >stringOrBooleanOrNumber : "boolean" | "number" | "string" - } diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads02.types b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads02.types index 47847e689dc..6ac09aefb84 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads02.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads02.types @@ -2,35 +2,35 @@ === stringLiteralTypesOverloads02.ts === function getFalsyPrimitive(x: "string"): string; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "string" function getFalsyPrimitive(x: "number"): number; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "number" function getFalsyPrimitive(x: "boolean"): boolean; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "boolean" function getFalsyPrimitive(x: "boolean" | "string"): boolean | string; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "boolean" | "string" function getFalsyPrimitive(x: "boolean" | "number"): boolean | number; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "boolean" | "number" function getFalsyPrimitive(x: "number" | "string"): number | string; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "number" | "string" function getFalsyPrimitive(x: "number" | "string" | "boolean"): number | string | boolean; ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : "boolean" | "number" | "string" function getFalsyPrimitive(x: string): string | number | boolean { ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >x : string if (x === "string") { @@ -69,19 +69,19 @@ namespace Consts1 { const EMPTY_STRING = getFalsyPrimitive("string"); >EMPTY_STRING : string >getFalsyPrimitive("string") : string ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >"string" : "string" const ZERO = getFalsyPrimitive('number'); >ZERO : number >getFalsyPrimitive('number') : number ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >'number' : "number" const FALSE = getFalsyPrimitive("boolean"); >FALSE : boolean >getFalsyPrimitive("boolean") : boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >"boolean" : "boolean" } @@ -127,43 +127,43 @@ namespace Consts2 { const EMPTY_STRING = getFalsyPrimitive(string); >EMPTY_STRING : string >getFalsyPrimitive(string) : string ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >string : "string" const ZERO = getFalsyPrimitive(number); >ZERO : number >getFalsyPrimitive(number) : number ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >number : "number" const FALSE = getFalsyPrimitive(boolean); >FALSE : boolean >getFalsyPrimitive(boolean) : boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >boolean : "boolean" const a = getFalsyPrimitive(stringOrNumber); >a : string | number >getFalsyPrimitive(stringOrNumber) : string | number ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >stringOrNumber : "number" | "string" const b = getFalsyPrimitive(stringOrBoolean); >b : string | boolean >getFalsyPrimitive(stringOrBoolean) : string | boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >stringOrBoolean : "boolean" | "string" const c = getFalsyPrimitive(booleanOrNumber); >c : number | boolean >getFalsyPrimitive(booleanOrNumber) : number | boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >booleanOrNumber : "boolean" | "number" const d = getFalsyPrimitive(stringOrBooleanOrNumber); >d : string | number | boolean >getFalsyPrimitive(stringOrBooleanOrNumber) : string | number | boolean ->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } +>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } >stringOrBooleanOrNumber : "boolean" | "number" | "string" } diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads02.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads02.types.diff deleted file mode 100644 index 031de90278d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads02.types.diff +++ /dev/null @@ -1,119 +0,0 @@ ---- old.stringLiteralTypesOverloads02.types -+++ new.stringLiteralTypesOverloads02.types -@@= skipped -1, +1 lines =@@ - - === stringLiteralTypesOverloads02.ts === - function getFalsyPrimitive(x: "string"): string; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "string" - - function getFalsyPrimitive(x: "number"): number; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "number" - - function getFalsyPrimitive(x: "boolean"): boolean; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "boolean" - - function getFalsyPrimitive(x: "boolean" | "string"): boolean | string; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "boolean" | "string" - - function getFalsyPrimitive(x: "boolean" | "number"): boolean | number; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "boolean" | "number" - - function getFalsyPrimitive(x: "number" | "string"): number | string; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "number" | "string" - - function getFalsyPrimitive(x: "number" | "string" | "boolean"): number | string | boolean; -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : "boolean" | "number" | "string" - - function getFalsyPrimitive(x: string): string | number | boolean { -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >x : string - - if (x === "string") { -@@= skipped -67, +67 lines =@@ - const EMPTY_STRING = getFalsyPrimitive("string"); - >EMPTY_STRING : string - >getFalsyPrimitive("string") : string -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >"string" : "string" - - const ZERO = getFalsyPrimitive('number'); - >ZERO : number - >getFalsyPrimitive('number') : number -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >'number' : "number" - - const FALSE = getFalsyPrimitive("boolean"); - >FALSE : boolean - >getFalsyPrimitive("boolean") : boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >"boolean" : "boolean" - } - -@@= skipped -58, +58 lines =@@ - const EMPTY_STRING = getFalsyPrimitive(string); - >EMPTY_STRING : string - >getFalsyPrimitive(string) : string -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >string : "string" - - const ZERO = getFalsyPrimitive(number); - >ZERO : number - >getFalsyPrimitive(number) : number -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >number : "number" - - const FALSE = getFalsyPrimitive(boolean); - >FALSE : boolean - >getFalsyPrimitive(boolean) : boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >boolean : "boolean" - - const a = getFalsyPrimitive(stringOrNumber); - >a : string | number - >getFalsyPrimitive(stringOrNumber) : string | number -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >stringOrNumber : "number" | "string" - - const b = getFalsyPrimitive(stringOrBoolean); - >b : string | boolean - >getFalsyPrimitive(stringOrBoolean) : string | boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >stringOrBoolean : "boolean" | "string" - - const c = getFalsyPrimitive(booleanOrNumber); - >c : number | boolean - >getFalsyPrimitive(booleanOrNumber) : number | boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >booleanOrNumber : "boolean" | "number" - - const d = getFalsyPrimitive(stringOrBooleanOrNumber); - >d : string | number | boolean - >getFalsyPrimitive(stringOrBooleanOrNumber) : string | number | boolean -->getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; } -+>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): string | boolean; (x: "boolean" | "number"): number | boolean; (x: "number" | "string"): string | number; (x: "boolean" | "number" | "string"): string | number | boolean; } - >stringOrBooleanOrNumber : "boolean" | "number" | "string" - } diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads04.types b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads04.types index 6bbbbc36b1b..2a6b514e28f 100644 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads04.types +++ b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads04.types @@ -2,13 +2,13 @@ === stringLiteralTypesOverloads04.ts === declare function f(x: (p: "foo" | "bar") => "foo"); ->f : (x: (p: "bar" | "foo") => "foo") => any ->x : (p: "bar" | "foo") => "foo" +>f : (x: (p: "foo" | "bar") => "foo") => any +>x : (p: "foo" | "bar") => "foo" >p : "bar" | "foo" f(y => { >f(y => { const z = y = "foo"; return z;}) : any ->f : (x: (p: "bar" | "foo") => "foo") => any +>f : (x: (p: "foo" | "bar") => "foo") => any >y => { const z = y = "foo"; return z;} : (y: "bar" | "foo") => "foo" >y : "bar" | "foo" diff --git a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads04.types.diff b/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads04.types.diff deleted file mode 100644 index b1d5221d75a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/stringLiteralTypesOverloads04.types.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.stringLiteralTypesOverloads04.types -+++ new.stringLiteralTypesOverloads04.types -@@= skipped -1, +1 lines =@@ - - === stringLiteralTypesOverloads04.ts === - declare function f(x: (p: "foo" | "bar") => "foo"); -->f : (x: (p: "foo" | "bar") => "foo") => any -->x : (p: "foo" | "bar") => "foo" -+>f : (x: (p: "bar" | "foo") => "foo") => any -+>x : (p: "bar" | "foo") => "foo" - >p : "bar" | "foo" - - f(y => { - >f(y => { const z = y = "foo"; return z;}) : any -->f : (x: (p: "foo" | "bar") => "foo") => any -+>f : (x: (p: "bar" | "foo") => "foo") => any - >y => { const z = y = "foo"; return z;} : (y: "bar" | "foo") => "foo" - >y : "bar" | "foo" diff --git a/testdata/baselines/reference/submodule/conformance/stringMappingOverPatternLiterals.types b/testdata/baselines/reference/submodule/conformance/stringMappingOverPatternLiterals.types index 88930e63291..8276fdb00e6 100644 --- a/testdata/baselines/reference/submodule/conformance/stringMappingOverPatternLiterals.types +++ b/testdata/baselines/reference/submodule/conformance/stringMappingOverPatternLiterals.types @@ -22,7 +22,7 @@ type CTemplate = Lowercase; >CTemplate : `aa${Lowercase}` function f1( ->f1 : (a: "aA", b: "AA", c: "aa", a_template: `aA${string}`, b_template: `AA${Uppercase}`, c_template: `aa${Lowercase}`) => void +>f1 : (a: A, b: B, c: C, a_template: ATemplate, b_template: BTemplate, c_template: CTemplate) => void a: A, >a : "aA" @@ -171,7 +171,7 @@ function f2(x1: string, x2: Uppercase, x3: Lowercase) { // Mappings over mappings function f3( ->f3 : (x1: Uppercase, x2: Uppercase, x3: Uppercase>) => void +>f3 : (x1: Uppercase, x2: Uppercase>, x3: Uppercase>) => void x1: Uppercase, >x1 : Uppercase @@ -262,7 +262,7 @@ type EquivalentNonStringPat = `AA${Uppercase<`${number}`>}${Uppercase<`${bigint} >EquivalentNonStringPat : `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE` function f4(x1: NonStringPat, x2: EquivalentNonStringPat) { ->f4 : (x1: `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE`, x2: `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE`) => void +>f4 : (x1: NonStringPat, x2: EquivalentNonStringPat) => void >x1 : `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE` >x2 : `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE` @@ -281,7 +281,7 @@ function f4(x1: NonStringPat, x2: EquivalentNonStringPat) { // Capitalize and uncapitalize on template literals function f5( ->f5 : (cap_tem: `A${string}`, cap_str: Capitalize, cap_tem_map: `A${string}`, cap_tem_map2: `A${string}`, uncap_tem: `a${string}`, uncap_str: Uncapitalize, uncap_tem_map: `a${string}`, uncap_tem_map2: `a${string}`) => void +>f5 : (cap_tem: `A${string}`, cap_str: Capitalize, cap_tem_map: Capitalize<`A${string}`>, cap_tem_map2: Capitalize<`a${string}`>, uncap_tem: `a${string}`, uncap_str: Uncapitalize, uncap_tem_map: Uncapitalize<`A${string}`>, uncap_tem_map2: Uncapitalize<`a${string}`>) => void cap_tem: `A${string}`, >cap_tem : `A${string}` diff --git a/testdata/baselines/reference/submodule/conformance/stringMappingOverPatternLiterals.types.diff b/testdata/baselines/reference/submodule/conformance/stringMappingOverPatternLiterals.types.diff deleted file mode 100644 index 89a00e440ce..00000000000 --- a/testdata/baselines/reference/submodule/conformance/stringMappingOverPatternLiterals.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.stringMappingOverPatternLiterals.types -+++ new.stringMappingOverPatternLiterals.types -@@= skipped -21, +21 lines =@@ - >CTemplate : `aa${Lowercase}` - - function f1( -->f1 : (a: A, b: B, c: C, a_template: ATemplate, b_template: BTemplate, c_template: CTemplate) => void -+>f1 : (a: "aA", b: "AA", c: "aa", a_template: `aA${string}`, b_template: `AA${Uppercase}`, c_template: `aa${Lowercase}`) => void - - a: A, - >a : "aA" -@@= skipped -149, +149 lines =@@ - // Mappings over mappings - - function f3( -->f3 : (x1: Uppercase, x2: Uppercase>, x3: Uppercase>) => void -+>f3 : (x1: Uppercase, x2: Uppercase, x3: Uppercase>) => void - - x1: Uppercase, - >x1 : Uppercase -@@= skipped -91, +91 lines =@@ - >EquivalentNonStringPat : `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE` - - function f4(x1: NonStringPat, x2: EquivalentNonStringPat) { -->f4 : (x1: NonStringPat, x2: EquivalentNonStringPat) => void -+>f4 : (x1: `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE`, x2: `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE`) => void - >x1 : `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE` - >x2 : `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}FALSE` | `AA${Uppercase<`${number}`>}${Uppercase<`${bigint}`>}TRUE` - -@@= skipped -19, +19 lines =@@ - // Capitalize and uncapitalize on template literals - - function f5( -->f5 : (cap_tem: `A${string}`, cap_str: Capitalize, cap_tem_map: Capitalize<`A${string}`>, cap_tem_map2: Capitalize<`a${string}`>, uncap_tem: `a${string}`, uncap_str: Uncapitalize, uncap_tem_map: Uncapitalize<`A${string}`>, uncap_tem_map2: Uncapitalize<`a${string}`>) => void -+>f5 : (cap_tem: `A${string}`, cap_str: Capitalize, cap_tem_map: `A${string}`, cap_tem_map2: `A${string}`, uncap_tem: `a${string}`, uncap_str: Uncapitalize, uncap_tem_map: `a${string}`, uncap_tem_map2: `a${string}`) => void - - cap_tem: `A${string}`, - >cap_tem : `A${string}` \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/stringMappingReduction.types b/testdata/baselines/reference/submodule/conformance/stringMappingReduction.types index ac41ec31e7b..5c724d1706f 100644 --- a/testdata/baselines/reference/submodule/conformance/stringMappingReduction.types +++ b/testdata/baselines/reference/submodule/conformance/stringMappingReduction.types @@ -55,17 +55,17 @@ type VirtualEvent = { bivarianceHack(event: EPlusFallbackevent : EPlusFallback> declare const _virtualOn: (eventQrl: VirtualEvent) => void; ->_virtualOn : (eventQrl: (event: {}) => any) => void +>_virtualOn : (eventQrl: VirtualEvent) => void >eventQrl : (event: {}) => any export const virtualOn = (eventQrl: VirtualEvent) => { ->virtualOn : (eventQrl: (event: EPlusFallback>) => any) => void ->(eventQrl: VirtualEvent) => { _virtualOn(eventQrl);} : (eventQrl: (event: EPlusFallback>) => any) => void +>virtualOn : (eventQrl: VirtualEvent) => void +>(eventQrl: VirtualEvent) => { _virtualOn(eventQrl);} : (eventQrl: VirtualEvent) => void >eventQrl : (event: EPlusFallback>) => any _virtualOn(eventQrl); >_virtualOn(eventQrl) : void ->_virtualOn : (eventQrl: (event: {}) => any) => void +>_virtualOn : (eventQrl: VirtualEvent) => void >eventQrl : (event: EPlusFallback>) => any }; diff --git a/testdata/baselines/reference/submodule/conformance/stringMappingReduction.types.diff b/testdata/baselines/reference/submodule/conformance/stringMappingReduction.types.diff deleted file mode 100644 index 8c309ec498b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/stringMappingReduction.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.stringMappingReduction.types -+++ new.stringMappingReduction.types -@@= skipped -54, +54 lines =@@ - >event : EPlusFallback> - - declare const _virtualOn: (eventQrl: VirtualEvent) => void; -->_virtualOn : (eventQrl: VirtualEvent) => void -+>_virtualOn : (eventQrl: (event: {}) => any) => void - >eventQrl : (event: {}) => any - - export const virtualOn = (eventQrl: VirtualEvent) => { -->virtualOn : (eventQrl: VirtualEvent) => void -->(eventQrl: VirtualEvent) => { _virtualOn(eventQrl);} : (eventQrl: VirtualEvent) => void -+>virtualOn : (eventQrl: (event: EPlusFallback>) => any) => void -+>(eventQrl: VirtualEvent) => { _virtualOn(eventQrl);} : (eventQrl: (event: EPlusFallback>) => any) => void - >eventQrl : (event: EPlusFallback>) => any - - _virtualOn(eventQrl); - >_virtualOn(eventQrl) : void -->_virtualOn : (eventQrl: VirtualEvent) => void -+>_virtualOn : (eventQrl: (event: {}) => any) => void - >eventQrl : (event: EPlusFallback>) => any - - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures.types b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures.types index 4f05e7cf07d..f03462b6bd8 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures.types @@ -5,19 +5,19 @@ namespace CallSignature { >CallSignature : typeof CallSignature declare function foo1(cb: (x: number) => void): typeof cb; ->foo1 : { (cb: (x: number) => void): (x: number) => void; (cb: any): any; } +>foo1 : { (cb: (x: number) => void): typeof cb; (cb: any): any; } >cb : (x: number) => void >x : number >cb : (x: number) => void declare function foo1(cb: any): any; ->foo1 : { (cb: (x: number) => void): (x: number) => void; (cb: any): any; } +>foo1 : { (cb: (x: number) => void): typeof cb; (cb: any): any; } >cb : any var r = foo1((x: number) => 1); // ok because base returns void >r : (x: number) => void >foo1((x: number) => 1) : (x: number) => void ->foo1 : { (cb: (x: number) => void): (x: number) => void; (cb: any): any; } +>foo1 : { (cb: (x: number) => void): typeof cb; (cb: any): any; } >(x: number) => 1 : (x: number) => number >x : number >1 : 1 @@ -25,26 +25,26 @@ namespace CallSignature { var r2 = foo1((x: T) => ''); // ok because base returns void >r2 : (x: number) => void >foo1((x: T) => '') : (x: number) => void ->foo1 : { (cb: (x: number) => void): (x: number) => void; (cb: any): any; } +>foo1 : { (cb: (x: number) => void): typeof cb; (cb: any): any; } >(x: T) => '' : (x: T) => string >x : T >'' : "" declare function foo2(cb: (x: number, y: number) => void): typeof cb; ->foo2 : { (cb: (x: number, y: number) => void): (x: number, y: number) => void; (cb: any): any; } +>foo2 : { (cb: (x: number, y: number) => void): typeof cb; (cb: any): any; } >cb : (x: number, y: number) => void >x : number >y : number >cb : (x: number, y: number) => void declare function foo2(cb: any): any; ->foo2 : { (cb: (x: number, y: number) => void): (x: number, y: number) => void; (cb: any): any; } +>foo2 : { (cb: (x: number, y: number) => void): typeof cb; (cb: any): any; } >cb : any var r3 = foo2((x: number, y: number) => 1); // ok because base returns void >r3 : (x: number, y: number) => void >foo2((x: number, y: number) => 1) : (x: number, y: number) => void ->foo2 : { (cb: (x: number, y: number) => void): (x: number, y: number) => void; (cb: any): any; } +>foo2 : { (cb: (x: number, y: number) => void): typeof cb; (cb: any): any; } >(x: number, y: number) => 1 : (x: number, y: number) => number >x : number >y : number @@ -53,7 +53,7 @@ namespace CallSignature { var r4 = foo2((x: T) => ''); // ok because base returns void >r4 : (x: number, y: number) => void >foo2((x: T) => '') : (x: number, y: number) => void ->foo2 : { (cb: (x: number, y: number) => void): (x: number, y: number) => void; (cb: any): any; } +>foo2 : { (cb: (x: number, y: number) => void): typeof cb; (cb: any): any; } >(x: T) => '' : (x: T) => string >x : T >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures.types.diff deleted file mode 100644 index 5a98398810a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures.types.diff +++ /dev/null @@ -1,65 +0,0 @@ ---- old.subtypingWithCallSignatures.types -+++ new.subtypingWithCallSignatures.types -@@= skipped -4, +4 lines =@@ - >CallSignature : typeof CallSignature - - declare function foo1(cb: (x: number) => void): typeof cb; -->foo1 : { (cb: (x: number) => void): typeof cb; (cb: any): any; } -+>foo1 : { (cb: (x: number) => void): (x: number) => void; (cb: any): any; } - >cb : (x: number) => void - >x : number - >cb : (x: number) => void - - declare function foo1(cb: any): any; -->foo1 : { (cb: (x: number) => void): typeof cb; (cb: any): any; } -+>foo1 : { (cb: (x: number) => void): (x: number) => void; (cb: any): any; } - >cb : any - - var r = foo1((x: number) => 1); // ok because base returns void - >r : (x: number) => void - >foo1((x: number) => 1) : (x: number) => void -->foo1 : { (cb: (x: number) => void): typeof cb; (cb: any): any; } -+>foo1 : { (cb: (x: number) => void): (x: number) => void; (cb: any): any; } - >(x: number) => 1 : (x: number) => number - >x : number - >1 : 1 -@@= skipped -20, +20 lines =@@ - var r2 = foo1((x: T) => ''); // ok because base returns void - >r2 : (x: number) => void - >foo1((x: T) => '') : (x: number) => void -->foo1 : { (cb: (x: number) => void): typeof cb; (cb: any): any; } -+>foo1 : { (cb: (x: number) => void): (x: number) => void; (cb: any): any; } - >(x: T) => '' : (x: T) => string - >x : T - >'' : "" - - declare function foo2(cb: (x: number, y: number) => void): typeof cb; -->foo2 : { (cb: (x: number, y: number) => void): typeof cb; (cb: any): any; } -+>foo2 : { (cb: (x: number, y: number) => void): (x: number, y: number) => void; (cb: any): any; } - >cb : (x: number, y: number) => void - >x : number - >y : number - >cb : (x: number, y: number) => void - - declare function foo2(cb: any): any; -->foo2 : { (cb: (x: number, y: number) => void): typeof cb; (cb: any): any; } -+>foo2 : { (cb: (x: number, y: number) => void): (x: number, y: number) => void; (cb: any): any; } - >cb : any - - var r3 = foo2((x: number, y: number) => 1); // ok because base returns void - >r3 : (x: number, y: number) => void - >foo2((x: number, y: number) => 1) : (x: number, y: number) => void -->foo2 : { (cb: (x: number, y: number) => void): typeof cb; (cb: any): any; } -+>foo2 : { (cb: (x: number, y: number) => void): (x: number, y: number) => void; (cb: any): any; } - >(x: number, y: number) => 1 : (x: number, y: number) => number - >x : number - >y : number -@@= skipped -28, +28 lines =@@ - var r4 = foo2((x: T) => ''); // ok because base returns void - >r4 : (x: number, y: number) => void - >foo2((x: T) => '') : (x: number, y: number) => void -->foo2 : { (cb: (x: number, y: number) => void): typeof cb; (cb: any): any; } -+>foo2 : { (cb: (x: number, y: number) => void): (x: number, y: number) => void; (cb: any): any; } - >(x: T) => '' : (x: T) => string - >x : T - >'' : "" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures2.types b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures2.types index 559f1a49421..d3681b9ba16 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures2.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures2.types @@ -23,70 +23,70 @@ class OtherDerived extends Base { bing: string; } >bing : string declare function foo1(a: (x: number) => number[]): typeof a; ->foo1 : { (a: (x: number) => number[]): (x: number) => number[]; (a: any): any; } +>foo1 : { (a: (x: number) => number[]): typeof a; (a: any): any; } >a : (x: number) => number[] >x : number >a : (x: number) => number[] declare function foo1(a: any): any; ->foo1 : { (a: (x: number) => number[]): (x: number) => number[]; (a: any): any; } +>foo1 : { (a: (x: number) => number[]): typeof a; (a: any): any; } >a : any declare function foo2(a: (x: number) => string[]): typeof a; ->foo2 : { (a: (x: number) => string[]): (x: number) => string[]; (a: any): any; } +>foo2 : { (a: (x: number) => string[]): typeof a; (a: any): any; } >a : (x: number) => string[] >x : number >a : (x: number) => string[] declare function foo2(a: any): any; ->foo2 : { (a: (x: number) => string[]): (x: number) => string[]; (a: any): any; } +>foo2 : { (a: (x: number) => string[]): typeof a; (a: any): any; } >a : any declare function foo3(a: (x: number) => void): typeof a; ->foo3 : { (a: (x: number) => void): (x: number) => void; (a: any): any; } +>foo3 : { (a: (x: number) => void): typeof a; (a: any): any; } >a : (x: number) => void >x : number >a : (x: number) => void declare function foo3(a: any): any; ->foo3 : { (a: (x: number) => void): (x: number) => void; (a: any): any; } +>foo3 : { (a: (x: number) => void): typeof a; (a: any): any; } >a : any declare function foo4(a: (x: string, y: number) => string): typeof a; ->foo4 : { (a: (x: string, y: number) => string): (x: string, y: number) => string; (a: any): any; } +>foo4 : { (a: (x: string, y: number) => string): typeof a; (a: any): any; } >a : (x: string, y: number) => string >x : string >y : number >a : (x: string, y: number) => string declare function foo4(a: any): any; ->foo4 : { (a: (x: string, y: number) => string): (x: string, y: number) => string; (a: any): any; } +>foo4 : { (a: (x: string, y: number) => string): typeof a; (a: any): any; } >a : any declare function foo5(a: (x: (arg: string) => number) => string): typeof a; ->foo5 : { (a: (x: (arg: string) => number) => string): (x: (arg: string) => number) => string; (a: any): any; } +>foo5 : { (a: (x: (arg: string) => number) => string): typeof a; (a: any): any; } >a : (x: (arg: string) => number) => string >x : (arg: string) => number >arg : string >a : (x: (arg: string) => number) => string declare function foo5(a: any): any; ->foo5 : { (a: (x: (arg: string) => number) => string): (x: (arg: string) => number) => string; (a: any): any; } +>foo5 : { (a: (x: (arg: string) => number) => string): typeof a; (a: any): any; } >a : any declare function foo6(a: (x: (arg: Base) => Derived) => Base): typeof a; ->foo6 : { (a: (x: (arg: Base) => Derived) => Base): (x: (arg: Base) => Derived) => Base; (a: any): any; } +>foo6 : { (a: (x: (arg: Base) => Derived) => Base): typeof a; (a: any): any; } >a : (x: (arg: Base) => Derived) => Base >x : (arg: Base) => Derived >arg : Base >a : (x: (arg: Base) => Derived) => Base declare function foo6(a: any): any; ->foo6 : { (a: (x: (arg: Base) => Derived) => Base): (x: (arg: Base) => Derived) => Base; (a: any): any; } +>foo6 : { (a: (x: (arg: Base) => Derived) => Base): typeof a; (a: any): any; } >a : any declare function foo7(a: (x: (arg: Base) => Derived) => (r: Base) => Derived): typeof a; ->foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived) => (r: Base) => Derived; (a: any): any; } +>foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } >a : (x: (arg: Base) => Derived) => (r: Base) => Derived >x : (arg: Base) => Derived >arg : Base @@ -94,11 +94,11 @@ declare function foo7(a: (x: (arg: Base) => Derived) => (r: Base) => Derived): t >a : (x: (arg: Base) => Derived) => (r: Base) => Derived declare function foo7(a: any): any; ->foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived) => (r: Base) => Derived; (a: any): any; } +>foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } >a : any declare function foo8(a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; ->foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } +>foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } >a : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived >x : (arg: Base) => Derived >arg : Base @@ -108,11 +108,11 @@ declare function foo8(a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) >a : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived declare function foo8(a: any): any; ->foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } +>foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } >a : any declare function foo9(a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; ->foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } +>foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } >a : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived >x : (arg: Base) => Derived >arg : Base @@ -122,21 +122,21 @@ declare function foo9(a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) >a : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived declare function foo9(a: any): any; ->foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } +>foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } >a : any declare function foo10(a: (...x: Derived[]) => Derived): typeof a; ->foo10 : { (a: (...x: Derived[]) => Derived): (...x: Derived[]) => Derived; (a: any): any; } +>foo10 : { (a: (...x: Derived[]) => Derived): typeof a; (a: any): any; } >a : (...x: Derived[]) => Derived >x : Derived[] >a : (...x: Derived[]) => Derived declare function foo10(a: any): any; ->foo10 : { (a: (...x: Derived[]) => Derived): (...x: Derived[]) => Derived; (a: any): any; } +>foo10 : { (a: (...x: Derived[]) => Derived): typeof a; (a: any): any; } >a : any declare function foo11(a: (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a; ->foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } +>foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } >a : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base >x : { foo: string; } >foo : string @@ -146,33 +146,33 @@ declare function foo11(a: (x: { foo: string }, y: { foo: string; bar: string }) >a : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base declare function foo11(a: any): any; ->foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } +>foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } >a : any declare function foo12(a: (x: Array, y: Array) => Array): typeof a; ->foo12 : { (a: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } ->a : (x: Base[], y: Derived2[]) => Derived[] +>foo12 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } +>a : (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] ->a : (x: Base[], y: Derived2[]) => Derived[] +>a : (x: Array, y: Array) => Array declare function foo12(a: any): any; ->foo12 : { (a: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } +>foo12 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } >a : any declare function foo13(a: (x: Array, y: Array) => Array): typeof a; ->foo13 : { (a: (x: Base[], y: Derived[]) => Derived[]): (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } ->a : (x: Base[], y: Derived[]) => Derived[] +>foo13 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } +>a : (x: Array, y: Array) => Array >x : Base[] >y : Derived[] ->a : (x: Base[], y: Derived[]) => Derived[] +>a : (x: Array, y: Array) => Array declare function foo13(a: any): any; ->foo13 : { (a: (x: Base[], y: Derived[]) => Derived[]): (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } +>foo13 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } >a : any declare function foo14(a: (x: { a: string; b: number }) => Object): typeof a; ->foo14 : { (a: (x: { a: string; b: number; }) => Object): (x: { a: string; b: number; }) => Object; (a: any): any; } +>foo14 : { (a: (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } >a : (x: { a: string; b: number; }) => Object >x : { a: string; b: number; } >a : string @@ -180,11 +180,11 @@ declare function foo14(a: (x: { a: string; b: number }) => Object): typeof a; >a : (x: { a: string; b: number; }) => Object declare function foo14(a: any): any; ->foo14 : { (a: (x: { a: string; b: number; }) => Object): (x: { a: string; b: number; }) => Object; (a: any): any; } +>foo14 : { (a: (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } >a : any declare function foo15(a: { ->foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): { (x: number): number[]; (x: string): string[]; }; (a: any): any; } +>foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): typeof a; (a: any): any; } >a : { (x: number): number[]; (x: string): string[]; } (x: number): number[]; @@ -197,11 +197,11 @@ declare function foo15(a: { >a : { (x: number): number[]; (x: string): string[]; } declare function foo15(a: any): any; ->foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): { (x: number): number[]; (x: string): string[]; }; (a: any): any; } +>foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): typeof a; (a: any): any; } >a : any declare function foo16(a: { ->foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): { (x: T): number[]; (x: U): number[]; }; (a: any): any; } +>foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): typeof a; (a: any): any; } >a : { (x: T): number[]; (x: U): number[]; } (x: T): number[]; @@ -214,11 +214,11 @@ declare function foo16(a: { >a : { (x: T): number[]; (x: U): number[]; } declare function foo16(a: any): any; ->foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): { (x: T): number[]; (x: U): number[]; }; (a: any): any; } +>foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): typeof a; (a: any): any; } >a : any declare function foo17(a: { ->foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }; (a: any): any; } +>foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } >a : { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; } (x: (a: number) => number): number[]; @@ -233,11 +233,11 @@ declare function foo17(a: { >a : { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; } declare function foo17(a: any): any; ->foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }; (a: any): any; } +>foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } >a : any declare function foo18(a: { ->foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }; (a: any): any; } +>foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } >a : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } (x: { @@ -264,7 +264,7 @@ declare function foo18(a: { >a : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } declare function foo18(a: any): any; ->foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }; (a: any): any; } +>foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } >a : any var r1arg1 = (x: T) => [x]; @@ -284,7 +284,7 @@ var r1arg2 = (x: number) => [1]; var r1 = foo1(r1arg1); // any, return types are not subtype of first overload >r1 : (x: number) => number[] >foo1(r1arg1) : (x: number) => number[] ->foo1 : { (a: (x: number) => number[]): (x: number) => number[]; (a: any): any; } +>foo1 : { (a: (x: number) => number[]): typeof a; (a: any): any; } >r1arg1 : (x: T) => T[] var r1a = [r1arg2, r1arg1]; // generic signature, subtype in both directions @@ -316,7 +316,7 @@ var r2arg2 = (x: number) => ['']; var r2 = foo2(r2arg1); >r2 : (x: number) => string[] >foo2(r2arg1) : (x: number) => string[] ->foo2 : { (a: (x: number) => string[]): (x: number) => string[]; (a: any): any; } +>foo2 : { (a: (x: number) => string[]): typeof a; (a: any): any; } >r2arg1 : (x: T) => string[] var r2a = [r2arg1, r2arg2]; @@ -345,7 +345,7 @@ var r3arg2 = (x: number) => { }; var r3 = foo3(r3arg1); >r3 : (x: number) => void >foo3(r3arg1) : (x: number) => void ->foo3 : { (a: (x: number) => void): (x: number) => void; (a: any): any; } +>foo3 : { (a: (x: number) => void): typeof a; (a: any): any; } >r3arg1 : (x: T) => T var r3a = [r3arg1, r3arg2]; @@ -377,7 +377,7 @@ var r4arg2 = (x: string, y: number) => ''; var r4 = foo4(r4arg1); // any >r4 : (x: string, y: number) => string >foo4(r4arg1) : (x: string, y: number) => string ->foo4 : { (a: (x: string, y: number) => string): (x: string, y: number) => string; (a: any): any; } +>foo4 : { (a: (x: string, y: number) => string): typeof a; (a: any): any; } >r4arg1 : (x: T, y: U) => T var r4a = [r4arg1, r4arg2]; @@ -409,7 +409,7 @@ var r5arg2 = (x: (arg: string) => number) => ''; var r5 = foo5(r5arg1); // any >r5 : (x: (arg: string) => number) => string >foo5(r5arg1) : (x: (arg: string) => number) => string ->foo5 : { (a: (x: (arg: string) => number) => string): (x: (arg: string) => number) => string; (a: any): any; } +>foo5 : { (a: (x: (arg: string) => number) => string): typeof a; (a: any): any; } >r5arg1 : (x: (arg: T) => U) => T var r5a = [r5arg1, r5arg2]; @@ -441,7 +441,7 @@ var r6arg2 = (x: (arg: Base) => Derived) => null; var r6 = foo6(r6arg1); // any >r6 : (x: (arg: Base) => Derived) => Base >foo6(r6arg1) : (x: (arg: Base) => Derived) => Base ->foo6 : { (a: (x: (arg: Base) => Derived) => Base): (x: (arg: Base) => Derived) => Base; (a: any): any; } +>foo6 : { (a: (x: (arg: Base) => Derived) => Base): typeof a; (a: any): any; } >r6arg1 : (x: (arg: T) => U) => T var r6a = [r6arg1, r6arg2]; @@ -477,7 +477,7 @@ var r7arg2 = (x: (arg: Base) => Derived) => (r: Base) => null; var r7 = foo7(r7arg1); // any >r7 : (x: (arg: Base) => Derived) => (r: Base) => Derived >foo7(r7arg1) : (x: (arg: Base) => Derived) => (r: Base) => Derived ->foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived) => (r: Base) => Derived; (a: any): any; } +>foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } >r7arg1 : (x: (arg: T) => U) => (r: T) => U var r7a = [r7arg1, r7arg2]; @@ -517,7 +517,7 @@ var r8arg2 = (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base var r8 = foo8(r8arg1); // any >r8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived >foo8(r8arg1) : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived ->foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } +>foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } >r8arg1 : (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U var r8a = [r8arg1, r8arg2]; @@ -559,7 +559,7 @@ var r9arg2 = (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base var r9 = foo9(r9arg1); // any >r9 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived >foo9(r9arg1) : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived ->foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } +>foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } >r9arg1 : (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U var r9a = [r9arg1, r9arg2]; @@ -591,7 +591,7 @@ var r10arg2 = (...x: Derived[]) => null; var r10 = foo10(r10arg1); // any >r10 : (...x: Derived[]) => Derived >foo10(r10arg1) : (...x: Derived[]) => Derived ->foo10 : { (a: (...x: Derived[]) => Derived): (...x: Derived[]) => Derived; (a: any): any; } +>foo10 : { (a: (...x: Derived[]) => Derived): typeof a; (a: any): any; } >r10arg1 : (...x: T[]) => T var r10a = [r10arg1, r10arg2]; @@ -626,7 +626,7 @@ var r11arg2 = (x: { foo: string }, y: { foo: string; bar: string }) => nul var r11 = foo11(r11arg1); // any >r11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base >foo11(r11arg1) : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base ->foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } +>foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } >r11arg1 : (x: T, y: T) => T var r11a = [r11arg1, r11arg2]; @@ -642,68 +642,68 @@ var r11b = [r11arg2, r11arg1]; >r11arg1 : (x: T, y: T) => T var r12arg1 = >(x: Array, y: T) => >null; ->r12arg1 : (x: Base[], y: T) => Derived[] ->>(x: Array, y: T) => >null : (x: Base[], y: T) => Derived[] +>r12arg1 : >(x: Array, y: T) => Array +>>(x: Array, y: T) => >null : >(x: Array, y: T) => Array >x : Base[] >y : T >>null : Derived[] var r12arg2 = (x: Array, y: Array) => >null; ->r12arg2 : (x: Base[], y: Derived2[]) => Derived[] ->(x: Array, y: Array) => >null : (x: Base[], y: Derived2[]) => Derived[] +>r12arg2 : (x: Array, y: Array) => Array +>(x: Array, y: Array) => >null : (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] >>null : Derived[] var r12 = foo12(r12arg1); // any ->r12 : (x: Base[], y: Derived2[]) => Derived[] ->foo12(r12arg1) : (x: Base[], y: Derived2[]) => Derived[] ->foo12 : { (a: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } ->r12arg1 : (x: Base[], y: T) => Derived[] +>r12 : (x: Array, y: Array) => Array +>foo12(r12arg1) : (x: Array, y: Array) => Array +>foo12 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } +>r12arg1 : >(x: Array, y: T) => Array var r12a = [r12arg1, r12arg2]; ->r12a : ((x: Base[], y: Derived2[]) => Derived[])[] ->[r12arg1, r12arg2] : ((x: Base[], y: Derived2[]) => Derived[])[] ->r12arg1 : (x: Base[], y: T) => Derived[] ->r12arg2 : (x: Base[], y: Derived2[]) => Derived[] +>r12a : ((x: Array, y: Array) => Array)[] +>[r12arg1, r12arg2] : ((x: Array, y: Array) => Array)[] +>r12arg1 : >(x: Array, y: T) => Array +>r12arg2 : (x: Array, y: Array) => Array var r12b = [r12arg2, r12arg1]; ->r12b : ((x: Base[], y: Derived2[]) => Derived[])[] ->[r12arg2, r12arg1] : ((x: Base[], y: Derived2[]) => Derived[])[] ->r12arg2 : (x: Base[], y: Derived2[]) => Derived[] ->r12arg1 : (x: Base[], y: T) => Derived[] +>r12b : ((x: Array, y: Array) => Array)[] +>[r12arg2, r12arg1] : ((x: Array, y: Array) => Array)[] +>r12arg2 : (x: Array, y: Array) => Array +>r12arg1 : >(x: Array, y: T) => Array var r13arg1 = >(x: Array, y: T) => y; ->r13arg1 : (x: Base[], y: T) => T ->>(x: Array, y: T) => y : (x: Base[], y: T) => T +>r13arg1 : >(x: Array, y: T) => T +>>(x: Array, y: T) => y : >(x: Array, y: T) => T >x : Base[] >y : T >y : T var r13arg2 = (x: Array, y: Array) => >null; ->r13arg2 : (x: Base[], y: Derived[]) => Derived[] ->(x: Array, y: Array) => >null : (x: Base[], y: Derived[]) => Derived[] +>r13arg2 : (x: Array, y: Array) => Array +>(x: Array, y: Array) => >null : (x: Array, y: Array) => Array >x : Base[] >y : Derived[] >>null : Derived[] var r13 = foo13(r13arg1); // any ->r13 : (x: Base[], y: Derived[]) => Derived[] ->foo13(r13arg1) : (x: Base[], y: Derived[]) => Derived[] ->foo13 : { (a: (x: Base[], y: Derived[]) => Derived[]): (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } ->r13arg1 : (x: Base[], y: T) => T +>r13 : (x: Array, y: Array) => Array +>foo13(r13arg1) : (x: Array, y: Array) => Array +>foo13 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } +>r13arg1 : >(x: Array, y: T) => T var r13a = [r13arg1, r13arg2]; ->r13a : ((x: Base[], y: Derived[]) => Derived[])[] ->[r13arg1, r13arg2] : ((x: Base[], y: Derived[]) => Derived[])[] ->r13arg1 : (x: Base[], y: T) => T ->r13arg2 : (x: Base[], y: Derived[]) => Derived[] +>r13a : ((x: Array, y: Array) => Array)[] +>[r13arg1, r13arg2] : ((x: Array, y: Array) => Array)[] +>r13arg1 : >(x: Array, y: T) => T +>r13arg2 : (x: Array, y: Array) => Array var r13b = [r13arg2, r13arg1]; ->r13b : ((x: Base[], y: Derived[]) => Derived[])[] ->[r13arg2, r13arg1] : ((x: Base[], y: Derived[]) => Derived[])[] ->r13arg2 : (x: Base[], y: Derived[]) => Derived[] ->r13arg1 : (x: Base[], y: T) => T +>r13b : ((x: Array, y: Array) => Array)[] +>[r13arg2, r13arg1] : ((x: Array, y: Array) => Array)[] +>r13arg2 : (x: Array, y: Array) => Array +>r13arg1 : >(x: Array, y: T) => T var r14arg1 = (x: { a: T; b: T }) => x.a; >r14arg1 : (x: { a: T; b: T; }) => T @@ -726,7 +726,7 @@ var r14arg2 = (x: { a: string; b: number }) => null; var r14 = foo14(r14arg1); // any >r14 : any >foo14(r14arg1) : any ->foo14 : { (a: (x: { a: string; b: number; }) => Object): (x: { a: string; b: number; }) => Object; (a: any): any; } +>foo14 : { (a: (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } >r14arg1 : (x: { a: T; b: T; }) => T var r14a = [r14arg1, r14arg2]; @@ -750,7 +750,7 @@ var r15arg1 = (x: T) => null var r15 = foo15(r15arg1); // any >r15 : any >foo15(r15arg1) : any ->foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): { (x: number): number[]; (x: string): string[]; }; (a: any): any; } +>foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): typeof a; (a: any): any; } >r15arg1 : (x: T) => T[] var r16arg1 = (x: T) => [1]; @@ -763,7 +763,7 @@ var r16arg1 = (x: T) => [1]; var r16 = foo16(r16arg1); >r16 : { (x: T): number[]; (x: U): number[]; } >foo16(r16arg1) : { (x: T): number[]; (x: U): number[]; } ->foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): { (x: T): number[]; (x: U): number[]; }; (a: any): any; } +>foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): typeof a; (a: any): any; } >r16arg1 : (x: T) => number[] var r17arg1 = (x: (a: T) => T) => null; @@ -776,7 +776,7 @@ var r17arg1 = (x: (a: T) => T) => null; var r17 = foo17(r17arg1); // any >r17 : any >foo17(r17arg1) : any ->foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }; (a: any): any; } +>foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } >r17arg1 : (x: (a: T) => T) => T[] var r18arg1 = (x: (a: T) => T) => null; @@ -789,6 +789,6 @@ var r18arg1 = (x: (a: T) => T) => null; var r18 = foo18(r18arg1); >r18 : any >foo18(r18arg1) : any ->foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }; (a: any): any; } +>foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } >r18arg1 : (x: (a: T) => T) => T[] diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures2.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures2.types.diff deleted file mode 100644 index 6000204b7cf..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures2.types.diff +++ /dev/null @@ -1,492 +0,0 @@ ---- old.subtypingWithCallSignatures2.types -+++ new.subtypingWithCallSignatures2.types -@@= skipped -22, +22 lines =@@ - >bing : string - - declare function foo1(a: (x: number) => number[]): typeof a; -->foo1 : { (a: (x: number) => number[]): typeof a; (a: any): any; } -+>foo1 : { (a: (x: number) => number[]): (x: number) => number[]; (a: any): any; } - >a : (x: number) => number[] - >x : number - >a : (x: number) => number[] - - declare function foo1(a: any): any; -->foo1 : { (a: (x: number) => number[]): typeof a; (a: any): any; } -+>foo1 : { (a: (x: number) => number[]): (x: number) => number[]; (a: any): any; } - >a : any - - declare function foo2(a: (x: number) => string[]): typeof a; -->foo2 : { (a: (x: number) => string[]): typeof a; (a: any): any; } -+>foo2 : { (a: (x: number) => string[]): (x: number) => string[]; (a: any): any; } - >a : (x: number) => string[] - >x : number - >a : (x: number) => string[] - - declare function foo2(a: any): any; -->foo2 : { (a: (x: number) => string[]): typeof a; (a: any): any; } -+>foo2 : { (a: (x: number) => string[]): (x: number) => string[]; (a: any): any; } - >a : any - - declare function foo3(a: (x: number) => void): typeof a; -->foo3 : { (a: (x: number) => void): typeof a; (a: any): any; } -+>foo3 : { (a: (x: number) => void): (x: number) => void; (a: any): any; } - >a : (x: number) => void - >x : number - >a : (x: number) => void - - declare function foo3(a: any): any; -->foo3 : { (a: (x: number) => void): typeof a; (a: any): any; } -+>foo3 : { (a: (x: number) => void): (x: number) => void; (a: any): any; } - >a : any - - declare function foo4(a: (x: string, y: number) => string): typeof a; -->foo4 : { (a: (x: string, y: number) => string): typeof a; (a: any): any; } -+>foo4 : { (a: (x: string, y: number) => string): (x: string, y: number) => string; (a: any): any; } - >a : (x: string, y: number) => string - >x : string - >y : number - >a : (x: string, y: number) => string - - declare function foo4(a: any): any; -->foo4 : { (a: (x: string, y: number) => string): typeof a; (a: any): any; } -+>foo4 : { (a: (x: string, y: number) => string): (x: string, y: number) => string; (a: any): any; } - >a : any - - declare function foo5(a: (x: (arg: string) => number) => string): typeof a; -->foo5 : { (a: (x: (arg: string) => number) => string): typeof a; (a: any): any; } -+>foo5 : { (a: (x: (arg: string) => number) => string): (x: (arg: string) => number) => string; (a: any): any; } - >a : (x: (arg: string) => number) => string - >x : (arg: string) => number - >arg : string - >a : (x: (arg: string) => number) => string - - declare function foo5(a: any): any; -->foo5 : { (a: (x: (arg: string) => number) => string): typeof a; (a: any): any; } -+>foo5 : { (a: (x: (arg: string) => number) => string): (x: (arg: string) => number) => string; (a: any): any; } - >a : any - - declare function foo6(a: (x: (arg: Base) => Derived) => Base): typeof a; -->foo6 : { (a: (x: (arg: Base) => Derived) => Base): typeof a; (a: any): any; } -+>foo6 : { (a: (x: (arg: Base) => Derived) => Base): (x: (arg: Base) => Derived) => Base; (a: any): any; } - >a : (x: (arg: Base) => Derived) => Base - >x : (arg: Base) => Derived - >arg : Base - >a : (x: (arg: Base) => Derived) => Base - - declare function foo6(a: any): any; -->foo6 : { (a: (x: (arg: Base) => Derived) => Base): typeof a; (a: any): any; } -+>foo6 : { (a: (x: (arg: Base) => Derived) => Base): (x: (arg: Base) => Derived) => Base; (a: any): any; } - >a : any - - declare function foo7(a: (x: (arg: Base) => Derived) => (r: Base) => Derived): typeof a; -->foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } -+>foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived) => (r: Base) => Derived; (a: any): any; } - >a : (x: (arg: Base) => Derived) => (r: Base) => Derived - >x : (arg: Base) => Derived - >arg : Base -@@= skipped -71, +71 lines =@@ - >a : (x: (arg: Base) => Derived) => (r: Base) => Derived - - declare function foo7(a: any): any; -->foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } -+>foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived) => (r: Base) => Derived; (a: any): any; } - >a : any - - declare function foo8(a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; -->foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } -+>foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } - >a : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived - >x : (arg: Base) => Derived - >arg : Base -@@= skipped -14, +14 lines =@@ - >a : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived - - declare function foo8(a: any): any; -->foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } -+>foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } - >a : any - - declare function foo9(a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; -->foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } -+>foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } - >a : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived - >x : (arg: Base) => Derived - >arg : Base -@@= skipped -14, +14 lines =@@ - >a : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived - - declare function foo9(a: any): any; -->foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } -+>foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } - >a : any - - declare function foo10(a: (...x: Derived[]) => Derived): typeof a; -->foo10 : { (a: (...x: Derived[]) => Derived): typeof a; (a: any): any; } -+>foo10 : { (a: (...x: Derived[]) => Derived): (...x: Derived[]) => Derived; (a: any): any; } - >a : (...x: Derived[]) => Derived - >x : Derived[] - >a : (...x: Derived[]) => Derived - - declare function foo10(a: any): any; -->foo10 : { (a: (...x: Derived[]) => Derived): typeof a; (a: any): any; } -+>foo10 : { (a: (...x: Derived[]) => Derived): (...x: Derived[]) => Derived; (a: any): any; } - >a : any - - declare function foo11(a: (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a; -->foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } -+>foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } - >a : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - >x : { foo: string; } - >foo : string -@@= skipped -24, +24 lines =@@ - >a : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - declare function foo11(a: any): any; -->foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } -+>foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } - >a : any - - declare function foo12(a: (x: Array, y: Array) => Array): typeof a; -->foo12 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } -->a : (x: Array, y: Array) => Array -+>foo12 : { (a: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } -+>a : (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] -->a : (x: Array, y: Array) => Array -+>a : (x: Base[], y: Derived2[]) => Derived[] - - declare function foo12(a: any): any; -->foo12 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } -+>foo12 : { (a: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } - >a : any - - declare function foo13(a: (x: Array, y: Array) => Array): typeof a; -->foo13 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } -->a : (x: Array, y: Array) => Array -+>foo13 : { (a: (x: Base[], y: Derived[]) => Derived[]): (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } -+>a : (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] -->a : (x: Array, y: Array) => Array -+>a : (x: Base[], y: Derived[]) => Derived[] - - declare function foo13(a: any): any; -->foo13 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } -+>foo13 : { (a: (x: Base[], y: Derived[]) => Derived[]): (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } - >a : any - - declare function foo14(a: (x: { a: string; b: number }) => Object): typeof a; -->foo14 : { (a: (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } -+>foo14 : { (a: (x: { a: string; b: number; }) => Object): (x: { a: string; b: number; }) => Object; (a: any): any; } - >a : (x: { a: string; b: number; }) => Object - >x : { a: string; b: number; } - >a : string -@@= skipped -34, +34 lines =@@ - >a : (x: { a: string; b: number; }) => Object - - declare function foo14(a: any): any; -->foo14 : { (a: (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } -+>foo14 : { (a: (x: { a: string; b: number; }) => Object): (x: { a: string; b: number; }) => Object; (a: any): any; } - >a : any - - declare function foo15(a: { -->foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): typeof a; (a: any): any; } -+>foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): { (x: number): number[]; (x: string): string[]; }; (a: any): any; } - >a : { (x: number): number[]; (x: string): string[]; } - - (x: number): number[]; -@@= skipped -17, +17 lines =@@ - >a : { (x: number): number[]; (x: string): string[]; } - - declare function foo15(a: any): any; -->foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): typeof a; (a: any): any; } -+>foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): { (x: number): number[]; (x: string): string[]; }; (a: any): any; } - >a : any - - declare function foo16(a: { -->foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): typeof a; (a: any): any; } -+>foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): { (x: T): number[]; (x: U): number[]; }; (a: any): any; } - >a : { (x: T): number[]; (x: U): number[]; } - - (x: T): number[]; -@@= skipped -17, +17 lines =@@ - >a : { (x: T): number[]; (x: U): number[]; } - - declare function foo16(a: any): any; -->foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): typeof a; (a: any): any; } -+>foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): { (x: T): number[]; (x: U): number[]; }; (a: any): any; } - >a : any - - declare function foo17(a: { -->foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } -+>foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }; (a: any): any; } - >a : { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; } - - (x: (a: number) => number): number[]; -@@= skipped -19, +19 lines =@@ - >a : { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; } - - declare function foo17(a: any): any; -->foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } -+>foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }; (a: any): any; } - >a : any - - declare function foo18(a: { -->foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } -+>foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }; (a: any): any; } - >a : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } - - (x: { -@@= skipped -31, +31 lines =@@ - >a : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } - - declare function foo18(a: any): any; -->foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } -+>foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }; (a: any): any; } - >a : any - - var r1arg1 = (x: T) => [x]; -@@= skipped -20, +20 lines =@@ - var r1 = foo1(r1arg1); // any, return types are not subtype of first overload - >r1 : (x: number) => number[] - >foo1(r1arg1) : (x: number) => number[] -->foo1 : { (a: (x: number) => number[]): typeof a; (a: any): any; } -+>foo1 : { (a: (x: number) => number[]): (x: number) => number[]; (a: any): any; } - >r1arg1 : (x: T) => T[] - - var r1a = [r1arg2, r1arg1]; // generic signature, subtype in both directions -@@= skipped -32, +32 lines =@@ - var r2 = foo2(r2arg1); - >r2 : (x: number) => string[] - >foo2(r2arg1) : (x: number) => string[] -->foo2 : { (a: (x: number) => string[]): typeof a; (a: any): any; } -+>foo2 : { (a: (x: number) => string[]): (x: number) => string[]; (a: any): any; } - >r2arg1 : (x: T) => string[] - - var r2a = [r2arg1, r2arg2]; -@@= skipped -29, +29 lines =@@ - var r3 = foo3(r3arg1); - >r3 : (x: number) => void - >foo3(r3arg1) : (x: number) => void -->foo3 : { (a: (x: number) => void): typeof a; (a: any): any; } -+>foo3 : { (a: (x: number) => void): (x: number) => void; (a: any): any; } - >r3arg1 : (x: T) => T - - var r3a = [r3arg1, r3arg2]; -@@= skipped -32, +32 lines =@@ - var r4 = foo4(r4arg1); // any - >r4 : (x: string, y: number) => string - >foo4(r4arg1) : (x: string, y: number) => string -->foo4 : { (a: (x: string, y: number) => string): typeof a; (a: any): any; } -+>foo4 : { (a: (x: string, y: number) => string): (x: string, y: number) => string; (a: any): any; } - >r4arg1 : (x: T, y: U) => T - - var r4a = [r4arg1, r4arg2]; -@@= skipped -32, +32 lines =@@ - var r5 = foo5(r5arg1); // any - >r5 : (x: (arg: string) => number) => string - >foo5(r5arg1) : (x: (arg: string) => number) => string -->foo5 : { (a: (x: (arg: string) => number) => string): typeof a; (a: any): any; } -+>foo5 : { (a: (x: (arg: string) => number) => string): (x: (arg: string) => number) => string; (a: any): any; } - >r5arg1 : (x: (arg: T) => U) => T - - var r5a = [r5arg1, r5arg2]; -@@= skipped -32, +32 lines =@@ - var r6 = foo6(r6arg1); // any - >r6 : (x: (arg: Base) => Derived) => Base - >foo6(r6arg1) : (x: (arg: Base) => Derived) => Base -->foo6 : { (a: (x: (arg: Base) => Derived) => Base): typeof a; (a: any): any; } -+>foo6 : { (a: (x: (arg: Base) => Derived) => Base): (x: (arg: Base) => Derived) => Base; (a: any): any; } - >r6arg1 : (x: (arg: T) => U) => T - - var r6a = [r6arg1, r6arg2]; -@@= skipped -36, +36 lines =@@ - var r7 = foo7(r7arg1); // any - >r7 : (x: (arg: Base) => Derived) => (r: Base) => Derived - >foo7(r7arg1) : (x: (arg: Base) => Derived) => (r: Base) => Derived -->foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } -+>foo7 : { (a: (x: (arg: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived) => (r: Base) => Derived; (a: any): any; } - >r7arg1 : (x: (arg: T) => U) => (r: T) => U - - var r7a = [r7arg1, r7arg2]; -@@= skipped -40, +40 lines =@@ - var r8 = foo8(r8arg1); // any - >r8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived - >foo8(r8arg1) : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -->foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } -+>foo8 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } - >r8arg1 : (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U - - var r8a = [r8arg1, r8arg2]; -@@= skipped -42, +42 lines =@@ - var r9 = foo9(r9arg1); // any - >r9 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived - >foo9(r9arg1) : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -->foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a; (a: any): any; } -+>foo9 : { (a: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a: any): any; } - >r9arg1 : (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U - - var r9a = [r9arg1, r9arg2]; -@@= skipped -32, +32 lines =@@ - var r10 = foo10(r10arg1); // any - >r10 : (...x: Derived[]) => Derived - >foo10(r10arg1) : (...x: Derived[]) => Derived -->foo10 : { (a: (...x: Derived[]) => Derived): typeof a; (a: any): any; } -+>foo10 : { (a: (...x: Derived[]) => Derived): (...x: Derived[]) => Derived; (a: any): any; } - >r10arg1 : (...x: T[]) => T - - var r10a = [r10arg1, r10arg2]; -@@= skipped -35, +35 lines =@@ - var r11 = foo11(r11arg1); // any - >r11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - >foo11(r11arg1) : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -->foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } -+>foo11 : { (a: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } - >r11arg1 : (x: T, y: T) => T - - var r11a = [r11arg1, r11arg2]; -@@= skipped -16, +16 lines =@@ - >r11arg1 : (x: T, y: T) => T - - var r12arg1 = >(x: Array, y: T) => >null; -->r12arg1 : >(x: Array, y: T) => Array -->>(x: Array, y: T) => >null : >(x: Array, y: T) => Array -+>r12arg1 : (x: Base[], y: T) => Derived[] -+>>(x: Array, y: T) => >null : (x: Base[], y: T) => Derived[] - >x : Base[] - >y : T - >>null : Derived[] - - var r12arg2 = (x: Array, y: Array) => >null; -->r12arg2 : (x: Array, y: Array) => Array -->(x: Array, y: Array) => >null : (x: Array, y: Array) => Array -+>r12arg2 : (x: Base[], y: Derived2[]) => Derived[] -+>(x: Array, y: Array) => >null : (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - >>null : Derived[] - - var r12 = foo12(r12arg1); // any -->r12 : (x: Array, y: Array) => Array -->foo12(r12arg1) : (x: Array, y: Array) => Array -->foo12 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } -->r12arg1 : >(x: Array, y: T) => Array -+>r12 : (x: Base[], y: Derived2[]) => Derived[] -+>foo12(r12arg1) : (x: Base[], y: Derived2[]) => Derived[] -+>foo12 : { (a: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } -+>r12arg1 : (x: Base[], y: T) => Derived[] - - var r12a = [r12arg1, r12arg2]; -->r12a : ((x: Array, y: Array) => Array)[] -->[r12arg1, r12arg2] : ((x: Array, y: Array) => Array)[] -->r12arg1 : >(x: Array, y: T) => Array -->r12arg2 : (x: Array, y: Array) => Array -+>r12a : ((x: Base[], y: Derived2[]) => Derived[])[] -+>[r12arg1, r12arg2] : ((x: Base[], y: Derived2[]) => Derived[])[] -+>r12arg1 : (x: Base[], y: T) => Derived[] -+>r12arg2 : (x: Base[], y: Derived2[]) => Derived[] - - var r12b = [r12arg2, r12arg1]; -->r12b : ((x: Array, y: Array) => Array)[] -->[r12arg2, r12arg1] : ((x: Array, y: Array) => Array)[] -->r12arg2 : (x: Array, y: Array) => Array -->r12arg1 : >(x: Array, y: T) => Array -+>r12b : ((x: Base[], y: Derived2[]) => Derived[])[] -+>[r12arg2, r12arg1] : ((x: Base[], y: Derived2[]) => Derived[])[] -+>r12arg2 : (x: Base[], y: Derived2[]) => Derived[] -+>r12arg1 : (x: Base[], y: T) => Derived[] - - var r13arg1 = >(x: Array, y: T) => y; -->r13arg1 : >(x: Array, y: T) => T -->>(x: Array, y: T) => y : >(x: Array, y: T) => T -+>r13arg1 : (x: Base[], y: T) => T -+>>(x: Array, y: T) => y : (x: Base[], y: T) => T - >x : Base[] - >y : T - >y : T - - var r13arg2 = (x: Array, y: Array) => >null; -->r13arg2 : (x: Array, y: Array) => Array -->(x: Array, y: Array) => >null : (x: Array, y: Array) => Array -+>r13arg2 : (x: Base[], y: Derived[]) => Derived[] -+>(x: Array, y: Array) => >null : (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] - >>null : Derived[] - - var r13 = foo13(r13arg1); // any -->r13 : (x: Array, y: Array) => Array -->foo13(r13arg1) : (x: Array, y: Array) => Array -->foo13 : { (a: (x: Array, y: Array) => Array): typeof a; (a: any): any; } -->r13arg1 : >(x: Array, y: T) => T -+>r13 : (x: Base[], y: Derived[]) => Derived[] -+>foo13(r13arg1) : (x: Base[], y: Derived[]) => Derived[] -+>foo13 : { (a: (x: Base[], y: Derived[]) => Derived[]): (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } -+>r13arg1 : (x: Base[], y: T) => T - - var r13a = [r13arg1, r13arg2]; -->r13a : ((x: Array, y: Array) => Array)[] -->[r13arg1, r13arg2] : ((x: Array, y: Array) => Array)[] -->r13arg1 : >(x: Array, y: T) => T -->r13arg2 : (x: Array, y: Array) => Array -+>r13a : ((x: Base[], y: Derived[]) => Derived[])[] -+>[r13arg1, r13arg2] : ((x: Base[], y: Derived[]) => Derived[])[] -+>r13arg1 : (x: Base[], y: T) => T -+>r13arg2 : (x: Base[], y: Derived[]) => Derived[] - - var r13b = [r13arg2, r13arg1]; -->r13b : ((x: Array, y: Array) => Array)[] -->[r13arg2, r13arg1] : ((x: Array, y: Array) => Array)[] -->r13arg2 : (x: Array, y: Array) => Array -->r13arg1 : >(x: Array, y: T) => T -+>r13b : ((x: Base[], y: Derived[]) => Derived[])[] -+>[r13arg2, r13arg1] : ((x: Base[], y: Derived[]) => Derived[])[] -+>r13arg2 : (x: Base[], y: Derived[]) => Derived[] -+>r13arg1 : (x: Base[], y: T) => T - - var r14arg1 = (x: { a: T; b: T }) => x.a; - >r14arg1 : (x: { a: T; b: T; }) => T -@@= skipped -84, +84 lines =@@ - var r14 = foo14(r14arg1); // any - >r14 : any - >foo14(r14arg1) : any -->foo14 : { (a: (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } -+>foo14 : { (a: (x: { a: string; b: number; }) => Object): (x: { a: string; b: number; }) => Object; (a: any): any; } - >r14arg1 : (x: { a: T; b: T; }) => T - - var r14a = [r14arg1, r14arg2]; -@@= skipped -24, +24 lines =@@ - var r15 = foo15(r15arg1); // any - >r15 : any - >foo15(r15arg1) : any -->foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): typeof a; (a: any): any; } -+>foo15 : { (a: { (x: number): number[]; (x: string): string[]; }): { (x: number): number[]; (x: string): string[]; }; (a: any): any; } - >r15arg1 : (x: T) => T[] - - var r16arg1 = (x: T) => [1]; -@@= skipped -13, +13 lines =@@ - var r16 = foo16(r16arg1); - >r16 : { (x: T): number[]; (x: U): number[]; } - >foo16(r16arg1) : { (x: T): number[]; (x: U): number[]; } -->foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): typeof a; (a: any): any; } -+>foo16 : { (a: { (x: T): number[]; (x: U): number[]; }): { (x: T): number[]; (x: U): number[]; }; (a: any): any; } - >r16arg1 : (x: T) => number[] - - var r17arg1 = (x: (a: T) => T) => null; -@@= skipped -13, +13 lines =@@ - var r17 = foo17(r17arg1); // any - >r17 : any - >foo17(r17arg1) : any -->foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } -+>foo17 : { (a: { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }): { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; }; (a: any): any; } - >r17arg1 : (x: (a: T) => T) => T[] - - var r18arg1 = (x: (a: T) => T) => null; -@@= skipped -13, +13 lines =@@ - var r18 = foo18(r18arg1); - >r18 : any - >foo18(r18arg1) : any -->foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } -+>foo18 : { (a: { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }): { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }; (a: any): any; } - >r18arg1 : (x: (a: T) => T) => T[] diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures3.types b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures3.types index cbe6bb46068..3002b21e18b 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures3.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures3.types @@ -27,17 +27,17 @@ namespace Errors { >bing : string declare function foo2(a2: (x: number) => string[]): typeof a2; ->foo2 : { (a2: (x: number) => string[]): (x: number) => string[]; (a2: any): any; } +>foo2 : { (a2: (x: number) => string[]): typeof a2; (a2: any): any; } >a2 : (x: number) => string[] >x : number >a2 : (x: number) => string[] declare function foo2(a2: any): any; ->foo2 : { (a2: (x: number) => string[]): (x: number) => string[]; (a2: any): any; } +>foo2 : { (a2: (x: number) => string[]): typeof a2; (a2: any): any; } >a2 : any declare function foo7(a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): typeof a2; ->foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): (x: (arg: Base) => Derived) => (r: Base) => Derived2; (a2: any): any; } +>foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): typeof a2; (a2: any): any; } >a2 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 >x : (arg: Base) => Derived >arg : Base @@ -45,11 +45,11 @@ namespace Errors { >a2 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 declare function foo7(a2: any): any; ->foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): (x: (arg: Base) => Derived) => (r: Base) => Derived2; (a2: any): any; } +>foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): typeof a2; (a2: any): any; } >a2 : any declare function foo8(a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a2; ->foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a2: any): any; } +>foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a2; (a2: any): any; } >a2 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived >x : (arg: Base) => Derived >arg : Base @@ -59,21 +59,21 @@ namespace Errors { >a2 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived declare function foo8(a2: any): any; ->foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a2: any): any; } +>foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a2; (a2: any): any; } >a2 : any declare function foo10(a2: (...x: Base[]) => Base): typeof a2; ->foo10 : { (a2: (...x: Base[]) => Base): (...x: Base[]) => Base; (a2: any): any; } +>foo10 : { (a2: (...x: Base[]) => Base): typeof a2; (a2: any): any; } >a2 : (...x: Base[]) => Base >x : Base[] >a2 : (...x: Base[]) => Base declare function foo10(a2: any): any; ->foo10 : { (a2: (...x: Base[]) => Base): (...x: Base[]) => Base; (a2: any): any; } +>foo10 : { (a2: (...x: Base[]) => Base): typeof a2; (a2: any): any; } >a2 : any declare function foo11(a2: (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a2; ->foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } +>foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } >a2 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base >x : { foo: string; } >foo : string @@ -83,22 +83,22 @@ namespace Errors { >a2 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base declare function foo11(a2: any): any; ->foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } +>foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } >a2 : any declare function foo12(a2: (x: Array, y: Array) => Array): typeof a2; ->foo12 : { (a2: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } ->a2 : (x: Base[], y: Derived2[]) => Derived[] +>foo12 : { (a2: (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } +>a2 : (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] ->a2 : (x: Base[], y: Derived2[]) => Derived[] +>a2 : (x: Array, y: Array) => Array declare function foo12(a2: any): any; ->foo12 : { (a2: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } +>foo12 : { (a2: (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } >a2 : any declare function foo15(a2: (x: { a: string; b: number }) => number): typeof a2; ->foo15 : { (a2: (x: { a: string; b: number; }) => number): (x: { a: string; b: number; }) => number; (a2: any): any; } +>foo15 : { (a2: (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } >a2 : (x: { a: string; b: number; }) => number >x : { a: string; b: number; } >a : string @@ -106,16 +106,16 @@ namespace Errors { >a2 : (x: { a: string; b: number; }) => number declare function foo15(a2: any): any; ->foo15 : { (a2: (x: { a: string; b: number; }) => number): (x: { a: string; b: number; }) => number; (a2: any): any; } +>foo15 : { (a2: (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } >a2 : any declare function foo16(a2: { ->foo16 : { (a2: { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }): { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } ->a2 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } +>foo16 : { (a2: { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } +>a2 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } // type of parameter is overload set which means we can't do inference based on this type (x: { ->x : { (a: number): number; (a?: number | undefined): number; } +>x : { (a: number): number; (a?: number): number; } (a: number): number; >a : number @@ -125,7 +125,7 @@ namespace Errors { }): number[]; (x: { ->x : { (a: boolean): boolean; (a?: boolean | undefined): boolean; } +>x : { (a: boolean): boolean; (a?: boolean): boolean; } (a: boolean): boolean; >a : boolean @@ -135,14 +135,14 @@ namespace Errors { }): boolean[]; }): typeof a2; ->a2 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } +>a2 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } declare function foo16(a2: any): any; ->foo16 : { (a2: { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }): { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } +>foo16 : { (a2: { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } >a2 : any declare function foo17(a2: { ->foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }; (a2: any): any; } +>foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } >a2 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } (x: { @@ -169,13 +169,13 @@ namespace Errors { >a2 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } declare function foo17(a2: any): any; ->foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }; (a2: any): any; } +>foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } >a2 : any var r1 = foo2((x: T) => null); // any >r1 : (x: number) => string[] >foo2((x: T) => null) : (x: number) => string[] ->foo2 : { (a2: (x: number) => string[]): (x: number) => string[]; (a2: any): any; } +>foo2 : { (a2: (x: number) => string[]): typeof a2; (a2: any): any; } >(x: T) => null : (x: T) => U[] >x : T >null : U[] @@ -223,7 +223,7 @@ namespace Errors { var r2 = foo7(r2arg); // any >r2 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 >foo7(r2arg) : (x: (arg: Base) => Derived) => (r: Base) => Derived2 ->foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): (x: (arg: Base) => Derived) => (r: Base) => Derived2; (a2: any): any; } +>foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): typeof a2; (a2: any): any; } >r2arg : (x: (arg: T) => U) => (r: T) => V var r2a = [r2arg2, r2arg]; @@ -264,7 +264,7 @@ namespace Errors { var r3 = foo8(r3arg); // any >r3 : any >foo8(r3arg) : any ->foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a2: any): any; } +>foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a2; (a2: any): any; } >r3arg : (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U var r3a = [r3arg2, r3arg]; @@ -294,7 +294,7 @@ namespace Errors { var r4 = foo10(r4arg); // any >r4 : any >foo10(r4arg) : any ->foo10 : { (a2: (...x: Base[]) => Base): (...x: Base[]) => Base; (a2: any): any; } +>foo10 : { (a2: (...x: Base[]) => Base): typeof a2; (a2: any): any; } >r4arg : (...x: T[]) => T var r4a = [r4arg2, r4arg]; @@ -329,7 +329,7 @@ namespace Errors { var r5 = foo11(r5arg); // any >r5 : any >foo11(r5arg) : any ->foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } +>foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } >r5arg : (x: T, y: T) => T var r5a = [r5arg2, r5arg]; @@ -345,36 +345,36 @@ namespace Errors { >r5arg2 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base var r6arg = (x: Array, y: Array) => >null; ->r6arg : (x: Base[], y: Derived2[]) => Derived[] ->(x: Array, y: Array) => >null : (x: Base[], y: Derived2[]) => Derived[] +>r6arg : (x: Array, y: Array) => Array +>(x: Array, y: Array) => >null : (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] >>null : Derived[] var r6arg2 = >(x: Array, y: Array) => null; ->r6arg2 : (x: Base[], y: Base[]) => T ->>(x: Array, y: Array) => null : (x: Base[], y: Base[]) => T +>r6arg2 : >(x: Array, y: Array) => T +>>(x: Array, y: Array) => null : >(x: Array, y: Array) => T >x : Base[] >y : Base[] >null : T var r6 = foo12(r6arg); // (x: Array, y: Array) => Array ->r6 : (x: Base[], y: Derived2[]) => Derived[] ->foo12(r6arg) : (x: Base[], y: Derived2[]) => Derived[] ->foo12 : { (a2: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } ->r6arg : (x: Base[], y: Derived2[]) => Derived[] +>r6 : (x: Array, y: Array) => Array +>foo12(r6arg) : (x: Array, y: Array) => Array +>foo12 : { (a2: (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } +>r6arg : (x: Array, y: Array) => Array var r6a = [r6arg2, r6arg]; ->r6a : ((x: Base[], y: Derived2[]) => Derived[])[] ->[r6arg2, r6arg] : ((x: Base[], y: Derived2[]) => Derived[])[] ->r6arg2 : (x: Base[], y: Base[]) => T ->r6arg : (x: Base[], y: Derived2[]) => Derived[] +>r6a : ((x: Array, y: Array) => Array)[] +>[r6arg2, r6arg] : ((x: Array, y: Array) => Array)[] +>r6arg2 : >(x: Array, y: Array) => T +>r6arg : (x: Array, y: Array) => Array var r6b = [r6arg, r6arg2]; ->r6b : ((x: Base[], y: Derived2[]) => Derived[])[] ->[r6arg, r6arg2] : ((x: Base[], y: Derived2[]) => Derived[])[] ->r6arg : (x: Base[], y: Derived2[]) => Derived[] ->r6arg2 : (x: Base[], y: Base[]) => T +>r6b : ((x: Array, y: Array) => Array)[] +>[r6arg, r6arg2] : ((x: Array, y: Array) => Array)[] +>r6arg : (x: Array, y: Array) => Array +>r6arg2 : >(x: Array, y: Array) => T var r7arg = (x: { a: T; b: T }) => null; >r7arg : (x: { a: T; b: T; }) => T @@ -395,7 +395,7 @@ namespace Errors { var r7 = foo15(r7arg); // any >r7 : any >foo15(r7arg) : any ->foo15 : { (a2: (x: { a: string; b: number; }) => number): (x: { a: string; b: number; }) => number; (a2: any): any; } +>foo15 : { (a2: (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } >r7arg : (x: { a: T; b: T; }) => T var r7a = [r7arg2, r7arg]; @@ -421,7 +421,7 @@ namespace Errors { var r7c = foo15(r7arg3); // (x: { a: string; b: number }) => number): number; >r7c : any >foo15(r7arg3) : any ->foo15 : { (a2: (x: { a: string; b: number; }) => number): (x: { a: string; b: number; }) => number; (a2: any): any; } +>foo15 : { (a2: (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } >r7arg3 : (x: { a: T; b: T; }) => number var r7d = [r7arg2, r7arg3]; @@ -446,7 +446,7 @@ namespace Errors { var r8 = foo16(r8arg); // any >r8 : any >foo16(r8arg) : any ->foo16 : { (a2: { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }): { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } +>foo16 : { (a2: { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } >r8arg : (x: (a: T) => T) => T[] var r9arg = (x: (a: T) => T) => null; @@ -459,7 +459,7 @@ namespace Errors { var r9 = foo17(r9arg); // (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; >r9 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } >foo17(r9arg) : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } ->foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }; (a2: any): any; } +>foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } >r9arg : (x: (a: T) => T) => any[] } @@ -467,13 +467,13 @@ namespace WithGenericSignaturesInBaseType { >WithGenericSignaturesInBaseType : typeof WithGenericSignaturesInBaseType declare function foo2(a2: (x: T) => T[]): typeof a2; ->foo2 : { (a2: (x: T) => T[]): (x: T) => T[]; (a2: any): any; } +>foo2 : { (a2: (x: T) => T[]): typeof a2; (a2: any): any; } >a2 : (x: T) => T[] >x : T >a2 : (x: T) => T[] declare function foo2(a2: any): any; ->foo2 : { (a2: (x: T) => T[]): (x: T) => T[]; (a2: any): any; } +>foo2 : { (a2: (x: T) => T[]): typeof a2; (a2: any): any; } >a2 : any var r2arg2 = (x: T) => ['']; @@ -486,17 +486,17 @@ namespace WithGenericSignaturesInBaseType { var r2 = foo2(r2arg2); // (x:T) => T[] since we can infer from generic signatures now >r2 : any >foo2(r2arg2) : any ->foo2 : { (a2: (x: T) => T[]): (x: T) => T[]; (a2: any): any; } +>foo2 : { (a2: (x: T) => T[]): typeof a2; (a2: any): any; } >r2arg2 : (x: T) => string[] declare function foo3(a2: (x: T) => string[]): typeof a2; ->foo3 : { (a2: (x: T) => string[]): (x: T) => string[]; (a2: any): any; } +>foo3 : { (a2: (x: T) => string[]): typeof a2; (a2: any): any; } >a2 : (x: T) => string[] >x : T >a2 : (x: T) => string[] declare function foo3(a2: any): any; ->foo3 : { (a2: (x: T) => string[]): (x: T) => string[]; (a2: any): any; } +>foo3 : { (a2: (x: T) => string[]): typeof a2; (a2: any): any; } >a2 : any var r3arg2 = (x: T) => null; @@ -508,6 +508,6 @@ namespace WithGenericSignaturesInBaseType { var r3 = foo3(r3arg2); // any >r3 : any >foo3(r3arg2) : any ->foo3 : { (a2: (x: T) => string[]): (x: T) => string[]; (a2: any): any; } +>foo3 : { (a2: (x: T) => string[]): typeof a2; (a2: any): any; } >r3arg2 : (x: T) => T[] } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures3.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures3.types.diff deleted file mode 100644 index db87480e1dd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignatures3.types.diff +++ /dev/null @@ -1,326 +0,0 @@ ---- old.subtypingWithCallSignatures3.types -+++ new.subtypingWithCallSignatures3.types -@@= skipped -26, +26 lines =@@ - >bing : string - - declare function foo2(a2: (x: number) => string[]): typeof a2; -->foo2 : { (a2: (x: number) => string[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: (x: number) => string[]): (x: number) => string[]; (a2: any): any; } - >a2 : (x: number) => string[] - >x : number - >a2 : (x: number) => string[] - - declare function foo2(a2: any): any; -->foo2 : { (a2: (x: number) => string[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: (x: number) => string[]): (x: number) => string[]; (a2: any): any; } - >a2 : any - - declare function foo7(a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): typeof a2; -->foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): typeof a2; (a2: any): any; } -+>foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): (x: (arg: Base) => Derived) => (r: Base) => Derived2; (a2: any): any; } - >a2 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 - >x : (arg: Base) => Derived - >arg : Base -@@= skipped -18, +18 lines =@@ - >a2 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 - - declare function foo7(a2: any): any; -->foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): typeof a2; (a2: any): any; } -+>foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): (x: (arg: Base) => Derived) => (r: Base) => Derived2; (a2: any): any; } - >a2 : any - - declare function foo8(a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a2; -->foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a2; (a2: any): any; } -+>foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a2: any): any; } - >a2 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived - >x : (arg: Base) => Derived - >arg : Base -@@= skipped -14, +14 lines =@@ - >a2 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived - - declare function foo8(a2: any): any; -->foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a2; (a2: any): any; } -+>foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a2: any): any; } - >a2 : any - - declare function foo10(a2: (...x: Base[]) => Base): typeof a2; -->foo10 : { (a2: (...x: Base[]) => Base): typeof a2; (a2: any): any; } -+>foo10 : { (a2: (...x: Base[]) => Base): (...x: Base[]) => Base; (a2: any): any; } - >a2 : (...x: Base[]) => Base - >x : Base[] - >a2 : (...x: Base[]) => Base - - declare function foo10(a2: any): any; -->foo10 : { (a2: (...x: Base[]) => Base): typeof a2; (a2: any): any; } -+>foo10 : { (a2: (...x: Base[]) => Base): (...x: Base[]) => Base; (a2: any): any; } - >a2 : any - - declare function foo11(a2: (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a2; -->foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } -+>foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } - >a2 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - >x : { foo: string; } - >foo : string -@@= skipped -24, +24 lines =@@ - >a2 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - declare function foo11(a2: any): any; -->foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } -+>foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } - >a2 : any - - declare function foo12(a2: (x: Array, y: Array) => Array): typeof a2; -->foo12 : { (a2: (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } -->a2 : (x: Array, y: Array) => Array -+>foo12 : { (a2: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } -+>a2 : (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] -->a2 : (x: Array, y: Array) => Array -+>a2 : (x: Base[], y: Derived2[]) => Derived[] - - declare function foo12(a2: any): any; -->foo12 : { (a2: (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } -+>foo12 : { (a2: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } - >a2 : any - - declare function foo15(a2: (x: { a: string; b: number }) => number): typeof a2; -->foo15 : { (a2: (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } -+>foo15 : { (a2: (x: { a: string; b: number; }) => number): (x: { a: string; b: number; }) => number; (a2: any): any; } - >a2 : (x: { a: string; b: number; }) => number - >x : { a: string; b: number; } - >a : string -@@= skipped -23, +23 lines =@@ - >a2 : (x: { a: string; b: number; }) => number - - declare function foo15(a2: any): any; -->foo15 : { (a2: (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } -+>foo15 : { (a2: (x: { a: string; b: number; }) => number): (x: { a: string; b: number; }) => number; (a2: any): any; } - >a2 : any - - declare function foo16(a2: { -->foo16 : { (a2: { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } -->a2 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -+>foo16 : { (a2: { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }): { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } -+>a2 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } - - // type of parameter is overload set which means we can't do inference based on this type - (x: { -->x : { (a: number): number; (a?: number): number; } -+>x : { (a: number): number; (a?: number | undefined): number; } - - (a: number): number; - >a : number -@@= skipped -19, +19 lines =@@ - - }): number[]; - (x: { -->x : { (a: boolean): boolean; (a?: boolean): boolean; } -+>x : { (a: boolean): boolean; (a?: boolean | undefined): boolean; } - - (a: boolean): boolean; - >a : boolean -@@= skipped -10, +10 lines =@@ - - }): boolean[]; - }): typeof a2; -->a2 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -+>a2 : { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; } - - declare function foo16(a2: any): any; -->foo16 : { (a2: { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } -+>foo16 : { (a2: { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }): { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } - >a2 : any - - declare function foo17(a2: { -->foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } -+>foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }; (a2: any): any; } - >a2 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } - - (x: { -@@= skipped -34, +34 lines =@@ - >a2 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } - - declare function foo17(a2: any): any; -->foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } -+>foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }; (a2: any): any; } - >a2 : any - - var r1 = foo2((x: T) => null); // any - >r1 : (x: number) => string[] - >foo2((x: T) => null) : (x: number) => string[] -->foo2 : { (a2: (x: number) => string[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: (x: number) => string[]): (x: number) => string[]; (a2: any): any; } - >(x: T) => null : (x: T) => U[] - >x : T - >null : U[] -@@= skipped -54, +54 lines =@@ - var r2 = foo7(r2arg); // any - >r2 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 - >foo7(r2arg) : (x: (arg: Base) => Derived) => (r: Base) => Derived2 -->foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): typeof a2; (a2: any): any; } -+>foo7 : { (a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): (x: (arg: Base) => Derived) => (r: Base) => Derived2; (a2: any): any; } - >r2arg : (x: (arg: T) => U) => (r: T) => V - - var r2a = [r2arg2, r2arg]; -@@= skipped -41, +41 lines =@@ - var r3 = foo8(r3arg); // any - >r3 : any - >foo8(r3arg) : any -->foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a2; (a2: any): any; } -+>foo8 : { (a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; (a2: any): any; } - >r3arg : (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U - - var r3a = [r3arg2, r3arg]; -@@= skipped -30, +30 lines =@@ - var r4 = foo10(r4arg); // any - >r4 : any - >foo10(r4arg) : any -->foo10 : { (a2: (...x: Base[]) => Base): typeof a2; (a2: any): any; } -+>foo10 : { (a2: (...x: Base[]) => Base): (...x: Base[]) => Base; (a2: any): any; } - >r4arg : (...x: T[]) => T - - var r4a = [r4arg2, r4arg]; -@@= skipped -35, +35 lines =@@ - var r5 = foo11(r5arg); // any - >r5 : any - >foo11(r5arg) : any -->foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } -+>foo11 : { (a2: (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } - >r5arg : (x: T, y: T) => T - - var r5a = [r5arg2, r5arg]; -@@= skipped -16, +16 lines =@@ - >r5arg2 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - var r6arg = (x: Array, y: Array) => >null; -->r6arg : (x: Array, y: Array) => Array -->(x: Array, y: Array) => >null : (x: Array, y: Array) => Array -+>r6arg : (x: Base[], y: Derived2[]) => Derived[] -+>(x: Array, y: Array) => >null : (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - >>null : Derived[] - - var r6arg2 = >(x: Array, y: Array) => null; -->r6arg2 : >(x: Array, y: Array) => T -->>(x: Array, y: Array) => null : >(x: Array, y: Array) => T -+>r6arg2 : (x: Base[], y: Base[]) => T -+>>(x: Array, y: Array) => null : (x: Base[], y: Base[]) => T - >x : Base[] - >y : Base[] - >null : T - - var r6 = foo12(r6arg); // (x: Array, y: Array) => Array -->r6 : (x: Array, y: Array) => Array -->foo12(r6arg) : (x: Array, y: Array) => Array -->foo12 : { (a2: (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } -->r6arg : (x: Array, y: Array) => Array -+>r6 : (x: Base[], y: Derived2[]) => Derived[] -+>foo12(r6arg) : (x: Base[], y: Derived2[]) => Derived[] -+>foo12 : { (a2: (x: Base[], y: Derived2[]) => Derived[]): (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } -+>r6arg : (x: Base[], y: Derived2[]) => Derived[] - - var r6a = [r6arg2, r6arg]; -->r6a : ((x: Array, y: Array) => Array)[] -->[r6arg2, r6arg] : ((x: Array, y: Array) => Array)[] -->r6arg2 : >(x: Array, y: Array) => T -->r6arg : (x: Array, y: Array) => Array -+>r6a : ((x: Base[], y: Derived2[]) => Derived[])[] -+>[r6arg2, r6arg] : ((x: Base[], y: Derived2[]) => Derived[])[] -+>r6arg2 : (x: Base[], y: Base[]) => T -+>r6arg : (x: Base[], y: Derived2[]) => Derived[] - - var r6b = [r6arg, r6arg2]; -->r6b : ((x: Array, y: Array) => Array)[] -->[r6arg, r6arg2] : ((x: Array, y: Array) => Array)[] -->r6arg : (x: Array, y: Array) => Array -->r6arg2 : >(x: Array, y: Array) => T -+>r6b : ((x: Base[], y: Derived2[]) => Derived[])[] -+>[r6arg, r6arg2] : ((x: Base[], y: Derived2[]) => Derived[])[] -+>r6arg : (x: Base[], y: Derived2[]) => Derived[] -+>r6arg2 : (x: Base[], y: Base[]) => T - - var r7arg = (x: { a: T; b: T }) => null; - >r7arg : (x: { a: T; b: T; }) => T -@@= skipped -50, +50 lines =@@ - var r7 = foo15(r7arg); // any - >r7 : any - >foo15(r7arg) : any -->foo15 : { (a2: (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } -+>foo15 : { (a2: (x: { a: string; b: number; }) => number): (x: { a: string; b: number; }) => number; (a2: any): any; } - >r7arg : (x: { a: T; b: T; }) => T - - var r7a = [r7arg2, r7arg]; -@@= skipped -26, +26 lines =@@ - var r7c = foo15(r7arg3); // (x: { a: string; b: number }) => number): number; - >r7c : any - >foo15(r7arg3) : any -->foo15 : { (a2: (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } -+>foo15 : { (a2: (x: { a: string; b: number; }) => number): (x: { a: string; b: number; }) => number; (a2: any): any; } - >r7arg3 : (x: { a: T; b: T; }) => number - - var r7d = [r7arg2, r7arg3]; -@@= skipped -25, +25 lines =@@ - var r8 = foo16(r8arg); // any - >r8 : any - >foo16(r8arg) : any -->foo16 : { (a2: { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } -+>foo16 : { (a2: { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }): { (x: { (a: number): number; (a?: number | undefined): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } - >r8arg : (x: (a: T) => T) => T[] - - var r9arg = (x: (a: T) => T) => null; -@@= skipped -13, +13 lines =@@ - var r9 = foo17(r9arg); // (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; - >r9 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } - >foo17(r9arg) : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } -->foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } -+>foo17 : { (a2: { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }): { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; }; (a2: any): any; } - >r9arg : (x: (a: T) => T) => any[] - } - -@@= skipped -8, +8 lines =@@ - >WithGenericSignaturesInBaseType : typeof WithGenericSignaturesInBaseType - - declare function foo2(a2: (x: T) => T[]): typeof a2; -->foo2 : { (a2: (x: T) => T[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: (x: T) => T[]): (x: T) => T[]; (a2: any): any; } - >a2 : (x: T) => T[] - >x : T - >a2 : (x: T) => T[] - - declare function foo2(a2: any): any; -->foo2 : { (a2: (x: T) => T[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: (x: T) => T[]): (x: T) => T[]; (a2: any): any; } - >a2 : any - - var r2arg2 = (x: T) => ['']; -@@= skipped -19, +19 lines =@@ - var r2 = foo2(r2arg2); // (x:T) => T[] since we can infer from generic signatures now - >r2 : any - >foo2(r2arg2) : any -->foo2 : { (a2: (x: T) => T[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: (x: T) => T[]): (x: T) => T[]; (a2: any): any; } - >r2arg2 : (x: T) => string[] - - declare function foo3(a2: (x: T) => string[]): typeof a2; -->foo3 : { (a2: (x: T) => string[]): typeof a2; (a2: any): any; } -+>foo3 : { (a2: (x: T) => string[]): (x: T) => string[]; (a2: any): any; } - >a2 : (x: T) => string[] - >x : T - >a2 : (x: T) => string[] - - declare function foo3(a2: any): any; -->foo3 : { (a2: (x: T) => string[]): typeof a2; (a2: any): any; } -+>foo3 : { (a2: (x: T) => string[]): (x: T) => string[]; (a2: any): any; } - >a2 : any - - var r3arg2 = (x: T) => null; -@@= skipped -22, +22 lines =@@ - var r3 = foo3(r3arg2); // any - >r3 : any - >foo3(r3arg2) : any -->foo3 : { (a2: (x: T) => string[]): typeof a2; (a2: any): any; } -+>foo3 : { (a2: (x: T) => string[]): (x: T) => string[]; (a2: any): any; } - >r3arg2 : (x: T) => T[] - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesA.types b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesA.types index fcff0059928..b86a961a1e5 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesA.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesA.types @@ -2,7 +2,7 @@ === subtypingWithCallSignaturesA.ts === declare function foo3(cb: (x: number) => number): typeof cb; ->foo3 : (cb: (x: number) => number) => (x: number) => number +>foo3 : (cb: (x: number) => number) => typeof cb >cb : (x: number) => number >x : number >cb : (x: number) => number @@ -10,7 +10,7 @@ declare function foo3(cb: (x: number) => number): typeof cb; var r5 = foo3((x: number) => ''); // error >r5 : (x: number) => number >foo3((x: number) => '') : (x: number) => number ->foo3 : (cb: (x: number) => number) => (x: number) => number +>foo3 : (cb: (x: number) => number) => typeof cb >(x: number) => '' : (x: number) => string >x : number >'' : "" diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesA.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesA.types.diff deleted file mode 100644 index 9e50c5087ee..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesA.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.subtypingWithCallSignaturesA.types -+++ new.subtypingWithCallSignaturesA.types -@@= skipped -1, +1 lines =@@ - - === subtypingWithCallSignaturesA.ts === - declare function foo3(cb: (x: number) => number): typeof cb; -->foo3 : (cb: (x: number) => number) => typeof cb -+>foo3 : (cb: (x: number) => number) => (x: number) => number - >cb : (x: number) => number - >x : number - >cb : (x: number) => number -@@= skipped -8, +8 lines =@@ - var r5 = foo3((x: number) => ''); // error - >r5 : (x: number) => number - >foo3((x: number) => '') : (x: number) => number -->foo3 : (cb: (x: number) => number) => typeof cb -+>foo3 : (cb: (x: number) => number) => (x: number) => number - >(x: number) => '' : (x: number) => string - >x : number - >'' : "" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.errors.txt b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.errors.txt index 15dd419c696..383afb8e5b2 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.errors.txt @@ -4,7 +4,7 @@ subtypingWithCallSignaturesWithOptionalParameters.ts(19,11): error TS2430: Inter Target signature provides too few arguments. Expected 1 or more, but got 0. subtypingWithCallSignaturesWithOptionalParameters.ts(32,11): error TS2430: Interface 'I6' incorrectly extends interface 'Base'. Types of property 'a2' are incompatible. - Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. + Type '(x: number) => number' is not assignable to type '(x?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. @@ -14,19 +14,19 @@ subtypingWithCallSignaturesWithOptionalParameters.ts(49,11): error TS2430: Inter Target signature provides too few arguments. Expected 2 or more, but got 1. subtypingWithCallSignaturesWithOptionalParameters.ts(66,11): error TS2430: Interface 'I14' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. - Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. + Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. subtypingWithCallSignaturesWithOptionalParameters.ts(79,11): error TS2430: Interface 'I17' incorrectly extends interface 'Base'. Types of property 'a5' are incompatible. - Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. + Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. subtypingWithCallSignaturesWithOptionalParameters.ts(83,11): error TS2430: Interface 'I18' incorrectly extends interface 'Base'. Types of property 'a5' are incompatible. - Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. + Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. @@ -73,7 +73,7 @@ subtypingWithCallSignaturesWithOptionalParameters.ts(83,11): error TS2430: Inter ~~ !!! error TS2430: Interface 'I6' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a2' are incompatible. -!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. +!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -119,7 +119,7 @@ subtypingWithCallSignaturesWithOptionalParameters.ts(83,11): error TS2430: Inter ~~~ !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. +!!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -139,7 +139,7 @@ subtypingWithCallSignaturesWithOptionalParameters.ts(83,11): error TS2430: Inter ~~~ !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -150,7 +150,7 @@ subtypingWithCallSignaturesWithOptionalParameters.ts(83,11): error TS2430: Inter ~~~ !!! error TS2430: Interface 'I18' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.errors.txt.diff new file mode 100644 index 00000000000..4e8cf7b5816 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.errors.txt.diff @@ -0,0 +1,70 @@ +--- old.subtypingWithCallSignaturesWithOptionalParameters.errors.txt ++++ new.subtypingWithCallSignaturesWithOptionalParameters.errors.txt +@@= skipped -3, +3 lines =@@ + Target signature provides too few arguments. Expected 1 or more, but got 0. + subtypingWithCallSignaturesWithOptionalParameters.ts(32,11): error TS2430: Interface 'I6' incorrectly extends interface 'Base'. + Types of property 'a2' are incompatible. +- Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. ++ Type '(x: number) => number' is not assignable to type '(x?: number) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. +@@= skipped -10, +10 lines =@@ + Target signature provides too few arguments. Expected 2 or more, but got 1. + subtypingWithCallSignaturesWithOptionalParameters.ts(66,11): error TS2430: Interface 'I14' incorrectly extends interface 'Base'. + Types of property 'a4' are incompatible. +- Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. ++ Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. + subtypingWithCallSignaturesWithOptionalParameters.ts(79,11): error TS2430: Interface 'I17' incorrectly extends interface 'Base'. + Types of property 'a5' are incompatible. +- Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++ Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. + subtypingWithCallSignaturesWithOptionalParameters.ts(83,11): error TS2430: Interface 'I18' incorrectly extends interface 'Base'. + Types of property 'a5' are incompatible. +- Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++ Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. +@@= skipped -59, +59 lines =@@ + ~~ + !!! error TS2430: Interface 'I6' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a2' are incompatible. +-!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number | undefined) => number'. ++!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -46, +46 lines =@@ + ~~~ + !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number | undefined) => number'. ++!!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'. + !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -20, +20 lines =@@ + ~~~ + !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -11, +11 lines =@@ + ~~~ + !!! error TS2430: Interface 'I18' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x?: number, y?: number) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.types b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.types index 60264c4ff6d..4ce978efe21 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.types @@ -8,7 +8,7 @@ interface Base { >a : () => number a2: (x?: number) => number; ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >x : number | undefined a3: (x: number) => number; @@ -16,12 +16,12 @@ interface Base { >x : number a4: (x: number, y?: number) => number; ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >x : number >y : number | undefined a5: (x?: number, y?: number) => number; ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >x : number | undefined >y : number | undefined } @@ -33,7 +33,7 @@ interface I1 extends Base { interface I2 extends Base { a: (x?: number) => number; // ok, same number of required params ->a : (x?: number | undefined) => number +>a : (x?: number) => number >x : number | undefined } @@ -51,7 +51,7 @@ interface I4 extends Base { interface I5 extends Base { a2: (x?: number) => number; // ok, same number of required params ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >x : number | undefined } @@ -69,7 +69,7 @@ interface I7 extends Base { interface I8 extends Base { a3: (x?: number) => number; // ok, fewer required params ->a3 : (x?: number | undefined) => number +>a3 : (x?: number) => number >x : number | undefined } @@ -94,7 +94,7 @@ interface I11 extends Base { interface I12 extends Base { a4: (x?: number, y?: number) => number; // ok, fewer required params ->a4 : (x?: number | undefined, y?: number | undefined) => number +>a4 : (x?: number, y?: number) => number >x : number | undefined >y : number | undefined } @@ -120,7 +120,7 @@ interface I15 extends Base { interface I16 extends Base { a5: (x?: number, y?: number) => number; // ok, fewer required params ->a5 : (x?: number | undefined, y?: number | undefined) => number +>a5 : (x?: number, y?: number) => number >x : number | undefined >y : number | undefined } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.types.diff deleted file mode 100644 index 34df26b9723..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithOptionalParameters.types.diff +++ /dev/null @@ -1,71 +0,0 @@ ---- old.subtypingWithCallSignaturesWithOptionalParameters.types -+++ new.subtypingWithCallSignaturesWithOptionalParameters.types -@@= skipped -7, +7 lines =@@ - >a : () => number - - a2: (x?: number) => number; -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >x : number | undefined - - a3: (x: number) => number; -@@= skipped -8, +8 lines =@@ - >x : number - - a4: (x: number, y?: number) => number; -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - - a5: (x?: number, y?: number) => number; -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - } -@@= skipped -17, +17 lines =@@ - - interface I2 extends Base { - a: (x?: number) => number; // ok, same number of required params -->a : (x?: number) => number -+>a : (x?: number | undefined) => number - >x : number | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I5 extends Base { - a2: (x?: number) => number; // ok, same number of required params -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >x : number | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I8 extends Base { - a3: (x?: number) => number; // ok, fewer required params -->a3 : (x?: number) => number -+>a3 : (x?: number | undefined) => number - >x : number | undefined - } - -@@= skipped -25, +25 lines =@@ - - interface I12 extends Base { - a4: (x?: number, y?: number) => number; // ok, fewer required params -->a4 : (x?: number, y?: number) => number -+>a4 : (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - } -@@= skipped -26, +26 lines =@@ - - interface I16 extends Base { - a5: (x?: number, y?: number) => number; // ok, fewer required params -->a5 : (x?: number, y?: number) => number -+>a5 : (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.errors.txt b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.errors.txt index 1ab83b9fdd8..d23bb65220e 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.errors.txt @@ -5,7 +5,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(18,11): error TS2430: Interface Type 'number' is not assignable to type 'string'. subtypingWithCallSignaturesWithRestParameters.ts(34,11): error TS2430: Interface 'I3B' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. - Type '(x?: string | undefined) => number' is not assignable to type '(...args: number[]) => number'. + Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. Types of parameters 'x' and 'args' are incompatible. Type 'number' is not assignable to type 'string'. subtypingWithCallSignaturesWithRestParameters.ts(60,11): error TS2430: Interface 'I6C' incorrectly extends interface 'Base'. @@ -15,60 +15,60 @@ subtypingWithCallSignaturesWithRestParameters.ts(60,11): error TS2430: Interface Type 'number' is not assignable to type 'string'. subtypingWithCallSignaturesWithRestParameters.ts(86,11): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. - Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. + Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. subtypingWithCallSignaturesWithRestParameters.ts(90,11): error TS2430: Interface 'I10B' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. - Type '(x: number, y?: number | undefined, z?: number | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. + Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'number | undefined'. Type 'string' is not assignable to type 'number'. subtypingWithCallSignaturesWithRestParameters.ts(94,11): error TS2430: Interface 'I10C' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. - Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. + Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'z' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. subtypingWithCallSignaturesWithRestParameters.ts(98,11): error TS2430: Interface 'I10D' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. - Type '(x: string, y?: string | undefined, z?: string | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. + Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number' is not assignable to type 'string'. subtypingWithCallSignaturesWithRestParameters.ts(102,11): error TS2430: Interface 'I10E' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. - Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. + Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'z' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. subtypingWithCallSignaturesWithRestParameters.ts(110,11): error TS2430: Interface 'I12' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. - Type '(x?: number | undefined, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. + Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'string | undefined' is not assignable to type 'number | undefined'. Type 'string' is not assignable to type 'number'. subtypingWithCallSignaturesWithRestParameters.ts(114,11): error TS2430: Interface 'I13' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. - Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. + Type '(x: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. subtypingWithCallSignaturesWithRestParameters.ts(118,11): error TS2430: Interface 'I14' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. - Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. + Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. subtypingWithCallSignaturesWithRestParameters.ts(126,11): error TS2430: Interface 'I16' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. - Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. + Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interface 'I17' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. - Type '(...args: number[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. + Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'args' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. @@ -118,7 +118,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~ !!! error TS2430: Interface 'I3B' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. -!!! error TS2430: Type '(x?: string | undefined) => number' is not assignable to type '(...args: number[]) => number'. +!!! error TS2430: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. !!! error TS2430: Types of parameters 'x' and 'args' are incompatible. !!! error TS2430: Type 'number' is not assignable to type 'string'. a: (x?: string) => number; // error, incompatible type @@ -182,7 +182,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~ !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. -!!! error TS2430: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. !!! error TS2430: Type 'string | undefined' is not assignable to type 'string'. !!! error TS2430: Type 'undefined' is not assignable to type 'string'. @@ -193,7 +193,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~~ !!! error TS2430: Interface 'I10B' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. -!!! error TS2430: Type '(x: number, y?: number | undefined, z?: number | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. !!! error TS2430: Type 'string | undefined' is not assignable to type 'number | undefined'. !!! error TS2430: Type 'string' is not assignable to type 'number'. @@ -204,7 +204,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~~ !!! error TS2430: Interface 'I10C' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. -!!! error TS2430: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'z' and 'y' are incompatible. !!! error TS2430: Type 'string | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -215,7 +215,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~~ !!! error TS2430: Interface 'I10D' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. -!!! error TS2430: Type '(x: string, y?: string | undefined, z?: string | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number' is not assignable to type 'string'. a3: (x: string, y?: string, z?: string) => number; // error, incompatible types @@ -225,7 +225,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~~ !!! error TS2430: Interface 'I10E' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. -!!! error TS2430: Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'z' and 'y' are incompatible. !!! error TS2430: Type 'string | undefined' is not assignable to type 'string'. !!! error TS2430: Type 'undefined' is not assignable to type 'string'. @@ -240,7 +240,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~ !!! error TS2430: Interface 'I12' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type '(x?: number | undefined, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. !!! error TS2430: Type 'string | undefined' is not assignable to type 'number | undefined'. !!! error TS2430: Type 'string' is not assignable to type 'number'. @@ -251,7 +251,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~ !!! error TS2430: Interface 'I13' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -262,7 +262,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~ !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -277,7 +277,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~ !!! error TS2430: Interface 'I16' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -288,7 +288,7 @@ subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interfac ~~~ !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type '(...args: number[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. +!!! error TS2430: Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'args' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.errors.txt.diff new file mode 100644 index 00000000000..8516e74acaf --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.errors.txt.diff @@ -0,0 +1,181 @@ +--- old.subtypingWithCallSignaturesWithRestParameters.errors.txt ++++ new.subtypingWithCallSignaturesWithRestParameters.errors.txt +@@= skipped -4, +4 lines =@@ + Type 'number' is not assignable to type 'string'. + subtypingWithCallSignaturesWithRestParameters.ts(34,11): error TS2430: Interface 'I3B' incorrectly extends interface 'Base'. + Types of property 'a' are incompatible. +- Type '(x?: string | undefined) => number' is not assignable to type '(...args: number[]) => number'. ++ Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. + Types of parameters 'x' and 'args' are incompatible. + Type 'number' is not assignable to type 'string'. + subtypingWithCallSignaturesWithRestParameters.ts(60,11): error TS2430: Interface 'I6C' incorrectly extends interface 'Base'. +@@= skipped -10, +10 lines =@@ + Type 'number' is not assignable to type 'string'. + subtypingWithCallSignaturesWithRestParameters.ts(86,11): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. + Types of property 'a3' are incompatible. +- Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++ Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + Types of parameters 'y' and 'y' are incompatible. + Type 'string | undefined' is not assignable to type 'string'. + Type 'undefined' is not assignable to type 'string'. + subtypingWithCallSignaturesWithRestParameters.ts(90,11): error TS2430: Interface 'I10B' incorrectly extends interface 'Base'. + Types of property 'a3' are incompatible. +- Type '(x: number, y?: number | undefined, z?: number | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++ Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + Types of parameters 'y' and 'y' are incompatible. + Type 'string | undefined' is not assignable to type 'number | undefined'. + Type 'string' is not assignable to type 'number'. + subtypingWithCallSignaturesWithRestParameters.ts(94,11): error TS2430: Interface 'I10C' incorrectly extends interface 'Base'. + Types of property 'a3' are incompatible. +- Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++ Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + Types of parameters 'z' and 'y' are incompatible. + Type 'string | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. + subtypingWithCallSignaturesWithRestParameters.ts(98,11): error TS2430: Interface 'I10D' incorrectly extends interface 'Base'. + Types of property 'a3' are incompatible. +- Type '(x: string, y?: string | undefined, z?: string | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++ Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'string'. + subtypingWithCallSignaturesWithRestParameters.ts(102,11): error TS2430: Interface 'I10E' incorrectly extends interface 'Base'. + Types of property 'a3' are incompatible. +- Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++ Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + Types of parameters 'z' and 'y' are incompatible. + Type 'string | undefined' is not assignable to type 'string'. + Type 'undefined' is not assignable to type 'string'. + subtypingWithCallSignaturesWithRestParameters.ts(110,11): error TS2430: Interface 'I12' incorrectly extends interface 'Base'. + Types of property 'a4' are incompatible. +- Type '(x?: number | undefined, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++ Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + Types of parameters 'y' and 'y' are incompatible. + Type 'string | undefined' is not assignable to type 'number | undefined'. + Type 'string' is not assignable to type 'number'. + subtypingWithCallSignaturesWithRestParameters.ts(114,11): error TS2430: Interface 'I13' incorrectly extends interface 'Base'. + Types of property 'a4' are incompatible. +- Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++ Type '(x: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. + subtypingWithCallSignaturesWithRestParameters.ts(118,11): error TS2430: Interface 'I14' incorrectly extends interface 'Base'. + Types of property 'a4' are incompatible. +- Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++ Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. + subtypingWithCallSignaturesWithRestParameters.ts(126,11): error TS2430: Interface 'I16' incorrectly extends interface 'Base'. + Types of property 'a4' are incompatible. +- Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++ Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. + subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interface 'I17' incorrectly extends interface 'Base'. + Types of property 'a4' are incompatible. +- Type '(...args: number[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++ Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + Types of parameters 'args' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. +@@= skipped -103, +103 lines =@@ + ~~~ + !!! error TS2430: Interface 'I3B' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a' are incompatible. +-!!! error TS2430: Type '(x?: string | undefined) => number' is not assignable to type '(...args: number[]) => number'. ++!!! error TS2430: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. + !!! error TS2430: Types of parameters 'x' and 'args' are incompatible. + !!! error TS2430: Type 'number' is not assignable to type 'string'. + a: (x?: string) => number; // error, incompatible type +@@= skipped -64, +64 lines =@@ + ~~~ + !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a3' are incompatible. +-!!! error TS2430: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(x: number, y: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2430: Type 'string | undefined' is not assignable to type 'string'. + !!! error TS2430: Type 'undefined' is not assignable to type 'string'. +@@= skipped -11, +11 lines =@@ + ~~~~ + !!! error TS2430: Interface 'I10B' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a3' are incompatible. +-!!! error TS2430: Type '(x: number, y?: number | undefined, z?: number | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2430: Type 'string | undefined' is not assignable to type 'number | undefined'. + !!! error TS2430: Type 'string' is not assignable to type 'number'. +@@= skipped -11, +11 lines =@@ + ~~~~ + !!! error TS2430: Interface 'I10C' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a3' are incompatible. +-!!! error TS2430: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'z' and 'y' are incompatible. + !!! error TS2430: Type 'string | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -11, +11 lines =@@ + ~~~~ + !!! error TS2430: Interface 'I10D' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a3' are incompatible. +-!!! error TS2430: Type '(x: string, y?: string | undefined, z?: string | undefined) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number' is not assignable to type 'string'. + a3: (x: string, y?: string, z?: string) => number; // error, incompatible types +@@= skipped -10, +10 lines =@@ + ~~~~ + !!! error TS2430: Interface 'I10E' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a3' are incompatible. +-!!! error TS2430: Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'z' and 'y' are incompatible. + !!! error TS2430: Type 'string | undefined' is not assignable to type 'string'. + !!! error TS2430: Type 'undefined' is not assignable to type 'string'. +@@= skipped -15, +15 lines =@@ + ~~~ + !!! error TS2430: Interface 'I12' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type '(x?: number | undefined, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2430: Type 'string | undefined' is not assignable to type 'number | undefined'. + !!! error TS2430: Type 'string' is not assignable to type 'number'. +@@= skipped -11, +11 lines =@@ + ~~~ + !!! error TS2430: Interface 'I13' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(x: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -11, +11 lines =@@ + ~~~ + !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type '(x: number, y?: number | undefined) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -15, +15 lines =@@ + ~~~ + !!! error TS2430: Interface 'I16' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -11, +11 lines =@@ + ~~~ + !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type '(...args: number[]) => number' is not assignable to type '(x?: number | undefined, y?: string | undefined, ...z: number[]) => number'. ++!!! error TS2430: Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. + !!! error TS2430: Types of parameters 'args' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.types b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.types index c63f83f5100..9fb672c2bd1 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.types @@ -14,13 +14,13 @@ interface Base { >z : number[] a3: (x: number, y?: string, ...z: number[]) => number; ->a3 : (x: number, y?: string | undefined, ...z: number[]) => number +>a3 : (x: number, y?: string, ...z: number[]) => number >x : number >y : string | undefined >z : number[] a4: (x?: number, y?: string, ...z: number[]) => number; ->a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number +>a4 : (x?: number, y?: string, ...z: number[]) => number >x : number | undefined >y : string | undefined >z : number[] @@ -45,13 +45,13 @@ interface I1C extends Base { interface I2 extends Base { a: (x?: number) => number; // ok, same number of required params ->a : (x?: number | undefined) => number +>a : (x?: number) => number >x : number | undefined } interface I2B extends Base { a: (x?: number, y?: number, z?: number) => number; // ok, same number of required params ->a : (x?: number | undefined, y?: number | undefined, z?: number | undefined) => number +>a : (x?: number, y?: number, z?: number) => number >x : number | undefined >y : number | undefined >z : number | undefined @@ -65,7 +65,7 @@ interface I3 extends Base { interface I3B extends Base { a: (x?: string) => number; // error, incompatible type ->a : (x?: string | undefined) => number +>a : (x?: string) => number >x : string | undefined } @@ -84,7 +84,7 @@ interface I4B extends Base { interface I5 extends Base { a2: (x?: number) => number; // ok, fewer required params ->a2 : (x?: number | undefined) => number +>a2 : (x?: number) => number >x : number | undefined } @@ -117,7 +117,7 @@ interface I6D extends Base { interface I6E extends Base { a2: (x: number, y?: number) => number; // ok, same number of required params ->a2 : (x: number, y?: number | undefined) => number +>a2 : (x: number, y?: number) => number >x : number >y : number | undefined } @@ -131,7 +131,7 @@ interface I7 extends Base { interface I8 extends Base { a3: (x?: number) => number; // ok, fewer required params ->a3 : (x?: number | undefined) => number +>a3 : (x?: number) => number >x : number | undefined } @@ -150,7 +150,7 @@ interface I10 extends Base { interface I10B extends Base { a3: (x: number, y?: number, z?: number) => number; // error ->a3 : (x: number, y?: number | undefined, z?: number | undefined) => number +>a3 : (x: number, y?: number, z?: number) => number >x : number >y : number | undefined >z : number | undefined @@ -165,7 +165,7 @@ interface I10C extends Base { interface I10D extends Base { a3: (x: string, y?: string, z?: string) => number; // error, incompatible types ->a3 : (x: string, y?: string | undefined, z?: string | undefined) => number +>a3 : (x: string, y?: string, z?: string) => number >x : string >y : string | undefined >z : string | undefined @@ -185,7 +185,7 @@ interface I11 extends Base { interface I12 extends Base { a4: (x?: number, y?: number) => number; // error, type mismatch ->a4 : (x?: number | undefined, y?: number | undefined) => number +>a4 : (x?: number, y?: number) => number >x : number | undefined >y : number | undefined } @@ -198,14 +198,14 @@ interface I13 extends Base { interface I14 extends Base { a4: (x: number, y?: number) => number; // error, second param has type mismatch ->a4 : (x: number, y?: number | undefined) => number +>a4 : (x: number, y?: number) => number >x : number >y : number | undefined } interface I15 extends Base { a4: (x?: number, y?: string) => number; // ok, same number of required params with matching types ->a4 : (x?: number | undefined, y?: string | undefined) => number +>a4 : (x?: number, y?: string) => number >x : number | undefined >y : string | undefined } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.types.diff deleted file mode 100644 index 9ef61751bc5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithRestParameters.types.diff +++ /dev/null @@ -1,114 +0,0 @@ ---- old.subtypingWithCallSignaturesWithRestParameters.types -+++ new.subtypingWithCallSignaturesWithRestParameters.types -@@= skipped -13, +13 lines =@@ - >z : number[] - - a3: (x: number, y?: string, ...z: number[]) => number; -->a3 : (x: number, y?: string, ...z: number[]) => number -+>a3 : (x: number, y?: string | undefined, ...z: number[]) => number - >x : number - >y : string | undefined - >z : number[] - - a4: (x?: number, y?: string, ...z: number[]) => number; -->a4 : (x?: number, y?: string, ...z: number[]) => number -+>a4 : (x?: number | undefined, y?: string | undefined, ...z: number[]) => number - >x : number | undefined - >y : string | undefined - >z : number[] -@@= skipped -31, +31 lines =@@ - - interface I2 extends Base { - a: (x?: number) => number; // ok, same number of required params -->a : (x?: number) => number -+>a : (x?: number | undefined) => number - >x : number | undefined - } - - interface I2B extends Base { - a: (x?: number, y?: number, z?: number) => number; // ok, same number of required params -->a : (x?: number, y?: number, z?: number) => number -+>a : (x?: number | undefined, y?: number | undefined, z?: number | undefined) => number - >x : number | undefined - >y : number | undefined - >z : number | undefined -@@= skipped -20, +20 lines =@@ - - interface I3B extends Base { - a: (x?: string) => number; // error, incompatible type -->a : (x?: string) => number -+>a : (x?: string | undefined) => number - >x : string | undefined - } - -@@= skipped -19, +19 lines =@@ - - interface I5 extends Base { - a2: (x?: number) => number; // ok, fewer required params -->a2 : (x?: number) => number -+>a2 : (x?: number | undefined) => number - >x : number | undefined - } - -@@= skipped -33, +33 lines =@@ - - interface I6E extends Base { - a2: (x: number, y?: number) => number; // ok, same number of required params -->a2 : (x: number, y?: number) => number -+>a2 : (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - } -@@= skipped -14, +14 lines =@@ - - interface I8 extends Base { - a3: (x?: number) => number; // ok, fewer required params -->a3 : (x?: number) => number -+>a3 : (x?: number | undefined) => number - >x : number | undefined - } - -@@= skipped -19, +19 lines =@@ - - interface I10B extends Base { - a3: (x: number, y?: number, z?: number) => number; // error -->a3 : (x: number, y?: number, z?: number) => number -+>a3 : (x: number, y?: number | undefined, z?: number | undefined) => number - >x : number - >y : number | undefined - >z : number | undefined -@@= skipped -15, +15 lines =@@ - - interface I10D extends Base { - a3: (x: string, y?: string, z?: string) => number; // error, incompatible types -->a3 : (x: string, y?: string, z?: string) => number -+>a3 : (x: string, y?: string | undefined, z?: string | undefined) => number - >x : string - >y : string | undefined - >z : string | undefined -@@= skipped -20, +20 lines =@@ - - interface I12 extends Base { - a4: (x?: number, y?: number) => number; // error, type mismatch -->a4 : (x?: number, y?: number) => number -+>a4 : (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - } -@@= skipped -13, +13 lines =@@ - - interface I14 extends Base { - a4: (x: number, y?: number) => number; // error, second param has type mismatch -->a4 : (x: number, y?: number) => number -+>a4 : (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - } - - interface I15 extends Base { - a4: (x?: number, y?: string) => number; // ok, same number of required params with matching types -->a4 : (x?: number, y?: string) => number -+>a4 : (x?: number | undefined, y?: string | undefined) => number - >x : number | undefined - >y : string | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithSpecializedSignatures.types b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithSpecializedSignatures.types index 3e3d5ec5ab9..d9391fec6e4 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithSpecializedSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithSpecializedSignatures.types @@ -59,7 +59,7 @@ namespace MemberWithCallSignature { interface Base { // T // M's a: { ->a : { (x: "a"): void; (x: string): void; } +>a : { (x: 'a'): void; (x: string): void; } (x: 'a'): void; >x : "a" @@ -68,7 +68,7 @@ namespace MemberWithCallSignature { >x : string } a2: { ->a2 : { (x: "a", y: number): void; (x: string, y: number): void; } +>a2 : { (x: 'a', y: number): void; (x: string, y: number): void; } (x: 'a', y: number): void; >x : "a" @@ -103,7 +103,7 @@ namespace MemberWithCallSignature { interface Base2 { // T // M's a: { ->a : { (x: "a"): number; (x: string): number; } +>a : { (x: 'a'): number; (x: string): number; } (x: 'a'): number; >x : "a" diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithSpecializedSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithSpecializedSignatures.types.diff new file mode 100644 index 00000000000..5177ff16e7a --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithCallSignaturesWithSpecializedSignatures.types.diff @@ -0,0 +1,29 @@ +--- old.subtypingWithCallSignaturesWithSpecializedSignatures.types ++++ new.subtypingWithCallSignaturesWithSpecializedSignatures.types +@@= skipped -58, +58 lines =@@ + interface Base { // T + // M's + a: { +->a : { (x: "a"): void; (x: string): void; } ++>a : { (x: 'a'): void; (x: string): void; } + + (x: 'a'): void; + >x : "a" +@@= skipped -9, +9 lines =@@ + >x : string + } + a2: { +->a2 : { (x: "a", y: number): void; (x: string, y: number): void; } ++>a2 : { (x: 'a', y: number): void; (x: string, y: number): void; } + + (x: 'a', y: number): void; + >x : "a" +@@= skipped -35, +35 lines =@@ + interface Base2 { // T + // M's + a: { +->a : { (x: "a"): number; (x: string): number; } ++>a : { (x: 'a'): number; (x: string): number; } + + (x: 'a'): number; + >x : "a" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures.types b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures.types index 8c234fd5113..a9e692fad0a 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures.types @@ -5,13 +5,13 @@ namespace ConstructSignature { >ConstructSignature : typeof ConstructSignature declare function foo1(cb: new (x: number) => void): typeof cb; ->foo1 : { (cb: new (x: number) => void): new (x: number) => void; (cb: any): any; } +>foo1 : { (cb: new (x: number) => void): typeof cb; (cb: any): any; } >cb : new (x: number) => void >x : number >cb : new (x: number) => void declare function foo1(cb: any): any; ->foo1 : { (cb: new (x: number) => void): new (x: number) => void; (cb: any): any; } +>foo1 : { (cb: new (x: number) => void): typeof cb; (cb: any): any; } >cb : any var rarg1: new (x: number) => number; @@ -21,7 +21,7 @@ namespace ConstructSignature { var r = foo1(rarg1); // ok because base returns void >r : new (x: number) => void >foo1(rarg1) : new (x: number) => void ->foo1 : { (cb: new (x: number) => void): new (x: number) => void; (cb: any): any; } +>foo1 : { (cb: new (x: number) => void): typeof cb; (cb: any): any; } >rarg1 : new (x: number) => number var rarg2: new (x: T) => string; @@ -31,18 +31,18 @@ namespace ConstructSignature { var r2 = foo1(rarg2); // ok because base returns void >r2 : new (x: number) => void >foo1(rarg2) : new (x: number) => void ->foo1 : { (cb: new (x: number) => void): new (x: number) => void; (cb: any): any; } +>foo1 : { (cb: new (x: number) => void): typeof cb; (cb: any): any; } >rarg2 : new (x: T) => string declare function foo2(cb: new (x: number, y: number) => void): typeof cb; ->foo2 : { (cb: new (x: number, y: number) => void): new (x: number, y: number) => void; (cb: any): any; } +>foo2 : { (cb: new (x: number, y: number) => void): typeof cb; (cb: any): any; } >cb : new (x: number, y: number) => void >x : number >y : number >cb : new (x: number, y: number) => void declare function foo2(cb: any): any; ->foo2 : { (cb: new (x: number, y: number) => void): new (x: number, y: number) => void; (cb: any): any; } +>foo2 : { (cb: new (x: number, y: number) => void): typeof cb; (cb: any): any; } >cb : any var r3arg1: new (x: number, y: number) => number; @@ -53,7 +53,7 @@ namespace ConstructSignature { var r3 = foo2(r3arg1); // ok because base returns void >r3 : new (x: number, y: number) => void >foo2(r3arg1) : new (x: number, y: number) => void ->foo2 : { (cb: new (x: number, y: number) => void): new (x: number, y: number) => void; (cb: any): any; } +>foo2 : { (cb: new (x: number, y: number) => void): typeof cb; (cb: any): any; } >r3arg1 : new (x: number, y: number) => number var r4arg1: new (x: T) => string; @@ -63,6 +63,6 @@ namespace ConstructSignature { var r4 = foo2(r4arg1); // ok because base returns void >r4 : new (x: number, y: number) => void >foo2(r4arg1) : new (x: number, y: number) => void ->foo2 : { (cb: new (x: number, y: number) => void): new (x: number, y: number) => void; (cb: any): any; } +>foo2 : { (cb: new (x: number, y: number) => void): typeof cb; (cb: any): any; } >r4arg1 : new (x: T) => string } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures.types.diff deleted file mode 100644 index 71347fb3590..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures.types.diff +++ /dev/null @@ -1,66 +0,0 @@ ---- old.subtypingWithConstructSignatures.types -+++ new.subtypingWithConstructSignatures.types -@@= skipped -4, +4 lines =@@ - >ConstructSignature : typeof ConstructSignature - - declare function foo1(cb: new (x: number) => void): typeof cb; -->foo1 : { (cb: new (x: number) => void): typeof cb; (cb: any): any; } -+>foo1 : { (cb: new (x: number) => void): new (x: number) => void; (cb: any): any; } - >cb : new (x: number) => void - >x : number - >cb : new (x: number) => void - - declare function foo1(cb: any): any; -->foo1 : { (cb: new (x: number) => void): typeof cb; (cb: any): any; } -+>foo1 : { (cb: new (x: number) => void): new (x: number) => void; (cb: any): any; } - >cb : any - - var rarg1: new (x: number) => number; -@@= skipped -16, +16 lines =@@ - var r = foo1(rarg1); // ok because base returns void - >r : new (x: number) => void - >foo1(rarg1) : new (x: number) => void -->foo1 : { (cb: new (x: number) => void): typeof cb; (cb: any): any; } -+>foo1 : { (cb: new (x: number) => void): new (x: number) => void; (cb: any): any; } - >rarg1 : new (x: number) => number - - var rarg2: new (x: T) => string; -@@= skipped -10, +10 lines =@@ - var r2 = foo1(rarg2); // ok because base returns void - >r2 : new (x: number) => void - >foo1(rarg2) : new (x: number) => void -->foo1 : { (cb: new (x: number) => void): typeof cb; (cb: any): any; } -+>foo1 : { (cb: new (x: number) => void): new (x: number) => void; (cb: any): any; } - >rarg2 : new (x: T) => string - - declare function foo2(cb: new (x: number, y: number) => void): typeof cb; -->foo2 : { (cb: new (x: number, y: number) => void): typeof cb; (cb: any): any; } -+>foo2 : { (cb: new (x: number, y: number) => void): new (x: number, y: number) => void; (cb: any): any; } - >cb : new (x: number, y: number) => void - >x : number - >y : number - >cb : new (x: number, y: number) => void - - declare function foo2(cb: any): any; -->foo2 : { (cb: new (x: number, y: number) => void): typeof cb; (cb: any): any; } -+>foo2 : { (cb: new (x: number, y: number) => void): new (x: number, y: number) => void; (cb: any): any; } - >cb : any - - var r3arg1: new (x: number, y: number) => number; -@@= skipped -22, +22 lines =@@ - var r3 = foo2(r3arg1); // ok because base returns void - >r3 : new (x: number, y: number) => void - >foo2(r3arg1) : new (x: number, y: number) => void -->foo2 : { (cb: new (x: number, y: number) => void): typeof cb; (cb: any): any; } -+>foo2 : { (cb: new (x: number, y: number) => void): new (x: number, y: number) => void; (cb: any): any; } - >r3arg1 : new (x: number, y: number) => number - - var r4arg1: new (x: T) => string; -@@= skipped -10, +10 lines =@@ - var r4 = foo2(r4arg1); // ok because base returns void - >r4 : new (x: number, y: number) => void - >foo2(r4arg1) : new (x: number, y: number) => void -->foo2 : { (cb: new (x: number, y: number) => void): typeof cb; (cb: any): any; } -+>foo2 : { (cb: new (x: number, y: number) => void): new (x: number, y: number) => void; (cb: any): any; } - >r4arg1 : new (x: T) => string - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures2.types b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures2.types index d61fbdc6d47..c7d16e8e95d 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures2.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures2.types @@ -23,70 +23,70 @@ class OtherDerived extends Base { bing: string; } >bing : string declare function foo1(a: new (x: number) => number[]): typeof a; ->foo1 : { (a: new (x: number) => number[]): new (x: number) => number[]; (a: any): any; } +>foo1 : { (a: new (x: number) => number[]): typeof a; (a: any): any; } >a : new (x: number) => number[] >x : number >a : new (x: number) => number[] declare function foo1(a: any): any; ->foo1 : { (a: new (x: number) => number[]): new (x: number) => number[]; (a: any): any; } +>foo1 : { (a: new (x: number) => number[]): typeof a; (a: any): any; } >a : any declare function foo2(a: new (x: number) => string[]): typeof a; ->foo2 : { (a: new (x: number) => string[]): new (x: number) => string[]; (a: any): any; } +>foo2 : { (a: new (x: number) => string[]): typeof a; (a: any): any; } >a : new (x: number) => string[] >x : number >a : new (x: number) => string[] declare function foo2(a: any): any; ->foo2 : { (a: new (x: number) => string[]): new (x: number) => string[]; (a: any): any; } +>foo2 : { (a: new (x: number) => string[]): typeof a; (a: any): any; } >a : any declare function foo3(a: new (x: number) => void): typeof a; ->foo3 : { (a: new (x: number) => void): new (x: number) => void; (a: any): any; } +>foo3 : { (a: new (x: number) => void): typeof a; (a: any): any; } >a : new (x: number) => void >x : number >a : new (x: number) => void declare function foo3(a: any): any; ->foo3 : { (a: new (x: number) => void): new (x: number) => void; (a: any): any; } +>foo3 : { (a: new (x: number) => void): typeof a; (a: any): any; } >a : any declare function foo4(a: new (x: string, y: number) => string): typeof a; ->foo4 : { (a: new (x: string, y: number) => string): new (x: string, y: number) => string; (a: any): any; } +>foo4 : { (a: new (x: string, y: number) => string): typeof a; (a: any): any; } >a : new (x: string, y: number) => string >x : string >y : number >a : new (x: string, y: number) => string declare function foo4(a: any): any; ->foo4 : { (a: new (x: string, y: number) => string): new (x: string, y: number) => string; (a: any): any; } +>foo4 : { (a: new (x: string, y: number) => string): typeof a; (a: any): any; } >a : any declare function foo5(a: new (x: new (arg: string) => number) => string): typeof a; ->foo5 : { (a: new (x: new (arg: string) => number) => string): new (x: new (arg: string) => number) => string; (a: any): any; } +>foo5 : { (a: new (x: new (arg: string) => number) => string): typeof a; (a: any): any; } >a : new (x: new (arg: string) => number) => string >x : new (arg: string) => number >arg : string >a : new (x: new (arg: string) => number) => string declare function foo5(a: any): any; ->foo5 : { (a: new (x: new (arg: string) => number) => string): new (x: new (arg: string) => number) => string; (a: any): any; } +>foo5 : { (a: new (x: new (arg: string) => number) => string): typeof a; (a: any): any; } >a : any declare function foo6(a: new (x: new (arg: Base) => Derived) => Base): typeof a; ->foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): new (x: new (arg: Base) => Derived) => Base; (a: any): any; } +>foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): typeof a; (a: any): any; } >a : new (x: new (arg: Base) => Derived) => Base >x : new (arg: Base) => Derived >arg : Base >a : new (x: new (arg: Base) => Derived) => Base declare function foo6(a: any): any; ->foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): new (x: new (arg: Base) => Derived) => Base; (a: any): any; } +>foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): typeof a; (a: any): any; } >a : any declare function foo7(a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): typeof a; ->foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } +>foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } >a : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived >x : new (arg: Base) => Derived >arg : Base @@ -94,11 +94,11 @@ declare function foo7(a: new (x: new (arg: Base) => Derived) => new (r: Base) => >a : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived declare function foo7(a: any): any; ->foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } +>foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } >a : any declare function foo8(a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; ->foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } +>foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } >a : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived >x : new (arg: Base) => Derived >arg : Base @@ -108,11 +108,11 @@ declare function foo8(a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) >a : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived declare function foo8(a: any): any; ->foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } +>foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } >a : any declare function foo9(a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; ->foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } +>foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } >a : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived >x : new (arg: Base) => Derived >arg : Base @@ -122,21 +122,21 @@ declare function foo9(a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) >a : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived declare function foo9(a: any): any; ->foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } +>foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } >a : any declare function foo10(a: new (...x: Derived[]) => Derived): typeof a; ->foo10 : { (a: new (...x: Derived[]) => Derived): new (...x: Derived[]) => Derived; (a: any): any; } +>foo10 : { (a: new (...x: Derived[]) => Derived): typeof a; (a: any): any; } >a : new (...x: Derived[]) => Derived >x : Derived[] >a : new (...x: Derived[]) => Derived declare function foo10(a: any): any; ->foo10 : { (a: new (...x: Derived[]) => Derived): new (...x: Derived[]) => Derived; (a: any): any; } +>foo10 : { (a: new (...x: Derived[]) => Derived): typeof a; (a: any): any; } >a : any declare function foo11(a: new (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a; ->foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } +>foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } >a : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base >x : { foo: string; } >foo : string @@ -146,33 +146,33 @@ declare function foo11(a: new (x: { foo: string }, y: { foo: string; bar: string >a : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base declare function foo11(a: any): any; ->foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } +>foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } >a : any declare function foo12(a: new (x: Array, y: Array) => Array): typeof a; ->foo12 : { (a: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } ->a : new (x: Base[], y: Derived2[]) => Derived[] +>foo12 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } +>a : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] ->a : new (x: Base[], y: Derived2[]) => Derived[] +>a : new (x: Array, y: Array) => Array declare function foo12(a: any): any; ->foo12 : { (a: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } +>foo12 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } >a : any declare function foo13(a: new (x: Array, y: Array) => Array): typeof a; ->foo13 : { (a: new (x: Base[], y: Derived[]) => Derived[]): new (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } ->a : new (x: Base[], y: Derived[]) => Derived[] +>foo13 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } +>a : new (x: Array, y: Array) => Array >x : Base[] >y : Derived[] ->a : new (x: Base[], y: Derived[]) => Derived[] +>a : new (x: Array, y: Array) => Array declare function foo13(a: any): any; ->foo13 : { (a: new (x: Base[], y: Derived[]) => Derived[]): new (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } +>foo13 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } >a : any declare function foo14(a: new (x: { a: string; b: number }) => Object): typeof a; ->foo14 : { (a: new (x: { a: string; b: number; }) => Object): new (x: { a: string; b: number; }) => Object; (a: any): any; } +>foo14 : { (a: new (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } >a : new (x: { a: string; b: number; }) => Object >x : { a: string; b: number; } >a : string @@ -180,11 +180,11 @@ declare function foo14(a: new (x: { a: string; b: number }) => Object): typeof a >a : new (x: { a: string; b: number; }) => Object declare function foo14(a: any): any; ->foo14 : { (a: new (x: { a: string; b: number; }) => Object): new (x: { a: string; b: number; }) => Object; (a: any): any; } +>foo14 : { (a: new (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } >a : any declare function foo15(a: { ->foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): { new (x: number): number[]; new (x: string): string[]; }; (a: any): any; } +>foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): typeof a; (a: any): any; } >a : { new (x: number): number[]; new (x: string): string[]; } new (x: number): number[]; @@ -197,11 +197,11 @@ declare function foo15(a: { >a : { new (x: number): number[]; new (x: string): string[]; } declare function foo15(a: any): any; ->foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): { new (x: number): number[]; new (x: string): string[]; }; (a: any): any; } +>foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): typeof a; (a: any): any; } >a : any declare function foo16(a: { ->foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): { new (x: T): number[]; new (x: U): number[]; }; (a: any): any; } +>foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): typeof a; (a: any): any; } >a : { new (x: T): number[]; new (x: U): number[]; } new (x: T): number[]; @@ -214,11 +214,11 @@ declare function foo16(a: { >a : { new (x: T): number[]; new (x: U): number[]; } declare function foo16(a: any): any; ->foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): { new (x: T): number[]; new (x: U): number[]; }; (a: any): any; } +>foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): typeof a; (a: any): any; } >a : any declare function foo17(a: { ->foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }; (a: any): any; } +>foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } >a : { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; } new (x: (a: number) => number): number[]; @@ -233,11 +233,11 @@ declare function foo17(a: { >a : { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; } declare function foo17(a: any): any; ->foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }; (a: any): any; } +>foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } >a : any declare function foo18(a: { ->foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }; (a: any): any; } +>foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } >a : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; } new (x: { @@ -264,7 +264,7 @@ declare function foo18(a: { >a : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; } declare function foo18(a: any): any; ->foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }; (a: any): any; } +>foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } >a : any var r1arg1: new (x: T) => T[]; @@ -278,7 +278,7 @@ var r1arg2: new (x: number) => number[]; var r1 = foo1(r1arg1); // any, return types are not subtype of first overload >r1 : new (x: number) => number[] >foo1(r1arg1) : new (x: number) => number[] ->foo1 : { (a: new (x: number) => number[]): new (x: number) => number[]; (a: any): any; } +>foo1 : { (a: new (x: number) => number[]): typeof a; (a: any): any; } >r1arg1 : new (x: T) => T[] var r1a = [r1arg2, r1arg1]; // generic signature, subtype in both directions @@ -304,7 +304,7 @@ var r2arg2: new (x: number) => string[]; var r2 = foo2(r2arg1); >r2 : new (x: number) => string[] >foo2(r2arg1) : new (x: number) => string[] ->foo2 : { (a: new (x: number) => string[]): new (x: number) => string[]; (a: any): any; } +>foo2 : { (a: new (x: number) => string[]): typeof a; (a: any): any; } >r2arg1 : new (x: T) => string[] var r2a = [r2arg1, r2arg2]; @@ -330,7 +330,7 @@ var r3arg2: new (x: number) => void; var r3 = foo3(r3arg1); >r3 : new (x: number) => void >foo3(r3arg1) : new (x: number) => void ->foo3 : { (a: new (x: number) => void): new (x: number) => void; (a: any): any; } +>foo3 : { (a: new (x: number) => void): typeof a; (a: any): any; } >r3arg1 : new (x: T) => T var r3a = [r3arg1, r3arg2]; @@ -358,7 +358,7 @@ var r4arg2: new (x: string, y: number) => string; var r4 = foo4(r4arg1); // any >r4 : new (x: string, y: number) => string >foo4(r4arg1) : new (x: string, y: number) => string ->foo4 : { (a: new (x: string, y: number) => string): new (x: string, y: number) => string; (a: any): any; } +>foo4 : { (a: new (x: string, y: number) => string): typeof a; (a: any): any; } >r4arg1 : new (x: T, y: U) => T var r4a = [r4arg1, r4arg2]; @@ -386,7 +386,7 @@ var r5arg2: new (x: new (arg: string) => number) => string; var r5 = foo5(r5arg1); // any >r5 : new (x: new (arg: string) => number) => string >foo5(r5arg1) : new (x: new (arg: string) => number) => string ->foo5 : { (a: new (x: new (arg: string) => number) => string): new (x: new (arg: string) => number) => string; (a: any): any; } +>foo5 : { (a: new (x: new (arg: string) => number) => string): typeof a; (a: any): any; } >r5arg1 : new (x: new (arg: T) => U) => T var r5a = [r5arg1, r5arg2]; @@ -414,7 +414,7 @@ var r6arg2: new (x: new (arg: Base) => Derived) => Base; var r6 = foo6(r6arg1); // any >r6 : new (x: new (arg: Base) => Derived) => Base >foo6(r6arg1) : new (x: new (arg: Base) => Derived) => Base ->foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): new (x: new (arg: Base) => Derived) => Base; (a: any): any; } +>foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): typeof a; (a: any): any; } >r6arg1 : new (x: new (arg: T) => U) => T var r6a = [r6arg1, r6arg2]; @@ -444,7 +444,7 @@ var r7arg2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived; var r7 = foo7(r7arg1); // any >r7 : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived >foo7(r7arg1) : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived ->foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } +>foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } >r7arg1 : new (x: new (arg: T) => U) => new (r: T) => U var r7a = [r7arg1, r7arg2]; @@ -478,7 +478,7 @@ var r8arg2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) var r8 = foo8(r8arg1); // any >r8 : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived >foo8(r8arg1) : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived ->foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } +>foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } >r8arg1 : new (x: new (arg: T) => U, y: new (arg2: T) => U) => new (r: T) => U var r8a = [r8arg1, r8arg2]; @@ -514,7 +514,7 @@ var r9arg2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) var r9 = foo9(r9arg1); // any >r9 : any >foo9(r9arg1) : any ->foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } +>foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } >r9arg1 : new (x: new (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => new (r: T) => U var r9a = [r9arg1, r9arg2]; @@ -540,7 +540,7 @@ var r10arg2: new (...x: Derived[]) => Derived; var r10 = foo10(r10arg1); // any >r10 : new (...x: Derived[]) => Derived >foo10(r10arg1) : new (...x: Derived[]) => Derived ->foo10 : { (a: new (...x: Derived[]) => Derived): new (...x: Derived[]) => Derived; (a: any): any; } +>foo10 : { (a: new (...x: Derived[]) => Derived): typeof a; (a: any): any; } >r10arg1 : new (...x: T[]) => T var r10a = [r10arg1, r10arg2]; @@ -571,7 +571,7 @@ var r11arg2: new (x: { foo: string }, y: { foo: string; bar: string }) => Base; var r11 = foo11(r11arg1); // any >r11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base >foo11(r11arg1) : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base ->foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } +>foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } >r11arg1 : new (x: T, y: T) => T var r11a = [r11arg1, r11arg2]; @@ -587,60 +587,60 @@ var r11b = [r11arg2, r11arg1]; >r11arg1 : new (x: T, y: T) => T var r12arg1: new >(x: Array, y: T) => Array; ->r12arg1 : new (x: Base[], y: T) => Derived[] +>r12arg1 : new >(x: Array, y: T) => Array >x : Base[] >y : T var r12arg2: new (x: Array, y: Array) => Array; ->r12arg2 : new (x: Base[], y: Derived2[]) => Derived[] +>r12arg2 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] var r12 = foo12(r12arg1); // any ->r12 : new (x: Base[], y: Derived2[]) => Derived[] ->foo12(r12arg1) : new (x: Base[], y: Derived2[]) => Derived[] ->foo12 : { (a: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } ->r12arg1 : new (x: Base[], y: T) => Derived[] +>r12 : new (x: Array, y: Array) => Array +>foo12(r12arg1) : new (x: Array, y: Array) => Array +>foo12 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } +>r12arg1 : new >(x: Array, y: T) => Array var r12a = [r12arg1, r12arg2]; ->r12a : (new (x: Base[], y: Derived2[]) => Derived[])[] ->[r12arg1, r12arg2] : (new (x: Base[], y: Derived2[]) => Derived[])[] ->r12arg1 : new (x: Base[], y: T) => Derived[] ->r12arg2 : new (x: Base[], y: Derived2[]) => Derived[] +>r12a : (new (x: Array, y: Array) => Array)[] +>[r12arg1, r12arg2] : (new (x: Array, y: Array) => Array)[] +>r12arg1 : new >(x: Array, y: T) => Array +>r12arg2 : new (x: Array, y: Array) => Array var r12b = [r12arg2, r12arg1]; ->r12b : (new (x: Base[], y: Derived2[]) => Derived[])[] ->[r12arg2, r12arg1] : (new (x: Base[], y: Derived2[]) => Derived[])[] ->r12arg2 : new (x: Base[], y: Derived2[]) => Derived[] ->r12arg1 : new (x: Base[], y: T) => Derived[] +>r12b : (new (x: Array, y: Array) => Array)[] +>[r12arg2, r12arg1] : (new (x: Array, y: Array) => Array)[] +>r12arg2 : new (x: Array, y: Array) => Array +>r12arg1 : new >(x: Array, y: T) => Array var r13arg1: new >(x: Array, y: T) => T; ->r13arg1 : new (x: Base[], y: T) => T +>r13arg1 : new >(x: Array, y: T) => T >x : Base[] >y : T var r13arg2: new (x: Array, y: Array) => Array; ->r13arg2 : new (x: Base[], y: Derived[]) => Derived[] +>r13arg2 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived[] var r13 = foo13(r13arg1); // any ->r13 : new (x: Base[], y: Derived[]) => Derived[] ->foo13(r13arg1) : new (x: Base[], y: Derived[]) => Derived[] ->foo13 : { (a: new (x: Base[], y: Derived[]) => Derived[]): new (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } ->r13arg1 : new (x: Base[], y: T) => T +>r13 : new (x: Array, y: Array) => Array +>foo13(r13arg1) : new (x: Array, y: Array) => Array +>foo13 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } +>r13arg1 : new >(x: Array, y: T) => T var r13a = [r13arg1, r13arg2]; ->r13a : (new (x: Base[], y: Derived[]) => Derived[])[] ->[r13arg1, r13arg2] : (new (x: Base[], y: Derived[]) => Derived[])[] ->r13arg1 : new (x: Base[], y: T) => T ->r13arg2 : new (x: Base[], y: Derived[]) => Derived[] +>r13a : (new (x: Array, y: Array) => Array)[] +>[r13arg1, r13arg2] : (new (x: Array, y: Array) => Array)[] +>r13arg1 : new >(x: Array, y: T) => T +>r13arg2 : new (x: Array, y: Array) => Array var r13b = [r13arg2, r13arg1]; ->r13b : (new (x: Base[], y: Derived[]) => Derived[])[] ->[r13arg2, r13arg1] : (new (x: Base[], y: Derived[]) => Derived[])[] ->r13arg2 : new (x: Base[], y: Derived[]) => Derived[] ->r13arg1 : new (x: Base[], y: T) => T +>r13b : (new (x: Array, y: Array) => Array)[] +>[r13arg2, r13arg1] : (new (x: Array, y: Array) => Array)[] +>r13arg2 : new (x: Array, y: Array) => Array +>r13arg1 : new >(x: Array, y: T) => T var r14arg1: new (x: { a: T; b: T }) => T; >r14arg1 : new (x: { a: T; b: T; }) => T @@ -657,7 +657,7 @@ var r14arg2: new (x: { a: string; b: number }) => Object; var r14 = foo14(r14arg1); // any >r14 : any >foo14(r14arg1) : any ->foo14 : { (a: new (x: { a: string; b: number; }) => Object): new (x: { a: string; b: number; }) => Object; (a: any): any; } +>foo14 : { (a: new (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } >r14arg1 : new (x: { a: T; b: T; }) => T var r14a = [r14arg1, r14arg2]; @@ -679,7 +679,7 @@ var r15arg1: new (x: T) => T[]; var r15 = foo15(r15arg1); // any >r15 : any >foo15(r15arg1) : any ->foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): { new (x: number): number[]; new (x: string): string[]; }; (a: any): any; } +>foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): typeof a; (a: any): any; } >r15arg1 : new (x: T) => T[] var r16arg1: new (x: T) => number[]; @@ -689,7 +689,7 @@ var r16arg1: new (x: T) => number[]; var r16 = foo16(r16arg1); >r16 : { new (x: T): number[]; new (x: U): number[]; } >foo16(r16arg1) : { new (x: T): number[]; new (x: U): number[]; } ->foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): { new (x: T): number[]; new (x: U): number[]; }; (a: any): any; } +>foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): typeof a; (a: any): any; } >r16arg1 : new (x: T) => number[] var r17arg1: new (x: (a: T) => T) => T[]; @@ -700,7 +700,7 @@ var r17arg1: new (x: (a: T) => T) => T[]; var r17 = foo17(r17arg1); // any >r17 : any >foo17(r17arg1) : any ->foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }; (a: any): any; } +>foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } >r17arg1 : new (x: (a: T) => T) => T[] var r18arg1: new (x: (a: T) => T) => T[]; @@ -711,6 +711,6 @@ var r18arg1: new (x: (a: T) => T) => T[]; var r18 = foo18(r18arg1); >r18 : any >foo18(r18arg1) : any ->foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }; (a: any): any; } +>foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } >r18arg1 : new (x: (a: T) => T) => T[] diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures2.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures2.types.diff deleted file mode 100644 index 230dce5aac1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures2.types.diff +++ /dev/null @@ -1,480 +0,0 @@ ---- old.subtypingWithConstructSignatures2.types -+++ new.subtypingWithConstructSignatures2.types -@@= skipped -22, +22 lines =@@ - >bing : string - - declare function foo1(a: new (x: number) => number[]): typeof a; -->foo1 : { (a: new (x: number) => number[]): typeof a; (a: any): any; } -+>foo1 : { (a: new (x: number) => number[]): new (x: number) => number[]; (a: any): any; } - >a : new (x: number) => number[] - >x : number - >a : new (x: number) => number[] - - declare function foo1(a: any): any; -->foo1 : { (a: new (x: number) => number[]): typeof a; (a: any): any; } -+>foo1 : { (a: new (x: number) => number[]): new (x: number) => number[]; (a: any): any; } - >a : any - - declare function foo2(a: new (x: number) => string[]): typeof a; -->foo2 : { (a: new (x: number) => string[]): typeof a; (a: any): any; } -+>foo2 : { (a: new (x: number) => string[]): new (x: number) => string[]; (a: any): any; } - >a : new (x: number) => string[] - >x : number - >a : new (x: number) => string[] - - declare function foo2(a: any): any; -->foo2 : { (a: new (x: number) => string[]): typeof a; (a: any): any; } -+>foo2 : { (a: new (x: number) => string[]): new (x: number) => string[]; (a: any): any; } - >a : any - - declare function foo3(a: new (x: number) => void): typeof a; -->foo3 : { (a: new (x: number) => void): typeof a; (a: any): any; } -+>foo3 : { (a: new (x: number) => void): new (x: number) => void; (a: any): any; } - >a : new (x: number) => void - >x : number - >a : new (x: number) => void - - declare function foo3(a: any): any; -->foo3 : { (a: new (x: number) => void): typeof a; (a: any): any; } -+>foo3 : { (a: new (x: number) => void): new (x: number) => void; (a: any): any; } - >a : any - - declare function foo4(a: new (x: string, y: number) => string): typeof a; -->foo4 : { (a: new (x: string, y: number) => string): typeof a; (a: any): any; } -+>foo4 : { (a: new (x: string, y: number) => string): new (x: string, y: number) => string; (a: any): any; } - >a : new (x: string, y: number) => string - >x : string - >y : number - >a : new (x: string, y: number) => string - - declare function foo4(a: any): any; -->foo4 : { (a: new (x: string, y: number) => string): typeof a; (a: any): any; } -+>foo4 : { (a: new (x: string, y: number) => string): new (x: string, y: number) => string; (a: any): any; } - >a : any - - declare function foo5(a: new (x: new (arg: string) => number) => string): typeof a; -->foo5 : { (a: new (x: new (arg: string) => number) => string): typeof a; (a: any): any; } -+>foo5 : { (a: new (x: new (arg: string) => number) => string): new (x: new (arg: string) => number) => string; (a: any): any; } - >a : new (x: new (arg: string) => number) => string - >x : new (arg: string) => number - >arg : string - >a : new (x: new (arg: string) => number) => string - - declare function foo5(a: any): any; -->foo5 : { (a: new (x: new (arg: string) => number) => string): typeof a; (a: any): any; } -+>foo5 : { (a: new (x: new (arg: string) => number) => string): new (x: new (arg: string) => number) => string; (a: any): any; } - >a : any - - declare function foo6(a: new (x: new (arg: Base) => Derived) => Base): typeof a; -->foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): typeof a; (a: any): any; } -+>foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): new (x: new (arg: Base) => Derived) => Base; (a: any): any; } - >a : new (x: new (arg: Base) => Derived) => Base - >x : new (arg: Base) => Derived - >arg : Base - >a : new (x: new (arg: Base) => Derived) => Base - - declare function foo6(a: any): any; -->foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): typeof a; (a: any): any; } -+>foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): new (x: new (arg: Base) => Derived) => Base; (a: any): any; } - >a : any - - declare function foo7(a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): typeof a; -->foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } -+>foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } - >a : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived - >x : new (arg: Base) => Derived - >arg : Base -@@= skipped -71, +71 lines =@@ - >a : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived - - declare function foo7(a: any): any; -->foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } -+>foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } - >a : any - - declare function foo8(a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; -->foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } -+>foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } - >a : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived - >x : new (arg: Base) => Derived - >arg : Base -@@= skipped -14, +14 lines =@@ - >a : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived - - declare function foo8(a: any): any; -->foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } -+>foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } - >a : any - - declare function foo9(a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; -->foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } -+>foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } - >a : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived - >x : new (arg: Base) => Derived - >arg : Base -@@= skipped -14, +14 lines =@@ - >a : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived - - declare function foo9(a: any): any; -->foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } -+>foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } - >a : any - - declare function foo10(a: new (...x: Derived[]) => Derived): typeof a; -->foo10 : { (a: new (...x: Derived[]) => Derived): typeof a; (a: any): any; } -+>foo10 : { (a: new (...x: Derived[]) => Derived): new (...x: Derived[]) => Derived; (a: any): any; } - >a : new (...x: Derived[]) => Derived - >x : Derived[] - >a : new (...x: Derived[]) => Derived - - declare function foo10(a: any): any; -->foo10 : { (a: new (...x: Derived[]) => Derived): typeof a; (a: any): any; } -+>foo10 : { (a: new (...x: Derived[]) => Derived): new (...x: Derived[]) => Derived; (a: any): any; } - >a : any - - declare function foo11(a: new (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a; -->foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } -+>foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } - >a : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - >x : { foo: string; } - >foo : string -@@= skipped -24, +24 lines =@@ - >a : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - declare function foo11(a: any): any; -->foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } -+>foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } - >a : any - - declare function foo12(a: new (x: Array, y: Array) => Array): typeof a; -->foo12 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } -->a : new (x: Array, y: Array) => Array -+>foo12 : { (a: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } -+>a : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] -->a : new (x: Array, y: Array) => Array -+>a : new (x: Base[], y: Derived2[]) => Derived[] - - declare function foo12(a: any): any; -->foo12 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } -+>foo12 : { (a: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } - >a : any - - declare function foo13(a: new (x: Array, y: Array) => Array): typeof a; -->foo13 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } -->a : new (x: Array, y: Array) => Array -+>foo13 : { (a: new (x: Base[], y: Derived[]) => Derived[]): new (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } -+>a : new (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] -->a : new (x: Array, y: Array) => Array -+>a : new (x: Base[], y: Derived[]) => Derived[] - - declare function foo13(a: any): any; -->foo13 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } -+>foo13 : { (a: new (x: Base[], y: Derived[]) => Derived[]): new (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } - >a : any - - declare function foo14(a: new (x: { a: string; b: number }) => Object): typeof a; -->foo14 : { (a: new (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } -+>foo14 : { (a: new (x: { a: string; b: number; }) => Object): new (x: { a: string; b: number; }) => Object; (a: any): any; } - >a : new (x: { a: string; b: number; }) => Object - >x : { a: string; b: number; } - >a : string -@@= skipped -34, +34 lines =@@ - >a : new (x: { a: string; b: number; }) => Object - - declare function foo14(a: any): any; -->foo14 : { (a: new (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } -+>foo14 : { (a: new (x: { a: string; b: number; }) => Object): new (x: { a: string; b: number; }) => Object; (a: any): any; } - >a : any - - declare function foo15(a: { -->foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): typeof a; (a: any): any; } -+>foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): { new (x: number): number[]; new (x: string): string[]; }; (a: any): any; } - >a : { new (x: number): number[]; new (x: string): string[]; } - - new (x: number): number[]; -@@= skipped -17, +17 lines =@@ - >a : { new (x: number): number[]; new (x: string): string[]; } - - declare function foo15(a: any): any; -->foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): typeof a; (a: any): any; } -+>foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): { new (x: number): number[]; new (x: string): string[]; }; (a: any): any; } - >a : any - - declare function foo16(a: { -->foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): typeof a; (a: any): any; } -+>foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): { new (x: T): number[]; new (x: U): number[]; }; (a: any): any; } - >a : { new (x: T): number[]; new (x: U): number[]; } - - new (x: T): number[]; -@@= skipped -17, +17 lines =@@ - >a : { new (x: T): number[]; new (x: U): number[]; } - - declare function foo16(a: any): any; -->foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): typeof a; (a: any): any; } -+>foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): { new (x: T): number[]; new (x: U): number[]; }; (a: any): any; } - >a : any - - declare function foo17(a: { -->foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } -+>foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }; (a: any): any; } - >a : { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; } - - new (x: (a: number) => number): number[]; -@@= skipped -19, +19 lines =@@ - >a : { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; } - - declare function foo17(a: any): any; -->foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } -+>foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }; (a: any): any; } - >a : any - - declare function foo18(a: { -->foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } -+>foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }; (a: any): any; } - >a : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; } - - new (x: { -@@= skipped -31, +31 lines =@@ - >a : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; } - - declare function foo18(a: any): any; -->foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } -+>foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }; (a: any): any; } - >a : any - - var r1arg1: new (x: T) => T[]; -@@= skipped -14, +14 lines =@@ - var r1 = foo1(r1arg1); // any, return types are not subtype of first overload - >r1 : new (x: number) => number[] - >foo1(r1arg1) : new (x: number) => number[] -->foo1 : { (a: new (x: number) => number[]): typeof a; (a: any): any; } -+>foo1 : { (a: new (x: number) => number[]): new (x: number) => number[]; (a: any): any; } - >r1arg1 : new (x: T) => T[] - - var r1a = [r1arg2, r1arg1]; // generic signature, subtype in both directions -@@= skipped -26, +26 lines =@@ - var r2 = foo2(r2arg1); - >r2 : new (x: number) => string[] - >foo2(r2arg1) : new (x: number) => string[] -->foo2 : { (a: new (x: number) => string[]): typeof a; (a: any): any; } -+>foo2 : { (a: new (x: number) => string[]): new (x: number) => string[]; (a: any): any; } - >r2arg1 : new (x: T) => string[] - - var r2a = [r2arg1, r2arg2]; -@@= skipped -26, +26 lines =@@ - var r3 = foo3(r3arg1); - >r3 : new (x: number) => void - >foo3(r3arg1) : new (x: number) => void -->foo3 : { (a: new (x: number) => void): typeof a; (a: any): any; } -+>foo3 : { (a: new (x: number) => void): new (x: number) => void; (a: any): any; } - >r3arg1 : new (x: T) => T - - var r3a = [r3arg1, r3arg2]; -@@= skipped -28, +28 lines =@@ - var r4 = foo4(r4arg1); // any - >r4 : new (x: string, y: number) => string - >foo4(r4arg1) : new (x: string, y: number) => string -->foo4 : { (a: new (x: string, y: number) => string): typeof a; (a: any): any; } -+>foo4 : { (a: new (x: string, y: number) => string): new (x: string, y: number) => string; (a: any): any; } - >r4arg1 : new (x: T, y: U) => T - - var r4a = [r4arg1, r4arg2]; -@@= skipped -28, +28 lines =@@ - var r5 = foo5(r5arg1); // any - >r5 : new (x: new (arg: string) => number) => string - >foo5(r5arg1) : new (x: new (arg: string) => number) => string -->foo5 : { (a: new (x: new (arg: string) => number) => string): typeof a; (a: any): any; } -+>foo5 : { (a: new (x: new (arg: string) => number) => string): new (x: new (arg: string) => number) => string; (a: any): any; } - >r5arg1 : new (x: new (arg: T) => U) => T - - var r5a = [r5arg1, r5arg2]; -@@= skipped -28, +28 lines =@@ - var r6 = foo6(r6arg1); // any - >r6 : new (x: new (arg: Base) => Derived) => Base - >foo6(r6arg1) : new (x: new (arg: Base) => Derived) => Base -->foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): typeof a; (a: any): any; } -+>foo6 : { (a: new (x: new (arg: Base) => Derived) => Base): new (x: new (arg: Base) => Derived) => Base; (a: any): any; } - >r6arg1 : new (x: new (arg: T) => U) => T - - var r6a = [r6arg1, r6arg2]; -@@= skipped -30, +30 lines =@@ - var r7 = foo7(r7arg1); // any - >r7 : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived - >foo7(r7arg1) : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived -->foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } -+>foo7 : { (a: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } - >r7arg1 : new (x: new (arg: T) => U) => new (r: T) => U - - var r7a = [r7arg1, r7arg2]; -@@= skipped -34, +34 lines =@@ - var r8 = foo8(r8arg1); // any - >r8 : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived - >foo8(r8arg1) : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived -->foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } -+>foo8 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } - >r8arg1 : new (x: new (arg: T) => U, y: new (arg2: T) => U) => new (r: T) => U - - var r8a = [r8arg1, r8arg2]; -@@= skipped -36, +36 lines =@@ - var r9 = foo9(r9arg1); // any - >r9 : any - >foo9(r9arg1) : any -->foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a; (a: any): any; } -+>foo9 : { (a: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a: any): any; } - >r9arg1 : new (x: new (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => new (r: T) => U - - var r9a = [r9arg1, r9arg2]; -@@= skipped -26, +26 lines =@@ - var r10 = foo10(r10arg1); // any - >r10 : new (...x: Derived[]) => Derived - >foo10(r10arg1) : new (...x: Derived[]) => Derived -->foo10 : { (a: new (...x: Derived[]) => Derived): typeof a; (a: any): any; } -+>foo10 : { (a: new (...x: Derived[]) => Derived): new (...x: Derived[]) => Derived; (a: any): any; } - >r10arg1 : new (...x: T[]) => T - - var r10a = [r10arg1, r10arg2]; -@@= skipped -31, +31 lines =@@ - var r11 = foo11(r11arg1); // any - >r11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - >foo11(r11arg1) : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -->foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a; (a: any): any; } -+>foo11 : { (a: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a: any): any; } - >r11arg1 : new (x: T, y: T) => T - - var r11a = [r11arg1, r11arg2]; -@@= skipped -16, +16 lines =@@ - >r11arg1 : new (x: T, y: T) => T - - var r12arg1: new >(x: Array, y: T) => Array; -->r12arg1 : new >(x: Array, y: T) => Array -+>r12arg1 : new (x: Base[], y: T) => Derived[] - >x : Base[] - >y : T - - var r12arg2: new (x: Array, y: Array) => Array; -->r12arg2 : new (x: Array, y: Array) => Array -+>r12arg2 : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - - var r12 = foo12(r12arg1); // any -->r12 : new (x: Array, y: Array) => Array -->foo12(r12arg1) : new (x: Array, y: Array) => Array -->foo12 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } -->r12arg1 : new >(x: Array, y: T) => Array -+>r12 : new (x: Base[], y: Derived2[]) => Derived[] -+>foo12(r12arg1) : new (x: Base[], y: Derived2[]) => Derived[] -+>foo12 : { (a: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a: any): any; } -+>r12arg1 : new (x: Base[], y: T) => Derived[] - - var r12a = [r12arg1, r12arg2]; -->r12a : (new (x: Array, y: Array) => Array)[] -->[r12arg1, r12arg2] : (new (x: Array, y: Array) => Array)[] -->r12arg1 : new >(x: Array, y: T) => Array -->r12arg2 : new (x: Array, y: Array) => Array -+>r12a : (new (x: Base[], y: Derived2[]) => Derived[])[] -+>[r12arg1, r12arg2] : (new (x: Base[], y: Derived2[]) => Derived[])[] -+>r12arg1 : new (x: Base[], y: T) => Derived[] -+>r12arg2 : new (x: Base[], y: Derived2[]) => Derived[] - - var r12b = [r12arg2, r12arg1]; -->r12b : (new (x: Array, y: Array) => Array)[] -->[r12arg2, r12arg1] : (new (x: Array, y: Array) => Array)[] -->r12arg2 : new (x: Array, y: Array) => Array -->r12arg1 : new >(x: Array, y: T) => Array -+>r12b : (new (x: Base[], y: Derived2[]) => Derived[])[] -+>[r12arg2, r12arg1] : (new (x: Base[], y: Derived2[]) => Derived[])[] -+>r12arg2 : new (x: Base[], y: Derived2[]) => Derived[] -+>r12arg1 : new (x: Base[], y: T) => Derived[] - - var r13arg1: new >(x: Array, y: T) => T; -->r13arg1 : new >(x: Array, y: T) => T -+>r13arg1 : new (x: Base[], y: T) => T - >x : Base[] - >y : T - - var r13arg2: new (x: Array, y: Array) => Array; -->r13arg2 : new (x: Array, y: Array) => Array -+>r13arg2 : new (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] - - var r13 = foo13(r13arg1); // any -->r13 : new (x: Array, y: Array) => Array -->foo13(r13arg1) : new (x: Array, y: Array) => Array -->foo13 : { (a: new (x: Array, y: Array) => Array): typeof a; (a: any): any; } -->r13arg1 : new >(x: Array, y: T) => T -+>r13 : new (x: Base[], y: Derived[]) => Derived[] -+>foo13(r13arg1) : new (x: Base[], y: Derived[]) => Derived[] -+>foo13 : { (a: new (x: Base[], y: Derived[]) => Derived[]): new (x: Base[], y: Derived[]) => Derived[]; (a: any): any; } -+>r13arg1 : new (x: Base[], y: T) => T - - var r13a = [r13arg1, r13arg2]; -->r13a : (new (x: Array, y: Array) => Array)[] -->[r13arg1, r13arg2] : (new (x: Array, y: Array) => Array)[] -->r13arg1 : new >(x: Array, y: T) => T -->r13arg2 : new (x: Array, y: Array) => Array -+>r13a : (new (x: Base[], y: Derived[]) => Derived[])[] -+>[r13arg1, r13arg2] : (new (x: Base[], y: Derived[]) => Derived[])[] -+>r13arg1 : new (x: Base[], y: T) => T -+>r13arg2 : new (x: Base[], y: Derived[]) => Derived[] - - var r13b = [r13arg2, r13arg1]; -->r13b : (new (x: Array, y: Array) => Array)[] -->[r13arg2, r13arg1] : (new (x: Array, y: Array) => Array)[] -->r13arg2 : new (x: Array, y: Array) => Array -->r13arg1 : new >(x: Array, y: T) => T -+>r13b : (new (x: Base[], y: Derived[]) => Derived[])[] -+>[r13arg2, r13arg1] : (new (x: Base[], y: Derived[]) => Derived[])[] -+>r13arg2 : new (x: Base[], y: Derived[]) => Derived[] -+>r13arg1 : new (x: Base[], y: T) => T - - var r14arg1: new (x: { a: T; b: T }) => T; - >r14arg1 : new (x: { a: T; b: T; }) => T -@@= skipped -70, +70 lines =@@ - var r14 = foo14(r14arg1); // any - >r14 : any - >foo14(r14arg1) : any -->foo14 : { (a: new (x: { a: string; b: number; }) => Object): typeof a; (a: any): any; } -+>foo14 : { (a: new (x: { a: string; b: number; }) => Object): new (x: { a: string; b: number; }) => Object; (a: any): any; } - >r14arg1 : new (x: { a: T; b: T; }) => T - - var r14a = [r14arg1, r14arg2]; -@@= skipped -22, +22 lines =@@ - var r15 = foo15(r15arg1); // any - >r15 : any - >foo15(r15arg1) : any -->foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): typeof a; (a: any): any; } -+>foo15 : { (a: { new (x: number): number[]; new (x: string): string[]; }): { new (x: number): number[]; new (x: string): string[]; }; (a: any): any; } - >r15arg1 : new (x: T) => T[] - - var r16arg1: new (x: T) => number[]; -@@= skipped -10, +10 lines =@@ - var r16 = foo16(r16arg1); - >r16 : { new (x: T): number[]; new (x: U): number[]; } - >foo16(r16arg1) : { new (x: T): number[]; new (x: U): number[]; } -->foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): typeof a; (a: any): any; } -+>foo16 : { (a: { new (x: T): number[]; new (x: U): number[]; }): { new (x: T): number[]; new (x: U): number[]; }; (a: any): any; } - >r16arg1 : new (x: T) => number[] - - var r17arg1: new (x: (a: T) => T) => T[]; -@@= skipped -11, +11 lines =@@ - var r17 = foo17(r17arg1); // any - >r17 : any - >foo17(r17arg1) : any -->foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): typeof a; (a: any): any; } -+>foo17 : { (a: { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }): { new (x: (a: number) => number): number[]; new (x: (a: string) => string): string[]; }; (a: any): any; } - >r17arg1 : new (x: (a: T) => T) => T[] - - var r18arg1: new (x: (a: T) => T) => T[]; -@@= skipped -11, +11 lines =@@ - var r18 = foo18(r18arg1); - >r18 : any - >foo18(r18arg1) : any -->foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): typeof a; (a: any): any; } -+>foo18 : { (a: { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }): { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }; (a: any): any; } - >r18arg1 : new (x: (a: T) => T) => T[] diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures3.types b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures3.types index 2de1751d49a..bcb2d5f2649 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures3.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures3.types @@ -27,17 +27,17 @@ namespace Errors { >bing : string declare function foo2(a2: new (x: number) => string[]): typeof a2; ->foo2 : { (a2: new (x: number) => string[]): new (x: number) => string[]; (a2: any): any; } +>foo2 : { (a2: new (x: number) => string[]): typeof a2; (a2: any): any; } >a2 : new (x: number) => string[] >x : number >a2 : new (x: number) => string[] declare function foo2(a2: any): any; ->foo2 : { (a2: new (x: number) => string[]): new (x: number) => string[]; (a2: any): any; } +>foo2 : { (a2: new (x: number) => string[]): typeof a2; (a2: any): any; } >a2 : any declare function foo7(a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): typeof a2; ->foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2; (a2: any): any; } +>foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): typeof a2; (a2: any): any; } >a2 : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2 >x : new (arg: Base) => Derived >arg : Base @@ -45,11 +45,11 @@ namespace Errors { >a2 : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2 declare function foo7(a2: any): any; ->foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2; (a2: any): any; } +>foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): typeof a2; (a2: any): any; } >a2 : any declare function foo8(a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a2; ->foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a2: any): any; } +>foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a2; (a2: any): any; } >a2 : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived >x : new (arg: Base) => Derived >arg : Base @@ -59,21 +59,21 @@ namespace Errors { >a2 : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived declare function foo8(a2: any): any; ->foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a2: any): any; } +>foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a2; (a2: any): any; } >a2 : any declare function foo10(a2: new (...x: Base[]) => Base): typeof a2; ->foo10 : { (a2: new (...x: Base[]) => Base): new (...x: Base[]) => Base; (a2: any): any; } +>foo10 : { (a2: new (...x: Base[]) => Base): typeof a2; (a2: any): any; } >a2 : new (...x: Base[]) => Base >x : Base[] >a2 : new (...x: Base[]) => Base declare function foo10(a2: any): any; ->foo10 : { (a2: new (...x: Base[]) => Base): new (...x: Base[]) => Base; (a2: any): any; } +>foo10 : { (a2: new (...x: Base[]) => Base): typeof a2; (a2: any): any; } >a2 : any declare function foo11(a2: new (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a2; ->foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } +>foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } >a2 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base >x : { foo: string; } >foo : string @@ -83,22 +83,22 @@ namespace Errors { >a2 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base declare function foo11(a2: any): any; ->foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } +>foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } >a2 : any declare function foo12(a2: new (x: Array, y: Array) => Array): typeof a2; ->foo12 : { (a2: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } ->a2 : new (x: Base[], y: Derived2[]) => Derived[] +>foo12 : { (a2: new (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } +>a2 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] ->a2 : new (x: Base[], y: Derived2[]) => Derived[] +>a2 : new (x: Array, y: Array) => Array declare function foo12(a2: any): any; ->foo12 : { (a2: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } +>foo12 : { (a2: new (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } >a2 : any declare function foo15(a2: new (x: { a: string; b: number }) => number): typeof a2; ->foo15 : { (a2: new (x: { a: string; b: number; }) => number): new (x: { a: string; b: number; }) => number; (a2: any): any; } +>foo15 : { (a2: new (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } >a2 : new (x: { a: string; b: number; }) => number >x : { a: string; b: number; } >a : string @@ -106,16 +106,16 @@ namespace Errors { >a2 : new (x: { a: string; b: number; }) => number declare function foo15(a2: any): any; ->foo15 : { (a2: new (x: { a: string; b: number; }) => number): new (x: { a: string; b: number; }) => number; (a2: any): any; } +>foo15 : { (a2: new (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } >a2 : any declare function foo16(a2: { ->foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }): { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } ->a2 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } +>foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } +>a2 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } // type of parameter is overload set which means we can't do inference based on this type new (x: { ->x : { new (a: number): number; new (a?: number | undefined): number; } +>x : { new (a: number): number; new (a?: number): number; } new (a: number): number; >a : number @@ -125,7 +125,7 @@ namespace Errors { }): number[]; new (x: { ->x : { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; } +>x : { new (a: boolean): boolean; new (a?: boolean): boolean; } new (a: boolean): boolean; >a : boolean @@ -135,14 +135,14 @@ namespace Errors { }): boolean[]; }): typeof a2; ->a2 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } +>a2 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } declare function foo16(a2: any): any; ->foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }): { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } +>foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } >a2 : any declare function foo17(a2: { ->foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }; (a2: any): any; } +>foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } >a2 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } new (x: { @@ -169,7 +169,7 @@ namespace Errors { >a2 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } declare function foo17(a2: any): any; ->foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }; (a2: any): any; } +>foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } >a2 : any var r1arg1: new (x: T) => U[]; @@ -183,7 +183,7 @@ namespace Errors { var r1 = foo2(r1arg1); // any >r1 : new (x: number) => string[] >foo2(r1arg1) : new (x: number) => string[] ->foo2 : { (a2: new (x: number) => string[]): new (x: number) => string[]; (a2: any): any; } +>foo2 : { (a2: new (x: number) => string[]): typeof a2; (a2: any): any; } >r1arg1 : new (x: T) => U[] var r1a = [r1arg2, r1arg1]; @@ -213,7 +213,7 @@ namespace Errors { var r2 = foo7(r2arg1); // any >r2 : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2 >foo7(r2arg1) : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2 ->foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2; (a2: any): any; } +>foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): typeof a2; (a2: any): any; } >r2arg1 : new (x: new (arg: T) => U) => new (r: T) => V var r2a = [r2arg2, r2arg1]; @@ -248,7 +248,7 @@ namespace Errors { var r3 = foo8(r3arg1); // any >r3 : any >foo8(r3arg1) : any ->foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a2: any): any; } +>foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a2; (a2: any): any; } >r3arg1 : new (x: new (arg: T) => U, y: (arg2: { foo: number; }) => U) => new (r: T) => U var r3a = [r3arg2, r3arg1]; @@ -274,7 +274,7 @@ namespace Errors { var r4 = foo10(r4arg1); // any >r4 : any >foo10(r4arg1) : any ->foo10 : { (a2: new (...x: Base[]) => Base): new (...x: Base[]) => Base; (a2: any): any; } +>foo10 : { (a2: new (...x: Base[]) => Base): typeof a2; (a2: any): any; } >r4arg1 : new (...x: T[]) => T var r4a = [r4arg2, r4arg1]; @@ -305,7 +305,7 @@ namespace Errors { var r5 = foo11(r5arg1); // any >r5 : any >foo11(r5arg1) : any ->foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } +>foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } >r5arg1 : new (x: T, y: T) => T var r5a = [r5arg2, r5arg1]; @@ -321,32 +321,32 @@ namespace Errors { >r5arg2 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base var r6arg1: new (x: Array, y: Array) => Array; ->r6arg1 : new (x: Base[], y: Derived2[]) => Derived[] +>r6arg1 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] var r6arg2: new >(x: Array, y: Array) => T; ->r6arg2 : new (x: Base[], y: Base[]) => T +>r6arg2 : new >(x: Array, y: Array) => T >x : Base[] >y : Base[] var r6 = foo12(r6arg1); // new (x: Array, y: Array) => Array ->r6 : new (x: Base[], y: Derived2[]) => Derived[] ->foo12(r6arg1) : new (x: Base[], y: Derived2[]) => Derived[] ->foo12 : { (a2: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } ->r6arg1 : new (x: Base[], y: Derived2[]) => Derived[] +>r6 : new (x: Array, y: Array) => Array +>foo12(r6arg1) : new (x: Array, y: Array) => Array +>foo12 : { (a2: new (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } +>r6arg1 : new (x: Array, y: Array) => Array var r6a = [r6arg2, r6arg1]; ->r6a : (new (x: Base[], y: Derived2[]) => Derived[])[] ->[r6arg2, r6arg1] : (new (x: Base[], y: Derived2[]) => Derived[])[] ->r6arg2 : new (x: Base[], y: Base[]) => T ->r6arg1 : new (x: Base[], y: Derived2[]) => Derived[] +>r6a : (new (x: Array, y: Array) => Array)[] +>[r6arg2, r6arg1] : (new (x: Array, y: Array) => Array)[] +>r6arg2 : new >(x: Array, y: Array) => T +>r6arg1 : new (x: Array, y: Array) => Array var r6b = [r6arg1, r6arg2]; ->r6b : (new (x: Base[], y: Derived2[]) => Derived[])[] ->[r6arg1, r6arg2] : (new (x: Base[], y: Derived2[]) => Derived[])[] ->r6arg1 : new (x: Base[], y: Derived2[]) => Derived[] ->r6arg2 : new (x: Base[], y: Base[]) => T +>r6b : (new (x: Array, y: Array) => Array)[] +>[r6arg1, r6arg2] : (new (x: Array, y: Array) => Array)[] +>r6arg1 : new (x: Array, y: Array) => Array +>r6arg2 : new >(x: Array, y: Array) => T var r7arg1: new (x: { a: T; b: T }) => T; >r7arg1 : new (x: { a: T; b: T; }) => T @@ -363,7 +363,7 @@ namespace Errors { var r7 = foo15(r7arg1); // (x: { a: string; b: number }) => number): number; >r7 : any >foo15(r7arg1) : any ->foo15 : { (a2: new (x: { a: string; b: number; }) => number): new (x: { a: string; b: number; }) => number; (a2: any): any; } +>foo15 : { (a2: new (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } >r7arg1 : new (x: { a: T; b: T; }) => T var r7a = [r7arg2, r7arg1]; @@ -387,7 +387,7 @@ namespace Errors { var r7c = foo15(r7arg3); // any >r7c : any >foo15(r7arg3) : any ->foo15 : { (a2: new (x: { a: string; b: number; }) => number): new (x: { a: string; b: number; }) => number; (a2: any): any; } +>foo15 : { (a2: new (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } >r7arg3 : new (x: { a: T; b: T; }) => number var r7d = [r7arg2, r7arg3]; @@ -410,7 +410,7 @@ namespace Errors { var r8 = foo16(r8arg); // any >r8 : any >foo16(r8arg) : any ->foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }): { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } +>foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } >r8arg : new (x: new (a: T) => T) => T[] var r9arg: new (x: new (a: T) => T) => any[]; @@ -421,7 +421,7 @@ namespace Errors { var r9 = foo17(r9arg); // // (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; >r9 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } >foo17(r9arg) : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } ->foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }; (a2: any): any; } +>foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } >r9arg : new (x: new (a: T) => T) => any[] } @@ -429,13 +429,13 @@ namespace WithGenericSignaturesInBaseType { >WithGenericSignaturesInBaseType : typeof WithGenericSignaturesInBaseType declare function foo2(a2: new (x: T) => T[]): typeof a2; ->foo2 : { (a2: new (x: T) => T[]): new (x: T) => T[]; (a2: any): any; } +>foo2 : { (a2: new (x: T) => T[]): typeof a2; (a2: any): any; } >a2 : new (x: T) => T[] >x : T >a2 : new (x: T) => T[] declare function foo2(a2: any): any; ->foo2 : { (a2: new (x: T) => T[]): new (x: T) => T[]; (a2: any): any; } +>foo2 : { (a2: new (x: T) => T[]): typeof a2; (a2: any): any; } >a2 : any var r2arg2: new (x: T) => string[]; @@ -445,17 +445,17 @@ namespace WithGenericSignaturesInBaseType { var r2 = foo2(r2arg2); // (x:T) => T[] since we can infer from generic signatures now >r2 : any >foo2(r2arg2) : any ->foo2 : { (a2: new (x: T) => T[]): new (x: T) => T[]; (a2: any): any; } +>foo2 : { (a2: new (x: T) => T[]): typeof a2; (a2: any): any; } >r2arg2 : new (x: T) => string[] declare function foo3(a2: new (x: T) => string[]): typeof a2; ->foo3 : { (a2: new (x: T) => string[]): new (x: T) => string[]; (a2: any): any; } +>foo3 : { (a2: new (x: T) => string[]): typeof a2; (a2: any): any; } >a2 : new (x: T) => string[] >x : T >a2 : new (x: T) => string[] declare function foo3(a2: any): any; ->foo3 : { (a2: new (x: T) => string[]): new (x: T) => string[]; (a2: any): any; } +>foo3 : { (a2: new (x: T) => string[]): typeof a2; (a2: any): any; } >a2 : any var r3arg2: new (x: T) => T[]; @@ -465,6 +465,6 @@ namespace WithGenericSignaturesInBaseType { var r3 = foo3(r3arg2); // any >r3 : any >foo3(r3arg2) : any ->foo3 : { (a2: new (x: T) => string[]): new (x: T) => string[]; (a2: any): any; } +>foo3 : { (a2: new (x: T) => string[]): typeof a2; (a2: any): any; } >r3arg2 : new (x: T) => T[] } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures3.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures3.types.diff deleted file mode 100644 index 76a5c184c86..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures3.types.diff +++ /dev/null @@ -1,322 +0,0 @@ ---- old.subtypingWithConstructSignatures3.types -+++ new.subtypingWithConstructSignatures3.types -@@= skipped -26, +26 lines =@@ - >bing : string - - declare function foo2(a2: new (x: number) => string[]): typeof a2; -->foo2 : { (a2: new (x: number) => string[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: new (x: number) => string[]): new (x: number) => string[]; (a2: any): any; } - >a2 : new (x: number) => string[] - >x : number - >a2 : new (x: number) => string[] - - declare function foo2(a2: any): any; -->foo2 : { (a2: new (x: number) => string[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: new (x: number) => string[]): new (x: number) => string[]; (a2: any): any; } - >a2 : any - - declare function foo7(a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): typeof a2; -->foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): typeof a2; (a2: any): any; } -+>foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2; (a2: any): any; } - >a2 : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2 - >x : new (arg: Base) => Derived - >arg : Base -@@= skipped -18, +18 lines =@@ - >a2 : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2 - - declare function foo7(a2: any): any; -->foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): typeof a2; (a2: any): any; } -+>foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2; (a2: any): any; } - >a2 : any - - declare function foo8(a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a2; -->foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a2; (a2: any): any; } -+>foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a2: any): any; } - >a2 : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived - >x : new (arg: Base) => Derived - >arg : Base -@@= skipped -14, +14 lines =@@ - >a2 : new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived - - declare function foo8(a2: any): any; -->foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a2; (a2: any): any; } -+>foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a2: any): any; } - >a2 : any - - declare function foo10(a2: new (...x: Base[]) => Base): typeof a2; -->foo10 : { (a2: new (...x: Base[]) => Base): typeof a2; (a2: any): any; } -+>foo10 : { (a2: new (...x: Base[]) => Base): new (...x: Base[]) => Base; (a2: any): any; } - >a2 : new (...x: Base[]) => Base - >x : Base[] - >a2 : new (...x: Base[]) => Base - - declare function foo10(a2: any): any; -->foo10 : { (a2: new (...x: Base[]) => Base): typeof a2; (a2: any): any; } -+>foo10 : { (a2: new (...x: Base[]) => Base): new (...x: Base[]) => Base; (a2: any): any; } - >a2 : any - - declare function foo11(a2: new (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a2; -->foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } -+>foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } - >a2 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - >x : { foo: string; } - >foo : string -@@= skipped -24, +24 lines =@@ - >a2 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - declare function foo11(a2: any): any; -->foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } -+>foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } - >a2 : any - - declare function foo12(a2: new (x: Array, y: Array) => Array): typeof a2; -->foo12 : { (a2: new (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } -->a2 : new (x: Array, y: Array) => Array -+>foo12 : { (a2: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } -+>a2 : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] -->a2 : new (x: Array, y: Array) => Array -+>a2 : new (x: Base[], y: Derived2[]) => Derived[] - - declare function foo12(a2: any): any; -->foo12 : { (a2: new (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } -+>foo12 : { (a2: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } - >a2 : any - - declare function foo15(a2: new (x: { a: string; b: number }) => number): typeof a2; -->foo15 : { (a2: new (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } -+>foo15 : { (a2: new (x: { a: string; b: number; }) => number): new (x: { a: string; b: number; }) => number; (a2: any): any; } - >a2 : new (x: { a: string; b: number; }) => number - >x : { a: string; b: number; } - >a : string -@@= skipped -23, +23 lines =@@ - >a2 : new (x: { a: string; b: number; }) => number - - declare function foo15(a2: any): any; -->foo15 : { (a2: new (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } -+>foo15 : { (a2: new (x: { a: string; b: number; }) => number): new (x: { a: string; b: number; }) => number; (a2: any): any; } - >a2 : any - - declare function foo16(a2: { -->foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } -->a2 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -+>foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }): { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } -+>a2 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } - - // type of parameter is overload set which means we can't do inference based on this type - new (x: { -->x : { new (a: number): number; new (a?: number): number; } -+>x : { new (a: number): number; new (a?: number | undefined): number; } - - new (a: number): number; - >a : number -@@= skipped -19, +19 lines =@@ - - }): number[]; - new (x: { -->x : { new (a: boolean): boolean; new (a?: boolean): boolean; } -+>x : { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; } - - new (a: boolean): boolean; - >a : boolean -@@= skipped -10, +10 lines =@@ - - }): boolean[]; - }): typeof a2; -->a2 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -+>a2 : { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; } - - declare function foo16(a2: any): any; -->foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } -+>foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }): { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } - >a2 : any - - declare function foo17(a2: { -->foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } -+>foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }; (a2: any): any; } - >a2 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } - - new (x: { -@@= skipped -34, +34 lines =@@ - >a2 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } - - declare function foo17(a2: any): any; -->foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } -+>foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }; (a2: any): any; } - >a2 : any - - var r1arg1: new (x: T) => U[]; -@@= skipped -14, +14 lines =@@ - var r1 = foo2(r1arg1); // any - >r1 : new (x: number) => string[] - >foo2(r1arg1) : new (x: number) => string[] -->foo2 : { (a2: new (x: number) => string[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: new (x: number) => string[]): new (x: number) => string[]; (a2: any): any; } - >r1arg1 : new (x: T) => U[] - - var r1a = [r1arg2, r1arg1]; -@@= skipped -30, +30 lines =@@ - var r2 = foo7(r2arg1); // any - >r2 : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2 - >foo7(r2arg1) : new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2 -->foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): typeof a2; (a2: any): any; } -+>foo7 : { (a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2; (a2: any): any; } - >r2arg1 : new (x: new (arg: T) => U) => new (r: T) => V - - var r2a = [r2arg2, r2arg1]; -@@= skipped -35, +35 lines =@@ - var r3 = foo8(r3arg1); // any - >r3 : any - >foo8(r3arg1) : any -->foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a2; (a2: any): any; } -+>foo8 : { (a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; (a2: any): any; } - >r3arg1 : new (x: new (arg: T) => U, y: (arg2: { foo: number; }) => U) => new (r: T) => U - - var r3a = [r3arg2, r3arg1]; -@@= skipped -26, +26 lines =@@ - var r4 = foo10(r4arg1); // any - >r4 : any - >foo10(r4arg1) : any -->foo10 : { (a2: new (...x: Base[]) => Base): typeof a2; (a2: any): any; } -+>foo10 : { (a2: new (...x: Base[]) => Base): new (...x: Base[]) => Base; (a2: any): any; } - >r4arg1 : new (...x: T[]) => T - - var r4a = [r4arg2, r4arg1]; -@@= skipped -31, +31 lines =@@ - var r5 = foo11(r5arg1); // any - >r5 : any - >foo11(r5arg1) : any -->foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): typeof a2; (a2: any): any; } -+>foo11 : { (a2: new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base): new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base; (a2: any): any; } - >r5arg1 : new (x: T, y: T) => T - - var r5a = [r5arg2, r5arg1]; -@@= skipped -16, +16 lines =@@ - >r5arg2 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base - - var r6arg1: new (x: Array, y: Array) => Array; -->r6arg1 : new (x: Array, y: Array) => Array -+>r6arg1 : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - - var r6arg2: new >(x: Array, y: Array) => T; -->r6arg2 : new >(x: Array, y: Array) => T -+>r6arg2 : new (x: Base[], y: Base[]) => T - >x : Base[] - >y : Base[] - - var r6 = foo12(r6arg1); // new (x: Array, y: Array) => Array -->r6 : new (x: Array, y: Array) => Array -->foo12(r6arg1) : new (x: Array, y: Array) => Array -->foo12 : { (a2: new (x: Array, y: Array) => Array): typeof a2; (a2: any): any; } -->r6arg1 : new (x: Array, y: Array) => Array -+>r6 : new (x: Base[], y: Derived2[]) => Derived[] -+>foo12(r6arg1) : new (x: Base[], y: Derived2[]) => Derived[] -+>foo12 : { (a2: new (x: Base[], y: Derived2[]) => Derived[]): new (x: Base[], y: Derived2[]) => Derived[]; (a2: any): any; } -+>r6arg1 : new (x: Base[], y: Derived2[]) => Derived[] - - var r6a = [r6arg2, r6arg1]; -->r6a : (new (x: Array, y: Array) => Array)[] -->[r6arg2, r6arg1] : (new (x: Array, y: Array) => Array)[] -->r6arg2 : new >(x: Array, y: Array) => T -->r6arg1 : new (x: Array, y: Array) => Array -+>r6a : (new (x: Base[], y: Derived2[]) => Derived[])[] -+>[r6arg2, r6arg1] : (new (x: Base[], y: Derived2[]) => Derived[])[] -+>r6arg2 : new (x: Base[], y: Base[]) => T -+>r6arg1 : new (x: Base[], y: Derived2[]) => Derived[] - - var r6b = [r6arg1, r6arg2]; -->r6b : (new (x: Array, y: Array) => Array)[] -->[r6arg1, r6arg2] : (new (x: Array, y: Array) => Array)[] -->r6arg1 : new (x: Array, y: Array) => Array -->r6arg2 : new >(x: Array, y: Array) => T -+>r6b : (new (x: Base[], y: Derived2[]) => Derived[])[] -+>[r6arg1, r6arg2] : (new (x: Base[], y: Derived2[]) => Derived[])[] -+>r6arg1 : new (x: Base[], y: Derived2[]) => Derived[] -+>r6arg2 : new (x: Base[], y: Base[]) => T - - var r7arg1: new (x: { a: T; b: T }) => T; - >r7arg1 : new (x: { a: T; b: T; }) => T -@@= skipped -42, +42 lines =@@ - var r7 = foo15(r7arg1); // (x: { a: string; b: number }) => number): number; - >r7 : any - >foo15(r7arg1) : any -->foo15 : { (a2: new (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } -+>foo15 : { (a2: new (x: { a: string; b: number; }) => number): new (x: { a: string; b: number; }) => number; (a2: any): any; } - >r7arg1 : new (x: { a: T; b: T; }) => T - - var r7a = [r7arg2, r7arg1]; -@@= skipped -24, +24 lines =@@ - var r7c = foo15(r7arg3); // any - >r7c : any - >foo15(r7arg3) : any -->foo15 : { (a2: new (x: { a: string; b: number; }) => number): typeof a2; (a2: any): any; } -+>foo15 : { (a2: new (x: { a: string; b: number; }) => number): new (x: { a: string; b: number; }) => number; (a2: any): any; } - >r7arg3 : new (x: { a: T; b: T; }) => number - - var r7d = [r7arg2, r7arg3]; -@@= skipped -23, +23 lines =@@ - var r8 = foo16(r8arg); // any - >r8 : any - >foo16(r8arg) : any -->foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }): typeof a2; (a2: any): any; } -+>foo16 : { (a2: { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }): { new (x: { new (a: number): number; new (a?: number | undefined): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean | undefined): boolean; }): boolean[]; }; (a2: any): any; } - >r8arg : new (x: new (a: T) => T) => T[] - - var r9arg: new (x: new (a: T) => T) => any[]; -@@= skipped -11, +11 lines =@@ - var r9 = foo17(r9arg); // // (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; - >r9 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } - >foo17(r9arg) : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } -->foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): typeof a2; (a2: any): any; } -+>foo17 : { (a2: { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }): { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }; (a2: any): any; } - >r9arg : new (x: new (a: T) => T) => any[] - } - -@@= skipped -8, +8 lines =@@ - >WithGenericSignaturesInBaseType : typeof WithGenericSignaturesInBaseType - - declare function foo2(a2: new (x: T) => T[]): typeof a2; -->foo2 : { (a2: new (x: T) => T[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: new (x: T) => T[]): new (x: T) => T[]; (a2: any): any; } - >a2 : new (x: T) => T[] - >x : T - >a2 : new (x: T) => T[] - - declare function foo2(a2: any): any; -->foo2 : { (a2: new (x: T) => T[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: new (x: T) => T[]): new (x: T) => T[]; (a2: any): any; } - >a2 : any - - var r2arg2: new (x: T) => string[]; -@@= skipped -16, +16 lines =@@ - var r2 = foo2(r2arg2); // (x:T) => T[] since we can infer from generic signatures now - >r2 : any - >foo2(r2arg2) : any -->foo2 : { (a2: new (x: T) => T[]): typeof a2; (a2: any): any; } -+>foo2 : { (a2: new (x: T) => T[]): new (x: T) => T[]; (a2: any): any; } - >r2arg2 : new (x: T) => string[] - - declare function foo3(a2: new (x: T) => string[]): typeof a2; -->foo3 : { (a2: new (x: T) => string[]): typeof a2; (a2: any): any; } -+>foo3 : { (a2: new (x: T) => string[]): new (x: T) => string[]; (a2: any): any; } - >a2 : new (x: T) => string[] - >x : T - >a2 : new (x: T) => string[] - - declare function foo3(a2: any): any; -->foo3 : { (a2: new (x: T) => string[]): typeof a2; (a2: any): any; } -+>foo3 : { (a2: new (x: T) => string[]): new (x: T) => string[]; (a2: any): any; } - >a2 : any - - var r3arg2: new (x: T) => T[]; -@@= skipped -20, +20 lines =@@ - var r3 = foo3(r3arg2); // any - >r3 : any - >foo3(r3arg2) : any -->foo3 : { (a2: new (x: T) => string[]): typeof a2; (a2: any): any; } -+>foo3 : { (a2: new (x: T) => string[]): new (x: T) => string[]; (a2: any): any; } - >r3arg2 : new (x: T) => T[] - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures5.types b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures5.types index 5bf4fb8b943..6786f857f5c 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures5.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures5.types @@ -87,12 +87,12 @@ interface A { // T >bar : string a12: new (x: Array, y: Array) => Array; ->a12 : new (x: Base[], y: Derived2[]) => Derived[] +>a12 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived2[] a13: new (x: Array, y: Array) => Array; ->a13 : new (x: Base[], y: Derived[]) => Derived[] +>a13 : new (x: Array, y: Array) => Array >x : Base[] >y : Derived[] @@ -173,12 +173,12 @@ interface I extends B { >y : T a12: new >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : new (x: Base[], y: T) => Derived[] +>a12 : new >(x: Array, y: T) => Array >x : Base[] >y : T a13: new >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : new (x: Base[], y: T) => T +>a13 : new >(x: Array, y: T) => T >x : Base[] >y : T diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures5.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures5.types.diff deleted file mode 100644 index 8eb3aa3abe1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignatures5.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.subtypingWithConstructSignatures5.types -+++ new.subtypingWithConstructSignatures5.types -@@= skipped -86, +86 lines =@@ - >bar : string - - a12: new (x: Array, y: Array) => Array; -->a12 : new (x: Array, y: Array) => Array -+>a12 : new (x: Base[], y: Derived2[]) => Derived[] - >x : Base[] - >y : Derived2[] - - a13: new (x: Array, y: Array) => Array; -->a13 : new (x: Array, y: Array) => Array -+>a13 : new (x: Base[], y: Derived[]) => Derived[] - >x : Base[] - >y : Derived[] - -@@= skipped -86, +86 lines =@@ - >y : T - - a12: new >(x: Array, y: T) => Array; // ok, less specific parameter type -->a12 : new >(x: Array, y: T) => Array -+>a12 : new (x: Base[], y: T) => Derived[] - >x : Base[] - >y : T - - a13: new >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds -->a13 : new >(x: Array, y: T) => T -+>a13 : new (x: Base[], y: T) => T - >x : Base[] - >y : T diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt index 7ce008917ec..bb2b03e83ac 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt @@ -4,7 +4,7 @@ subtypingWithConstructSignaturesWithOptionalParameters.ts(19,11): error TS2430: Target signature provides too few arguments. Expected 1 or more, but got 0. subtypingWithConstructSignaturesWithOptionalParameters.ts(32,11): error TS2430: Interface 'I6' incorrectly extends interface 'Base'. Types of property 'a2' are incompatible. - Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. + Type 'new (x: number) => number' is not assignable to type 'new (x?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. @@ -14,19 +14,19 @@ subtypingWithConstructSignaturesWithOptionalParameters.ts(49,11): error TS2430: Target signature provides too few arguments. Expected 2 or more, but got 1. subtypingWithConstructSignaturesWithOptionalParameters.ts(66,11): error TS2430: Interface 'I14' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. - Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number | undefined) => number'. + Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number) => number'. Types of parameters 'y' and 'y' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. subtypingWithConstructSignaturesWithOptionalParameters.ts(79,11): error TS2430: Interface 'I17' incorrectly extends interface 'Base'. Types of property 'a5' are incompatible. - Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. + Type 'new (x: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. subtypingWithConstructSignaturesWithOptionalParameters.ts(83,11): error TS2430: Interface 'I18' incorrectly extends interface 'Base'. Types of property 'a5' are incompatible. - Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. + Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. Types of parameters 'x' and 'x' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. @@ -73,7 +73,7 @@ subtypingWithConstructSignaturesWithOptionalParameters.ts(83,11): error TS2430: ~~ !!! error TS2430: Interface 'I6' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a2' are incompatible. -!!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. +!!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new (x?: number) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -119,7 +119,7 @@ subtypingWithConstructSignaturesWithOptionalParameters.ts(83,11): error TS2430: ~~~ !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number | undefined) => number'. +!!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number) => number'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -139,7 +139,7 @@ subtypingWithConstructSignaturesWithOptionalParameters.ts(83,11): error TS2430: ~~~ !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. @@ -150,7 +150,7 @@ subtypingWithConstructSignaturesWithOptionalParameters.ts(83,11): error TS2430: ~~~ !!! error TS2430: Interface 'I18' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. +!!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. !!! error TS2430: Type 'undefined' is not assignable to type 'number'. diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt.diff new file mode 100644 index 00000000000..d724e59d482 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt.diff @@ -0,0 +1,70 @@ +--- old.subtypingWithConstructSignaturesWithOptionalParameters.errors.txt ++++ new.subtypingWithConstructSignaturesWithOptionalParameters.errors.txt +@@= skipped -3, +3 lines =@@ + Target signature provides too few arguments. Expected 1 or more, but got 0. + subtypingWithConstructSignaturesWithOptionalParameters.ts(32,11): error TS2430: Interface 'I6' incorrectly extends interface 'Base'. + Types of property 'a2' are incompatible. +- Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. ++ Type 'new (x: number) => number' is not assignable to type 'new (x?: number) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. +@@= skipped -10, +10 lines =@@ + Target signature provides too few arguments. Expected 2 or more, but got 1. + subtypingWithConstructSignaturesWithOptionalParameters.ts(66,11): error TS2430: Interface 'I14' incorrectly extends interface 'Base'. + Types of property 'a4' are incompatible. +- Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number | undefined) => number'. ++ Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number) => number'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. + subtypingWithConstructSignaturesWithOptionalParameters.ts(79,11): error TS2430: Interface 'I17' incorrectly extends interface 'Base'. + Types of property 'a5' are incompatible. +- Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. ++ Type 'new (x: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. + subtypingWithConstructSignaturesWithOptionalParameters.ts(83,11): error TS2430: Interface 'I18' incorrectly extends interface 'Base'. + Types of property 'a5' are incompatible. +- Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. ++ Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number | undefined' is not assignable to type 'number'. + Type 'undefined' is not assignable to type 'number'. +@@= skipped -59, +59 lines =@@ + ~~ + !!! error TS2430: Interface 'I6' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a2' are incompatible. +-!!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined) => number'. ++!!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new (x?: number) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -46, +46 lines =@@ + ~~~ + !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number | undefined) => number'. ++!!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number, y?: number) => number'. + !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -20, +20 lines =@@ + ~~~ + !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. +@@= skipped -11, +11 lines =@@ + ~~~ + !!! error TS2430: Interface 'I18' incorrectly extends interface 'Base'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number | undefined, y?: number | undefined) => number'. ++!!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number, y?: number) => number'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'number | undefined' is not assignable to type 'number'. + !!! error TS2430: Type 'undefined' is not assignable to type 'number'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.types b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.types index 239c953701c..936d0c42079 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.types @@ -8,7 +8,7 @@ interface Base { >a : new () => number a2: new (x?: number) => number; ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number >x : number | undefined a3: new (x: number) => number; @@ -16,12 +16,12 @@ interface Base { >x : number a4: new (x: number, y?: number) => number; ->a4 : new (x: number, y?: number | undefined) => number +>a4 : new (x: number, y?: number) => number >x : number >y : number | undefined a5: new (x?: number, y?: number) => number; ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number >x : number | undefined >y : number | undefined } @@ -33,7 +33,7 @@ interface I1 extends Base { interface I2 extends Base { a: new (x?: number) => number; // ok, same number of required params ->a : new (x?: number | undefined) => number +>a : new (x?: number) => number >x : number | undefined } @@ -51,7 +51,7 @@ interface I4 extends Base { interface I5 extends Base { a2: new (x?: number) => number; // ok, same number of required params ->a2 : new (x?: number | undefined) => number +>a2 : new (x?: number) => number >x : number | undefined } @@ -69,7 +69,7 @@ interface I7 extends Base { interface I8 extends Base { a3: new (x?: number) => number; // ok, fewer required params ->a3 : new (x?: number | undefined) => number +>a3 : new (x?: number) => number >x : number | undefined } @@ -94,7 +94,7 @@ interface I11 extends Base { interface I12 extends Base { a4: new (x?: number, y?: number) => number; // ok, fewer required params ->a4 : new (x?: number | undefined, y?: number | undefined) => number +>a4 : new (x?: number, y?: number) => number >x : number | undefined >y : number | undefined } @@ -120,7 +120,7 @@ interface I15 extends Base { interface I16 extends Base { a5: new (x?: number, y?: number) => number; // ok, fewer required params ->a5 : new (x?: number | undefined, y?: number | undefined) => number +>a5 : new (x?: number, y?: number) => number >x : number | undefined >y : number | undefined } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.types.diff deleted file mode 100644 index 85afe6421b7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithOptionalParameters.types.diff +++ /dev/null @@ -1,71 +0,0 @@ ---- old.subtypingWithConstructSignaturesWithOptionalParameters.types -+++ new.subtypingWithConstructSignaturesWithOptionalParameters.types -@@= skipped -7, +7 lines =@@ - >a : new () => number - - a2: new (x?: number) => number; -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - >x : number | undefined - - a3: new (x: number) => number; -@@= skipped -8, +8 lines =@@ - >x : number - - a4: new (x: number, y?: number) => number; -->a4 : new (x: number, y?: number) => number -+>a4 : new (x: number, y?: number | undefined) => number - >x : number - >y : number | undefined - - a5: new (x?: number, y?: number) => number; -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - } -@@= skipped -17, +17 lines =@@ - - interface I2 extends Base { - a: new (x?: number) => number; // ok, same number of required params -->a : new (x?: number) => number -+>a : new (x?: number | undefined) => number - >x : number | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I5 extends Base { - a2: new (x?: number) => number; // ok, same number of required params -->a2 : new (x?: number) => number -+>a2 : new (x?: number | undefined) => number - >x : number | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I8 extends Base { - a3: new (x?: number) => number; // ok, fewer required params -->a3 : new (x?: number) => number -+>a3 : new (x?: number | undefined) => number - >x : number | undefined - } - -@@= skipped -25, +25 lines =@@ - - interface I12 extends Base { - a4: new (x?: number, y?: number) => number; // ok, fewer required params -->a4 : new (x?: number, y?: number) => number -+>a4 : new (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - } -@@= skipped -26, +26 lines =@@ - - interface I16 extends Base { - a5: new (x?: number, y?: number) => number; // ok, fewer required params -->a5 : new (x?: number, y?: number) => number -+>a5 : new (x?: number | undefined, y?: number | undefined) => number - >x : number | undefined - >y : number | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithSpecializedSignatures.types b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithSpecializedSignatures.types index e68873d3e30..f8cc8a291dd 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithSpecializedSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithSpecializedSignatures.types @@ -59,7 +59,7 @@ namespace MemberWithCallSignature { interface Base { // T // M's a: { ->a : { new (x: "a"): void; new (x: string): void; } +>a : { new (x: 'a'): void; new (x: string): void; } new (x: 'a'): void; >x : "a" @@ -68,7 +68,7 @@ namespace MemberWithCallSignature { >x : string } a2: { ->a2 : { new (x: "a", y: number): void; new (x: string, y: number): void; } +>a2 : { new (x: 'a', y: number): void; new (x: string, y: number): void; } new (x: 'a', y: number): void; >x : "a" @@ -103,7 +103,7 @@ namespace MemberWithCallSignature { interface Base2 { // T // M's a: { ->a : { new (x: "a"): number; new (x: string): number; } +>a : { new (x: 'a'): number; new (x: string): number; } new (x: 'a'): number; >x : "a" diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithSpecializedSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithSpecializedSignatures.types.diff new file mode 100644 index 00000000000..3d0699e9811 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithConstructSignaturesWithSpecializedSignatures.types.diff @@ -0,0 +1,29 @@ +--- old.subtypingWithConstructSignaturesWithSpecializedSignatures.types ++++ new.subtypingWithConstructSignaturesWithSpecializedSignatures.types +@@= skipped -58, +58 lines =@@ + interface Base { // T + // M's + a: { +->a : { new (x: "a"): void; new (x: string): void; } ++>a : { new (x: 'a'): void; new (x: string): void; } + + new (x: 'a'): void; + >x : "a" +@@= skipped -9, +9 lines =@@ + >x : string + } + a2: { +->a2 : { new (x: "a", y: number): void; new (x: string, y: number): void; } ++>a2 : { new (x: 'a', y: number): void; new (x: string, y: number): void; } + + new (x: 'a', y: number): void; + >x : "a" +@@= skipped -35, +35 lines =@@ + interface Base2 { // T + // M's + a: { +->a : { new (x: "a"): number; new (x: string): number; } ++>a : { new (x: 'a'): number; new (x: string): number; } + + new (x: 'a'): number; + >x : "a" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt index 6b7e2db85e9..5fe23233e49 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt @@ -48,13 +48,13 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(113,15): error TS243 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(117,15): error TS2430: Interface 'I5' incorrectly extends interface 'Base2'. Types of property 'a2' are incompatible. - Type '(x?: T | undefined) => T' is not assignable to type '(x?: T | undefined) => T'. + Type '(x?: T) => T' is not assignable to type '(x?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. Type 'T' is not assignable to type 'T | undefined'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(121,15): error TS2430: Interface 'I6' incorrectly extends interface 'Base2'. Types of property 'a2' are incompatible. - Type '(x: T) => T' is not assignable to type '(x?: T | undefined) => T'. + Type '(x: T) => T' is not assignable to type '(x?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. @@ -64,7 +64,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(126,15): error TS243 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(130,15): error TS2430: Interface 'I8' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. - Type '(x?: T | undefined) => T' is not assignable to type '(x: T) => T'. + Type '(x?: T) => T' is not assignable to type '(x: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T' is not assignable to type 'T | undefined'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(134,15): error TS2430: Interface 'I9' incorrectly extends interface 'Base2'. @@ -83,18 +83,18 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(143,15): error TS243 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(147,15): error TS2430: Interface 'I12' incorrectly extends interface 'Base2'. Types of property 'a4' are incompatible. - Type '(x?: T | undefined, y?: T | undefined) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. + Type '(x?: T, y?: T) => T' is not assignable to type '(x: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T' is not assignable to type 'T | undefined'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(151,15): error TS2430: Interface 'I13' incorrectly extends interface 'Base2'. Types of property 'a4' are incompatible. - Type '(x: T) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. + Type '(x: T) => T' is not assignable to type '(x: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(155,15): error TS2430: Interface 'I14' incorrectly extends interface 'Base2'. Types of property 'a4' are incompatible. - Type '(x: T, y: T) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. + Type '(x: T, y: T) => T' is not assignable to type '(x: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. @@ -104,19 +104,19 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(160,15): error TS243 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(164,15): error TS2430: Interface 'I16' incorrectly extends interface 'Base2'. Types of property 'a5' are incompatible. - Type '(x?: T | undefined, y?: T | undefined) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. + Type '(x?: T, y?: T) => T' is not assignable to type '(x?: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. Type 'T' is not assignable to type 'T | undefined'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(168,15): error TS2430: Interface 'I17' incorrectly extends interface 'Base2'. Types of property 'a5' are incompatible. - Type '(x: T) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. + Type '(x: T) => T' is not assignable to type '(x?: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. subtypingWithGenericCallSignaturesWithOptionalParameters.ts(172,15): error TS2430: Interface 'I18' incorrectly extends interface 'Base2'. Types of property 'a5' are incompatible. - Type '(x: T, y: T) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. + Type '(x: T, y: T) => T' is not assignable to type '(x?: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. @@ -328,7 +328,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(260,15): error TS243 ~~ !!! error TS2430: Interface 'I5' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a2' are incompatible. -!!! error TS2430: Type '(x?: T | undefined) => T' is not assignable to type '(x?: T | undefined) => T'. +!!! error TS2430: Type '(x?: T) => T' is not assignable to type '(x?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. @@ -340,7 +340,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(260,15): error TS243 ~~ !!! error TS2430: Interface 'I6' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a2' are incompatible. -!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x?: T | undefined) => T'. +!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. @@ -362,7 +362,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(260,15): error TS243 ~~ !!! error TS2430: Interface 'I8' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. -!!! error TS2430: Type '(x?: T | undefined) => T' is not assignable to type '(x: T) => T'. +!!! error TS2430: Type '(x?: T) => T' is not assignable to type '(x: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. !!! related TS2208 subtypingWithGenericCallSignaturesWithOptionalParameters.ts:95:14: This type parameter might need an `extends T | undefined` constraint. @@ -405,7 +405,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(260,15): error TS243 ~~~ !!! error TS2430: Interface 'I12' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type '(x?: T | undefined, y?: T | undefined) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. +!!! error TS2430: Type '(x?: T, y?: T) => T' is not assignable to type '(x: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. !!! related TS2208 subtypingWithGenericCallSignaturesWithOptionalParameters.ts:96:14: This type parameter might need an `extends T | undefined` constraint. @@ -416,7 +416,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(260,15): error TS243 ~~~ !!! error TS2430: Interface 'I13' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. +!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. @@ -428,7 +428,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(260,15): error TS243 ~~~ !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. +!!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. @@ -451,7 +451,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(260,15): error TS243 ~~~ !!! error TS2430: Interface 'I16' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type '(x?: T | undefined, y?: T | undefined) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. +!!! error TS2430: Type '(x?: T, y?: T) => T' is not assignable to type '(x?: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. @@ -463,7 +463,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(260,15): error TS243 ~~~ !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. +!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x?: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. @@ -474,7 +474,7 @@ subtypingWithGenericCallSignaturesWithOptionalParameters.ts(260,15): error TS243 ~~~ !!! error TS2430: Interface 'I18' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. +!!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x?: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt.diff new file mode 100644 index 00000000000..bb1e75ae367 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt.diff @@ -0,0 +1,153 @@ +--- old.subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt ++++ new.subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt +@@= skipped -47, +47 lines =@@ + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(117,15): error TS2430: Interface 'I5' incorrectly extends interface 'Base2'. + Types of property 'a2' are incompatible. +- Type '(x?: T | undefined) => T' is not assignable to type '(x?: T | undefined) => T'. ++ Type '(x?: T) => T' is not assignable to type '(x?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. + Type 'T' is not assignable to type 'T | undefined'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(121,15): error TS2430: Interface 'I6' incorrectly extends interface 'Base2'. + Types of property 'a2' are incompatible. +- Type '(x: T) => T' is not assignable to type '(x?: T | undefined) => T'. ++ Type '(x: T) => T' is not assignable to type '(x?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T'. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. +@@= skipped -16, +16 lines =@@ + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(130,15): error TS2430: Interface 'I8' incorrectly extends interface 'Base2'. + Types of property 'a3' are incompatible. +- Type '(x?: T | undefined) => T' is not assignable to type '(x: T) => T'. ++ Type '(x?: T) => T' is not assignable to type '(x: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'T | undefined'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(134,15): error TS2430: Interface 'I9' incorrectly extends interface 'Base2'. +@@= skipped -19, +19 lines =@@ + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(147,15): error TS2430: Interface 'I12' incorrectly extends interface 'Base2'. + Types of property 'a4' are incompatible. +- Type '(x?: T | undefined, y?: T | undefined) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. ++ Type '(x?: T, y?: T) => T' is not assignable to type '(x: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'T | undefined'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(151,15): error TS2430: Interface 'I13' incorrectly extends interface 'Base2'. + Types of property 'a4' are incompatible. +- Type '(x: T) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. ++ Type '(x: T) => T' is not assignable to type '(x: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(155,15): error TS2430: Interface 'I14' incorrectly extends interface 'Base2'. + Types of property 'a4' are incompatible. +- Type '(x: T, y: T) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. ++ Type '(x: T, y: T) => T' is not assignable to type '(x: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. +@@= skipped -21, +21 lines =@@ + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(164,15): error TS2430: Interface 'I16' incorrectly extends interface 'Base2'. + Types of property 'a5' are incompatible. +- Type '(x?: T | undefined, y?: T | undefined) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. ++ Type '(x?: T, y?: T) => T' is not assignable to type '(x?: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. + Type 'T' is not assignable to type 'T | undefined'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(168,15): error TS2430: Interface 'I17' incorrectly extends interface 'Base2'. + Types of property 'a5' are incompatible. +- Type '(x: T) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. ++ Type '(x: T) => T' is not assignable to type '(x?: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T'. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. + subtypingWithGenericCallSignaturesWithOptionalParameters.ts(172,15): error TS2430: Interface 'I18' incorrectly extends interface 'Base2'. + Types of property 'a5' are incompatible. +- Type '(x: T, y: T) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. ++ Type '(x: T, y: T) => T' is not assignable to type '(x?: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T'. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. +@@= skipped -224, +224 lines =@@ + ~~ + !!! error TS2430: Interface 'I5' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a2' are incompatible. +-!!! error TS2430: Type '(x?: T | undefined) => T' is not assignable to type '(x?: T | undefined) => T'. ++!!! error TS2430: Type '(x?: T) => T' is not assignable to type '(x?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. + !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. +@@= skipped -12, +12 lines =@@ + ~~ + !!! error TS2430: Interface 'I6' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a2' are incompatible. +-!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x?: T | undefined) => T'. ++!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. +@@= skipped -22, +22 lines =@@ + ~~ + !!! error TS2430: Interface 'I8' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a3' are incompatible. +-!!! error TS2430: Type '(x?: T | undefined) => T' is not assignable to type '(x: T) => T'. ++!!! error TS2430: Type '(x?: T) => T' is not assignable to type '(x: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. + !!! related TS2208 subtypingWithGenericCallSignaturesWithOptionalParameters.ts:95:14: This type parameter might need an `extends T | undefined` constraint. +@@= skipped -43, +43 lines =@@ + ~~~ + !!! error TS2430: Interface 'I12' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type '(x?: T | undefined, y?: T | undefined) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. ++!!! error TS2430: Type '(x?: T, y?: T) => T' is not assignable to type '(x: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. + !!! related TS2208 subtypingWithGenericCallSignaturesWithOptionalParameters.ts:96:14: This type parameter might need an `extends T | undefined` constraint. +@@= skipped -11, +11 lines =@@ + ~~~ + !!! error TS2430: Interface 'I13' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. ++!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. +@@= skipped -12, +12 lines =@@ + ~~~ + !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T, y?: T | undefined) => T'. ++!!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. +@@= skipped -23, +23 lines =@@ + ~~~ + !!! error TS2430: Interface 'I16' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type '(x?: T | undefined, y?: T | undefined) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. ++!!! error TS2430: Type '(x?: T, y?: T) => T' is not assignable to type '(x?: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. + !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. +@@= skipped -12, +12 lines =@@ + ~~~ + !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. ++!!! error TS2430: Type '(x: T) => T' is not assignable to type '(x?: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. +@@= skipped -11, +11 lines =@@ + ~~~ + !!! error TS2430: Interface 'I18' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x?: T | undefined, y?: T | undefined) => T'. ++!!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x?: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.types b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.types index d28c78cc6d9..1b54ec23014 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.types @@ -9,7 +9,7 @@ namespace ClassTypeParam { >a : () => T a2: (x?: T) => T; ->a2 : (x?: T | undefined) => T +>a2 : (x?: T) => T >x : T | undefined a3: (x: T) => T; @@ -17,12 +17,12 @@ namespace ClassTypeParam { >x : T a4: (x: T, y?: T) => T; ->a4 : (x: T, y?: T | undefined) => T +>a4 : (x: T, y?: T) => T >x : T >y : T | undefined a5: (x?: T, y?: T) => T; ->a5 : (x?: T | undefined, y?: T | undefined) => T +>a5 : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -34,7 +34,7 @@ namespace ClassTypeParam { interface I2 extends Base { a: (x?: T) => T; // ok, same T of required params ->a : (x?: T | undefined) => T +>a : (x?: T) => T >x : T | undefined } @@ -52,7 +52,7 @@ namespace ClassTypeParam { interface I5 extends Base { a2: (x?: T) => T; // ok, same T of required params ->a2 : (x?: T | undefined) => T +>a2 : (x?: T) => T >x : T | undefined } @@ -70,7 +70,7 @@ namespace ClassTypeParam { interface I8 extends Base { a3: (x?: T) => T; // ok, fewer required params ->a3 : (x?: T | undefined) => T +>a3 : (x?: T) => T >x : T | undefined } @@ -95,7 +95,7 @@ namespace ClassTypeParam { interface I12 extends Base { a4: (x?: T, y?: T) => T; // ok, fewer required params ->a4 : (x?: T | undefined, y?: T | undefined) => T +>a4 : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -121,7 +121,7 @@ namespace ClassTypeParam { interface I16 extends Base { a5: (x?: T, y?: T) => T; // ok, fewer required params ->a5 : (x?: T | undefined, y?: T | undefined) => T +>a5 : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -148,7 +148,7 @@ namespace GenericSignaturesInvalid { >a : () => T a2: (x?: T) => T; ->a2 : (x?: T | undefined) => T +>a2 : (x?: T) => T >x : T | undefined a3: (x: T) => T; @@ -156,12 +156,12 @@ namespace GenericSignaturesInvalid { >x : T a4: (x: T, y?: T) => T; ->a4 : (x: T, y?: T | undefined) => T +>a4 : (x: T, y?: T) => T >x : T >y : T | undefined a5: (x?: T, y?: T) => T; ->a5 : (x?: T | undefined, y?: T | undefined) => T +>a5 : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -173,7 +173,7 @@ namespace GenericSignaturesInvalid { interface I2 extends Base2 { a: (x?: T) => T; ->a : (x?: T | undefined) => T +>a : (x?: T) => T >x : T | undefined } @@ -191,7 +191,7 @@ namespace GenericSignaturesInvalid { interface I5 extends Base2 { a2: (x?: T) => T ->a2 : (x?: T | undefined) => T +>a2 : (x?: T) => T >x : T | undefined } @@ -209,7 +209,7 @@ namespace GenericSignaturesInvalid { interface I8 extends Base2 { a3: (x?: T) => T; ->a3 : (x?: T | undefined) => T +>a3 : (x?: T) => T >x : T | undefined } @@ -234,7 +234,7 @@ namespace GenericSignaturesInvalid { interface I12 extends Base2 { a4: (x?: T, y?: T) => T; ->a4 : (x?: T | undefined, y?: T | undefined) => T +>a4 : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -260,7 +260,7 @@ namespace GenericSignaturesInvalid { interface I16 extends Base2 { a5: (x?: T, y?: T) => T; ->a5 : (x?: T | undefined, y?: T | undefined) => T +>a5 : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -286,7 +286,7 @@ namespace GenericSignaturesValid { >a : () => T a2: (x?: T) => T; ->a2 : (x?: T | undefined) => T +>a2 : (x?: T) => T >x : T | undefined a3: (x: T) => T; @@ -294,12 +294,12 @@ namespace GenericSignaturesValid { >x : T a4: (x: T, y?: T) => T; ->a4 : (x: T, y?: T | undefined) => T +>a4 : (x: T, y?: T) => T >x : T >y : T | undefined a5: (x?: T, y?: T) => T; ->a5 : (x?: T | undefined, y?: T | undefined) => T +>a5 : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -312,7 +312,7 @@ namespace GenericSignaturesValid { interface I2 extends Base2 { a: (x?: T) => T; // error, not identical and contextual signature instatiation can't make inference from T to T ->a : (x?: T | undefined) => T +>a : (x?: T) => T >x : T | undefined } @@ -330,7 +330,7 @@ namespace GenericSignaturesValid { interface I5 extends Base2 { a2: (x?: T) => T; // ok, identical ->a2 : (x?: T | undefined) => T +>a2 : (x?: T) => T >x : T | undefined } @@ -348,7 +348,7 @@ namespace GenericSignaturesValid { interface I8 extends Base2 { a3: (x?: T) => T; // ok, fewer required params ->a3 : (x?: T | undefined) => T +>a3 : (x?: T) => T >x : T | undefined } @@ -373,7 +373,7 @@ namespace GenericSignaturesValid { interface I12 extends Base2 { a4: (x?: T, y?: T) => T; // ok, fewer required params ->a4 : (x?: T | undefined, y?: T | undefined) => T +>a4 : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -399,7 +399,7 @@ namespace GenericSignaturesValid { interface I16 extends Base2 { a5: (x?: T, y?: T) => T; // ok, fewer required params ->a5 : (x?: T | undefined, y?: T | undefined) => T +>a5 : (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.types.diff deleted file mode 100644 index c8e0c5a82ad..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericCallSignaturesWithOptionalParameters.types.diff +++ /dev/null @@ -1,209 +0,0 @@ ---- old.subtypingWithGenericCallSignaturesWithOptionalParameters.types -+++ new.subtypingWithGenericCallSignaturesWithOptionalParameters.types -@@= skipped -8, +8 lines =@@ - >a : () => T - - a2: (x?: T) => T; -->a2 : (x?: T) => T -+>a2 : (x?: T | undefined) => T - >x : T | undefined - - a3: (x: T) => T; -@@= skipped -8, +8 lines =@@ - >x : T - - a4: (x: T, y?: T) => T; -->a4 : (x: T, y?: T) => T -+>a4 : (x: T, y?: T | undefined) => T - >x : T - >y : T | undefined - - a5: (x?: T, y?: T) => T; -->a5 : (x?: T, y?: T) => T -+>a5 : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -17, +17 lines =@@ - - interface I2 extends Base { - a: (x?: T) => T; // ok, same T of required params -->a : (x?: T) => T -+>a : (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I5 extends Base { - a2: (x?: T) => T; // ok, same T of required params -->a2 : (x?: T) => T -+>a2 : (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I8 extends Base { - a3: (x?: T) => T; // ok, fewer required params -->a3 : (x?: T) => T -+>a3 : (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -25, +25 lines =@@ - - interface I12 extends Base { - a4: (x?: T, y?: T) => T; // ok, fewer required params -->a4 : (x?: T, y?: T) => T -+>a4 : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -26, +26 lines =@@ - - interface I16 extends Base { - a5: (x?: T, y?: T) => T; // ok, fewer required params -->a5 : (x?: T, y?: T) => T -+>a5 : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -27, +27 lines =@@ - >a : () => T - - a2: (x?: T) => T; -->a2 : (x?: T) => T -+>a2 : (x?: T | undefined) => T - >x : T | undefined - - a3: (x: T) => T; -@@= skipped -8, +8 lines =@@ - >x : T - - a4: (x: T, y?: T) => T; -->a4 : (x: T, y?: T) => T -+>a4 : (x: T, y?: T | undefined) => T - >x : T - >y : T | undefined - - a5: (x?: T, y?: T) => T; -->a5 : (x?: T, y?: T) => T -+>a5 : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -17, +17 lines =@@ - - interface I2 extends Base2 { - a: (x?: T) => T; -->a : (x?: T) => T -+>a : (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I5 extends Base2 { - a2: (x?: T) => T -->a2 : (x?: T) => T -+>a2 : (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I8 extends Base2 { - a3: (x?: T) => T; -->a3 : (x?: T) => T -+>a3 : (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -25, +25 lines =@@ - - interface I12 extends Base2 { - a4: (x?: T, y?: T) => T; -->a4 : (x?: T, y?: T) => T -+>a4 : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -26, +26 lines =@@ - - interface I16 extends Base2 { - a5: (x?: T, y?: T) => T; -->a5 : (x?: T, y?: T) => T -+>a5 : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -26, +26 lines =@@ - >a : () => T - - a2: (x?: T) => T; -->a2 : (x?: T) => T -+>a2 : (x?: T | undefined) => T - >x : T | undefined - - a3: (x: T) => T; -@@= skipped -8, +8 lines =@@ - >x : T - - a4: (x: T, y?: T) => T; -->a4 : (x: T, y?: T) => T -+>a4 : (x: T, y?: T | undefined) => T - >x : T - >y : T | undefined - - a5: (x?: T, y?: T) => T; -->a5 : (x?: T, y?: T) => T -+>a5 : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -18, +18 lines =@@ - - interface I2 extends Base2 { - a: (x?: T) => T; // error, not identical and contextual signature instatiation can't make inference from T to T -->a : (x?: T) => T -+>a : (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I5 extends Base2 { - a2: (x?: T) => T; // ok, identical -->a2 : (x?: T) => T -+>a2 : (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I8 extends Base2 { - a3: (x?: T) => T; // ok, fewer required params -->a3 : (x?: T) => T -+>a3 : (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -25, +25 lines =@@ - - interface I12 extends Base2 { - a4: (x?: T, y?: T) => T; // ok, fewer required params -->a4 : (x?: T, y?: T) => T -+>a4 : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -26, +26 lines =@@ - - interface I16 extends Base2 { - a5: (x?: T, y?: T) => T; // ok, fewer required params -->a5 : (x?: T, y?: T) => T -+>a5 : (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt index 168a67d4deb..62547ba7705 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt @@ -48,13 +48,13 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(113,15): error 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(117,15): error TS2430: Interface 'I5' incorrectly extends interface 'Base2'. Types of property 'a2' are incompatible. - Type 'new (x?: T | undefined) => T' is not assignable to type 'new (x?: T | undefined) => T'. + Type 'new (x?: T) => T' is not assignable to type 'new (x?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. Type 'T' is not assignable to type 'T | undefined'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(121,15): error TS2430: Interface 'I6' incorrectly extends interface 'Base2'. Types of property 'a2' are incompatible. - Type 'new (x: T) => T' is not assignable to type 'new (x?: T | undefined) => T'. + Type 'new (x: T) => T' is not assignable to type 'new (x?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. @@ -64,7 +64,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(126,15): error 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(130,15): error TS2430: Interface 'I8' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. - Type 'new (x?: T | undefined) => T' is not assignable to type 'new (x: T) => T'. + Type 'new (x?: T) => T' is not assignable to type 'new (x: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T' is not assignable to type 'T | undefined'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(134,15): error TS2430: Interface 'I9' incorrectly extends interface 'Base2'. @@ -83,18 +83,18 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(143,15): error 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(147,15): error TS2430: Interface 'I12' incorrectly extends interface 'Base2'. Types of property 'a4' are incompatible. - Type 'new (x?: T | undefined, y?: T | undefined) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. + Type 'new (x?: T, y?: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T' is not assignable to type 'T | undefined'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(151,15): error TS2430: Interface 'I13' incorrectly extends interface 'Base2'. Types of property 'a4' are incompatible. - Type 'new (x: T) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. + Type 'new (x: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(155,15): error TS2430: Interface 'I14' incorrectly extends interface 'Base2'. Types of property 'a4' are incompatible. - Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. + Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. @@ -104,19 +104,19 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(160,15): error 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(164,15): error TS2430: Interface 'I16' incorrectly extends interface 'Base2'. Types of property 'a5' are incompatible. - Type 'new (x?: T | undefined, y?: T | undefined) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. + Type 'new (x?: T, y?: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. Type 'T' is not assignable to type 'T | undefined'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(168,15): error TS2430: Interface 'I17' incorrectly extends interface 'Base2'. Types of property 'a5' are incompatible. - Type 'new (x: T) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. + Type 'new (x: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(172,15): error TS2430: Interface 'I18' incorrectly extends interface 'Base2'. Types of property 'a5' are incompatible. - Type 'new (x: T, y: T) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. + Type 'new (x: T, y: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T | undefined' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. @@ -328,7 +328,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(260,15): error ~~ !!! error TS2430: Interface 'I5' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a2' are incompatible. -!!! error TS2430: Type 'new (x?: T | undefined) => T' is not assignable to type 'new (x?: T | undefined) => T'. +!!! error TS2430: Type 'new (x?: T) => T' is not assignable to type 'new (x?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. @@ -340,7 +340,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(260,15): error ~~ !!! error TS2430: Interface 'I6' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a2' are incompatible. -!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x?: T | undefined) => T'. +!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. @@ -362,7 +362,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(260,15): error ~~ !!! error TS2430: Interface 'I8' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. -!!! error TS2430: Type 'new (x?: T | undefined) => T' is not assignable to type 'new (x: T) => T'. +!!! error TS2430: Type 'new (x?: T) => T' is not assignable to type 'new (x: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. !!! related TS2208 subtypingWithGenericConstructSignaturesWithOptionalParameters.ts:95:18: This type parameter might need an `extends T | undefined` constraint. @@ -405,7 +405,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(260,15): error ~~~ !!! error TS2430: Interface 'I12' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type 'new (x?: T | undefined, y?: T | undefined) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. +!!! error TS2430: Type 'new (x?: T, y?: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. !!! related TS2208 subtypingWithGenericConstructSignaturesWithOptionalParameters.ts:96:18: This type parameter might need an `extends T | undefined` constraint. @@ -416,7 +416,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(260,15): error ~~~ !!! error TS2430: Interface 'I13' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. +!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. @@ -428,7 +428,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(260,15): error ~~~ !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a4' are incompatible. -!!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. +!!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. @@ -451,7 +451,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(260,15): error ~~~ !!! error TS2430: Interface 'I16' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type 'new (x?: T | undefined, y?: T | undefined) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. +!!! error TS2430: Type 'new (x?: T, y?: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. @@ -463,7 +463,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(260,15): error ~~~ !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. +!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. @@ -474,7 +474,7 @@ subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(260,15): error ~~~ !!! error TS2430: Interface 'I18' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a5' are incompatible. -!!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. +!!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt.diff new file mode 100644 index 00000000000..ec1fe1517dd --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt.diff @@ -0,0 +1,153 @@ +--- old.subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt ++++ new.subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt +@@= skipped -47, +47 lines =@@ + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(117,15): error TS2430: Interface 'I5' incorrectly extends interface 'Base2'. + Types of property 'a2' are incompatible. +- Type 'new (x?: T | undefined) => T' is not assignable to type 'new (x?: T | undefined) => T'. ++ Type 'new (x?: T) => T' is not assignable to type 'new (x?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. + Type 'T' is not assignable to type 'T | undefined'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(121,15): error TS2430: Interface 'I6' incorrectly extends interface 'Base2'. + Types of property 'a2' are incompatible. +- Type 'new (x: T) => T' is not assignable to type 'new (x?: T | undefined) => T'. ++ Type 'new (x: T) => T' is not assignable to type 'new (x?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T'. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. +@@= skipped -16, +16 lines =@@ + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(130,15): error TS2430: Interface 'I8' incorrectly extends interface 'Base2'. + Types of property 'a3' are incompatible. +- Type 'new (x?: T | undefined) => T' is not assignable to type 'new (x: T) => T'. ++ Type 'new (x?: T) => T' is not assignable to type 'new (x: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'T | undefined'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(134,15): error TS2430: Interface 'I9' incorrectly extends interface 'Base2'. +@@= skipped -19, +19 lines =@@ + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(147,15): error TS2430: Interface 'I12' incorrectly extends interface 'Base2'. + Types of property 'a4' are incompatible. +- Type 'new (x?: T | undefined, y?: T | undefined) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. ++ Type 'new (x?: T, y?: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'T | undefined'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(151,15): error TS2430: Interface 'I13' incorrectly extends interface 'Base2'. + Types of property 'a4' are incompatible. +- Type 'new (x: T) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. ++ Type 'new (x: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(155,15): error TS2430: Interface 'I14' incorrectly extends interface 'Base2'. + Types of property 'a4' are incompatible. +- Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. ++ Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. +@@= skipped -21, +21 lines =@@ + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(164,15): error TS2430: Interface 'I16' incorrectly extends interface 'Base2'. + Types of property 'a5' are incompatible. +- Type 'new (x?: T | undefined, y?: T | undefined) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. ++ Type 'new (x?: T, y?: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. + Type 'T' is not assignable to type 'T | undefined'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(168,15): error TS2430: Interface 'I17' incorrectly extends interface 'Base2'. + Types of property 'a5' are incompatible. +- Type 'new (x: T) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. ++ Type 'new (x: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T'. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. + subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(172,15): error TS2430: Interface 'I18' incorrectly extends interface 'Base2'. + Types of property 'a5' are incompatible. +- Type 'new (x: T, y: T) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. ++ Type 'new (x: T, y: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T | undefined' is not assignable to type 'T'. + 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. +@@= skipped -224, +224 lines =@@ + ~~ + !!! error TS2430: Interface 'I5' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a2' are incompatible. +-!!! error TS2430: Type 'new (x?: T | undefined) => T' is not assignable to type 'new (x?: T | undefined) => T'. ++!!! error TS2430: Type 'new (x?: T) => T' is not assignable to type 'new (x?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. + !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. +@@= skipped -12, +12 lines =@@ + ~~ + !!! error TS2430: Interface 'I6' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a2' are incompatible. +-!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x?: T | undefined) => T'. ++!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. +@@= skipped -22, +22 lines =@@ + ~~ + !!! error TS2430: Interface 'I8' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a3' are incompatible. +-!!! error TS2430: Type 'new (x?: T | undefined) => T' is not assignable to type 'new (x: T) => T'. ++!!! error TS2430: Type 'new (x?: T) => T' is not assignable to type 'new (x: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. + !!! related TS2208 subtypingWithGenericConstructSignaturesWithOptionalParameters.ts:95:18: This type parameter might need an `extends T | undefined` constraint. +@@= skipped -43, +43 lines =@@ + ~~~ + !!! error TS2430: Interface 'I12' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type 'new (x?: T | undefined, y?: T | undefined) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. ++!!! error TS2430: Type 'new (x?: T, y?: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. + !!! related TS2208 subtypingWithGenericConstructSignaturesWithOptionalParameters.ts:96:18: This type parameter might need an `extends T | undefined` constraint. +@@= skipped -11, +11 lines =@@ + ~~~ + !!! error TS2430: Interface 'I13' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. ++!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. +@@= skipped -12, +12 lines =@@ + ~~~ + !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a4' are incompatible. +-!!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T, y?: T | undefined) => T'. ++!!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T'. +@@= skipped -23, +23 lines =@@ + ~~~ + !!! error TS2430: Interface 'I16' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type 'new (x?: T | undefined, y?: T | undefined) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. ++!!! error TS2430: Type 'new (x?: T, y?: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T | undefined'. Two different types with this name exist, but they are unrelated. + !!! error TS2430: Type 'T' is not assignable to type 'T | undefined'. +@@= skipped -12, +12 lines =@@ + ~~~ + !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. ++!!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. +@@= skipped -11, +11 lines =@@ + ~~~ + !!! error TS2430: Interface 'I18' incorrectly extends interface 'Base2'. + !!! error TS2430: Types of property 'a5' are incompatible. +-!!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x?: T | undefined, y?: T | undefined) => T'. ++!!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x?: T, y?: T) => T'. + !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. + !!! error TS2430: Type 'T | undefined' is not assignable to type 'T'. + !!! error TS2430: 'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.types b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.types index 88e4ef1845d..2b7185c4c59 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.types @@ -9,7 +9,7 @@ namespace ClassTypeParam { >a : new () => T a2: new (x?: T) => T; ->a2 : new (x?: T | undefined) => T +>a2 : new (x?: T) => T >x : T | undefined a3: new (x: T) => T; @@ -17,12 +17,12 @@ namespace ClassTypeParam { >x : T a4: new (x: T, y?: T) => T; ->a4 : new (x: T, y?: T | undefined) => T +>a4 : new (x: T, y?: T) => T >x : T >y : T | undefined a5: new (x?: T, y?: T) => T; ->a5 : new (x?: T | undefined, y?: T | undefined) => T +>a5 : new (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -34,7 +34,7 @@ namespace ClassTypeParam { interface I2 extends Base { a: new (x?: T) => T; // ok, same T of required params ->a : new (x?: T | undefined) => T +>a : new (x?: T) => T >x : T | undefined } @@ -52,7 +52,7 @@ namespace ClassTypeParam { interface I5 extends Base { a2: new (x?: T) => T; // ok, same T of required params ->a2 : new (x?: T | undefined) => T +>a2 : new (x?: T) => T >x : T | undefined } @@ -70,7 +70,7 @@ namespace ClassTypeParam { interface I8 extends Base { a3: new (x?: T) => T; // ok, fewer required params ->a3 : new (x?: T | undefined) => T +>a3 : new (x?: T) => T >x : T | undefined } @@ -95,7 +95,7 @@ namespace ClassTypeParam { interface I12 extends Base { a4: new (x?: T, y?: T) => T; // ok, fewer required params ->a4 : new (x?: T | undefined, y?: T | undefined) => T +>a4 : new (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -121,7 +121,7 @@ namespace ClassTypeParam { interface I16 extends Base { a5: new (x?: T, y?: T) => T; // ok, fewer required params ->a5 : new (x?: T | undefined, y?: T | undefined) => T +>a5 : new (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -148,7 +148,7 @@ namespace GenericSignaturesInvalid { >a : new () => T a2: new (x?: T) => T; ->a2 : new (x?: T | undefined) => T +>a2 : new (x?: T) => T >x : T | undefined a3: new (x: T) => T; @@ -156,12 +156,12 @@ namespace GenericSignaturesInvalid { >x : T a4: new (x: T, y?: T) => T; ->a4 : new (x: T, y?: T | undefined) => T +>a4 : new (x: T, y?: T) => T >x : T >y : T | undefined a5: new (x?: T, y?: T) => T; ->a5 : new (x?: T | undefined, y?: T | undefined) => T +>a5 : new (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -173,7 +173,7 @@ namespace GenericSignaturesInvalid { interface I2 extends Base2 { a: new (x?: T) => T; ->a : new (x?: T | undefined) => T +>a : new (x?: T) => T >x : T | undefined } @@ -191,7 +191,7 @@ namespace GenericSignaturesInvalid { interface I5 extends Base2 { a2: new (x?: T) => T ->a2 : new (x?: T | undefined) => T +>a2 : new (x?: T) => T >x : T | undefined } @@ -209,7 +209,7 @@ namespace GenericSignaturesInvalid { interface I8 extends Base2 { a3: new (x?: T) => T; ->a3 : new (x?: T | undefined) => T +>a3 : new (x?: T) => T >x : T | undefined } @@ -234,7 +234,7 @@ namespace GenericSignaturesInvalid { interface I12 extends Base2 { a4: new (x?: T, y?: T) => T; ->a4 : new (x?: T | undefined, y?: T | undefined) => T +>a4 : new (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -260,7 +260,7 @@ namespace GenericSignaturesInvalid { interface I16 extends Base2 { a5: new (x?: T, y?: T) => T; ->a5 : new (x?: T | undefined, y?: T | undefined) => T +>a5 : new (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -286,7 +286,7 @@ namespace GenericSignaturesValid { >a : new () => T a2: new (x?: T) => T; ->a2 : new (x?: T | undefined) => T +>a2 : new (x?: T) => T >x : T | undefined a3: new (x: T) => T; @@ -294,12 +294,12 @@ namespace GenericSignaturesValid { >x : T a4: new (x: T, y?: T) => T; ->a4 : new (x: T, y?: T | undefined) => T +>a4 : new (x: T, y?: T) => T >x : T >y : T | undefined a5: new (x?: T, y?: T) => T; ->a5 : new (x?: T | undefined, y?: T | undefined) => T +>a5 : new (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -312,7 +312,7 @@ namespace GenericSignaturesValid { interface I2 extends Base2 { a: new (x?: T) => T; // error, not identical and contextual signature instatiation can't make inference from T to T ->a : new (x?: T | undefined) => T +>a : new (x?: T) => T >x : T | undefined } @@ -330,7 +330,7 @@ namespace GenericSignaturesValid { interface I5 extends Base2 { a2: new (x?: T) => T; // ok, identical ->a2 : new (x?: T | undefined) => T +>a2 : new (x?: T) => T >x : T | undefined } @@ -348,7 +348,7 @@ namespace GenericSignaturesValid { interface I8 extends Base2 { a3: new (x?: T) => T; // error, no inferences for T so {} not assignable to {} in return type ->a3 : new (x?: T | undefined) => T +>a3 : new (x?: T) => T >x : T | undefined } @@ -373,7 +373,7 @@ namespace GenericSignaturesValid { interface I12 extends Base2 { a4: new (x?: T, y?: T) => T; // ok, fewer required params ->a4 : new (x?: T | undefined, y?: T | undefined) => T +>a4 : new (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } @@ -399,7 +399,7 @@ namespace GenericSignaturesValid { interface I16 extends Base2 { a5: new (x?: T, y?: T) => T; // ok, fewer required params ->a5 : new (x?: T | undefined, y?: T | undefined) => T +>a5 : new (x?: T, y?: T) => T >x : T | undefined >y : T | undefined } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.types.diff deleted file mode 100644 index 5141d4736a8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithGenericConstructSignaturesWithOptionalParameters.types.diff +++ /dev/null @@ -1,209 +0,0 @@ ---- old.subtypingWithGenericConstructSignaturesWithOptionalParameters.types -+++ new.subtypingWithGenericConstructSignaturesWithOptionalParameters.types -@@= skipped -8, +8 lines =@@ - >a : new () => T - - a2: new (x?: T) => T; -->a2 : new (x?: T) => T -+>a2 : new (x?: T | undefined) => T - >x : T | undefined - - a3: new (x: T) => T; -@@= skipped -8, +8 lines =@@ - >x : T - - a4: new (x: T, y?: T) => T; -->a4 : new (x: T, y?: T) => T -+>a4 : new (x: T, y?: T | undefined) => T - >x : T - >y : T | undefined - - a5: new (x?: T, y?: T) => T; -->a5 : new (x?: T, y?: T) => T -+>a5 : new (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -17, +17 lines =@@ - - interface I2 extends Base { - a: new (x?: T) => T; // ok, same T of required params -->a : new (x?: T) => T -+>a : new (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I5 extends Base { - a2: new (x?: T) => T; // ok, same T of required params -->a2 : new (x?: T) => T -+>a2 : new (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I8 extends Base { - a3: new (x?: T) => T; // ok, fewer required params -->a3 : new (x?: T) => T -+>a3 : new (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -25, +25 lines =@@ - - interface I12 extends Base { - a4: new (x?: T, y?: T) => T; // ok, fewer required params -->a4 : new (x?: T, y?: T) => T -+>a4 : new (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -26, +26 lines =@@ - - interface I16 extends Base { - a5: new (x?: T, y?: T) => T; // ok, fewer required params -->a5 : new (x?: T, y?: T) => T -+>a5 : new (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -27, +27 lines =@@ - >a : new () => T - - a2: new (x?: T) => T; -->a2 : new (x?: T) => T -+>a2 : new (x?: T | undefined) => T - >x : T | undefined - - a3: new (x: T) => T; -@@= skipped -8, +8 lines =@@ - >x : T - - a4: new (x: T, y?: T) => T; -->a4 : new (x: T, y?: T) => T -+>a4 : new (x: T, y?: T | undefined) => T - >x : T - >y : T | undefined - - a5: new (x?: T, y?: T) => T; -->a5 : new (x?: T, y?: T) => T -+>a5 : new (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -17, +17 lines =@@ - - interface I2 extends Base2 { - a: new (x?: T) => T; -->a : new (x?: T) => T -+>a : new (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I5 extends Base2 { - a2: new (x?: T) => T -->a2 : new (x?: T) => T -+>a2 : new (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I8 extends Base2 { - a3: new (x?: T) => T; -->a3 : new (x?: T) => T -+>a3 : new (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -25, +25 lines =@@ - - interface I12 extends Base2 { - a4: new (x?: T, y?: T) => T; -->a4 : new (x?: T, y?: T) => T -+>a4 : new (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -26, +26 lines =@@ - - interface I16 extends Base2 { - a5: new (x?: T, y?: T) => T; -->a5 : new (x?: T, y?: T) => T -+>a5 : new (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -26, +26 lines =@@ - >a : new () => T - - a2: new (x?: T) => T; -->a2 : new (x?: T) => T -+>a2 : new (x?: T | undefined) => T - >x : T | undefined - - a3: new (x: T) => T; -@@= skipped -8, +8 lines =@@ - >x : T - - a4: new (x: T, y?: T) => T; -->a4 : new (x: T, y?: T) => T -+>a4 : new (x: T, y?: T | undefined) => T - >x : T - >y : T | undefined - - a5: new (x?: T, y?: T) => T; -->a5 : new (x?: T, y?: T) => T -+>a5 : new (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -18, +18 lines =@@ - - interface I2 extends Base2 { - a: new (x?: T) => T; // error, not identical and contextual signature instatiation can't make inference from T to T -->a : new (x?: T) => T -+>a : new (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I5 extends Base2 { - a2: new (x?: T) => T; // ok, identical -->a2 : new (x?: T) => T -+>a2 : new (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -18, +18 lines =@@ - - interface I8 extends Base2 { - a3: new (x?: T) => T; // error, no inferences for T so {} not assignable to {} in return type -->a3 : new (x?: T) => T -+>a3 : new (x?: T | undefined) => T - >x : T | undefined - } - -@@= skipped -25, +25 lines =@@ - - interface I12 extends Base2 { - a4: new (x?: T, y?: T) => T; // ok, fewer required params -->a4 : new (x?: T, y?: T) => T -+>a4 : new (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } -@@= skipped -26, +26 lines =@@ - - interface I16 extends Base2 { - a5: new (x?: T, y?: T) => T; // ok, fewer required params -->a5 : new (x?: T, y?: T) => T -+>a5 : new (x?: T | undefined, y?: T | undefined) => T - >x : T | undefined - >y : T | undefined - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality.types b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality.types index fcbccac014a..1c7564ec861 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality.types @@ -52,7 +52,7 @@ interface S3 extends T3 { // object literal case var a: { Foo?: Base; }; ->a : { Foo?: Base | undefined; } +>a : { Foo?: Base; } >Foo : Base | undefined var b = { Foo: null }; @@ -62,10 +62,10 @@ var b = { Foo: null }; >null : Derived var r = true ? a : b; ->r : { Foo?: Base | undefined; } ->true ? a : b : { Foo?: Base | undefined; } +>r : { Foo?: Base; } +>true ? a : b : { Foo?: Base; } >true : true ->a : { Foo?: Base | undefined; } +>a : { Foo?: Base; } >b : { Foo: Derived; } namespace TwoLevels { @@ -103,7 +103,7 @@ namespace TwoLevels { // object literal case var a: { Foo?: Base; }; ->a : { Foo?: Base | undefined; } +>a : { Foo?: Base; } >Foo : Base | undefined var b = { Foo: null }; @@ -113,9 +113,9 @@ namespace TwoLevels { >null : Derived2 var r = true ? a : b; ->r : { Foo?: Base | undefined; } ->true ? a : b : { Foo?: Base | undefined; } +>r : { Foo?: Base; } +>true ? a : b : { Foo?: Base; } >true : true ->a : { Foo?: Base | undefined; } +>a : { Foo?: Base; } >b : { Foo: Derived2; } } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality.types.diff deleted file mode 100644 index b4da1dbd227..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality.types.diff +++ /dev/null @@ -1,47 +0,0 @@ ---- old.subtypingWithObjectMembersOptionality.types -+++ new.subtypingWithObjectMembersOptionality.types -@@= skipped -51, +51 lines =@@ - - // object literal case - var a: { Foo?: Base; }; -->a : { Foo?: Base; } -+>a : { Foo?: Base | undefined; } - >Foo : Base | undefined - - var b = { Foo: null }; -@@= skipped -10, +10 lines =@@ - >null : Derived - - var r = true ? a : b; -->r : { Foo?: Base; } -->true ? a : b : { Foo?: Base; } -+>r : { Foo?: Base | undefined; } -+>true ? a : b : { Foo?: Base | undefined; } - >true : true -->a : { Foo?: Base; } -+>a : { Foo?: Base | undefined; } - >b : { Foo: Derived; } - - namespace TwoLevels { -@@= skipped -41, +41 lines =@@ - - // object literal case - var a: { Foo?: Base; }; -->a : { Foo?: Base; } -+>a : { Foo?: Base | undefined; } - >Foo : Base | undefined - - var b = { Foo: null }; -@@= skipped -10, +10 lines =@@ - >null : Derived2 - - var r = true ? a : b; -->r : { Foo?: Base; } -->true ? a : b : { Foo?: Base; } -+>r : { Foo?: Base | undefined; } -+>true ? a : b : { Foo?: Base | undefined; } - >true : true -->a : { Foo?: Base; } -+>a : { Foo?: Base | undefined; } - >b : { Foo: Derived2; } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality2.types b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality2.types index 15d97f27645..8d1acc2789a 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality2.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality2.types @@ -45,13 +45,13 @@ declare var a: { Foo: Base; } >Foo : Base declare var b: { Foo?: Derived; } ->b : { Foo?: Derived | undefined; } +>b : { Foo?: Derived; } >Foo : Derived | undefined var r = true ? a : b; // ok ->r : { Foo: Base; } | { Foo?: Derived | undefined; } ->true ? a : b : { Foo: Base; } | { Foo?: Derived | undefined; } +>r : { Foo: Base; } | { Foo?: Derived; } +>true ? a : b : { Foo: Base; } | { Foo?: Derived; } >true : true >a : { Foo: Base; } ->b : { Foo?: Derived | undefined; } +>b : { Foo?: Derived; } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality2.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality2.types.diff deleted file mode 100644 index cf41afbdccf..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality2.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.subtypingWithObjectMembersOptionality2.types -+++ new.subtypingWithObjectMembersOptionality2.types -@@= skipped -44, +44 lines =@@ - >Foo : Base - - declare var b: { Foo?: Derived; } -->b : { Foo?: Derived; } -+>b : { Foo?: Derived | undefined; } - >Foo : Derived | undefined - - var r = true ? a : b; // ok -->r : { Foo: Base; } | { Foo?: Derived; } -->true ? a : b : { Foo: Base; } | { Foo?: Derived; } -+>r : { Foo: Base; } | { Foo?: Derived | undefined; } -+>true ? a : b : { Foo: Base; } | { Foo?: Derived | undefined; } - >true : true - >a : { Foo: Base; } -->b : { Foo?: Derived; } -+>b : { Foo?: Derived | undefined; } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality3.types b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality3.types index a5c59c62476..abba36c193d 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality3.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality3.types @@ -41,7 +41,7 @@ interface S3 extends T3 { // object literal case var a: { Foo?: Base; } ->a : { Foo?: Base | undefined; } +>a : { Foo?: Base; } >Foo : Base | undefined var b: { Foo2: Derived; } @@ -49,9 +49,9 @@ var b: { Foo2: Derived; } >Foo2 : Derived var r = true ? a : b; // ok ->r : { Foo?: Base | undefined; } | { Foo2: Derived; } ->true ? a : b : { Foo?: Base | undefined; } | { Foo2: Derived; } +>r : { Foo?: Base; } | { Foo2: Derived; } +>true ? a : b : { Foo?: Base; } | { Foo2: Derived; } >true : true ->a : { Foo?: Base | undefined; } +>a : { Foo?: Base; } >b : { Foo2: Derived; } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality3.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality3.types.diff deleted file mode 100644 index 12304c27af1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality3.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.subtypingWithObjectMembersOptionality3.types -+++ new.subtypingWithObjectMembersOptionality3.types -@@= skipped -40, +40 lines =@@ - - // object literal case - var a: { Foo?: Base; } -->a : { Foo?: Base; } -+>a : { Foo?: Base | undefined; } - >Foo : Base | undefined - - var b: { Foo2: Derived; } -@@= skipped -8, +8 lines =@@ - >Foo2 : Derived - - var r = true ? a : b; // ok -->r : { Foo?: Base; } | { Foo2: Derived; } -->true ? a : b : { Foo?: Base; } | { Foo2: Derived; } -+>r : { Foo?: Base | undefined; } | { Foo2: Derived; } -+>true ? a : b : { Foo?: Base | undefined; } | { Foo2: Derived; } - >true : true -->a : { Foo?: Base; } -+>a : { Foo?: Base | undefined; } - >b : { Foo2: Derived; } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality4.types b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality4.types index 62f27a9e918..94b8be487e0 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality4.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality4.types @@ -45,13 +45,13 @@ var a: { Foo: Base; } >Foo : Base var b: { Foo2?: Derived; } ->b : { Foo2?: Derived | undefined; } +>b : { Foo2?: Derived; } >Foo2 : Derived | undefined var r = true ? a : b; // ok ->r : { Foo: Base; } | { Foo2?: Derived | undefined; } ->true ? a : b : { Foo: Base; } | { Foo2?: Derived | undefined; } +>r : { Foo: Base; } | { Foo2?: Derived; } +>true ? a : b : { Foo: Base; } | { Foo2?: Derived; } >true : true >a : { Foo: Base; } ->b : { Foo2?: Derived | undefined; } +>b : { Foo2?: Derived; } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality4.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality4.types.diff deleted file mode 100644 index 67953b667bc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithObjectMembersOptionality4.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.subtypingWithObjectMembersOptionality4.types -+++ new.subtypingWithObjectMembersOptionality4.types -@@= skipped -44, +44 lines =@@ - >Foo : Base - - var b: { Foo2?: Derived; } -->b : { Foo2?: Derived; } -+>b : { Foo2?: Derived | undefined; } - >Foo2 : Derived | undefined - - var r = true ? a : b; // ok -->r : { Foo: Base; } | { Foo2?: Derived; } -->true ? a : b : { Foo: Base; } | { Foo2?: Derived; } -+>r : { Foo: Base; } | { Foo2?: Derived | undefined; } -+>true ? a : b : { Foo: Base; } | { Foo2?: Derived | undefined; } - >true : true - >a : { Foo: Base; } -->b : { Foo2?: Derived; } -+>b : { Foo2?: Derived | undefined; } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.errors.txt b/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.errors.txt index 5286910d7f1..a6290c7f175 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.errors.txt @@ -1,4 +1,4 @@ -subtypingWithOptionalProperties.ts(5,9): error TS2322: Type 'T' is not assignable to type '{ s?: number | undefined; }'. +subtypingWithOptionalProperties.ts(5,9): error TS2322: Type 'T' is not assignable to type '{ s?: number; }'. ==== subtypingWithOptionalProperties.ts (1 errors) ==== @@ -8,8 +8,8 @@ subtypingWithOptionalProperties.ts(5,9): error TS2322: Type 'T' is not assignabl function f(a: T) { var b: { s?: number } = a; ~ -!!! error TS2322: Type 'T' is not assignable to type '{ s?: number | undefined; }'. -!!! related TS2208 subtypingWithOptionalProperties.ts:4:12: This type parameter might need an `extends { s?: number | undefined; }` constraint. +!!! error TS2322: Type 'T' is not assignable to type '{ s?: number; }'. +!!! related TS2208 subtypingWithOptionalProperties.ts:4:12: This type parameter might need an `extends { s?: number; }` constraint. return b; } diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.errors.txt.diff index 42af9c35fa5..e23b8cbf77b 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.errors.txt.diff @@ -1,11 +1,17 @@ --- old.subtypingWithOptionalProperties.errors.txt +++ new.subtypingWithOptionalProperties.errors.txt -@@= skipped -8, +8 lines =@@ +@@= skipped -0, +0 lines =@@ +-subtypingWithOptionalProperties.ts(5,9): error TS2322: Type 'T' is not assignable to type '{ s?: number | undefined; }'. ++subtypingWithOptionalProperties.ts(5,9): error TS2322: Type 'T' is not assignable to type '{ s?: number; }'. + + + ==== subtypingWithOptionalProperties.ts (1 errors) ==== +@@= skipped -7, +7 lines =@@ + function f(a: T) { var b: { s?: number } = a; ~ - !!! error TS2322: Type 'T' is not assignable to type '{ s?: number | undefined; }'. --!!! related TS2208 subtypingWithOptionalProperties.ts:4:12: This type parameter might need an `extends { s?: number; }` constraint. -+!!! related TS2208 subtypingWithOptionalProperties.ts:4:12: This type parameter might need an `extends { s?: number | undefined; }` constraint. +-!!! error TS2322: Type 'T' is not assignable to type '{ s?: number | undefined; }'. ++!!! error TS2322: Type 'T' is not assignable to type '{ s?: number; }'. + !!! related TS2208 subtypingWithOptionalProperties.ts:4:12: This type parameter might need an `extends { s?: number; }` constraint. return b; - } - \ No newline at end of file + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.types b/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.types index a25194df13f..7ab923ecd14 100644 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.types +++ b/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.types @@ -5,22 +5,22 @@ // returns { s?: number; } function f(a: T) { ->f : (a: T) => { s?: number | undefined; } +>f : (a: T) => { s?: number; } >a : T var b: { s?: number } = a; ->b : { s?: number | undefined; } +>b : { s?: number; } >s : number | undefined >a : T return b; ->b : { s?: number | undefined; } +>b : { s?: number; } } var r = f({ s: new Object() }); // ok ->r : { s?: number | undefined; } ->f({ s: new Object() }) : { s?: number | undefined; } ->f : (a: T) => { s?: number | undefined; } +>r : { s?: number; } +>f({ s: new Object() }) : { s?: number; } +>f : (a: T) => { s?: number; } >{ s: new Object() } : { s: Object; } >s : Object >new Object() : Object @@ -29,12 +29,12 @@ var r = f({ s: new Object() }); // ok r.s && r.s.toFixed(); // would blow up at runtime >r.s && r.s.toFixed() : string | 0 | undefined >r.s : number | undefined ->r : { s?: number | undefined; } +>r : { s?: number; } >s : number | undefined >r.s.toFixed() : string ->r.s.toFixed : (fractionDigits?: number | undefined) => string +>r.s.toFixed : (fractionDigits?: number) => string >r.s : number ->r : { s?: number | undefined; } +>r : { s?: number; } >s : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.types.diff b/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.types.diff deleted file mode 100644 index 8d4ead5fbad..00000000000 --- a/testdata/baselines/reference/submodule/conformance/subtypingWithOptionalProperties.types.diff +++ /dev/null @@ -1,47 +0,0 @@ ---- old.subtypingWithOptionalProperties.types -+++ new.subtypingWithOptionalProperties.types -@@= skipped -4, +4 lines =@@ - - // returns { s?: number; } - function f(a: T) { -->f : (a: T) => { s?: number; } -+>f : (a: T) => { s?: number | undefined; } - >a : T - - var b: { s?: number } = a; -->b : { s?: number; } -+>b : { s?: number | undefined; } - >s : number | undefined - >a : T - - return b; -->b : { s?: number; } -+>b : { s?: number | undefined; } - } - - var r = f({ s: new Object() }); // ok -->r : { s?: number; } -->f({ s: new Object() }) : { s?: number; } -->f : (a: T) => { s?: number; } -+>r : { s?: number | undefined; } -+>f({ s: new Object() }) : { s?: number | undefined; } -+>f : (a: T) => { s?: number | undefined; } - >{ s: new Object() } : { s: Object; } - >s : Object - >new Object() : Object -@@= skipped -24, +24 lines =@@ - r.s && r.s.toFixed(); // would blow up at runtime - >r.s && r.s.toFixed() : string | 0 | undefined - >r.s : number | undefined -->r : { s?: number; } -+>r : { s?: number | undefined; } - >s : number | undefined - >r.s.toFixed() : string -->r.s.toFixed : (fractionDigits?: number) => string -+>r.s.toFixed : (fractionDigits?: number | undefined) => string - >r.s : number -->r : { s?: number; } -+>r : { s?: number | undefined; } - >s : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/superCallParameterContextualTyping1.types b/testdata/baselines/reference/submodule/conformance/superCallParameterContextualTyping1.types index 192efd62db0..48b26c6c737 100644 --- a/testdata/baselines/reference/submodule/conformance/superCallParameterContextualTyping1.types +++ b/testdata/baselines/reference/submodule/conformance/superCallParameterContextualTyping1.types @@ -24,8 +24,8 @@ class B extends A { >String(value.toExponential()) : string >String : StringConstructor >value.toExponential() : string ->value.toExponential : (fractionDigits?: number | undefined) => string +>value.toExponential : (fractionDigits?: number) => string >value : number ->toExponential : (fractionDigits?: number | undefined) => string +>toExponential : (fractionDigits?: number) => string } diff --git a/testdata/baselines/reference/submodule/conformance/superCallParameterContextualTyping1.types.diff b/testdata/baselines/reference/submodule/conformance/superCallParameterContextualTyping1.types.diff deleted file mode 100644 index 66ea8c6c7d6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/superCallParameterContextualTyping1.types.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.superCallParameterContextualTyping1.types -+++ new.superCallParameterContextualTyping1.types -@@= skipped -23, +23 lines =@@ - >String(value.toExponential()) : string - >String : StringConstructor - >value.toExponential() : string -->value.toExponential : (fractionDigits?: number) => string -+>value.toExponential : (fractionDigits?: number | undefined) => string - >value : number -->toExponential : (fractionDigits?: number) => string -+>toExponential : (fractionDigits?: number | undefined) => string - } diff --git a/testdata/baselines/reference/submodule/conformance/switchWithConstrainedTypeVariable.types b/testdata/baselines/reference/submodule/conformance/switchWithConstrainedTypeVariable.types index ff7396b4df2..ff479c1c2d0 100644 --- a/testdata/baselines/reference/submodule/conformance/switchWithConstrainedTypeVariable.types +++ b/testdata/baselines/reference/submodule/conformance/switchWithConstrainedTypeVariable.types @@ -4,7 +4,7 @@ // Repro from #20840 function function1(key: T) { ->function1 : (key: T) => void +>function1 : (key: T) => void >key : T switch (key) { diff --git a/testdata/baselines/reference/submodule/conformance/switchWithConstrainedTypeVariable.types.diff b/testdata/baselines/reference/submodule/conformance/switchWithConstrainedTypeVariable.types.diff new file mode 100644 index 00000000000..7989c82a57b --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/switchWithConstrainedTypeVariable.types.diff @@ -0,0 +1,11 @@ +--- old.switchWithConstrainedTypeVariable.types ++++ new.switchWithConstrainedTypeVariable.types +@@= skipped -3, +3 lines =@@ + // Repro from #20840 + + function function1(key: T) { +->function1 : (key: T) => void ++>function1 : (key: T) => void + >key : T + + switch (key) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressions.types b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressions.types index cca8957f022..3294d4e2b9a 100644 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressions.types +++ b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressions.types @@ -7,7 +7,7 @@ interface I { >subs : number[] member: { ->member : new (s: string) => new (n: number) => new () => boolean +>member : new (s: string) => { new (n: number): { new (): boolean; }; } new (s: string): { >s : string @@ -28,13 +28,13 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; >new new new f `abc${ 0 }def`.member("hello")(42) === true : boolean >new new new f `abc${ 0 }def`.member("hello")(42) : boolean >new new f `abc${ 0 }def`.member("hello")(42) : new () => boolean ->new f `abc${ 0 }def`.member("hello") : new (n: number) => new () => boolean ->f `abc${ 0 }def`.member : new (s: string) => new (n: number) => new () => boolean +>new f `abc${ 0 }def`.member("hello") : new (n: number) => { new (): boolean; } +>f `abc${ 0 }def`.member : new (s: string) => { new (n: number): { new (): boolean; }; } >f `abc${ 0 }def` : I >f : I >`abc${ 0 }def` : string >0 : 0 ->member : new (s: string) => new (n: number) => new () => boolean +>member : new (s: string) => { new (n: number): { new (): boolean; }; } >"hello" : "hello" >42 : 42 >true : true diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressions.types.diff b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressions.types.diff deleted file mode 100644 index 1807aa522e4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressions.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.taggedTemplateStringsWithManyCallAndMemberExpressions.types -+++ new.taggedTemplateStringsWithManyCallAndMemberExpressions.types -@@= skipped -6, +6 lines =@@ - >subs : number[] - - member: { -->member : new (s: string) => { new (n: number): { new (): boolean; }; } -+>member : new (s: string) => new (n: number) => new () => boolean - - new (s: string): { - >s : string -@@= skipped -21, +21 lines =@@ - >new new new f `abc${ 0 }def`.member("hello")(42) === true : boolean - >new new new f `abc${ 0 }def`.member("hello")(42) : boolean - >new new f `abc${ 0 }def`.member("hello")(42) : new () => boolean -->new f `abc${ 0 }def`.member("hello") : new (n: number) => { new (): boolean; } -->f `abc${ 0 }def`.member : new (s: string) => { new (n: number): { new (): boolean; }; } -+>new f `abc${ 0 }def`.member("hello") : new (n: number) => new () => boolean -+>f `abc${ 0 }def`.member : new (s: string) => new (n: number) => new () => boolean - >f `abc${ 0 }def` : I - >f : I - >`abc${ 0 }def` : string - >0 : 0 -->member : new (s: string) => { new (n: number): { new (): boolean; }; } -+>member : new (s: string) => new (n: number) => new () => boolean - >"hello" : "hello" - >42 : 42 - >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types index 1fb6612805a..d76ad3ae498 100644 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types +++ b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types @@ -7,7 +7,7 @@ interface I { >subs : number[] member: { ->member : new (s: string) => new (n: number) => new () => boolean +>member : new (s: string) => { new (n: number): { new (): boolean; }; } new (s: string): { >s : string @@ -28,13 +28,13 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; >new new new f `abc${ 0 }def`.member("hello")(42) === true : boolean >new new new f `abc${ 0 }def`.member("hello")(42) : boolean >new new f `abc${ 0 }def`.member("hello")(42) : new () => boolean ->new f `abc${ 0 }def`.member("hello") : new (n: number) => new () => boolean ->f `abc${ 0 }def`.member : new (s: string) => new (n: number) => new () => boolean +>new f `abc${ 0 }def`.member("hello") : new (n: number) => { new (): boolean; } +>f `abc${ 0 }def`.member : new (s: string) => { new (n: number): { new (): boolean; }; } >f `abc${ 0 }def` : I >f : I >`abc${ 0 }def` : string >0 : 0 ->member : new (s: string) => new (n: number) => new () => boolean +>member : new (s: string) => { new (n: number): { new (): boolean; }; } >"hello" : "hello" >42 : 42 >true : true diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types.diff b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types.diff deleted file mode 100644 index 1b3bf105b11..00000000000 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types -+++ new.taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types -@@= skipped -6, +6 lines =@@ - >subs : number[] - - member: { -->member : new (s: string) => { new (n: number): { new (): boolean; }; } -+>member : new (s: string) => new (n: number) => new () => boolean - - new (s: string): { - >s : string -@@= skipped -21, +21 lines =@@ - >new new new f `abc${ 0 }def`.member("hello")(42) === true : boolean - >new new new f `abc${ 0 }def`.member("hello")(42) : boolean - >new new f `abc${ 0 }def`.member("hello")(42) : new () => boolean -->new f `abc${ 0 }def`.member("hello") : new (n: number) => { new (): boolean; } -->f `abc${ 0 }def`.member : new (s: string) => { new (n: number): { new (): boolean; }; } -+>new f `abc${ 0 }def`.member("hello") : new (n: number) => new () => boolean -+>f `abc${ 0 }def`.member : new (s: string) => new (n: number) => new () => boolean - >f `abc${ 0 }def` : I - >f : I - >`abc${ 0 }def` : string - >0 : 0 -->member : new (s: string) => { new (n: number): { new (): boolean; }; } -+>member : new (s: string) => new (n: number) => new () => boolean - >"hello" : "hello" - >42 : 42 - >true : true \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3.types b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3.types index 7882edea389..8eac28e78ad 100644 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3.types +++ b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3.types @@ -272,9 +272,9 @@ fn5 `${ (n) => n.substr(0) }`; >(n) => n.substr(0) : (n: string) => string >n : string >n.substr(0) : string ->n.substr : (from: number, length?: number | undefined) => string +>n.substr : (from: number, length?: number) => string >n : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >0 : 0 diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3.types.diff b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3.types.diff index c23e75eda29..7623aabe4c7 100644 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3.types.diff +++ b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3.types.diff @@ -38,15 +38,4 @@ +>fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } >strs : TemplateStringsArray >n : T - >m : U -@@= skipped -100, +100 lines =@@ - >(n) => n.substr(0) : (n: string) => string - >n : string - >n.substr(0) : string -->n.substr : (from: number, length?: number) => string -+>n.substr : (from: number, length?: number | undefined) => string - >n : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >0 : 0 - + >m : U \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3_ES6.types b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3_ES6.types index a9b3ded4077..220a495fbad 100644 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3_ES6.types +++ b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3_ES6.types @@ -272,9 +272,9 @@ fn5 `${ (n) => n.substr(0) }`; >(n) => n.substr(0) : (n: string) => string >n : string >n.substr(0) : string ->n.substr : (from: number, length?: number | undefined) => string +>n.substr : (from: number, length?: number) => string >n : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >0 : 0 diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3_ES6.types.diff b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3_ES6.types.diff index b76b7f532f9..62e5bc12ece 100644 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3_ES6.types.diff +++ b/testdata/baselines/reference/submodule/conformance/taggedTemplateStringsWithOverloadResolution3_ES6.types.diff @@ -38,15 +38,4 @@ +>fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } >strs : TemplateStringsArray >n : T - >m : U -@@= skipped -100, +100 lines =@@ - >(n) => n.substr(0) : (n: string) => string - >n : string - >n.substr(0) : string -->n.substr : (from: number, length?: number) => string -+>n.substr : (from: number, length?: number | undefined) => string - >n : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >0 : 0 - + >m : U \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplatesWithTypeArguments1.types b/testdata/baselines/reference/submodule/conformance/taggedTemplatesWithTypeArguments1.types index 22fd28158d7..34617c41f25 100644 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplatesWithTypeArguments1.types +++ b/testdata/baselines/reference/submodule/conformance/taggedTemplatesWithTypeArguments1.types @@ -2,7 +2,7 @@ === taggedTemplatesWithTypeArguments1.ts === declare function f(strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>): void; ->f : (strs: TemplateStringsArray, ...callbacks: ((x: T) => any)[]) => void +>f : (strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>) => void >strs : TemplateStringsArray >callbacks : ((x: T) => any)[] >x : T @@ -21,7 +21,7 @@ interface Stuff { export const a = f ` >a : void >f ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : void ->f : (strs: TemplateStringsArray, ...callbacks: ((x: T) => any)[]) => void +>f : (strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>) => void >` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : string hello diff --git a/testdata/baselines/reference/submodule/conformance/taggedTemplatesWithTypeArguments1.types.diff b/testdata/baselines/reference/submodule/conformance/taggedTemplatesWithTypeArguments1.types.diff deleted file mode 100644 index 6195df68303..00000000000 --- a/testdata/baselines/reference/submodule/conformance/taggedTemplatesWithTypeArguments1.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.taggedTemplatesWithTypeArguments1.types -+++ new.taggedTemplatesWithTypeArguments1.types -@@= skipped -1, +1 lines =@@ - - === taggedTemplatesWithTypeArguments1.ts === - declare function f(strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>): void; -->f : (strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>) => void -+>f : (strs: TemplateStringsArray, ...callbacks: ((x: T) => any)[]) => void - >strs : TemplateStringsArray - >callbacks : ((x: T) => any)[] - >x : T -@@= skipped -19, +19 lines =@@ - export const a = f ` - >a : void - >f ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : void -->f : (strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>) => void -+>f : (strs: TemplateStringsArray, ...callbacks: ((x: T) => any)[]) => void - >` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : string - - hello \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes1.types b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes1.types index 732bd4d900d..5021a3a305c 100644 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes1.types +++ b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes1.types @@ -73,7 +73,7 @@ type TCA2 = Cases<'BAR'>; // 'BAR bar BAR bAR' // Assignability function test(name: `get${Capitalize}`) { ->test : (name: `get${Capitalize}`) => void +>test : (name: `get${Capitalize}`) => void >name : `get${Capitalize}` let s1: string = name; @@ -283,15 +283,15 @@ declare function getProp(obj: object, path: string): unknown; >path : string let p1 = getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a'); ->p1 : { readonly b: { readonly c: 42; readonly d: "hello"; }; } ->getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a') : { readonly b: { readonly c: 42; readonly d: "hello"; }; } +>p1 : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } +>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; } ->{ 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"; }; }; } ->a : { readonly b: { readonly c: 42; readonly d: "hello"; }; } ->{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: "hello"; }; } ->b : { readonly c: 42; readonly d: "hello"; } ->{c: 42, d: 'hello' } : { readonly c: 42; readonly d: "hello"; } +>{ 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'; }; }; } +>a : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } +>{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } +>b : { readonly c: 42; readonly d: 'hello'; } +>{c: 42, d: 'hello' } : { readonly c: 42; readonly d: 'hello'; } >c : 42 >42 : 42 >d : "hello" @@ -299,15 +299,15 @@ let p1 = getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a'); >'a' : "a" let p2 = getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a.b'); ->p2 : { readonly c: 42; readonly d: "hello"; } ->getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a.b') : { readonly c: 42; readonly d: "hello"; } +>p2 : { readonly c: 42; readonly d: 'hello'; } +>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; } ->{ 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"; }; }; } ->a : { readonly b: { readonly c: 42; readonly d: "hello"; }; } ->{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: "hello"; }; } ->b : { readonly c: 42; readonly d: "hello"; } ->{c: 42, d: 'hello' } : { readonly c: 42; readonly d: "hello"; } +>{ 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'; }; }; } +>a : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } +>{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } +>b : { readonly c: 42; readonly d: 'hello'; } +>{c: 42, d: 'hello' } : { readonly c: 42; readonly d: 'hello'; } >c : 42 >42 : 42 >d : "hello" @@ -318,12 +318,12 @@ let p3 = getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a.b.d'); >p3 : "hello" >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; } ->{ 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"; }; }; } ->a : { readonly b: { readonly c: 42; readonly d: "hello"; }; } ->{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: "hello"; }; } ->b : { readonly c: 42; readonly d: "hello"; } ->{c: 42, d: 'hello' } : { readonly c: 42; readonly d: "hello"; } +>{ 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'; }; }; } +>a : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } +>{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } +>b : { readonly c: 42; readonly d: 'hello'; } +>{c: 42, d: 'hello' } : { readonly c: 42; readonly d: 'hello'; } >c : 42 >42 : 42 >d : "hello" @@ -557,9 +557,9 @@ declare function getProp2>(obj: T, path: P): PropTypepath : P const obj2 = { ->obj2 : { readonly name: "John"; readonly age: 42; readonly cars: readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }]; } ->{ name: 'John', age: 42, cars: [ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ]} as const : { readonly name: "John"; readonly age: 42; readonly cars: readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }]; } ->{ name: 'John', age: 42, cars: [ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ]} : { readonly name: "John"; readonly age: 42; readonly cars: readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }]; } +>obj2 : { readonly name: 'John'; readonly age: 42; readonly cars: readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }]; } +>{ name: 'John', age: 42, cars: [ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ]} as const : { readonly name: 'John'; readonly age: 42; readonly cars: readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }]; } +>{ name: 'John', age: 42, cars: [ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ]} : { readonly name: 'John'; readonly age: 42; readonly cars: readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }]; } name: 'John', >name : "John" @@ -570,18 +570,18 @@ const obj2 = { >42 : 42 cars: [ ->cars : readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }] ->[ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ] : readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }] +>cars : readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }] +>[ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ] : readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }] { make: 'Ford', age: 10 }, ->{ make: 'Ford', age: 10 } : { readonly make: "Ford"; readonly age: 10; } +>{ make: 'Ford', age: 10 } : { readonly make: 'Ford'; readonly age: 10; } >make : "Ford" >'Ford' : "Ford" >age : 10 >10 : 10 { make: 'Trabant', age: 35 } ->{ make: 'Trabant', age: 35 } : { readonly make: "Trabant"; readonly age: 35; } +>{ make: 'Trabant', age: 35 } : { readonly make: 'Trabant'; readonly age: 35; } >make : "Trabant" >'Trabant' : "Trabant" >age : 35 @@ -594,7 +594,7 @@ let make = getProp2(obj2, 'cars.1.make'); // 'Trabant' >make : "Trabant" >getProp2(obj2, 'cars.1.make') : "Trabant" >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; }]; } +>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" // Repro from #46480 diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes1.types.diff b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes1.types.diff index d38ed97eaaa..4e0c9e78000 100644 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes1.types.diff @@ -5,7 +5,7 @@ function test(name: `get${Capitalize}`) { ->test : (name: `get${Capitalize}`) => void -+>test : (name: `get${Capitalize}`) => void ++>test : (name: `get${Capitalize}`) => void >name : `get${Capitalize}` let s1: string = name; @@ -30,7 +30,74 @@ >obj : T >path : P0 -@@= skipped -252, +252 lines =@@ +@@= skipped -20, +20 lines =@@ + >path : string + + let p1 = getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a'); +->p1 : { readonly b: { readonly c: 42; readonly d: "hello"; }; } +->getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a') : { readonly b: { readonly c: 42; readonly d: "hello"; }; } ++>p1 : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } ++>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; } +->{ 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"; }; }; } +->a : { readonly b: { readonly c: 42; readonly d: "hello"; }; } +->{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: "hello"; }; } +->b : { readonly c: 42; readonly d: "hello"; } +->{c: 42, d: 'hello' } : { readonly c: 42; readonly d: "hello"; } ++>{ 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'; }; }; } ++>a : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } ++>{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } ++>b : { readonly c: 42; readonly d: 'hello'; } ++>{c: 42, d: 'hello' } : { readonly c: 42; readonly d: 'hello'; } + >c : 42 + >42 : 42 + >d : "hello" +@@= skipped -16, +16 lines =@@ + >'a' : "a" + + let p2 = getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a.b'); +->p2 : { readonly c: 42; readonly d: "hello"; } +->getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a.b') : { readonly c: 42; readonly d: "hello"; } ++>p2 : { readonly c: 42; readonly d: 'hello'; } ++>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; } +->{ 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"; }; }; } +->a : { readonly b: { readonly c: 42; readonly d: "hello"; }; } +->{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: "hello"; }; } +->b : { readonly c: 42; readonly d: "hello"; } +->{c: 42, d: 'hello' } : { readonly c: 42; readonly d: "hello"; } ++>{ 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'; }; }; } ++>a : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } ++>{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } ++>b : { readonly c: 42; readonly d: 'hello'; } ++>{c: 42, d: 'hello' } : { readonly c: 42; readonly d: 'hello'; } + >c : 42 + >42 : 42 + >d : "hello" +@@= skipped -19, +19 lines =@@ + >p3 : "hello" + >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; } +->{ 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"; }; }; } +->a : { readonly b: { readonly c: 42; readonly d: "hello"; }; } +->{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: "hello"; }; } +->b : { readonly c: 42; readonly d: "hello"; } +->{c: 42, d: 'hello' } : { readonly c: 42; readonly d: "hello"; } ++>{ 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'; }; }; } ++>a : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } ++>{ b: {c: 42, d: 'hello' }} : { readonly b: { readonly c: 42; readonly d: 'hello'; }; } ++>b : { readonly c: 42; readonly d: 'hello'; } ++>{c: 42, d: 'hello' } : { readonly c: 42; readonly d: 'hello'; } + >c : 42 + >42 : 42 + >d : "hello" +@@= skipped -197, +197 lines =@@ >TDigits : TDigits type T100000 = [...TDigits, ...TDigits, ...TDigits, ...TDigits, ...TDigits]; // Error @@ -38,3 +105,49 @@ +>T100000 : (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)[] // Repro from #40863 + +@@= skipped -42, +42 lines =@@ + >path : P + + const obj2 = { +->obj2 : { readonly name: "John"; readonly age: 42; readonly cars: readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }]; } +->{ name: 'John', age: 42, cars: [ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ]} as const : { readonly name: "John"; readonly age: 42; readonly cars: readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }]; } +->{ name: 'John', age: 42, cars: [ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ]} : { readonly name: "John"; readonly age: 42; readonly cars: readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }]; } ++>obj2 : { readonly name: 'John'; readonly age: 42; readonly cars: readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }]; } ++>{ name: 'John', age: 42, cars: [ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ]} as const : { readonly name: 'John'; readonly age: 42; readonly cars: readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }]; } ++>{ name: 'John', age: 42, cars: [ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ]} : { readonly name: 'John'; readonly age: 42; readonly cars: readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }]; } + + name: 'John', + >name : "John" +@@= skipped -13, +13 lines =@@ + >42 : 42 + + cars: [ +->cars : readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }] +->[ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ] : readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }] ++>cars : readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }] ++>[ { make: 'Ford', age: 10 }, { make: 'Trabant', age: 35 } ] : readonly [{ readonly make: 'Ford'; readonly age: 10; }, { readonly make: 'Trabant'; readonly age: 35; }] + + { make: 'Ford', age: 10 }, +->{ make: 'Ford', age: 10 } : { readonly make: "Ford"; readonly age: 10; } ++>{ make: 'Ford', age: 10 } : { readonly make: 'Ford'; readonly age: 10; } + >make : "Ford" + >'Ford' : "Ford" + >age : 10 + >10 : 10 + + { make: 'Trabant', age: 35 } +->{ make: 'Trabant', age: 35 } : { readonly make: "Trabant"; readonly age: 35; } ++>{ make: 'Trabant', age: 35 } : { readonly make: 'Trabant'; readonly age: 35; } + >make : "Trabant" + >'Trabant' : "Trabant" + >age : 35 +@@= skipped -24, +24 lines =@@ + >make : "Trabant" + >getProp2(obj2, 'cars.1.make') : "Trabant" + >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; }]; } ++>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" + + // Repro from #46480 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes2.types b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes2.types index 9f142ccbd83..c79c20cba71 100644 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes2.types +++ b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes2.types @@ -2,7 +2,7 @@ === templateLiteralTypes2.ts === function ft1(s: string, n: number, u: 'foo' | 'bar' | 'baz', t: T) { ->ft1 : (s: string, n: number, u: "bar" | "baz" | "foo", t: T) => void +>ft1 : (s: string, n: number, u: 'foo' | 'bar' | 'baz', t: T) => void >s : string >n : number >u : "bar" | "baz" | "foo" diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes2.types.diff b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes2.types.diff index 0695b36656a..5f02bc5d4e7 100644 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes2.types.diff @@ -5,7 +5,7 @@ === templateLiteralTypes2.ts === function ft1(s: string, n: number, u: 'foo' | 'bar' | 'baz', t: T) { ->ft1 : (s: string, n: number, u: "foo" | "bar" | "baz", t: T) => void -+>ft1 : (s: string, n: number, u: "bar" | "baz" | "foo", t: T) => void ++>ft1 : (s: string, n: number, u: 'foo' | 'bar' | 'baz', t: T) => void >s : string >n : number >u : "bar" | "baz" | "foo" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes3.types b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes3.types index a33d749d3ba..01e2f82b33f 100644 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes3.types +++ b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes3.types @@ -390,12 +390,12 @@ type Schema = { a: { b: { c: number } } }; >c : number declare function chain(field: F | `${F}.${F}`): void; ->chain : (field: F | `${F}.${F}`) => void +>chain : (field: F | `${F}.${F}`) => void >field : F | `${F}.${F}` chain("a"); >chain("a") : void ->chain : (field: F | `${F}.${F}`) => void +>chain : (field: F | `${F}.${F}`) => void >"a" : "a" // Repro from #46125 @@ -443,7 +443,7 @@ function ff2(x: `foo-${T}`, y: `${T}-bar`, z: `baz-${T}`) { } function ff3(x: string, y: `foo-${string}` | 'bar') { ->ff3 : (x: string, y: "bar" | `foo-${string}`) => void +>ff3 : (x: string, y: `foo-${string}` | 'bar') => void >x : string >y : "bar" | `foo-${string}` @@ -521,16 +521,16 @@ type DotString = `${string}.${string}.${string}`; >DotString : `${string}.${string}.${string}` declare function noSpread

(args: P[]): P; ->noSpread :

(args: P[]) => P +>noSpread :

(args: P[]) => P >args : P[] declare function spread

(...args: P[]): P; ->spread :

(...args: P[]) => P +>spread :

(...args: P[]) => P >args : P[] noSpread([`1.${'2'}.3`, `1.${'2'}.4`]); >noSpread([`1.${'2'}.3`, `1.${'2'}.4`]) : "1.2.3" | "1.2.4" ->noSpread :

(args: P[]) => P +>noSpread :

(args: P[]) => P >[`1.${'2'}.3`, `1.${'2'}.4`] : ("1.2.3" | "1.2.4")[] >`1.${'2'}.3` : "1.2.3" >'2' : "2" @@ -539,7 +539,7 @@ noSpread([`1.${'2'}.3`, `1.${'2'}.4`]); noSpread([`1.${'2' as string}.3`, `1.${'2' as string}.4`]); >noSpread([`1.${'2' as string}.3`, `1.${'2' as string}.4`]) : `1.${string}.3` | `1.${string}.4` ->noSpread :

(args: P[]) => P +>noSpread :

(args: P[]) => P >[`1.${'2' as string}.3`, `1.${'2' as string}.4`] : (`1.${string}.3` | `1.${string}.4`)[] >`1.${'2' as string}.3` : `1.${string}.3` >'2' as string : string @@ -550,7 +550,7 @@ noSpread([`1.${'2' as string}.3`, `1.${'2' as string}.4`]); spread(`1.${'2'}.3`, `1.${'2'}.4`); >spread(`1.${'2'}.3`, `1.${'2'}.4`) : "1.2.3" | "1.2.4" ->spread :

(...args: P[]) => P +>spread :

(...args: P[]) => P >`1.${'2'}.3` : "1.2.3" >'2' : "2" >`1.${'2'}.4` : "1.2.4" @@ -558,7 +558,7 @@ spread(`1.${'2'}.3`, `1.${'2'}.4`); spread(`1.${'2' as string}.3`, `1.${'2' as string}.4`); >spread(`1.${'2' as string}.3`, `1.${'2' as string}.4`) : `1.${string}.3` | `1.${string}.4` ->spread :

(...args: P[]) => P +>spread :

(...args: P[]) => P >`1.${'2' as string}.3` : `1.${string}.3` >'2' as string : string >'2' : "2" @@ -567,7 +567,7 @@ spread(`1.${'2' as string}.3`, `1.${'2' as string}.4`); >'2' : "2" function ft1(t: T, u: Uppercase, u1: Uppercase<`1.${T}.3`>, u2: Uppercase<`1.${T}.4`>) { ->ft1 : (t: T, u: Uppercase, u1: `1.${Uppercase}.3`, u2: `1.${Uppercase}.4`) => void +>ft1 : (t: T, u: Uppercase, u1: Uppercase<`1.${T}.3`>, u2: Uppercase<`1.${T}.4`>) => void >t : T >u : Uppercase >u1 : `1.${Uppercase}.3` @@ -575,7 +575,7 @@ function ft1(t: T, u: Uppercase, u1: Uppercase<`1.${T}.3`>, spread(`1.${t}.3`, `1.${t}.4`); >spread(`1.${t}.3`, `1.${t}.4`) : `1.${T}.3` | `1.${T}.4` ->spread :

(...args: P[]) => P +>spread :

(...args: P[]) => P >`1.${t}.3` : `1.${T}.3` >t : T >`1.${t}.4` : `1.${T}.4` @@ -583,7 +583,7 @@ function ft1(t: T, u: Uppercase, u1: Uppercase<`1.${T}.3`>, spread(`1.${u}.3`, `1.${u}.4`); >spread(`1.${u}.3`, `1.${u}.4`) : `1.${Uppercase}.3` | `1.${Uppercase}.4` ->spread :

(...args: P[]) => P +>spread :

(...args: P[]) => P >`1.${u}.3` : `1.${Uppercase}.3` >u : Uppercase >`1.${u}.4` : `1.${Uppercase}.4` @@ -591,7 +591,7 @@ function ft1(t: T, u: Uppercase, u1: Uppercase<`1.${T}.3`>, spread(u1, u2); >spread(u1, u2) : `1.${Uppercase}.3` | `1.${Uppercase}.4` ->spread :

(...args: P[]) => P +>spread :

(...args: P[]) => P >u1 : `1.${Uppercase}.3` >u2 : `1.${Uppercase}.4` } diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes3.types.diff b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes3.types.diff index 8bce7669b0e..cab36798fdb 100644 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes3.types.diff +++ b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes3.types.diff @@ -1,109 +1,10 @@ --- old.templateLiteralTypes3.types +++ new.templateLiteralTypes3.types -@@= skipped -389, +389 lines =@@ - >c : number - - declare function chain(field: F | `${F}.${F}`): void; -->chain : (field: F | `${F}.${F}`) => void -+>chain : (field: F | `${F}.${F}`) => void - >field : F | `${F}.${F}` - - chain("a"); - >chain("a") : void -->chain : (field: F | `${F}.${F}`) => void -+>chain : (field: F | `${F}.${F}`) => void - >"a" : "a" - - // Repro from #46125 -@@= skipped -53, +53 lines =@@ +@@= skipped -442, +442 lines =@@ } function ff3(x: string, y: `foo-${string}` | 'bar') { ->ff3 : (x: string, y: `foo-${string}` | "bar") => void -+>ff3 : (x: string, y: "bar" | `foo-${string}`) => void ++>ff3 : (x: string, y: `foo-${string}` | 'bar') => void >x : string >y : "bar" | `foo-${string}` - -@@= skipped -78, +78 lines =@@ - >DotString : `${string}.${string}.${string}` - - declare function noSpread

(args: P[]): P; -->noSpread :

(args: P[]) => P -+>noSpread :

(args: P[]) => P - >args : P[] - - declare function spread

(...args: P[]): P; -->spread :

(...args: P[]) => P -+>spread :

(...args: P[]) => P - >args : P[] - - noSpread([`1.${'2'}.3`, `1.${'2'}.4`]); - >noSpread([`1.${'2'}.3`, `1.${'2'}.4`]) : "1.2.3" | "1.2.4" -->noSpread :

(args: P[]) => P -+>noSpread :

(args: P[]) => P - >[`1.${'2'}.3`, `1.${'2'}.4`] : ("1.2.3" | "1.2.4")[] - >`1.${'2'}.3` : "1.2.3" - >'2' : "2" -@@= skipped -18, +18 lines =@@ - - noSpread([`1.${'2' as string}.3`, `1.${'2' as string}.4`]); - >noSpread([`1.${'2' as string}.3`, `1.${'2' as string}.4`]) : `1.${string}.3` | `1.${string}.4` -->noSpread :

(args: P[]) => P -+>noSpread :

(args: P[]) => P - >[`1.${'2' as string}.3`, `1.${'2' as string}.4`] : (`1.${string}.3` | `1.${string}.4`)[] - >`1.${'2' as string}.3` : `1.${string}.3` - >'2' as string : string -@@= skipped -11, +11 lines =@@ - - spread(`1.${'2'}.3`, `1.${'2'}.4`); - >spread(`1.${'2'}.3`, `1.${'2'}.4`) : "1.2.3" | "1.2.4" -->spread :

(...args: P[]) => P -+>spread :

(...args: P[]) => P - >`1.${'2'}.3` : "1.2.3" - >'2' : "2" - >`1.${'2'}.4` : "1.2.4" -@@= skipped -8, +8 lines =@@ - - spread(`1.${'2' as string}.3`, `1.${'2' as string}.4`); - >spread(`1.${'2' as string}.3`, `1.${'2' as string}.4`) : `1.${string}.3` | `1.${string}.4` -->spread :

(...args: P[]) => P -+>spread :

(...args: P[]) => P - >`1.${'2' as string}.3` : `1.${string}.3` - >'2' as string : string - >'2' : "2" -@@= skipped -9, +9 lines =@@ - >'2' : "2" - - function ft1(t: T, u: Uppercase, u1: Uppercase<`1.${T}.3`>, u2: Uppercase<`1.${T}.4`>) { -->ft1 : (t: T, u: Uppercase, u1: Uppercase<`1.${T}.3`>, u2: Uppercase<`1.${T}.4`>) => void -+>ft1 : (t: T, u: Uppercase, u1: `1.${Uppercase}.3`, u2: `1.${Uppercase}.4`) => void - >t : T - >u : Uppercase - >u1 : `1.${Uppercase}.3` -@@= skipped -8, +8 lines =@@ - - spread(`1.${t}.3`, `1.${t}.4`); - >spread(`1.${t}.3`, `1.${t}.4`) : `1.${T}.3` | `1.${T}.4` -->spread :

(...args: P[]) => P -+>spread :

(...args: P[]) => P - >`1.${t}.3` : `1.${T}.3` - >t : T - >`1.${t}.4` : `1.${T}.4` -@@= skipped -8, +8 lines =@@ - - spread(`1.${u}.3`, `1.${u}.4`); - >spread(`1.${u}.3`, `1.${u}.4`) : `1.${Uppercase}.3` | `1.${Uppercase}.4` -->spread :

(...args: P[]) => P -+>spread :

(...args: P[]) => P - >`1.${u}.3` : `1.${Uppercase}.3` - >u : Uppercase - >`1.${u}.4` : `1.${Uppercase}.4` -@@= skipped -8, +8 lines =@@ - - spread(u1, u2); - >spread(u1, u2) : `1.${Uppercase}.3` | `1.${Uppercase}.4` -->spread :

(...args: P[]) => P -+>spread :

(...args: P[]) => P - >u1 : `1.${Uppercase}.3` - >u2 : `1.${Uppercase}.4` - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes4.types b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes4.types index e36e1abc19e..2d8e51c2c94 100644 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes4.types +++ b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes4.types @@ -480,11 +480,11 @@ interface TypedObjectMembers { // get/set a field by index getIndex>(index: I): FieldType["type"]>; ->getIndex : >>(index: I) => FieldType["type"]> +>getIndex : >(index: I) => FieldType["type"]> >index : I setIndex>(index: I, value: FieldType["type"]>): void; ->setIndex : >>(index: I, value: FieldType["type"]>) => void +>setIndex : >(index: I, value: FieldType["type"]>) => void >index : I >value : FieldType["type"]> } @@ -515,46 +515,46 @@ declare const p: Point; p.getIndex(0); // ok, 0 is a valid index >p.getIndex(0) : number ->p.getIndex : (index: I) => FieldType["type"]> +>p.getIndex : >(index: I) => FieldType["type"]> >p : Point ->getIndex : (index: I) => FieldType["type"]> +>getIndex : >(index: I) => FieldType["type"]> >0 : 0 p.getIndex(1); // ok, 1 is a valid index >p.getIndex(1) : number ->p.getIndex : (index: I) => FieldType["type"]> +>p.getIndex : >(index: I) => FieldType["type"]> >p : Point ->getIndex : (index: I) => FieldType["type"]> +>getIndex : >(index: I) => FieldType["type"]> >1 : 1 p.getIndex(2); // error, 2 is not a valid index >p.getIndex(2) : number ->p.getIndex : (index: I) => FieldType["type"]> +>p.getIndex : >(index: I) => FieldType["type"]> >p : Point ->getIndex : (index: I) => FieldType["type"]> +>getIndex : >(index: I) => FieldType["type"]> >2 : 2 p.setIndex(0, 0); // ok, 0 is a valid index >p.setIndex(0, 0) : void ->p.setIndex : (index: I, value: FieldType["type"]>) => void +>p.setIndex : >(index: I, value: FieldType["type"]>) => void >p : Point ->setIndex : (index: I, value: FieldType["type"]>) => void +>setIndex : >(index: I, value: FieldType["type"]>) => void >0 : 0 >0 : 0 p.setIndex(1, 0); // ok, 1 is a valid index >p.setIndex(1, 0) : void ->p.setIndex : (index: I, value: FieldType["type"]>) => void +>p.setIndex : >(index: I, value: FieldType["type"]>) => void >p : Point ->setIndex : (index: I, value: FieldType["type"]>) => void +>setIndex : >(index: I, value: FieldType["type"]>) => void >1 : 1 >0 : 0 p.setIndex(2, 3); // error, 2 is not a valid index >p.setIndex(2, 3) : void ->p.setIndex : (index: I, value: FieldType["type"]>) => void +>p.setIndex : >(index: I, value: FieldType["type"]>) => void >p : Point ->setIndex : (index: I, value: FieldType["type"]>) => void +>setIndex : >(index: I, value: FieldType["type"]>) => void >2 : 2 >3 : 3 diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes4.types.diff b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes4.types.diff index 9137afb9e3d..dc0f61f3da5 100644 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypes4.types.diff +++ b/testdata/baselines/reference/submodule/conformance/templateLiteralTypes4.types.diff @@ -1,16 +1,60 @@ --- old.templateLiteralTypes4.types +++ new.templateLiteralTypes4.types -@@= skipped -479, +479 lines =@@ +@@= skipped -514, +514 lines =@@ - // get/set a field by index - getIndex>(index: I): FieldType["type"]>; -->getIndex : >(index: I) => FieldType["type"]> -+>getIndex : >>(index: I) => FieldType["type"]> - >index : I + p.getIndex(0); // ok, 0 is a valid index + >p.getIndex(0) : number +->p.getIndex : (index: I) => FieldType["type"]> ++>p.getIndex : >(index: I) => FieldType["type"]> + >p : Point +->getIndex : (index: I) => FieldType["type"]> ++>getIndex : >(index: I) => FieldType["type"]> + >0 : 0 - setIndex>(index: I, value: FieldType["type"]>): void; -->setIndex : >(index: I, value: FieldType["type"]>) => void -+>setIndex : >>(index: I, value: FieldType["type"]>) => void - >index : I - >value : FieldType["type"]> - } \ No newline at end of file + p.getIndex(1); // ok, 1 is a valid index + >p.getIndex(1) : number +->p.getIndex : (index: I) => FieldType["type"]> ++>p.getIndex : >(index: I) => FieldType["type"]> + >p : Point +->getIndex : (index: I) => FieldType["type"]> ++>getIndex : >(index: I) => FieldType["type"]> + >1 : 1 + + p.getIndex(2); // error, 2 is not a valid index + >p.getIndex(2) : number +->p.getIndex : (index: I) => FieldType["type"]> ++>p.getIndex : >(index: I) => FieldType["type"]> + >p : Point +->getIndex : (index: I) => FieldType["type"]> ++>getIndex : >(index: I) => FieldType["type"]> + >2 : 2 + + p.setIndex(0, 0); // ok, 0 is a valid index + >p.setIndex(0, 0) : void +->p.setIndex : (index: I, value: FieldType["type"]>) => void ++>p.setIndex : >(index: I, value: FieldType["type"]>) => void + >p : Point +->setIndex : (index: I, value: FieldType["type"]>) => void ++>setIndex : >(index: I, value: FieldType["type"]>) => void + >0 : 0 + >0 : 0 + + p.setIndex(1, 0); // ok, 1 is a valid index + >p.setIndex(1, 0) : void +->p.setIndex : (index: I, value: FieldType["type"]>) => void ++>p.setIndex : >(index: I, value: FieldType["type"]>) => void + >p : Point +->setIndex : (index: I, value: FieldType["type"]>) => void ++>setIndex : >(index: I, value: FieldType["type"]>) => void + >1 : 1 + >0 : 0 + + p.setIndex(2, 3); // error, 2 is not a valid index + >p.setIndex(2, 3) : void +->p.setIndex : (index: I, value: FieldType["type"]>) => void ++>p.setIndex : >(index: I, value: FieldType["type"]>) => void + >p : Point +->setIndex : (index: I, value: FieldType["type"]>) => void ++>setIndex : >(index: I, value: FieldType["type"]>) => void + >2 : 2 + >3 : 3 diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypesPatterns.types b/testdata/baselines/reference/submodule/conformance/templateLiteralTypesPatterns.types index b90cae9fa1c..244b149ea44 100644 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypesPatterns.types +++ b/testdata/baselines/reference/submodule/conformance/templateLiteralTypesPatterns.types @@ -18,25 +18,25 @@ type Protocol = `${T}://${U}`; >Protocol : `${T}://${U}` function download(hostSpec: Protocol<"http" | "https" | "ftp", string>) { } ->download : (hostSpec: `ftp://${string}` | `http://${string}` | `https://${string}`) => void +>download : (hostSpec: Protocol<"http" | "https" | "ftp", string>) => void >hostSpec : `ftp://${string}` | `http://${string}` | `https://${string}` // ok, has protocol download("http://example.com/protocol"); >download("http://example.com/protocol") : void ->download : (hostSpec: `ftp://${string}` | `http://${string}` | `https://${string}`) => void +>download : (hostSpec: Protocol<"http" | "https" | "ftp", string>) => void >"http://example.com/protocol" : "http://example.com/protocol" // issues error - no protocol download("example.com/noprotocol"); >download("example.com/noprotocol") : void ->download : (hostSpec: `ftp://${string}` | `http://${string}` | `https://${string}`) => void +>download : (hostSpec: Protocol<"http" | "https" | "ftp", string>) => void >"example.com/noprotocol" : "example.com/noprotocol" // issues error, incorrect protocol download("gopher://example.com/protocol"); >download("gopher://example.com/protocol") : void ->download : (hostSpec: `ftp://${string}` | `http://${string}` | `https://${string}`) => void +>download : (hostSpec: Protocol<"http" | "https" | "ftp", string>) => void >"gopher://example.com/protocol" : "gopher://example.com/protocol" const q: RequiresLeadingSlash extends string ? true : false = true; @@ -46,68 +46,68 @@ const q: RequiresLeadingSlash extends string ? true : false = true; >true : true declare function bools(x: `${boolean}`): void; ->bools : (x: "false" | "true") => void +>bools : (x: `${boolean}`) => void >x : "false" | "true" // ok bools("true"); >bools("true") : void ->bools : (x: "false" | "true") => void +>bools : (x: `${boolean}`) => void >"true" : "true" bools("false"); >bools("false") : void ->bools : (x: "false" | "true") => void +>bools : (x: `${boolean}`) => void >"false" : "false" // not ok bools("other"); >bools("other") : void ->bools : (x: "false" | "true") => void +>bools : (x: `${boolean}`) => void >"other" : "other" type Pat = `${T}` >Pat : `${T}` declare function nullishes(x: Pat): void; ->nullishes : (x: "null" | "undefined") => void +>nullishes : (x: Pat) => void >x : "null" | "undefined" // ok nullishes("null"); >nullishes("null") : void ->nullishes : (x: "null" | "undefined") => void +>nullishes : (x: Pat) => void >"null" : "null" nullishes("undefined"); >nullishes("undefined") : void ->nullishes : (x: "null" | "undefined") => void +>nullishes : (x: Pat) => void >"undefined" : "undefined" // not ok nullishes("0"); >nullishes("0") : void ->nullishes : (x: "null" | "undefined") => void +>nullishes : (x: Pat) => void >"0" : "0" nullishes("false"); >nullishes("false") : void ->nullishes : (x: "null" | "undefined") => void +>nullishes : (x: Pat) => void >"false" : "false" nullishes("NaN"); >nullishes("NaN") : void ->nullishes : (x: "null" | "undefined") => void +>nullishes : (x: Pat) => void >"NaN" : "NaN" nullishes(""); >nullishes("") : void ->nullishes : (x: "null" | "undefined") => void +>nullishes : (x: Pat) => void >"" : "" nullishes("other"); >nullishes("other") : void ->nullishes : (x: "null" | "undefined") => void +>nullishes : (x: Pat) => void >"other" : "other" declare function numbers(x: `${number}`): void; @@ -618,18 +618,18 @@ export abstract class BB { >BB : BB abstract get(id: Id): void; ->get : (id: `${string}-${string}`) => void +>get : (id: Id) => void >id : `${string}-${string}` update(id: Id): void { ->update : (id: `${string}-${string}`) => void +>update : (id: Id) => void >id : `${string}-${string}` this.get(id!); >this.get(id!) : void ->this.get : (id: `${string}-${string}`) => void +>this.get : (id: Id) => void >this : this ->get : (id: `${string}-${string}`) => void +>get : (id: Id) => void >id! : `${string}-${string}` >id : `${string}-${string}` } @@ -637,39 +637,39 @@ export abstract class BB { // repro from https://github.com/microsoft/TypeScript/issues/54177#issuecomment-1538436654 function conversionTest(groupName: | "downcast" | "dataDowncast" | "editingDowncast" | `${string}Downcast` & {}) {} ->conversionTest : (groupName: "dataDowncast" | "downcast" | "editingDowncast" | (`${string}Downcast` & {})) => void +>conversionTest : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | (`${string}Downcast` & {})) => void >groupName : "dataDowncast" | "downcast" | "editingDowncast" | (`${string}Downcast` & {}) conversionTest("testDowncast"); >conversionTest("testDowncast") : void ->conversionTest : (groupName: "dataDowncast" | "downcast" | "editingDowncast" | (`${string}Downcast` & {})) => void +>conversionTest : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | (`${string}Downcast` & {})) => void >"testDowncast" : "testDowncast" function conversionTest2(groupName: | "downcast" | "dataDowncast" | "editingDowncast" | {} & `${string}Downcast`) {} ->conversionTest2 : (groupName: "dataDowncast" | "downcast" | "editingDowncast" | ({} & `${string}Downcast`)) => void +>conversionTest2 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | ({} & `${string}Downcast`)) => void >groupName : "dataDowncast" | "downcast" | "editingDowncast" | ({} & `${string}Downcast`) conversionTest2("testDowncast"); >conversionTest2("testDowncast") : void ->conversionTest2 : (groupName: "dataDowncast" | "downcast" | "editingDowncast" | ({} & `${string}Downcast`)) => void +>conversionTest2 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | ({} & `${string}Downcast`)) => void >"testDowncast" : "testDowncast" function conversionTest3(groupName: | "downcast" | "dataDowncast" | "editingDowncast" | `${string & {}}Downcast`) {} ->conversionTest3 : (groupName: "downcast" | `${string & {}}Downcast`) => void +>conversionTest3 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | `${string & {}}Downcast`) => void >groupName : "downcast" | `${string & {}}Downcast` conversionTest3("testDowncast"); >conversionTest3("testDowncast") : void ->conversionTest3 : (groupName: "downcast" | `${string & {}}Downcast`) => void +>conversionTest3 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | `${string & {}}Downcast`) => void >"testDowncast" : "testDowncast" function conversionTest4(groupName: | "downcast" | "dataDowncast" | "editingDowncast" | `${{} & string}Downcast`) {} ->conversionTest4 : (groupName: "downcast" | `${{} & string}Downcast`) => void +>conversionTest4 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | `${{} & string}Downcast`) => void >groupName : "downcast" | `${{} & string}Downcast` conversionTest4("testDowncast"); >conversionTest4("testDowncast") : void ->conversionTest4 : (groupName: "downcast" | `${{} & string}Downcast`) => void +>conversionTest4 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | `${{} & string}Downcast`) => void >"testDowncast" : "testDowncast" function foo(str: `${`a${string}` & `${string}a`}Test`) {} diff --git a/testdata/baselines/reference/submodule/conformance/templateLiteralTypesPatterns.types.diff b/testdata/baselines/reference/submodule/conformance/templateLiteralTypesPatterns.types.diff deleted file mode 100644 index c595ea30006..00000000000 --- a/testdata/baselines/reference/submodule/conformance/templateLiteralTypesPatterns.types.diff +++ /dev/null @@ -1,184 +0,0 @@ ---- old.templateLiteralTypesPatterns.types -+++ new.templateLiteralTypesPatterns.types -@@= skipped -17, +17 lines =@@ - >Protocol : `${T}://${U}` - - function download(hostSpec: Protocol<"http" | "https" | "ftp", string>) { } -->download : (hostSpec: Protocol<"http" | "https" | "ftp", string>) => void -+>download : (hostSpec: `ftp://${string}` | `http://${string}` | `https://${string}`) => void - >hostSpec : `ftp://${string}` | `http://${string}` | `https://${string}` - - // ok, has protocol - download("http://example.com/protocol"); - >download("http://example.com/protocol") : void -->download : (hostSpec: Protocol<"http" | "https" | "ftp", string>) => void -+>download : (hostSpec: `ftp://${string}` | `http://${string}` | `https://${string}`) => void - >"http://example.com/protocol" : "http://example.com/protocol" - - // issues error - no protocol - download("example.com/noprotocol"); - >download("example.com/noprotocol") : void -->download : (hostSpec: Protocol<"http" | "https" | "ftp", string>) => void -+>download : (hostSpec: `ftp://${string}` | `http://${string}` | `https://${string}`) => void - >"example.com/noprotocol" : "example.com/noprotocol" - - // issues error, incorrect protocol - download("gopher://example.com/protocol"); - >download("gopher://example.com/protocol") : void -->download : (hostSpec: Protocol<"http" | "https" | "ftp", string>) => void -+>download : (hostSpec: `ftp://${string}` | `http://${string}` | `https://${string}`) => void - >"gopher://example.com/protocol" : "gopher://example.com/protocol" - - const q: RequiresLeadingSlash extends string ? true : false = true; -@@= skipped -28, +28 lines =@@ - >true : true - - declare function bools(x: `${boolean}`): void; -->bools : (x: `${boolean}`) => void -+>bools : (x: "false" | "true") => void - >x : "false" | "true" - - // ok - bools("true"); - >bools("true") : void -->bools : (x: `${boolean}`) => void -+>bools : (x: "false" | "true") => void - >"true" : "true" - - bools("false"); - >bools("false") : void -->bools : (x: `${boolean}`) => void -+>bools : (x: "false" | "true") => void - >"false" : "false" - - // not ok - bools("other"); - >bools("other") : void -->bools : (x: `${boolean}`) => void -+>bools : (x: "false" | "true") => void - >"other" : "other" - - type Pat = `${T}` - >Pat : `${T}` - - declare function nullishes(x: Pat): void; -->nullishes : (x: Pat) => void -+>nullishes : (x: "null" | "undefined") => void - >x : "null" | "undefined" - - // ok - nullishes("null"); - >nullishes("null") : void -->nullishes : (x: Pat) => void -+>nullishes : (x: "null" | "undefined") => void - >"null" : "null" - - nullishes("undefined"); - >nullishes("undefined") : void -->nullishes : (x: Pat) => void -+>nullishes : (x: "null" | "undefined") => void - >"undefined" : "undefined" - - // not ok - nullishes("0"); - >nullishes("0") : void -->nullishes : (x: Pat) => void -+>nullishes : (x: "null" | "undefined") => void - >"0" : "0" - - nullishes("false"); - >nullishes("false") : void -->nullishes : (x: Pat) => void -+>nullishes : (x: "null" | "undefined") => void - >"false" : "false" - - nullishes("NaN"); - >nullishes("NaN") : void -->nullishes : (x: Pat) => void -+>nullishes : (x: "null" | "undefined") => void - >"NaN" : "NaN" - - nullishes(""); - >nullishes("") : void -->nullishes : (x: Pat) => void -+>nullishes : (x: "null" | "undefined") => void - >"" : "" - - nullishes("other"); - >nullishes("other") : void -->nullishes : (x: Pat) => void -+>nullishes : (x: "null" | "undefined") => void - >"other" : "other" - - declare function numbers(x: `${number}`): void; -@@= skipped -572, +572 lines =@@ - >BB : BB - - abstract get(id: Id): void; -->get : (id: Id) => void -+>get : (id: `${string}-${string}`) => void - >id : `${string}-${string}` - - update(id: Id): void { -->update : (id: Id) => void -+>update : (id: `${string}-${string}`) => void - >id : `${string}-${string}` - - this.get(id!); - >this.get(id!) : void -->this.get : (id: Id) => void -+>this.get : (id: `${string}-${string}`) => void - >this : this -->get : (id: Id) => void -+>get : (id: `${string}-${string}`) => void - >id! : `${string}-${string}` - >id : `${string}-${string}` - } -@@= skipped -19, +19 lines =@@ - - // repro from https://github.com/microsoft/TypeScript/issues/54177#issuecomment-1538436654 - function conversionTest(groupName: | "downcast" | "dataDowncast" | "editingDowncast" | `${string}Downcast` & {}) {} -->conversionTest : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | (`${string}Downcast` & {})) => void -+>conversionTest : (groupName: "dataDowncast" | "downcast" | "editingDowncast" | (`${string}Downcast` & {})) => void - >groupName : "dataDowncast" | "downcast" | "editingDowncast" | (`${string}Downcast` & {}) - - conversionTest("testDowncast"); - >conversionTest("testDowncast") : void -->conversionTest : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | (`${string}Downcast` & {})) => void -+>conversionTest : (groupName: "dataDowncast" | "downcast" | "editingDowncast" | (`${string}Downcast` & {})) => void - >"testDowncast" : "testDowncast" - - function conversionTest2(groupName: | "downcast" | "dataDowncast" | "editingDowncast" | {} & `${string}Downcast`) {} -->conversionTest2 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | ({} & `${string}Downcast`)) => void -+>conversionTest2 : (groupName: "dataDowncast" | "downcast" | "editingDowncast" | ({} & `${string}Downcast`)) => void - >groupName : "dataDowncast" | "downcast" | "editingDowncast" | ({} & `${string}Downcast`) - - conversionTest2("testDowncast"); - >conversionTest2("testDowncast") : void -->conversionTest2 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | ({} & `${string}Downcast`)) => void -+>conversionTest2 : (groupName: "dataDowncast" | "downcast" | "editingDowncast" | ({} & `${string}Downcast`)) => void - >"testDowncast" : "testDowncast" - - function conversionTest3(groupName: | "downcast" | "dataDowncast" | "editingDowncast" | `${string & {}}Downcast`) {} -->conversionTest3 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | `${string & {}}Downcast`) => void -+>conversionTest3 : (groupName: "downcast" | `${string & {}}Downcast`) => void - >groupName : "downcast" | `${string & {}}Downcast` - - conversionTest3("testDowncast"); - >conversionTest3("testDowncast") : void -->conversionTest3 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | `${string & {}}Downcast`) => void -+>conversionTest3 : (groupName: "downcast" | `${string & {}}Downcast`) => void - >"testDowncast" : "testDowncast" - - function conversionTest4(groupName: | "downcast" | "dataDowncast" | "editingDowncast" | `${{} & string}Downcast`) {} -->conversionTest4 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | `${{} & string}Downcast`) => void -+>conversionTest4 : (groupName: "downcast" | `${{} & string}Downcast`) => void - >groupName : "downcast" | `${{} & string}Downcast` - - conversionTest4("testDowncast"); - >conversionTest4("testDowncast") : void -->conversionTest4 : (groupName: "downcast" | "dataDowncast" | "editingDowncast" | `${{} & string}Downcast`) => void -+>conversionTest4 : (groupName: "downcast" | `${{} & string}Downcast`) => void - >"testDowncast" : "testDowncast" - - function foo(str: `${`a${string}` & `${string}a`}Test`) {} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccess.types b/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccess.types index 0a534fd80aa..3a25143fc51 100644 --- a/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccess.types +++ b/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccess.types @@ -3,9 +3,9 @@ === templateStringWithPropertyAccess.ts === `abc${0}abc`.indexOf(`abc`); >`abc${0}abc`.indexOf(`abc`) : number ->`abc${0}abc`.indexOf : (searchString: string, position?: number | undefined) => number +>`abc${0}abc`.indexOf : (searchString: string, position?: number) => number >`abc${0}abc` : "abc0abc" >0 : 0 ->indexOf : (searchString: string, position?: number | undefined) => number +>indexOf : (searchString: string, position?: number) => number >`abc` : "abc" diff --git a/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccess.types.diff b/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccess.types.diff deleted file mode 100644 index 82bd0fbb76b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccess.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.templateStringWithPropertyAccess.types -+++ new.templateStringWithPropertyAccess.types -@@= skipped -2, +2 lines =@@ - === templateStringWithPropertyAccess.ts === - `abc${0}abc`.indexOf(`abc`); - >`abc${0}abc`.indexOf(`abc`) : number -->`abc${0}abc`.indexOf : (searchString: string, position?: number) => number -+>`abc${0}abc`.indexOf : (searchString: string, position?: number | undefined) => number - >`abc${0}abc` : "abc0abc" - >0 : 0 -->indexOf : (searchString: string, position?: number) => number -+>indexOf : (searchString: string, position?: number | undefined) => number - >`abc` : "abc" diff --git a/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccessES6.types b/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccessES6.types index b1660ed0de5..869bd53297c 100644 --- a/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccessES6.types +++ b/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccessES6.types @@ -3,9 +3,9 @@ === templateStringWithPropertyAccessES6.ts === `abc${0}abc`.indexOf(`abc`); >`abc${0}abc`.indexOf(`abc`) : number ->`abc${0}abc`.indexOf : (searchString: string, position?: number | undefined) => number +>`abc${0}abc`.indexOf : (searchString: string, position?: number) => number >`abc${0}abc` : "abc0abc" >0 : 0 ->indexOf : (searchString: string, position?: number | undefined) => number +>indexOf : (searchString: string, position?: number) => number >`abc` : "abc" diff --git a/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccessES6.types.diff b/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccessES6.types.diff deleted file mode 100644 index 028376f6ea7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/templateStringWithPropertyAccessES6.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.templateStringWithPropertyAccessES6.types -+++ new.templateStringWithPropertyAccessES6.types -@@= skipped -2, +2 lines =@@ - === templateStringWithPropertyAccessES6.ts === - `abc${0}abc`.indexOf(`abc`); - >`abc${0}abc`.indexOf(`abc`) : number -->`abc${0}abc`.indexOf : (searchString: string, position?: number) => number -+>`abc${0}abc`.indexOf : (searchString: string, position?: number | undefined) => number - >`abc${0}abc` : "abc0abc" - >0 : 0 -->indexOf : (searchString: string, position?: number) => number -+>indexOf : (searchString: string, position?: number | undefined) => number - >`abc` : "abc" diff --git a/testdata/baselines/reference/submodule/conformance/thisPropertyAssignmentCircular.types b/testdata/baselines/reference/submodule/conformance/thisPropertyAssignmentCircular.types index 27a1a702341..9f98b32ed69 100644 --- a/testdata/baselines/reference/submodule/conformance/thisPropertyAssignmentCircular.types +++ b/testdata/baselines/reference/submodule/conformance/thisPropertyAssignmentCircular.types @@ -21,11 +21,11 @@ export class Foo { >this : this >foo : string >this.foo.slice() : string ->this.foo.slice : (start?: number | undefined, end?: number | undefined) => string +>this.foo.slice : (start?: number, end?: number) => string >this.foo : string >this : this >foo : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string } m() { >m : () => void diff --git a/testdata/baselines/reference/submodule/conformance/thisPropertyAssignmentCircular.types.diff b/testdata/baselines/reference/submodule/conformance/thisPropertyAssignmentCircular.types.diff index 6e446a804cd..e94c4508d94 100644 --- a/testdata/baselines/reference/submodule/conformance/thisPropertyAssignmentCircular.types.diff +++ b/testdata/baselines/reference/submodule/conformance/thisPropertyAssignmentCircular.types.diff @@ -1,20 +1,6 @@ --- old.thisPropertyAssignmentCircular.types +++ new.thisPropertyAssignmentCircular.types -@@= skipped -20, +20 lines =@@ - >this : this - >foo : string - >this.foo.slice() : string -->this.foo.slice : (start?: number, end?: number) => string -+>this.foo.slice : (start?: number | undefined, end?: number | undefined) => string - >this.foo : string - >this : this - >foo : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - } - m() { - >m : () => void -@@= skipped -18, +18 lines =@@ +@@= skipped -38, +38 lines =@@ /** @class */ function C() { diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeErrors.types b/testdata/baselines/reference/submodule/conformance/thisTypeErrors.types index 9e7ef844b61..a2c20e5230b 100644 --- a/testdata/baselines/reference/submodule/conformance/thisTypeErrors.types +++ b/testdata/baselines/reference/submodule/conformance/thisTypeErrors.types @@ -5,14 +5,14 @@ var x1: this; >x1 : any var x2: { a: this }; ->x2 : { a: any; } +>x2 : { a: this; } >a : any var x3: this[]; >x3 : any[] function f1(x: this): this { ->f1 : (x: any) => any +>f1 : (x: this) => this >x : any var y: this; @@ -24,22 +24,22 @@ function f1(x: this): this { interface I1 { a: { x: this }; ->a : { x: any; } +>a : { x: this; } >x : any b: { (): this }; ->b : () => any +>b : () => this c: { new (): this }; ->c : new () => any +>c : new () => this d: { [x: string]: this }; >d : { [x: string]: any; } >x : string e: { f(x: this): this }; ->e : { f(x: any): any; } ->f : (x: any) => any +>e : { f(x: this): this; } +>f : (x: this) => this >x : any } @@ -47,22 +47,22 @@ class C1 { >C1 : C1 a: { x: this }; ->a : { x: any; } +>a : { x: this; } >x : any b: { (): this }; ->b : () => any +>b : () => this c: { new (): this }; ->c : new () => any +>c : new () => this d: { [x: string]: this }; >d : { [x: string]: any; } >x : string e: { f(x: this): this }; ->e : { f(x: any): any; } ->f : (x: any) => any +>e : { f(x: this): this; } +>f : (x: this) => this >x : any } @@ -78,7 +78,7 @@ class C2 { >undefined : undefined static foo(x: this): this { ->foo : (x: any) => any +>foo : (x: this) => this >x : any return undefined; @@ -101,11 +101,11 @@ class C3 { >C3 : C3 x1 = { ->x1 : { g(x: any): any; } ->{ g(x: this): this { return undefined; } } : { g(x: any): any; } +>x1 : { g(x: this): this; } +>{ g(x: this): this { return undefined; } } : { g(x: this): this; } g(x: this): this { ->g : (x: any) => any +>g : (x: this) => this >x : any return undefined; @@ -116,18 +116,18 @@ class C3 { >f : () => void function g(x: this): this { ->g : (x: any) => any +>g : (x: this) => this >x : any return undefined; >undefined : undefined } let x2 = { ->x2 : { h(x: any): any; } ->{ h(x: this): this { return undefined; } } : { h(x: any): any; } +>x2 : { h(x: this): this; } +>{ h(x: this): this { return undefined; } } : { h(x: this): this; } h(x: this): this { ->h : (x: any) => any +>h : (x: this) => this >x : any return undefined; diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeErrors.types.diff b/testdata/baselines/reference/submodule/conformance/thisTypeErrors.types.diff deleted file mode 100644 index 556530ec8b4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/thisTypeErrors.types.diff +++ /dev/null @@ -1,122 +0,0 @@ ---- old.thisTypeErrors.types -+++ new.thisTypeErrors.types -@@= skipped -4, +4 lines =@@ - >x1 : any - - var x2: { a: this }; -->x2 : { a: this; } -+>x2 : { a: any; } - >a : any - - var x3: this[]; - >x3 : any[] - - function f1(x: this): this { -->f1 : (x: this) => this -+>f1 : (x: any) => any - >x : any - - var y: this; -@@= skipped -19, +19 lines =@@ - - interface I1 { - a: { x: this }; -->a : { x: this; } -+>a : { x: any; } - >x : any - - b: { (): this }; -->b : () => this -+>b : () => any - - c: { new (): this }; -->c : new () => this -+>c : new () => any - - d: { [x: string]: this }; - >d : { [x: string]: any; } - >x : string - - e: { f(x: this): this }; -->e : { f(x: this): this; } -->f : (x: this) => this -+>e : { f(x: any): any; } -+>f : (x: any) => any - >x : any - } - -@@= skipped -23, +23 lines =@@ - >C1 : C1 - - a: { x: this }; -->a : { x: this; } -+>a : { x: any; } - >x : any - - b: { (): this }; -->b : () => this -+>b : () => any - - c: { new (): this }; -->c : new () => this -+>c : new () => any - - d: { [x: string]: this }; - >d : { [x: string]: any; } - >x : string - - e: { f(x: this): this }; -->e : { f(x: this): this; } -->f : (x: this) => this -+>e : { f(x: any): any; } -+>f : (x: any) => any - >x : any - } - -@@= skipped -31, +31 lines =@@ - >undefined : undefined - - static foo(x: this): this { -->foo : (x: this) => this -+>foo : (x: any) => any - >x : any - - return undefined; -@@= skipped -23, +23 lines =@@ - >C3 : C3 - - x1 = { -->x1 : { g(x: this): this; } -->{ g(x: this): this { return undefined; } } : { g(x: this): this; } -+>x1 : { g(x: any): any; } -+>{ g(x: this): this { return undefined; } } : { g(x: any): any; } - - g(x: this): this { -->g : (x: this) => this -+>g : (x: any) => any - >x : any - - return undefined; -@@= skipped -15, +15 lines =@@ - >f : () => void - - function g(x: this): this { -->g : (x: this) => this -+>g : (x: any) => any - >x : any - - return undefined; - >undefined : undefined - } - let x2 = { -->x2 : { h(x: this): this; } -->{ h(x: this): this { return undefined; } } : { h(x: this): this; } -+>x2 : { h(x: any): any; } -+>{ h(x: this): this { return undefined; } } : { h(x: any): any; } - - h(x: this): this { -->h : (x: this) => this -+>h : (x: any) => any - >x : any - - return undefined; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeInObjectLiterals2(target=es2015).types b/testdata/baselines/reference/submodule/conformance/thisTypeInObjectLiterals2(target=es2015).types index e310cff9af3..8c290dda5e7 100644 --- a/testdata/baselines/reference/submodule/conformance/thisTypeInObjectLiterals2(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/thisTypeInObjectLiterals2(target=es2015).types @@ -86,7 +86,7 @@ type Point = { >z : number | undefined moveBy(dx: number, dy: number, dz?: number): void; ->moveBy : (dx: number, dy: number, dz?: number | undefined) => void +>moveBy : (dx: number, dy: number, dz?: number) => void >dx : number >dy : number >dz : number | undefined diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeInObjectLiterals2(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/thisTypeInObjectLiterals2(target=es2015).types.diff deleted file mode 100644 index ff70d707c64..00000000000 --- a/testdata/baselines/reference/submodule/conformance/thisTypeInObjectLiterals2(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.thisTypeInObjectLiterals2(target=es2015).types -+++ new.thisTypeInObjectLiterals2(target=es2015).types -@@= skipped -85, +85 lines =@@ - >z : number | undefined - - moveBy(dx: number, dy: number, dz?: number): void; -->moveBy : (dx: number, dy: number, dz?: number) => void -+>moveBy : (dx: number, dy: number, dz?: number | undefined) => void - >dx : number - >dy : number - >dz : number | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeInTaggedTemplateCall.types b/testdata/baselines/reference/submodule/conformance/thisTypeInTaggedTemplateCall.types index c3cdff8def6..f1c3000073e 100644 --- a/testdata/baselines/reference/submodule/conformance/thisTypeInTaggedTemplateCall.types +++ b/testdata/baselines/reference/submodule/conformance/thisTypeInTaggedTemplateCall.types @@ -5,7 +5,7 @@ class Foo { >Foo : Foo static m(this: new () => T, strings: TemplateStringsArray | string) { ->m : (this: new () => T, strings: string | TemplateStringsArray) => T +>m : (this: new () => T, strings: TemplateStringsArray | string) => T >this : new () => T >strings : string | TemplateStringsArray @@ -17,16 +17,16 @@ class Foo { Foo.m`test`; >Foo.m`test` : Foo ->Foo.m : (this: new () => T, strings: string | TemplateStringsArray) => T +>Foo.m : (this: new () => T, strings: TemplateStringsArray | string) => T >Foo : typeof Foo ->m : (this: new () => T, strings: string | TemplateStringsArray) => T +>m : (this: new () => T, strings: TemplateStringsArray | string) => T >`test` : "test" (Foo.m)`test`; >(Foo.m)`test` : Foo ->(Foo.m) : (this: new () => T, strings: string | TemplateStringsArray) => T ->Foo.m : (this: new () => T, strings: string | TemplateStringsArray) => T +>(Foo.m) : (this: new () => T, strings: TemplateStringsArray | string) => T +>Foo.m : (this: new () => T, strings: TemplateStringsArray | string) => T >Foo : typeof Foo ->m : (this: new () => T, strings: string | TemplateStringsArray) => T +>m : (this: new () => T, strings: TemplateStringsArray | string) => T >`test` : "test" diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeInTaggedTemplateCall.types.diff b/testdata/baselines/reference/submodule/conformance/thisTypeInTaggedTemplateCall.types.diff deleted file mode 100644 index ed7d5d2d94a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/thisTypeInTaggedTemplateCall.types.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- old.thisTypeInTaggedTemplateCall.types -+++ new.thisTypeInTaggedTemplateCall.types -@@= skipped -4, +4 lines =@@ - >Foo : Foo - - static m(this: new () => T, strings: TemplateStringsArray | string) { -->m : (this: new () => T, strings: TemplateStringsArray | string) => T -+>m : (this: new () => T, strings: string | TemplateStringsArray) => T - >this : new () => T - >strings : string | TemplateStringsArray - -@@= skipped -12, +12 lines =@@ - - Foo.m`test`; - >Foo.m`test` : Foo -->Foo.m : (this: new () => T, strings: TemplateStringsArray | string) => T -+>Foo.m : (this: new () => T, strings: string | TemplateStringsArray) => T - >Foo : typeof Foo -->m : (this: new () => T, strings: TemplateStringsArray | string) => T -+>m : (this: new () => T, strings: string | TemplateStringsArray) => T - >`test` : "test" - - (Foo.m)`test`; - >(Foo.m)`test` : Foo -->(Foo.m) : (this: new () => T, strings: TemplateStringsArray | string) => T -->Foo.m : (this: new () => T, strings: TemplateStringsArray | string) => T -+>(Foo.m) : (this: new () => T, strings: string | TemplateStringsArray) => T -+>Foo.m : (this: new () => T, strings: string | TemplateStringsArray) => T - >Foo : typeof Foo -->m : (this: new () => T, strings: TemplateStringsArray | string) => T -+>m : (this: new () => T, strings: string | TemplateStringsArray) => T - >`test` : "test" diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeInTuples.types b/testdata/baselines/reference/submodule/conformance/thisTypeInTuples.types index 921a9cb788f..e8e20399085 100644 --- a/testdata/baselines/reference/submodule/conformance/thisTypeInTuples.types +++ b/testdata/baselines/reference/submodule/conformance/thisTypeInTuples.types @@ -3,7 +3,7 @@ === thisTypeInTuples.ts === interface Array { slice(): this; ->slice : { (start?: number | undefined, end?: number | undefined): T[]; (): this; } +>slice : { (start?: number, end?: number): T[]; (): this; } } let t: [number, string] = [42, "hello"]; @@ -15,24 +15,24 @@ let t: [number, string] = [42, "hello"]; let a = t.slice(); >a : [number, string] >t.slice() : [number, string] ->t.slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } +>t.slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } >t : [number, string] ->slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } +>slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } let b = t.slice(1); >b : (string | number)[] >t.slice(1) : (string | number)[] ->t.slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } +>t.slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } >t : [number, string] ->slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } +>slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } >1 : 1 let c = t.slice(0, 1); >c : (string | number)[] >t.slice(0, 1) : (string | number)[] ->t.slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } +>t.slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } >t : [number, string] ->slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } +>slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } >0 : 0 >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeInTuples.types.diff b/testdata/baselines/reference/submodule/conformance/thisTypeInTuples.types.diff deleted file mode 100644 index ddb5e9d321c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/thisTypeInTuples.types.diff +++ /dev/null @@ -1,41 +0,0 @@ ---- old.thisTypeInTuples.types -+++ new.thisTypeInTuples.types -@@= skipped -2, +2 lines =@@ - === thisTypeInTuples.ts === - interface Array { - slice(): this; -->slice : { (start?: number, end?: number): T[]; (): this; } -+>slice : { (start?: number | undefined, end?: number | undefined): T[]; (): this; } - } - - let t: [number, string] = [42, "hello"]; -@@= skipped -12, +12 lines =@@ - let a = t.slice(); - >a : [number, string] - >t.slice() : [number, string] -->t.slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } -+>t.slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } - >t : [number, string] -->slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } -+>slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } - - let b = t.slice(1); - >b : (string | number)[] - >t.slice(1) : (string | number)[] -->t.slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } -+>t.slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } - >t : [number, string] -->slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } -+>slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } - >1 : 1 - - let c = t.slice(0, 1); - >c : (string | number)[] - >t.slice(0, 1) : (string | number)[] -->t.slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } -+>t.slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } - >t : [number, string] -->slice : { (start?: number, end?: number): (string | number)[]; (): [number, string]; } -+>slice : { (start?: number | undefined, end?: number | undefined): (string | number)[]; (): [number, string]; } - >0 : 0 - >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.errors.txt b/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.errors.txt index e3678eb163b..75b65af31c3 100644 --- a/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.errors.txt @@ -5,8 +5,8 @@ thisTypeOfConstructorFunctions.js(10,18): error TS2526: A 'this' type is availab thisTypeOfConstructorFunctions.js(11,5): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. thisTypeOfConstructorFunctions.js(11,21): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. thisTypeOfConstructorFunctions.js(15,18): error TS2526: A 'this' type is available only in a non-static member of a class or interface. -thisTypeOfConstructorFunctions.js(17,14): error TS2339: Property 'z' does not exist on type '{ m4(): any; }'. -thisTypeOfConstructorFunctions.js(17,23): error TS2339: Property 'y' does not exist on type '{ m4(): any; }'. +thisTypeOfConstructorFunctions.js(17,14): error TS2339: Property 'z' does not exist on type '{ m4(): this; }'. +thisTypeOfConstructorFunctions.js(17,23): error TS2339: Property 'y' does not exist on type '{ m4(): this; }'. thisTypeOfConstructorFunctions.js(27,5): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. thisTypeOfConstructorFunctions.js(29,14): error TS2526: A 'this' type is available only in a non-static member of a class or interface. thisTypeOfConstructorFunctions.js(34,10): error TS7009: 'new' expression, whose target lacks a construct signature, implicitly has an 'any' type. @@ -49,9 +49,9 @@ thisTypeOfConstructorFunctions.js(43,12): error TS2749: 'Cp' refers to a value, m4() { this.z = this.y; return this ~ -!!! error TS2339: Property 'z' does not exist on type '{ m4(): any; }'. +!!! error TS2339: Property 'z' does not exist on type '{ m4(): this; }'. ~ -!!! error TS2339: Property 'y' does not exist on type '{ m4(): any; }'. +!!! error TS2339: Property 'y' does not exist on type '{ m4(): this; }'. } } diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.errors.txt.diff index 2b5385dc0cb..598fa3e3dbc 100644 --- a/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.errors.txt.diff @@ -9,8 +9,8 @@ +thisTypeOfConstructorFunctions.js(11,5): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. +thisTypeOfConstructorFunctions.js(11,21): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. +thisTypeOfConstructorFunctions.js(15,18): error TS2526: A 'this' type is available only in a non-static member of a class or interface. -+thisTypeOfConstructorFunctions.js(17,14): error TS2339: Property 'z' does not exist on type '{ m4(): any; }'. -+thisTypeOfConstructorFunctions.js(17,23): error TS2339: Property 'y' does not exist on type '{ m4(): any; }'. ++thisTypeOfConstructorFunctions.js(17,14): error TS2339: Property 'z' does not exist on type '{ m4(): this; }'. ++thisTypeOfConstructorFunctions.js(17,23): error TS2339: Property 'y' does not exist on type '{ m4(): this; }'. +thisTypeOfConstructorFunctions.js(27,5): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. +thisTypeOfConstructorFunctions.js(29,14): error TS2526: A 'this' type is available only in a non-static member of a class or interface. +thisTypeOfConstructorFunctions.js(34,10): error TS7009: 'new' expression, whose target lacks a construct signature, implicitly has an 'any' type. @@ -53,9 +53,9 @@ + m4() { + this.z = this.y; return this + ~ -+!!! error TS2339: Property 'z' does not exist on type '{ m4(): any; }'. ++!!! error TS2339: Property 'z' does not exist on type '{ m4(): this; }'. + ~ -+!!! error TS2339: Property 'y' does not exist on type '{ m4(): any; }'. ++!!! error TS2339: Property 'y' does not exist on type '{ m4(): this; }'. + } + } + diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.types b/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.types index c8a07ef0647..6e186cec6f2 100644 --- a/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.types +++ b/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.types @@ -7,7 +7,7 @@ * @param {T} t */ function Cp(t) { ->Cp : { (t: T): void; prototype: { m4(): any; }; } +>Cp : { (t: T): void; prototype: { m4(): this; }; } >t : T /** @type {this} */ @@ -27,34 +27,34 @@ function Cp(t) { /** @return {this} */ this.m3 = () => this ->this.m3 = () => this : () => any +>this.m3 = () => this : () => this >this.m3 : any >this : any >m3 : any ->() => this : () => any +>() => this : () => this >this : any } Cp.prototype = { ->Cp.prototype = { /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): any; } ->Cp.prototype : { m4(): any; } ->Cp : { (t: T): void; prototype: { m4(): any; }; } ->prototype : { m4(): any; } ->{ /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): any; } +>Cp.prototype = { /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): this; } +>Cp.prototype : { m4(): this; } +>Cp : { (t: T): void; prototype: { m4(): this; }; } +>prototype : { m4(): this; } +>{ /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): this; } /** @return {this} */ m4() { ->m4 : () => any +>m4 : () => this this.z = this.y; return this >this.z = this.y : any >this.z : any ->this : { m4(): any; } +>this : { m4(): this; } >z : any >this.y : any ->this : { m4(): any; } +>this : { m4(): this; } >y : any ->this : { m4(): any; } +>this : { m4(): this; } } } @@ -76,13 +76,13 @@ function Cpp(t) { } /** @return {this} */ Cpp.prototype.m2 = function () { ->Cpp.prototype.m2 = function () { this.z = this.y; return this} : () => any +>Cpp.prototype.m2 = function () { this.z = this.y; return this} : () => this >Cpp.prototype.m2 : any >Cpp.prototype : any >Cpp : (t: T) => void >prototype : any >m2 : any ->function () { this.z = this.y; return this} : () => any +>function () { this.z = this.y; return this} : () => this this.z = this.y; return this >this.z = this.y : any @@ -98,7 +98,7 @@ Cpp.prototype.m2 = function () { var cp = new Cp(1) >cp : any >new Cp(1) : any ->Cp : { (t: T): void; prototype: { m4(): any; }; } +>Cp : { (t: T): void; prototype: { m4(): this; }; } >1 : 1 var cpp = new Cpp(2) diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.types.diff b/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.types.diff index 1b321f54f93..15daac63ade 100644 --- a/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.types.diff +++ b/testdata/baselines/reference/submodule/conformance/thisTypeOfConstructorFunctions.types.diff @@ -5,7 +5,7 @@ */ function Cp(t) { ->Cp : typeof Cp -+>Cp : { (t: T): void; prototype: { m4(): any; }; } ++>Cp : { (t: T): void; prototype: { m4(): this; }; } >t : T /** @type {this} */ @@ -29,36 +29,28 @@ >y : any >t : T - /** @return {this} */ +@@= skipped -22, +22 lines =@@ this.m3 = () => this -->this.m3 = () => this : () => this -+>this.m3 = () => this : () => any + >this.m3 = () => this : () => this >this.m3 : any ->this : this +>this : any >m3 : any -->() => this : () => this + >() => this : () => this ->this : this -+>() => this : () => any +>this : any } Cp.prototype = { -->Cp.prototype = { /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): this; } -->Cp.prototype : { m4(): this; } + >Cp.prototype = { /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): this; } + >Cp.prototype : { m4(): this; } ->Cp : typeof Cp -->prototype : { m4(): this; } -->{ /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): this; } -+>Cp.prototype = { /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): any; } -+>Cp.prototype : { m4(): any; } -+>Cp : { (t: T): void; prototype: { m4(): any; }; } -+>prototype : { m4(): any; } -+>{ /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): any; } - - /** @return {this} */ - m4() { -->m4 : () => this -+>m4 : () => any ++>Cp : { (t: T): void; prototype: { m4(): this; }; } + >prototype : { m4(): this; } + >{ /** @return {this} */ m4() { this.z = this.y; return this }} : { m4(): this; } + +@@= skipped -18, +18 lines =@@ + >m4 : () => this this.z = this.y; return this ->this.z = this.y : T @@ -71,16 +63,16 @@ ->this : this +>this.z = this.y : any +>this.z : any -+>this : { m4(): any; } ++>this : { m4(): this; } +>z : any +>this.y : any -+>this : { m4(): any; } ++>this : { m4(): this; } +>y : any -+>this : { m4(): any; } ++>this : { m4(): this; } } } -@@= skipped -57, +57 lines =@@ +@@= skipped -17, +17 lines =@@ * @param {T} t */ function Cpp(t) { @@ -96,18 +88,15 @@ >y : any >t : T } - /** @return {this} */ - Cpp.prototype.m2 = function () { -->Cpp.prototype.m2 = function () { this.z = this.y; return this} : () => this -+>Cpp.prototype.m2 = function () { this.z = this.y; return this} : () => any +@@= skipped -15, +15 lines =@@ + >Cpp.prototype.m2 = function () { this.z = this.y; return this} : () => this >Cpp.prototype.m2 : any >Cpp.prototype : any ->Cpp : typeof Cpp +>Cpp : (t: T) => void >prototype : any >m2 : any -->function () { this.z = this.y; return this} : () => this -+>function () { this.z = this.y; return this} : () => any + >function () { this.z = this.y; return this} : () => this this.z = this.y; return this ->this.z = this.y : T @@ -134,7 +123,7 @@ ->Cp : typeof Cp +>cp : any +>new Cp(1) : any -+>Cp : { (t: T): void; prototype: { m4(): any; }; } ++>Cp : { (t: T): void; prototype: { m4(): this; }; } >1 : 1 var cpp = new Cpp(2) diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeSyntacticContext.types b/testdata/baselines/reference/submodule/conformance/thisTypeSyntacticContext.types index b0d1b3d0d21..ac3d5f867a9 100644 --- a/testdata/baselines/reference/submodule/conformance/thisTypeSyntacticContext.types +++ b/testdata/baselines/reference/submodule/conformance/thisTypeSyntacticContext.types @@ -8,7 +8,7 @@ function f(this: { n: number }) { } const o: { n: number, test?: (this: { n: number }) => void } = { n: 1 } ->o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +>o : { n: number; test?: (this: { n: number; }) => void; } >n : number >test : ((this: { n: number; }) => void) | undefined >this : { n: number; } @@ -20,28 +20,28 @@ const o: { n: number, test?: (this: { n: number }) => void } = { n: 1 } o.test = f >o.test = f : (this: { n: number; }) => void >o.test : ((this: { n: number; }) => void) | undefined ->o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +>o : { n: number; test?: (this: { n: number; }) => void; } >test : ((this: { n: number; }) => void) | undefined >f : (this: { n: number; }) => void o.test(); >o.test() : void >o.test : (this: { n: number; }) => void ->o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +>o : { n: number; test?: (this: { n: number; }) => void; } >test : (this: { n: number; }) => void o!.test(); >o!.test() : void >o!.test : (this: { n: number; }) => void ->o! : { n: number; test?: ((this: { n: number; }) => void) | undefined; } ->o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +>o! : { n: number; test?: (this: { n: number; }) => void; } +>o : { n: number; test?: (this: { n: number; }) => void; } >test : (this: { n: number; }) => void o.test!(); >o.test!() : void >o.test! : (this: { n: number; }) => void >o.test : (this: { n: number; }) => void ->o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +>o : { n: number; test?: (this: { n: number; }) => void; } >test : (this: { n: number; }) => void o.test!!!(); @@ -50,7 +50,7 @@ o.test!!!(); >o.test!! : (this: { n: number; }) => void >o.test! : (this: { n: number; }) => void >o.test : (this: { n: number; }) => void ->o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +>o : { n: number; test?: (this: { n: number; }) => void; } >test : (this: { n: number; }) => void (o.test!)(); @@ -58,14 +58,14 @@ o.test!!!(); >(o.test!) : (this: { n: number; }) => void >o.test! : (this: { n: number; }) => void >o.test : (this: { n: number; }) => void ->o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +>o : { n: number; test?: (this: { n: number; }) => void; } >test : (this: { n: number; }) => void (o.test)(); >(o.test)() : void >(o.test) : (this: { n: number; }) => void >o.test : (this: { n: number; }) => void ->o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +>o : { n: number; test?: (this: { n: number; }) => void; } >test : (this: { n: number; }) => void diff --git a/testdata/baselines/reference/submodule/conformance/thisTypeSyntacticContext.types.diff b/testdata/baselines/reference/submodule/conformance/thisTypeSyntacticContext.types.diff deleted file mode 100644 index 0f915840fac..00000000000 --- a/testdata/baselines/reference/submodule/conformance/thisTypeSyntacticContext.types.diff +++ /dev/null @@ -1,70 +0,0 @@ ---- old.thisTypeSyntacticContext.types -+++ new.thisTypeSyntacticContext.types -@@= skipped -7, +7 lines =@@ - } - - const o: { n: number, test?: (this: { n: number }) => void } = { n: 1 } -->o : { n: number; test?: (this: { n: number; }) => void; } -+>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } - >n : number - >test : ((this: { n: number; }) => void) | undefined - >this : { n: number; } -@@= skipped -12, +12 lines =@@ - o.test = f - >o.test = f : (this: { n: number; }) => void - >o.test : ((this: { n: number; }) => void) | undefined -->o : { n: number; test?: (this: { n: number; }) => void; } -+>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } - >test : ((this: { n: number; }) => void) | undefined - >f : (this: { n: number; }) => void - - o.test(); - >o.test() : void - >o.test : (this: { n: number; }) => void -->o : { n: number; test?: (this: { n: number; }) => void; } -+>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } - >test : (this: { n: number; }) => void - - o!.test(); - >o!.test() : void - >o!.test : (this: { n: number; }) => void -->o! : { n: number; test?: (this: { n: number; }) => void; } -->o : { n: number; test?: (this: { n: number; }) => void; } -+>o! : { n: number; test?: ((this: { n: number; }) => void) | undefined; } -+>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } - >test : (this: { n: number; }) => void - - o.test!(); - >o.test!() : void - >o.test! : (this: { n: number; }) => void - >o.test : (this: { n: number; }) => void -->o : { n: number; test?: (this: { n: number; }) => void; } -+>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } - >test : (this: { n: number; }) => void - - o.test!!!(); -@@= skipped -30, +30 lines =@@ - >o.test!! : (this: { n: number; }) => void - >o.test! : (this: { n: number; }) => void - >o.test : (this: { n: number; }) => void -->o : { n: number; test?: (this: { n: number; }) => void; } -+>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } - >test : (this: { n: number; }) => void - - (o.test!)(); -@@= skipped -8, +8 lines =@@ - >(o.test!) : (this: { n: number; }) => void - >o.test! : (this: { n: number; }) => void - >o.test : (this: { n: number; }) => void -->o : { n: number; test?: (this: { n: number; }) => void; } -+>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } - >test : (this: { n: number; }) => void - - (o.test)(); - >(o.test)() : void - >(o.test) : (this: { n: number; }) => void - >o.test : (this: { n: number; }) => void -->o : { n: number; test?: (this: { n: number; }) => void; } -+>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } - >test : (this: { n: number; }) => void - diff --git a/testdata/baselines/reference/submodule/conformance/transferableArrayBuffer.types b/testdata/baselines/reference/submodule/conformance/transferableArrayBuffer.types index bb105a73961..cd32fbec33d 100644 --- a/testdata/baselines/reference/submodule/conformance/transferableArrayBuffer.types +++ b/testdata/baselines/reference/submodule/conformance/transferableArrayBuffer.types @@ -10,9 +10,9 @@ const buffer = new ArrayBuffer(8); const buffer2 = buffer.transfer(); >buffer2 : ArrayBuffer >buffer.transfer() : ArrayBuffer ->buffer.transfer : (newByteLength?: number | undefined) => ArrayBuffer +>buffer.transfer : (newByteLength?: number) => ArrayBuffer >buffer : ArrayBuffer ->transfer : (newByteLength?: number | undefined) => ArrayBuffer +>transfer : (newByteLength?: number) => ArrayBuffer buffer.detached; >buffer.detached : boolean diff --git a/testdata/baselines/reference/submodule/conformance/transferableArrayBuffer.types.diff b/testdata/baselines/reference/submodule/conformance/transferableArrayBuffer.types.diff deleted file mode 100644 index 2a2c4abfa10..00000000000 --- a/testdata/baselines/reference/submodule/conformance/transferableArrayBuffer.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.transferableArrayBuffer.types -+++ new.transferableArrayBuffer.types -@@= skipped -9, +9 lines =@@ - const buffer2 = buffer.transfer(); - >buffer2 : ArrayBuffer - >buffer.transfer() : ArrayBuffer -->buffer.transfer : (newByteLength?: number) => ArrayBuffer -+>buffer.transfer : (newByteLength?: number | undefined) => ArrayBuffer - >buffer : ArrayBuffer -->transfer : (newByteLength?: number) => ArrayBuffer -+>transfer : (newByteLength?: number | undefined) => ArrayBuffer - - buffer.detached; - >buffer.detached : boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.errors.txt index ef4cddc61d7..e9dbd1b60a0 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.errors.txt @@ -1,6 +1,6 @@ tsxAttributeErrors.tsx(14,6): error TS2322: Type 'number' is not assignable to type 'string'. tsxAttributeErrors.tsx(17,6): error TS2322: Type 'string' is not assignable to type 'number'. -tsxAttributeErrors.tsx(21,2): error TS2322: Type '{ text: number; }' is not assignable to type '{ text?: string | undefined; width?: number | undefined; }'. +tsxAttributeErrors.tsx(21,2): error TS2322: Type '{ text: number; }' is not assignable to type '{ text?: string; width?: number; }'. Types of property 'text' are incompatible. Type 'number' is not assignable to type 'string'. @@ -22,19 +22,19 @@ tsxAttributeErrors.tsx(21,2): error TS2322: Type '{ text: number; }' is not assi

; ~~~~ !!! error TS2322: Type 'number' is not assignable to type 'string'. -!!! related TS6500 tsxAttributeErrors.tsx:5:4: The expected type comes from property 'text' which is declared here on type '{ text?: string | undefined; width?: number | undefined; }' +!!! related TS6500 tsxAttributeErrors.tsx:5:4: The expected type comes from property 'text' which is declared here on type '{ text?: string; width?: number; }' // Error, string is not assignable to number
; ~~~~~ !!! error TS2322: Type 'string' is not assignable to type 'number'. -!!! related TS6500 tsxAttributeErrors.tsx:6:4: The expected type comes from property 'width' which is declared here on type '{ text?: string | undefined; width?: number | undefined; }' +!!! related TS6500 tsxAttributeErrors.tsx:6:4: The expected type comes from property 'width' which is declared here on type '{ text?: string; width?: number; }' // Error, number is not assignable to string var attribs = { text: 100 };
; ~~~ -!!! error TS2322: Type '{ text: number; }' is not assignable to type '{ text?: string | undefined; width?: number | undefined; }'. +!!! error TS2322: Type '{ text: number; }' is not assignable to type '{ text?: string; width?: number; }'. !!! error TS2322: Types of property 'text' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.errors.txt.diff new file mode 100644 index 00000000000..66c981c1581 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.errors.txt.diff @@ -0,0 +1,33 @@ +--- old.tsxAttributeErrors.errors.txt ++++ new.tsxAttributeErrors.errors.txt +@@= skipped -0, +0 lines =@@ + tsxAttributeErrors.tsx(14,6): error TS2322: Type 'number' is not assignable to type 'string'. + tsxAttributeErrors.tsx(17,6): error TS2322: Type 'string' is not assignable to type 'number'. +-tsxAttributeErrors.tsx(21,2): error TS2322: Type '{ text: number; }' is not assignable to type '{ text?: string | undefined; width?: number | undefined; }'. ++tsxAttributeErrors.tsx(21,2): error TS2322: Type '{ text: number; }' is not assignable to type '{ text?: string; width?: number; }'. + Types of property 'text' are incompatible. + Type 'number' is not assignable to type 'string'. + +@@= skipped -21, +21 lines =@@ +
; + ~~~~ + !!! error TS2322: Type 'number' is not assignable to type 'string'. +-!!! related TS6500 tsxAttributeErrors.tsx:5:4: The expected type comes from property 'text' which is declared here on type '{ text?: string | undefined; width?: number | undefined; }' ++!!! related TS6500 tsxAttributeErrors.tsx:5:4: The expected type comes from property 'text' which is declared here on type '{ text?: string; width?: number; }' + + // Error, string is not assignable to number +
; + ~~~~~ + !!! error TS2322: Type 'string' is not assignable to type 'number'. +-!!! related TS6500 tsxAttributeErrors.tsx:6:4: The expected type comes from property 'width' which is declared here on type '{ text?: string | undefined; width?: number | undefined; }' ++!!! related TS6500 tsxAttributeErrors.tsx:6:4: The expected type comes from property 'width' which is declared here on type '{ text?: string; width?: number; }' + + // Error, number is not assignable to string + var attribs = { text: 100 }; +
; + ~~~ +-!!! error TS2322: Type '{ text: number; }' is not assignable to type '{ text?: string | undefined; width?: number | undefined; }'. ++!!! error TS2322: Type '{ text: number; }' is not assignable to type '{ text?: string; width?: number; }'. + !!! error TS2322: Types of property 'text' are incompatible. + !!! error TS2322: Type 'number' is not assignable to type 'string'. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.types b/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.types index 882738b7296..a69713a2197 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.types +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.types @@ -5,7 +5,7 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { div: { ->div : { text?: string | undefined; width?: number | undefined; } +>div : { text?: string; width?: number; } text?: string; >text : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.types.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.types.diff deleted file mode 100644 index e409ddb8cff..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeErrors.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxAttributeErrors.types -+++ new.tsxAttributeErrors.types -@@= skipped -4, +4 lines =@@ - interface Element { } - interface IntrinsicElements { - div: { -->div : { text?: string; width?: number; } -+>div : { text?: string | undefined; width?: number | undefined; } - - text?: string; - >text : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeInvalidNames.types b/testdata/baselines/reference/submodule/conformance/tsxAttributeInvalidNames.types index 51f6d4182eb..0fc9e25e335 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeInvalidNames.types +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeInvalidNames.types @@ -5,11 +5,11 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { test1: { "data-foo"?: string }; ->test1 : { "data-foo"?: string | undefined; } +>test1 : { "data-foo"?: string; } >"data-foo" : string | undefined test2: { "data-foo"?: string }; ->test2 : { "data-foo"?: string | undefined; } +>test2 : { "data-foo"?: string; } >"data-foo" : string | undefined } } diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeInvalidNames.types.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeInvalidNames.types.diff deleted file mode 100644 index 59dcb50bf2b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeInvalidNames.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.tsxAttributeInvalidNames.types -+++ new.tsxAttributeInvalidNames.types -@@= skipped -4, +4 lines =@@ - interface Element { } - interface IntrinsicElements { - test1: { "data-foo"?: string }; -->test1 : { "data-foo"?: string; } -+>test1 : { "data-foo"?: string | undefined; } - >"data-foo" : string | undefined - - test2: { "data-foo"?: string }; -->test2 : { "data-foo"?: string; } -+>test2 : { "data-foo"?: string | undefined; } - >"data-foo" : string | undefined - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.errors.txt index bfae98f588e..207df6c20d1 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.errors.txt @@ -1,6 +1,6 @@ file.tsx(5,3): error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. -file.tsx(11,22): error TS2322: Type '{ bar: string; }' is not assignable to type 'IntrinsicAttributes & { ref?: string | undefined; }'. - Property 'bar' does not exist on type 'IntrinsicAttributes & { ref?: string | undefined; }'. +file.tsx(11,22): error TS2322: Type '{ bar: string; }' is not assignable to type 'IntrinsicAttributes & { ref?: string; }'. + Property 'bar' does not exist on type 'IntrinsicAttributes & { ref?: string; }'. react.d.ts(6,3): error TS7008: Member 'props' implicitly has an 'any' type. @@ -34,7 +34,7 @@ react.d.ts(6,3): error TS7008: Member 'props' implicitly has an 'any' type. // Should be an OK var x = ; ~~~ -!!! error TS2322: Type '{ bar: string; }' is not assignable to type 'IntrinsicAttributes & { ref?: string | undefined; }'. -!!! error TS2322: Property 'bar' does not exist on type 'IntrinsicAttributes & { ref?: string | undefined; }'. +!!! error TS2322: Type '{ bar: string; }' is not assignable to type 'IntrinsicAttributes & { ref?: string; }'. +!!! error TS2322: Property 'bar' does not exist on type 'IntrinsicAttributes & { ref?: string; }'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.errors.txt.diff new file mode 100644 index 00000000000..85014d2be05 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.errors.txt.diff @@ -0,0 +1,21 @@ +--- old.tsxAttributeResolution11.errors.txt ++++ new.tsxAttributeResolution11.errors.txt +@@= skipped -0, +0 lines =@@ + file.tsx(5,3): error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. +-file.tsx(11,22): error TS2322: Type '{ bar: string; }' is not assignable to type 'IntrinsicAttributes & { ref?: string | undefined; }'. +- Property 'bar' does not exist on type 'IntrinsicAttributes & { ref?: string | undefined; }'. ++file.tsx(11,22): error TS2322: Type '{ bar: string; }' is not assignable to type 'IntrinsicAttributes & { ref?: string; }'. ++ Property 'bar' does not exist on type 'IntrinsicAttributes & { ref?: string; }'. + react.d.ts(6,3): error TS7008: Member 'props' implicitly has an 'any' type. + + +@@= skipped -33, +33 lines =@@ + // Should be an OK + var x = ; + ~~~ +-!!! error TS2322: Type '{ bar: string; }' is not assignable to type 'IntrinsicAttributes & { ref?: string | undefined; }'. +-!!! error TS2322: Property 'bar' does not exist on type 'IntrinsicAttributes & { ref?: string | undefined; }'. ++!!! error TS2322: Type '{ bar: string; }' is not assignable to type 'IntrinsicAttributes & { ref?: string; }'. ++!!! error TS2322: Property 'bar' does not exist on type 'IntrinsicAttributes & { ref?: string; }'. + + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.types b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.types index b35dd45b743..e67a18ccb63 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.types +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.types @@ -24,7 +24,7 @@ class MyComponent { } props: { ->props : { ref?: string | undefined; } +>props : { ref?: string; } ref?: string; >ref : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.types.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.types.diff deleted file mode 100644 index dae1807e632..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution11.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxAttributeResolution11.types -+++ new.tsxAttributeResolution11.types -@@= skipped -23, +23 lines =@@ - } - - props: { -->props : { ref?: string; } -+>props : { ref?: string | undefined; } - - ref?: string; - >ref : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution12.types b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution12.types index a52e875c8ee..eb4007cb26c 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution12.types +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution12.types @@ -24,19 +24,19 @@ declare class Component { >context : any setState(f: (prevState: S, props: P) => S, callback?: () => any): void; ->setState : { (f: (prevState: S, props: P) => S, callback?: (() => any) | undefined): void; (state: S, callback?: (() => any) | undefined): void; } +>setState : { (f: (prevState: S, props: P) => S, callback?: () => any): void; (state: S, callback?: () => any): void; } >f : (prevState: S, props: P) => S >prevState : S >props : P >callback : (() => any) | undefined setState(state: S, callback?: () => any): void; ->setState : { (f: (prevState: S, props: P) => S, callback?: (() => any) | undefined): void; (state: S, callback?: (() => any) | undefined): void; } +>setState : { (f: (prevState: S, props: P) => S, callback?: () => any): void; (state: S, callback?: () => any): void; } >state : S >callback : (() => any) | undefined forceUpdate(callBack?: () => any): void; ->forceUpdate : (callBack?: (() => any) | undefined) => void +>forceUpdate : (callBack?: () => any) => void >callBack : (() => any) | undefined render(): JSX.Element; diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution12.types.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution12.types.diff deleted file mode 100644 index 5801ab3300c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution12.types.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.tsxAttributeResolution12.types -+++ new.tsxAttributeResolution12.types -@@= skipped -23, +23 lines =@@ - >context : any - - setState(f: (prevState: S, props: P) => S, callback?: () => any): void; -->setState : { (f: (prevState: S, props: P) => S, callback?: () => any): void; (state: S, callback?: () => any): void; } -+>setState : { (f: (prevState: S, props: P) => S, callback?: (() => any) | undefined): void; (state: S, callback?: (() => any) | undefined): void; } - >f : (prevState: S, props: P) => S - >prevState : S - >props : P - >callback : (() => any) | undefined - - setState(state: S, callback?: () => any): void; -->setState : { (f: (prevState: S, props: P) => S, callback?: () => any): void; (state: S, callback?: () => any): void; } -+>setState : { (f: (prevState: S, props: P) => S, callback?: (() => any) | undefined): void; (state: S, callback?: (() => any) | undefined): void; } - >state : S - >callback : (() => any) | undefined - - forceUpdate(callBack?: () => any): void; -->forceUpdate : (callBack?: () => any) => void -+>forceUpdate : (callBack?: (() => any) | undefined) => void - >callBack : (() => any) | undefined - - render(): JSX.Element; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution15.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution15.errors.txt index df47a03b5fa..97afec2b7a2 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution15.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution15.errors.txt @@ -1,6 +1,6 @@ file.tsx(9,5): error TS2564: Property 'greeting' has no initializer and is not definitely assigned in the constructor. -file.tsx(13,21): error TS2322: Type '{ prop1: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. - Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. +file.tsx(13,21): error TS2322: Type '{ prop1: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. + Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. file.tsx(16,39): error TS2532: Object is possibly 'undefined'. @@ -21,8 +21,8 @@ file.tsx(16,39): error TS2532: Object is possibly 'undefined'. // Error let a = ~~~~~ -!!! error TS2322: Type '{ prop1: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. -!!! error TS2322: Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. +!!! error TS2322: Type '{ prop1: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. +!!! error TS2322: Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. // OK let b = { this.textInput = input; }} /> diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution15.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution15.errors.txt.diff new file mode 100644 index 00000000000..11668504556 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution15.errors.txt.diff @@ -0,0 +1,22 @@ +--- old.tsxAttributeResolution15.errors.txt ++++ new.tsxAttributeResolution15.errors.txt +@@= skipped -0, +0 lines =@@ + file.tsx(9,5): error TS2564: Property 'greeting' has no initializer and is not definitely assigned in the constructor. +-file.tsx(13,21): error TS2322: Type '{ prop1: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. +- Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. ++file.tsx(13,21): error TS2322: Type '{ prop1: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. ++ Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. + file.tsx(16,39): error TS2532: Object is possibly 'undefined'. + + +@@= skipped -20, +20 lines =@@ + // Error + let a = + ~~~~~ +-!!! error TS2322: Type '{ prop1: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. +-!!! error TS2322: Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. ++!!! error TS2322: Type '{ prop1: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. ++!!! error TS2322: Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. + + // OK + let b = { this.textInput = input; }} /> \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.errors.txt index 371704b1905..218c8e42327 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.errors.txt @@ -16,11 +16,11 @@ file.tsx(12,2): error TS2741: Property 'n' is missing in type '{}' but required ; ~ !!! error TS2322: Type 'boolean' is not assignable to type 'string'. -!!! related TS6500 file.tsx:4:25: The expected type comes from property 's' which is declared here on type '{ n?: boolean | undefined; s?: string | undefined; }' +!!! related TS6500 file.tsx:4:25: The expected type comes from property 's' which is declared here on type '{ n?: boolean; s?: string; }' ; ~ !!! error TS2322: Type 'string' is not assignable to type 'boolean | undefined'. -!!! related TS6500 file.tsx:4:12: The expected type comes from property 'n' which is declared here on type '{ n?: boolean | undefined; s?: string | undefined; }' +!!! related TS6500 file.tsx:4:12: The expected type comes from property 'n' which is declared here on type '{ n?: boolean; s?: string; }' ; ~~~~~ !!! error TS2741: Property 'n' is missing in type '{}' but required in type '{ n: boolean; }'. diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.errors.txt.diff new file mode 100644 index 00000000000..da96b5c7810 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.errors.txt.diff @@ -0,0 +1,16 @@ +--- old.tsxAttributeResolution6.errors.txt ++++ new.tsxAttributeResolution6.errors.txt +@@= skipped -15, +15 lines =@@ + ; + ~ + !!! error TS2322: Type 'boolean' is not assignable to type 'string'. +-!!! related TS6500 file.tsx:4:25: The expected type comes from property 's' which is declared here on type '{ n?: boolean | undefined; s?: string | undefined; }' ++!!! related TS6500 file.tsx:4:25: The expected type comes from property 's' which is declared here on type '{ n?: boolean; s?: string; }' + ; + ~ + !!! error TS2322: Type 'string' is not assignable to type 'boolean | undefined'. +-!!! related TS6500 file.tsx:4:12: The expected type comes from property 'n' which is declared here on type '{ n?: boolean | undefined; s?: string | undefined; }' ++!!! related TS6500 file.tsx:4:12: The expected type comes from property 'n' which is declared here on type '{ n?: boolean; s?: string; }' + ; + ~~~~~ + !!! error TS2741: Property 'n' is missing in type '{}' but required in type '{ n: boolean; }'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.types b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.types index 069fbcf9bb6..d52031e5438 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.types +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.types @@ -5,7 +5,7 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { test1: { n?: boolean; s?: string}; ->test1 : { n?: boolean | undefined; s?: string | undefined; } +>test1 : { n?: boolean; s?: string; } >n : boolean | undefined >s : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.types.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.types.diff deleted file mode 100644 index 365f8271f69..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution6.types.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.tsxAttributeResolution6.types -+++ new.tsxAttributeResolution6.types -@@= skipped -4, +4 lines =@@ - interface Element { } - interface IntrinsicElements { - test1: { n?: boolean; s?: string}; -->test1 : { n?: boolean; s?: string; } -+>test1 : { n?: boolean | undefined; s?: string | undefined; } - >n : boolean | undefined - >s : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.errors.txt index 6d6fb296bd1..6ecb4d3f21e 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.errors.txt @@ -1,4 +1,4 @@ -file.tsx(9,2): error TS2322: Type '{ "data-foo": number; }' is not assignable to type '{ "data-foo"?: string | undefined; }'. +file.tsx(9,2): error TS2322: Type '{ "data-foo": number; }' is not assignable to type '{ "data-foo"?: string; }'. Types of property '"data-foo"' are incompatible. Type 'number' is not assignable to type 'string'. @@ -14,7 +14,7 @@ file.tsx(9,2): error TS2322: Type '{ "data-foo": number; }' is not assignable to // Error ; ~~~~~ -!!! error TS2322: Type '{ "data-foo": number; }' is not assignable to type '{ "data-foo"?: string | undefined; }'. +!!! error TS2322: Type '{ "data-foo": number; }' is not assignable to type '{ "data-foo"?: string; }'. !!! error TS2322: Types of property '"data-foo"' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.errors.txt.diff new file mode 100644 index 00000000000..9248069f405 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.tsxAttributeResolution7.errors.txt ++++ new.tsxAttributeResolution7.errors.txt +@@= skipped -0, +0 lines =@@ +-file.tsx(9,2): error TS2322: Type '{ "data-foo": number; }' is not assignable to type '{ "data-foo"?: string | undefined; }'. ++file.tsx(9,2): error TS2322: Type '{ "data-foo": number; }' is not assignable to type '{ "data-foo"?: string; }'. + Types of property '"data-foo"' are incompatible. + Type 'number' is not assignable to type 'string'. + +@@= skipped -13, +13 lines =@@ + // Error + ; + ~~~~~ +-!!! error TS2322: Type '{ "data-foo": number; }' is not assignable to type '{ "data-foo"?: string | undefined; }'. ++!!! error TS2322: Type '{ "data-foo": number; }' is not assignable to type '{ "data-foo"?: string; }'. + !!! error TS2322: Types of property '"data-foo"' are incompatible. + !!! error TS2322: Type 'number' is not assignable to type 'string'. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.types b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.types index 3f219bc6900..0e6fa5327af 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.types +++ b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.types @@ -5,7 +5,7 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { test1: { "data-foo"?: string }; ->test1 : { "data-foo"?: string | undefined; } +>test1 : { "data-foo"?: string; } >"data-foo" : string | undefined } } diff --git a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.types.diff b/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.types.diff deleted file mode 100644 index 02b289ec20d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxAttributeResolution7.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxAttributeResolution7.types -+++ new.tsxAttributeResolution7.types -@@= skipped -4, +4 lines =@@ - interface Element { } - interface IntrinsicElements { - test1: { "data-foo"?: string }; -->test1 : { "data-foo"?: string; } -+>test1 : { "data-foo"?: string | undefined; } - >"data-foo" : string | undefined - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxDefaultAttributesResolution3.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxDefaultAttributesResolution3.errors.txt index c7476d6f74f..41a69a803ed 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxDefaultAttributesResolution3.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxDefaultAttributesResolution3.errors.txt @@ -19,4 +19,4 @@ file.tsx(15,19): error TS2322: Type 'true' is not assignable to type 'false'. let p = ; ~ !!! error TS2322: Type 'true' is not assignable to type 'false'. -!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode | undefined; }' \ No newline at end of file +!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxDefaultAttributesResolution3.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxDefaultAttributesResolution3.errors.txt.diff new file mode 100644 index 00000000000..976a8cbc2dc --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxDefaultAttributesResolution3.errors.txt.diff @@ -0,0 +1,8 @@ +--- old.tsxDefaultAttributesResolution3.errors.txt ++++ new.tsxDefaultAttributesResolution3.errors.txt +@@= skipped -18, +18 lines =@@ + let p = ; + ~ + !!! error TS2322: Type 'true' is not assignable to type 'false'. +-!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxElementResolution11.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxElementResolution11.errors.txt index 478c2e8b352..8972bfe43fa 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxElementResolution11.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxElementResolution11.errors.txt @@ -1,5 +1,5 @@ -file.tsx(17,7): error TS2322: Type '{ x: number; }' is not assignable to type '{ q?: number | undefined; }'. - Property 'x' does not exist on type '{ q?: number | undefined; }'. +file.tsx(17,7): error TS2322: Type '{ x: number; }' is not assignable to type '{ q?: number; }'. + Property 'x' does not exist on type '{ q?: number; }'. ==== file.tsx (1 errors) ==== @@ -21,8 +21,8 @@ file.tsx(17,7): error TS2322: Type '{ x: number; }' is not assignable to type '{ declare var Obj2: Obj2type; ; // Error ~ -!!! error TS2322: Type '{ x: number; }' is not assignable to type '{ q?: number | undefined; }'. -!!! error TS2322: Property 'x' does not exist on type '{ q?: number | undefined; }'. +!!! error TS2322: Type '{ x: number; }' is not assignable to type '{ q?: number; }'. +!!! error TS2322: Property 'x' does not exist on type '{ q?: number; }'. interface Obj3type { new(n: string): { x: number; }; diff --git a/testdata/baselines/reference/submodule/conformance/tsxElementResolution11.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxElementResolution11.errors.txt.diff new file mode 100644 index 00000000000..e789aff4ce3 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxElementResolution11.errors.txt.diff @@ -0,0 +1,21 @@ +--- old.tsxElementResolution11.errors.txt ++++ new.tsxElementResolution11.errors.txt +@@= skipped -0, +0 lines =@@ +-file.tsx(17,7): error TS2322: Type '{ x: number; }' is not assignable to type '{ q?: number | undefined; }'. +- Property 'x' does not exist on type '{ q?: number | undefined; }'. ++file.tsx(17,7): error TS2322: Type '{ x: number; }' is not assignable to type '{ q?: number; }'. ++ Property 'x' does not exist on type '{ q?: number; }'. + + + ==== file.tsx (1 errors) ==== +@@= skipped -20, +20 lines =@@ + declare var Obj2: Obj2type; + ; // Error + ~ +-!!! error TS2322: Type '{ x: number; }' is not assignable to type '{ q?: number | undefined; }'. +-!!! error TS2322: Property 'x' does not exist on type '{ q?: number | undefined; }'. ++!!! error TS2322: Type '{ x: number; }' is not assignable to type '{ q?: number; }'. ++!!! error TS2322: Property 'x' does not exist on type '{ q?: number; }'. + + interface Obj3type { + new(n: string): { x: number; }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType1.types b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType1.types index 707f36aa38b..8e26493189a 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType1.types +++ b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType1.types @@ -14,11 +14,11 @@ const decorator = function (Component: React.StatelessComponent): React.St >React : any return (props) => ->(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element ->props : T & { children?: React.ReactNode | undefined; } +>(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element +>props : T & { children?: React.ReactNode; } > : JSX.Element >Component : React.StatelessComponent ->props : T & { children?: React.ReactNode | undefined; } +>props : T & { children?: React.ReactNode; } >Component : React.StatelessComponent }; @@ -32,11 +32,11 @@ const decorator2 = function (Component: React.Stateless >React : any return (props) => ->(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element ->props : T & { children?: React.ReactNode | undefined; } +>(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element +>props : T & { children?: React.ReactNode; } > : JSX.Element >Component : React.StatelessComponent ->props : T & { children?: React.ReactNode | undefined; } +>props : T & { children?: React.ReactNode; } >x : number >2 : 2 >Component : React.StatelessComponent @@ -53,13 +53,13 @@ const decorator3 = function ( >React : any return (props) => ->(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element ->props : T & { children?: React.ReactNode | undefined; } +>(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element +>props : T & { children?: React.ReactNode; } > : JSX.Element >Component : React.StatelessComponent >x : number >2 : 2 ->props : T & { children?: React.ReactNode | undefined; } +>props : T & { children?: React.ReactNode; } >Component : React.StatelessComponent }; diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType1.types.diff b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType1.types.diff deleted file mode 100644 index 2e22add91b1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType1.types.diff +++ /dev/null @@ -1,49 +0,0 @@ ---- old.tsxGenericAttributesType1.types -+++ new.tsxGenericAttributesType1.types -@@= skipped -13, +13 lines =@@ - >React : any - - return (props) => -->(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element -->props : T & { children?: React.ReactNode; } -+>(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element -+>props : T & { children?: React.ReactNode | undefined; } - > : JSX.Element - >Component : React.StatelessComponent -->props : T & { children?: React.ReactNode; } -+>props : T & { children?: React.ReactNode | undefined; } - >Component : React.StatelessComponent - - }; -@@= skipped -18, +18 lines =@@ - >React : any - - return (props) => -->(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element -->props : T & { children?: React.ReactNode; } -+>(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element -+>props : T & { children?: React.ReactNode | undefined; } - > : JSX.Element - >Component : React.StatelessComponent -->props : T & { children?: React.ReactNode; } -+>props : T & { children?: React.ReactNode | undefined; } - >x : number - >2 : 2 - >Component : React.StatelessComponent -@@= skipped -21, +21 lines =@@ - >React : any - - return (props) => -->(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element -->props : T & { children?: React.ReactNode; } -+>(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element -+>props : T & { children?: React.ReactNode | undefined; } - > : JSX.Element - >Component : React.StatelessComponent - >x : number - >2 : 2 -->props : T & { children?: React.ReactNode; } -+>props : T & { children?: React.ReactNode | undefined; } - >Component : React.StatelessComponent - - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType2.types b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType2.types index 15e42a7fdbf..6f83b14ee53 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType2.types +++ b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType2.types @@ -15,11 +15,11 @@ const decorator4 = function (Component: React.Stateless >React : any return (props) => ->(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element ->props : T & { children?: React.ReactNode | undefined; } +>(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element +>props : T & { children?: React.ReactNode; } > : JSX.Element >Component : React.StatelessComponent ->props : T & { children?: React.ReactNode | undefined; } +>props : T & { children?: React.ReactNode; } >y : string >"blah" : "blah" >Component : React.StatelessComponent diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType2.types.diff b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType2.types.diff deleted file mode 100644 index 543f410fae3..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType2.types.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- old.tsxGenericAttributesType2.types -+++ new.tsxGenericAttributesType2.types -@@= skipped -14, +14 lines =@@ - >React : any - - return (props) => -->(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element -->props : T & { children?: React.ReactNode; } -+>(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element -+>props : T & { children?: React.ReactNode | undefined; } - > : JSX.Element - >Component : React.StatelessComponent -->props : T & { children?: React.ReactNode; } -+>props : T & { children?: React.ReactNode | undefined; } - >y : string - >"blah" : "blah" - >Component : React.StatelessComponent \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType3.types b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType3.types index c14fc69690f..a5716ff175f 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType3.types +++ b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType3.types @@ -35,9 +35,9 @@ class B extends React.Component { return ; > : JSX.Element >B1 : typeof B1 ->this.props : U & { children?: React.ReactNode | undefined; } +>this.props : U & { children?: React.ReactNode; } >this : this ->props : U & { children?: React.ReactNode | undefined; } +>props : U & { children?: React.ReactNode; } >x : string } } diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType3.types.diff b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType3.types.diff deleted file mode 100644 index ad6a5e38705..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType3.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.tsxGenericAttributesType3.types -+++ new.tsxGenericAttributesType3.types -@@= skipped -34, +34 lines =@@ - return ; - > : JSX.Element - >B1 : typeof B1 -->this.props : U & { children?: React.ReactNode; } -+>this.props : U & { children?: React.ReactNode | undefined; } - >this : this -->props : U & { children?: React.ReactNode; } -+>props : U & { children?: React.ReactNode | undefined; } - >x : string - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType4.types b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType4.types index f97aaef50fa..45ceb73d362 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType4.types +++ b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType4.types @@ -34,9 +34,9 @@ class B extends React.Component { return ; > : JSX.Element >B1 : typeof B1 ->this.props : U & { children?: React.ReactNode | undefined; } +>this.props : U & { children?: React.ReactNode; } >this : this ->props : U & { children?: React.ReactNode | undefined; } +>props : U & { children?: React.ReactNode; } >x : string } } diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType4.types.diff b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType4.types.diff deleted file mode 100644 index 7d67564d433..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType4.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.tsxGenericAttributesType4.types -+++ new.tsxGenericAttributesType4.types -@@= skipped -33, +33 lines =@@ - return ; - > : JSX.Element - >B1 : typeof B1 -->this.props : U & { children?: React.ReactNode; } -+>this.props : U & { children?: React.ReactNode | undefined; } - >this : this -->props : U & { children?: React.ReactNode; } -+>props : U & { children?: React.ReactNode | undefined; } - >x : string - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType5.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType5.errors.txt index cc8436b920e..704039cd6c0 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType5.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType5.errors.txt @@ -1,6 +1,6 @@ file.tsx(11,5): error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. - Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. - Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. + Type 'U' is not assignable to type 'U & { children?: ReactNode; }'. + Type 'U' is not assignable to type '{ children?: ReactNode; }'. file.tsx(11,5): error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. @@ -18,9 +18,9 @@ file.tsx(11,5): error TS2564: Property 'props' has no initializer and is not def props: U; ~~~~~ !!! error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. -!!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. -!!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. -!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: ReactNode | undefined; }` constraint. +!!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode; }'. +!!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode; }'. +!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: ReactNode; }` constraint. ~~~~~ !!! error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. render() { diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType5.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType5.errors.txt.diff index 096d86f9e16..0411ae4e922 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType5.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType5.errors.txt.diff @@ -1,11 +1,24 @@ --- old.tsxGenericAttributesType5.errors.txt +++ new.tsxGenericAttributesType5.errors.txt -@@= skipped -19, +19 lines =@@ +@@= skipped -0, +0 lines =@@ + file.tsx(11,5): error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. +- Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. +- Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. ++ Type 'U' is not assignable to type 'U & { children?: ReactNode; }'. ++ Type 'U' is not assignable to type '{ children?: ReactNode; }'. + file.tsx(11,5): error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. + + +@@= skipped -17, +17 lines =@@ + props: U; + ~~~~~ !!! error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. - !!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. - !!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. +-!!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. +-!!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. -!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: React.ReactNode; }` constraint. -+!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: ReactNode | undefined; }` constraint. ++!!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode; }'. ++!!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode; }'. ++!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: ReactNode; }` constraint. ~~~~~ !!! error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. render() { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType6.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType6.errors.txt index 09781a9b753..ec19fcf0a5c 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType6.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType6.errors.txt @@ -1,6 +1,6 @@ file.tsx(11,5): error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. - Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. - Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. + Type 'U' is not assignable to type 'U & { children?: ReactNode; }'. + Type 'U' is not assignable to type '{ children?: ReactNode; }'. file.tsx(11,5): error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. @@ -18,9 +18,9 @@ file.tsx(11,5): error TS2564: Property 'props' has no initializer and is not def props: U; ~~~~~ !!! error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. -!!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. -!!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. -!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: ReactNode | undefined; }` constraint. +!!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode; }'. +!!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode; }'. +!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: ReactNode; }` constraint. ~~~~~ !!! error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. render() { diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType6.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType6.errors.txt.diff index c655d8f629b..c98b5cb54dd 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType6.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType6.errors.txt.diff @@ -1,11 +1,24 @@ --- old.tsxGenericAttributesType6.errors.txt +++ new.tsxGenericAttributesType6.errors.txt -@@= skipped -19, +19 lines =@@ +@@= skipped -0, +0 lines =@@ + file.tsx(11,5): error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. +- Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. +- Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. ++ Type 'U' is not assignable to type 'U & { children?: ReactNode; }'. ++ Type 'U' is not assignable to type '{ children?: ReactNode; }'. + file.tsx(11,5): error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. + + +@@= skipped -17, +17 lines =@@ + props: U; + ~~~~~ !!! error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. - !!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. - !!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. +-!!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. +-!!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. -!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: React.ReactNode; }` constraint. -+!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: ReactNode | undefined; }` constraint. ++!!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode; }'. ++!!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode; }'. ++!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: ReactNode; }` constraint. ~~~~~ !!! error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. render() { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType9.types b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType9.types index 4aca0afb4de..4534753ae39 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType9.types +++ b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType9.types @@ -27,9 +27,9 @@ export function makeP

(Ctor: React.ComponentClass

) { > : JSX.Element >Ctor : React.ComponentClass

->this.props : P & { children?: React.ReactNode | undefined; } +>this.props : P & { children?: React.ReactNode; } >this : this ->props : P & { children?: React.ReactNode | undefined; } +>props : P & { children?: React.ReactNode; } ); } diff --git a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType9.types.diff b/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType9.types.diff deleted file mode 100644 index 85a782124cd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxGenericAttributesType9.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.tsxGenericAttributesType9.types -+++ new.tsxGenericAttributesType9.types -@@= skipped -26, +26 lines =@@ - - > : JSX.Element - >Ctor : React.ComponentClass

-->this.props : P & { children?: React.ReactNode; } -+>this.props : P & { children?: React.ReactNode | undefined; } - >this : this -->props : P & { children?: React.ReactNode; } -+>props : P & { children?: React.ReactNode | undefined; } - - ); - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxInArrowFunction.types b/testdata/baselines/reference/submodule/conformance/tsxInArrowFunction.types index 17cdcc712c0..5d3f2e408a1 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxInArrowFunction.types +++ b/testdata/baselines/reference/submodule/conformance/tsxInArrowFunction.types @@ -5,7 +5,7 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { div: { ->div : { text?: string | undefined; } +>div : { text?: string; } text?: string; >text : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/tsxInArrowFunction.types.diff b/testdata/baselines/reference/submodule/conformance/tsxInArrowFunction.types.diff deleted file mode 100644 index 229c4e312f4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxInArrowFunction.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxInArrowFunction.types -+++ new.tsxInArrowFunction.types -@@= skipped -4, +4 lines =@@ - interface Element { } - interface IntrinsicElements { - div: { -->div : { text?: string; } -+>div : { text?: string | undefined; } - - text?: string; - >text : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxIntrinsicAttributeErrors.types b/testdata/baselines/reference/submodule/conformance/tsxIntrinsicAttributeErrors.types index ee2c806f694..d5fbc436f1e 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxIntrinsicAttributeErrors.types +++ b/testdata/baselines/reference/submodule/conformance/tsxIntrinsicAttributeErrors.types @@ -17,7 +17,7 @@ declare namespace JSX { } interface IntrinsicElements { div: { ->div : { text?: string | undefined; width?: number | undefined; } +>div : { text?: string; width?: number; } text?: string; >text : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/tsxIntrinsicAttributeErrors.types.diff b/testdata/baselines/reference/submodule/conformance/tsxIntrinsicAttributeErrors.types.diff deleted file mode 100644 index be68c3d91fc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxIntrinsicAttributeErrors.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxIntrinsicAttributeErrors.types -+++ new.tsxIntrinsicAttributeErrors.types -@@= skipped -16, +16 lines =@@ - } - interface IntrinsicElements { - div: { -->div : { text?: string; width?: number; } -+>div : { text?: string | undefined; width?: number | undefined; } - - text?: string; - >text : string | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxReactComponentWithDefaultTypeParameter3.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxReactComponentWithDefaultTypeParameter3.errors.txt index 4f010d81f98..54f82ec391b 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxReactComponentWithDefaultTypeParameter3.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxReactComponentWithDefaultTypeParameter3.errors.txt @@ -28,4 +28,4 @@ file.tsx(21,18): error TS2322: Type 'string' is not assignable to type 'number'. let x2 = ~ !!! error TS2322: Type 'string' is not assignable to type 'number'. -!!! related TS6500 file.tsx:6:5: The expected type comes from property 'a' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode | undefined; }' \ No newline at end of file +!!! related TS6500 file.tsx:6:5: The expected type comes from property 'a' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxReactComponentWithDefaultTypeParameter3.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxReactComponentWithDefaultTypeParameter3.errors.txt.diff new file mode 100644 index 00000000000..58b21c2642d --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxReactComponentWithDefaultTypeParameter3.errors.txt.diff @@ -0,0 +1,8 @@ +--- old.tsxReactComponentWithDefaultTypeParameter3.errors.txt ++++ new.tsxReactComponentWithDefaultTypeParameter3.errors.txt +@@= skipped -27, +27 lines =@@ + let x2 = + ~ + !!! error TS2322: Type 'string' is not assignable to type 'number'. +-!!! related TS6500 file.tsx:6:5: The expected type comes from property 'a' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:6:5: The expected type comes from property 'a' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSfcReturnUndefinedStrictNullChecks.types b/testdata/baselines/reference/submodule/conformance/tsxSfcReturnUndefinedStrictNullChecks.types index 30f369c107f..ab00158d364 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxSfcReturnUndefinedStrictNullChecks.types +++ b/testdata/baselines/reference/submodule/conformance/tsxSfcReturnUndefinedStrictNullChecks.types @@ -13,8 +13,8 @@ const Foo = (props: any) => undefined; >undefined : undefined function Greet(x: {name?: string}) { ->Greet : (x: { name?: string | undefined; }) => undefined ->x : { name?: string | undefined; } +>Greet : (x: { name?: string; }) => undefined +>x : { name?: string; } >name : string | undefined return undefined; @@ -30,5 +30,5 @@ const foo = ; const G = ; >G : JSX.Element > : JSX.Element ->Greet : (x: { name?: string | undefined; }) => undefined +>Greet : (x: { name?: string; }) => undefined diff --git a/testdata/baselines/reference/submodule/conformance/tsxSfcReturnUndefinedStrictNullChecks.types.diff b/testdata/baselines/reference/submodule/conformance/tsxSfcReturnUndefinedStrictNullChecks.types.diff deleted file mode 100644 index e7aaec4adc1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxSfcReturnUndefinedStrictNullChecks.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.tsxSfcReturnUndefinedStrictNullChecks.types -+++ new.tsxSfcReturnUndefinedStrictNullChecks.types -@@= skipped -12, +12 lines =@@ - >undefined : undefined - - function Greet(x: {name?: string}) { -->Greet : (x: { name?: string; }) => undefined -->x : { name?: string; } -+>Greet : (x: { name?: string | undefined; }) => undefined -+>x : { name?: string | undefined; } - >name : string | undefined - - return undefined; -@@= skipped -17, +17 lines =@@ - const G = ; - >G : JSX.Element - > : JSX.Element -->Greet : (x: { name?: string; }) => undefined -+>Greet : (x: { name?: string | undefined; }) => undefined diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution10.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution10.errors.txt index e7a6a17c250..2068dfacf2c 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution10.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution10.errors.txt @@ -28,17 +28,17 @@ file.tsx(24,15): error TS2322: Type 'true' is not assignable to type '2'. let y = ; ~ !!! error TS2322: Type '3' is not assignable to type '2'. -!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode; }' let y1 = ; ~ !!! error TS2322: Type 'string' is not assignable to type '2'. -!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode; }' let y2 = ; ~ !!! error TS2322: Type '3' is not assignable to type '2'. -!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode; }' let y3 = ; ~ !!! error TS2322: Type 'true' is not assignable to type '2'. -!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution10.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution10.errors.txt.diff new file mode 100644 index 00000000000..f303501c693 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution10.errors.txt.diff @@ -0,0 +1,24 @@ +--- old.tsxSpreadAttributesResolution10.errors.txt ++++ new.tsxSpreadAttributesResolution10.errors.txt +@@= skipped -27, +27 lines =@@ + let y = ; + ~ + !!! error TS2322: Type '3' is not assignable to type '2'. +-!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode; }' + let y1 = ; + ~ + !!! error TS2322: Type 'string' is not assignable to type '2'. +-!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode; }' + let y2 = ; + ~ + !!! error TS2322: Type '3' is not assignable to type '2'. +-!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode; }' + let y3 = ; + ~ + !!! error TS2322: Type 'true' is not assignable to type '2'. +-!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & OptionProp & { children?: ReactNode; }' + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution12.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution12.errors.txt index 58499bdca39..024d831ae36 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution12.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution12.errors.txt @@ -37,11 +37,11 @@ file.tsx(32,11): error TS2322: Type '{ x: 2; overwrite: string; y: true; }' is n let x = ~ !!! error TS2322: Type 'true' is not assignable to type 'false'. -!!! related TS6500 file.tsx:16:5: The expected type comes from property 'y' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:16:5: The expected type comes from property 'y' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode; }' let x1 = ~ !!! error TS2322: Type '3' is not assignable to type '2'. -!!! related TS6500 file.tsx:15:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:15:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode; }' let x2 = let x3 = ~~~~~~~~~~~~~ diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution12.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution12.errors.txt.diff new file mode 100644 index 00000000000..c9722a34e03 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution12.errors.txt.diff @@ -0,0 +1,16 @@ +--- old.tsxSpreadAttributesResolution12.errors.txt ++++ new.tsxSpreadAttributesResolution12.errors.txt +@@= skipped -36, +36 lines =@@ + let x = + ~ + !!! error TS2322: Type 'true' is not assignable to type 'false'. +-!!! related TS6500 file.tsx:16:5: The expected type comes from property 'y' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:16:5: The expected type comes from property 'y' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode; }' + let x1 = + ~ + !!! error TS2322: Type '3' is not assignable to type '2'. +-!!! related TS6500 file.tsx:15:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:15:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode; }' + let x2 = + let x3 = + ~~~~~~~~~~~~~ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution2.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution2.errors.txt index 9e95c25a443..144bf854e72 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution2.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution2.errors.txt @@ -5,8 +5,8 @@ file.tsx(24,21): error TS2322: Type 'true' is not assignable to type '"2"'. file.tsx(25,10): error TS2322: Type '{ x: number; y: "2"; }' is not assignable to type 'PoisonedProp'. Types of property 'x' are incompatible. Type 'number' is not assignable to type 'string'. -file.tsx(26,40): error TS2322: Type '{ x: number; y: "2"; X: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }'. - Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }'. Did you mean 'x'? +file.tsx(26,40): error TS2322: Type '{ x: number; y: "2"; X: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'. + Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'. Did you mean 'x'? ==== file.tsx (6 errors) ==== @@ -40,10 +40,10 @@ file.tsx(26,40): error TS2322: Type '{ x: number; y: "2"; X: string; }' is not a let z = ; ~ !!! error TS2322: Type 'boolean' is not assignable to type 'string'. -!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }' ~ !!! error TS2322: Type 'true' is not assignable to type '"2"'. -!!! related TS6500 file.tsx:7:5: The expected type comes from property 'y' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:7:5: The expected type comes from property 'y' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }' let w = ; ~~~~~~~~ !!! error TS2322: Type '{ x: number; y: "2"; }' is not assignable to type 'PoisonedProp'. @@ -51,5 +51,5 @@ file.tsx(26,40): error TS2322: Type '{ x: number; y: "2"; X: string; }' is not a !!! error TS2322: Type 'number' is not assignable to type 'string'. let w1 = ; ~ -!!! error TS2322: Type '{ x: number; y: "2"; X: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }'. -!!! error TS2322: Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }'. Did you mean 'x'? \ No newline at end of file +!!! error TS2322: Type '{ x: number; y: "2"; X: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'. +!!! error TS2322: Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'. Did you mean 'x'? \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution2.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution2.errors.txt.diff new file mode 100644 index 00000000000..a6e839351b4 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution2.errors.txt.diff @@ -0,0 +1,34 @@ +--- old.tsxSpreadAttributesResolution2.errors.txt ++++ new.tsxSpreadAttributesResolution2.errors.txt +@@= skipped -4, +4 lines =@@ + file.tsx(25,10): error TS2322: Type '{ x: number; y: "2"; }' is not assignable to type 'PoisonedProp'. + Types of property 'x' are incompatible. + Type 'number' is not assignable to type 'string'. +-file.tsx(26,40): error TS2322: Type '{ x: number; y: "2"; X: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }'. +- Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }'. Did you mean 'x'? ++file.tsx(26,40): error TS2322: Type '{ x: number; y: "2"; X: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'. ++ Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'. Did you mean 'x'? + + + ==== file.tsx (6 errors) ==== +@@= skipped -35, +35 lines =@@ + let z = ; + ~ + !!! error TS2322: Type 'boolean' is not assignable to type 'string'. +-!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:6:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }' + ~ + !!! error TS2322: Type 'true' is not assignable to type '"2"'. +-!!! related TS6500 file.tsx:7:5: The expected type comes from property 'y' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:7:5: The expected type comes from property 'y' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }' + let w = ; + ~~~~~~~~ + !!! error TS2322: Type '{ x: number; y: "2"; }' is not assignable to type 'PoisonedProp'. +@@= skipped -11, +11 lines =@@ + !!! error TS2322: Type 'number' is not assignable to type 'string'. + let w1 = ; + ~ +-!!! error TS2322: Type '{ x: number; y: "2"; X: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }'. +-!!! error TS2322: Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode | undefined; }'. Did you mean 'x'? ++!!! error TS2322: Type '{ x: number; y: "2"; X: string; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'. ++!!! error TS2322: Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'. Did you mean 'x'? \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution5.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution5.errors.txt index a0a39b905b0..5f0348b27e4 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution5.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution5.errors.txt @@ -2,7 +2,7 @@ file.tsx(22,10): error TS2322: Type '{ x: string; y: number; }' is not assignabl Types of property 'y' are incompatible. Type 'number' is not assignable to type '2'. file.tsx(28,5): error TS2564: Property 'greeting' has no initializer and is not definitely assigned in the constructor. -file.tsx(35,10): error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. +file.tsx(35,10): error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. ==== file.tsx (3 errors) ==== @@ -48,4 +48,4 @@ file.tsx(35,10): error TS2559: Type '{ prop1: boolean; }' has no properties in c // Ok let e = ; ~~~~~~~~~ -!!! error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. \ No newline at end of file +!!! error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution5.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution5.errors.txt.diff new file mode 100644 index 00000000000..e8627fea28f --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution5.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.tsxSpreadAttributesResolution5.errors.txt ++++ new.tsxSpreadAttributesResolution5.errors.txt +@@= skipped -1, +1 lines =@@ + Types of property 'y' are incompatible. + Type 'number' is not assignable to type '2'. + file.tsx(28,5): error TS2564: Property 'greeting' has no initializer and is not definitely assigned in the constructor. +-file.tsx(35,10): error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. ++file.tsx(35,10): error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. + + + ==== file.tsx (3 errors) ==== +@@= skipped -46, +46 lines =@@ + // Ok + let e = ; + ~~~~~~~~~ +-!!! error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. ++!!! error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution6.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution6.errors.txt index 5594643708e..a32f1a5c1ff 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution6.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution6.errors.txt @@ -1,4 +1,4 @@ -file.tsx(15,10): error TS2322: Type '{ editable: true; }' is not assignable to type 'IntrinsicAttributes & (IntrinsicClassAttributes & (TextProps & { children?: ReactNode | undefined; }))'. +file.tsx(15,10): error TS2322: Type '{ editable: true; }' is not assignable to type 'IntrinsicAttributes & (IntrinsicClassAttributes & (TextProps & { children?: ReactNode; }))'. Property 'onEdit' is missing in type '{ editable: true; }' but required in type '{ editable: true; onEdit: (newText: string) => void; }'. @@ -19,7 +19,7 @@ file.tsx(15,10): error TS2322: Type '{ editable: true; }' is not assignable to t // Error let x = ~~~~~~~~~~~~~ -!!! error TS2322: Type '{ editable: true; }' is not assignable to type 'IntrinsicAttributes & (IntrinsicClassAttributes & (TextProps & { children?: ReactNode | undefined; }))'. +!!! error TS2322: Type '{ editable: true; }' is not assignable to type 'IntrinsicAttributes & (IntrinsicClassAttributes & (TextProps & { children?: ReactNode; }))'. !!! error TS2322: Property 'onEdit' is missing in type '{ editable: true; }' but required in type '{ editable: true; onEdit: (newText: string) => void; }'. !!! related TS2728 file.tsx:6:36: 'onEdit' is declared here. diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution6.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution6.errors.txt.diff new file mode 100644 index 00000000000..3fad83f6d0b --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadAttributesResolution6.errors.txt.diff @@ -0,0 +1,17 @@ +--- old.tsxSpreadAttributesResolution6.errors.txt ++++ new.tsxSpreadAttributesResolution6.errors.txt +@@= skipped -0, +0 lines =@@ +-file.tsx(15,10): error TS2322: Type '{ editable: true; }' is not assignable to type 'IntrinsicAttributes & (IntrinsicClassAttributes & (TextProps & { children?: ReactNode | undefined; }))'. ++file.tsx(15,10): error TS2322: Type '{ editable: true; }' is not assignable to type 'IntrinsicAttributes & (IntrinsicClassAttributes & (TextProps & { children?: ReactNode; }))'. + Property 'onEdit' is missing in type '{ editable: true; }' but required in type '{ editable: true; onEdit: (newText: string) => void; }'. + + +@@= skipped -18, +18 lines =@@ + // Error + let x = + ~~~~~~~~~~~~~ +-!!! error TS2322: Type '{ editable: true; }' is not assignable to type 'IntrinsicAttributes & (IntrinsicClassAttributes & (TextProps & { children?: ReactNode | undefined; }))'. ++!!! error TS2322: Type '{ editable: true; }' is not assignable to type 'IntrinsicAttributes & (IntrinsicClassAttributes & (TextProps & { children?: ReactNode; }))'. + !!! error TS2322: Property 'onEdit' is missing in type '{ editable: true; }' but required in type '{ editable: true; onEdit: (newText: string) => void; }'. + !!! related TS2728 file.tsx:6:36: 'onEdit' is declared here. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildren.types b/testdata/baselines/reference/submodule/conformance/tsxSpreadChildren.types index 4ca782c4a2a..76f9a9aa790 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildren.types +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadChildren.types @@ -33,11 +33,11 @@ function Todo(prop: { key: number, todo: string }) { >div : any >prop.key.toString() + prop.todo : string >prop.key.toString() : string ->prop.key.toString : (radix?: number | undefined) => string +>prop.key.toString : (radix?: number) => string >prop.key : number >prop : { key: number; todo: string; } >key : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >prop.todo : string >prop : { key: number; todo: string; } >todo : string diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildren.types.diff b/testdata/baselines/reference/submodule/conformance/tsxSpreadChildren.types.diff deleted file mode 100644 index 02b298e3d8e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildren.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.tsxSpreadChildren.types -+++ new.tsxSpreadChildren.types -@@= skipped -32, +32 lines =@@ - >div : any - >prop.key.toString() + prop.todo : string - >prop.key.toString() : string -->prop.key.toString : (radix?: number) => string -+>prop.key.toString : (radix?: number | undefined) => string - >prop.key : number - >prop : { key: number; todo: string; } - >key : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >prop.todo : string - >prop : { key: number; todo: string; } - >todo : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types b/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types index 6b246b3a8f9..6c3be980f61 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types @@ -33,11 +33,11 @@ function Todo(prop: { key: number, todo: string }) { >div : any >prop.key.toString() + prop.todo : string >prop.key.toString() : string ->prop.key.toString : (radix?: number | undefined) => string +>prop.key.toString : (radix?: number) => string >prop.key : number >prop : { key: number; todo: string; } >key : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >prop.todo : string >prop : { key: number; todo: string; } >todo : string diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types.diff deleted file mode 100644 index 469345525c4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types -+++ new.tsxSpreadChildrenInvalidType(jsx=react,target=es2015).types -@@= skipped -32, +32 lines =@@ - >div : any - >prop.key.toString() + prop.todo : string - >prop.key.toString() : string -->prop.key.toString : (radix?: number) => string -+>prop.key.toString : (radix?: number | undefined) => string - >prop.key : number - >prop : { key: number; todo: string; } - >key : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >prop.todo : string - >prop : { key: number; todo: string; } - >todo : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types b/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types index 0c882b5e3b4..1039a0843dc 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types @@ -33,11 +33,11 @@ function Todo(prop: { key: number, todo: string }) { >div : any >prop.key.toString() + prop.todo : string >prop.key.toString() : string ->prop.key.toString : (radix?: number | undefined) => string +>prop.key.toString : (radix?: number) => string >prop.key : number >prop : { key: number; todo: string; } >key : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >prop.todo : string >prop : { key: number; todo: string; } >todo : string diff --git a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types.diff deleted file mode 100644 index e924d65e7bc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types -+++ new.tsxSpreadChildrenInvalidType(jsx=react-jsx,target=es2015).types -@@= skipped -32, +32 lines =@@ - >div : any - >prop.key.toString() + prop.todo : string - >prop.key.toString() : string -->prop.key.toString : (radix?: number) => string -+>prop.key.toString : (radix?: number | undefined) => string - >prop.key : number - >prop : { key: number; todo: string; } - >key : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >prop.todo : string - >prop : { key: number; todo: string; } - >todo : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.errors.txt index 73a4496ffd7..825f8dbc3bc 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.errors.txt @@ -19,7 +19,7 @@ file.tsx(19,13): error TS2769: No overload matches this call. Type 'boolean' is not assignable to type 'number'. file.tsx(27,13): error TS2769: No overload matches this call. The last overload gave the following error. - Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number | undefined; }'. + Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number; }'. file.tsx(28,40): error TS2769: No overload matches this call. The last overload gave the following error. Type 'string' is not assignable to type 'number'. @@ -99,7 +99,7 @@ file.tsx(38,29): error TS2769: No overload matches this call. ~~~~~~~~~~~~~~~ !!! error TS2769: No overload matches this call. !!! error TS2769: The last overload gave the following error. -!!! error TS2769: Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number | undefined; }'. +!!! error TS2769: Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number; }'. !!! related TS2728 file.tsx:24:38: 'yy' is declared here. !!! related TS2771 file.tsx:24:18: The last overload is declared here. const d2 = @@ -107,7 +107,7 @@ file.tsx(38,29): error TS2769: No overload matches this call. !!! error TS2769: No overload matches this call. !!! error TS2769: The last overload gave the following error. !!! error TS2769: Type 'string' is not assignable to type 'number'. -!!! related TS6500 file.tsx:24:50: The expected type comes from property 'direction' which is declared here on type 'IntrinsicAttributes & { yy: string; direction?: number | undefined; }' +!!! related TS6500 file.tsx:24:50: The expected type comes from property 'direction' which is declared here on type 'IntrinsicAttributes & { yy: string; direction?: number; }' !!! related TS2771 file.tsx:24:18: The last overload is declared here. declare function TestingOptional(a: {y1?: string, y2?: number}): JSX.Element; @@ -120,27 +120,27 @@ file.tsx(38,29): error TS2769: No overload matches this call. !!! error TS2769: No overload matches this call. !!! error TS2769: The last overload gave the following error. !!! error TS2769: Type 'string' is not assignable to type 'boolean'. -!!! related TS6500 file.tsx:32:64: The expected type comes from property 'y3' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' +!!! related TS6500 file.tsx:32:64: The expected type comes from property 'y3' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number; y3: boolean; }' !!! related TS2771 file.tsx:32:18: The last overload is declared here. const e2 = ~~ !!! error TS2769: No overload matches this call. !!! error TS2769: The last overload gave the following error. !!! error TS2769: Type 'string' is not assignable to type 'boolean'. -!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' +!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number; y3: boolean; }' !!! related TS2771 file.tsx:32:18: The last overload is declared here. const e3 = ~~ !!! error TS2769: No overload matches this call. !!! error TS2769: The last overload gave the following error. !!! error TS2769: Type 'string' is not assignable to type 'boolean'. -!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' +!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number; y3: boolean; }' !!! related TS2771 file.tsx:32:18: The last overload is declared here. const e4 = Hi ~~ !!! error TS2769: No overload matches this call. !!! error TS2769: The last overload gave the following error. !!! error TS2769: Type 'string' is not assignable to type 'boolean'. -!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' +!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number; y3: boolean; }' !!! related TS2771 file.tsx:32:18: The last overload is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.errors.txt.diff index 88bdf4ee6c1..c49f43bbe7f 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.errors.txt.diff @@ -45,13 +45,14 @@ - Types of property '"extra-data"' are incompatible. - Type 'boolean' is not assignable to type 'string'. - Overload 2 of 2, '(n: { yy: string; direction?: number | undefined; }): Element', gave the following error. -+ The last overload gave the following error. - Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number | undefined; }'. +- Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number | undefined; }'. -file.tsx(28,13): error TS2769: No overload matches this call. - Overload 1 of 2, '(j: { "extra-data": string; }): Element', gave the following error. - Type '{ yy: string; direction: string; }' is not assignable to type 'IntrinsicAttributes & { "extra-data": string; }'. - Property 'yy' does not exist on type 'IntrinsicAttributes & { "extra-data": string; }'. - Overload 2 of 2, '(n: { yy: string; direction?: number | undefined; }): Element', gave the following error. ++ The last overload gave the following error. ++ Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number; }'. +file.tsx(28,40): error TS2769: No overload matches this call. + The last overload gave the following error. Type 'string' is not assignable to type 'number'. @@ -169,8 +170,9 @@ -!!! error TS2769: Types of property '"extra-data"' are incompatible. -!!! error TS2769: Type 'boolean' is not assignable to type 'string'. -!!! error TS2769: Overload 2 of 2, '(n: { yy: string; direction?: number | undefined; }): Element', gave the following error. +-!!! error TS2769: Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number | undefined; }'. +!!! error TS2769: The last overload gave the following error. - !!! error TS2769: Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number | undefined; }'. ++!!! error TS2769: Property 'yy' is missing in type '{ "extra-data": true; }' but required in type '{ yy: string; direction?: number; }'. !!! related TS2728 file.tsx:24:38: 'yy' is declared here. +!!! related TS2771 file.tsx:24:18: The last overload is declared here. const d2 = @@ -183,7 +185,8 @@ -!!! error TS2769: Overload 2 of 2, '(n: { yy: string; direction?: number | undefined; }): Element', gave the following error. +!!! error TS2769: The last overload gave the following error. !!! error TS2769: Type 'string' is not assignable to type 'number'. - !!! related TS6500 file.tsx:24:50: The expected type comes from property 'direction' which is declared here on type 'IntrinsicAttributes & { yy: string; direction?: number | undefined; }' +-!!! related TS6500 file.tsx:24:50: The expected type comes from property 'direction' which is declared here on type 'IntrinsicAttributes & { yy: string; direction?: number | undefined; }' ++!!! related TS6500 file.tsx:24:50: The expected type comes from property 'direction' which is declared here on type 'IntrinsicAttributes & { yy: string; direction?: number; }' +!!! related TS2771 file.tsx:24:18: The last overload is declared here. declare function TestingOptional(a: {y1?: string, y2?: number}): JSX.Element; @@ -204,7 +207,8 @@ !!! error TS2769: Type 'string' is not assignable to type 'boolean'. -!!! related TS6500 file.tsx:30:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1?: string | undefined; y2?: number | undefined; }' -!!! related TS6500 file.tsx:31:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1?: string | undefined; y2?: number | undefined; children: Element; }' - !!! related TS6500 file.tsx:32:64: The expected type comes from property 'y3' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' +-!!! related TS6500 file.tsx:32:64: The expected type comes from property 'y3' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' ++!!! related TS6500 file.tsx:32:64: The expected type comes from property 'y3' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number; y3: boolean; }' +!!! related TS2771 file.tsx:32:18: The last overload is declared here. const e2 = - ~~~~~~~~~~~~~~~ @@ -219,7 +223,8 @@ -!!! error TS2769: Overload 3 of 3, '(a: { y1: boolean; y2?: number | undefined; y3: boolean; }): Element', gave the following error. +!!! error TS2769: The last overload gave the following error. !!! error TS2769: Type 'string' is not assignable to type 'boolean'. - !!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' +-!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' ++!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number; y3: boolean; }' +!!! related TS2771 file.tsx:32:18: The last overload is declared here. const e3 = - ~~~~~~~~~~~~~~~ @@ -234,7 +239,8 @@ +!!! error TS2769: The last overload gave the following error. !!! error TS2769: Type 'string' is not assignable to type 'boolean'. -!!! related TS6500 file.tsx:31:64: The expected type comes from property 'children' which is declared here on type 'IntrinsicAttributes & { y1?: string | undefined; y2?: number | undefined; children: Element; }' - !!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' +-!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' ++!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number; y3: boolean; }' +!!! related TS2771 file.tsx:32:18: The last overload is declared here. const e4 = Hi - ~~~~~~~~~~~~~~~ @@ -249,6 +255,7 @@ +!!! error TS2769: The last overload gave the following error. !!! error TS2769: Type 'string' is not assignable to type 'boolean'. -!!! related TS6500 file.tsx:31:64: The expected type comes from property 'children' which is declared here on type 'IntrinsicAttributes & { y1?: string | undefined; y2?: number | undefined; children: Element; }' - !!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' +-!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number | undefined; y3: boolean; }' ++!!! related TS6500 file.tsx:32:38: The expected type comes from property 'y1' which is declared here on type 'IntrinsicAttributes & { y1: boolean; y2?: number; y3: boolean; }' +!!! related TS2771 file.tsx:32:18: The last overload is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.types b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.types index fbf11f52162..c7b4f11b9d8 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.types +++ b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.types @@ -96,14 +96,14 @@ const c7 = ; // Should error as there is extra attribu >yy : true declare function TestingOneThing(j: {"extra-data": string}): JSX.Element; ->TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number | undefined; }): JSX.Element; } +>TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number; }): JSX.Element; } >j : { "extra-data": string; } >"extra-data" : string >JSX : any declare function TestingOneThing(n: {yy: string, direction?: number}): JSX.Element; ->TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number | undefined; }): JSX.Element; } ->n : { yy: string; direction?: number | undefined; } +>TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number; }): JSX.Element; } +>n : { yy: string; direction?: number; } >yy : string >direction : number | undefined >JSX : any @@ -112,26 +112,26 @@ declare function TestingOneThing(n: {yy: string, direction?: number}): JSX.Eleme const d1 = >d1 : JSX.Element > : JSX.Element ->TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number | undefined; }): JSX.Element; } +>TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number; }): JSX.Element; } >extra-data : true const d2 = >d2 : JSX.Element > : JSX.Element ->TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number | undefined; }): JSX.Element; } +>TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number; }): JSX.Element; } >yy : string >direction : string declare function TestingOptional(a: {y1?: string, y2?: number}): JSX.Element; ->TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } ->a : { y1?: string | undefined; y2?: number | undefined; } +>TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } +>a : { y1?: string; y2?: number; } >y1 : string | undefined >y2 : number | undefined >JSX : any declare function TestingOptional(a: {y1?: string, y2?: number, children: JSX.Element}): JSX.Element; ->TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } ->a : { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; } +>TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } +>a : { y1?: string; y2?: number; children: JSX.Element; } >y1 : string | undefined >y2 : number | undefined >children : JSX.Element @@ -139,8 +139,8 @@ declare function TestingOptional(a: {y1?: string, y2?: number, children: JSX.Ele >JSX : any declare function TestingOptional(a: {y1: boolean, y2?: number, y3: boolean}): JSX.Element; ->TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } ->a : { y1: boolean; y2?: number | undefined; y3: boolean; } +>TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } +>a : { y1: boolean; y2?: number; y3: boolean; } >y1 : boolean >y2 : number | undefined >y3 : boolean @@ -150,14 +150,14 @@ declare function TestingOptional(a: {y1: boolean, y2?: number, y3: boolean}): JS const e1 = >e1 : JSX.Element > : JSX.Element ->TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } +>TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } >y1 : true >y3 : string const e2 = >e2 : JSX.Element > : JSX.Element ->TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } +>TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } >y1 : string >y2 : number >1000 : 1000 @@ -166,7 +166,7 @@ const e2 = const e3 = >e3 : JSX.Element > : JSX.Element ->TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } +>TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } >y1 : string >y2 : number >1000 : 1000 @@ -175,9 +175,9 @@ const e3 = const e4 = Hi >e4 : JSX.Element >Hi : JSX.Element ->TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } +>TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } >y1 : string >y2 : number >1000 : 1000 ->TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } +>TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } diff --git a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.types.diff b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.types.diff deleted file mode 100644 index ccc61fb5f9a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponentOverload4.types.diff +++ /dev/null @@ -1,101 +0,0 @@ ---- old.tsxStatelessFunctionComponentOverload4.types -+++ new.tsxStatelessFunctionComponentOverload4.types -@@= skipped -95, +95 lines =@@ - >yy : true - - declare function TestingOneThing(j: {"extra-data": string}): JSX.Element; -->TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number; }): JSX.Element; } -+>TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number | undefined; }): JSX.Element; } - >j : { "extra-data": string; } - >"extra-data" : string - >JSX : any - - declare function TestingOneThing(n: {yy: string, direction?: number}): JSX.Element; -->TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number; }): JSX.Element; } -->n : { yy: string; direction?: number; } -+>TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number | undefined; }): JSX.Element; } -+>n : { yy: string; direction?: number | undefined; } - >yy : string - >direction : number | undefined - >JSX : any -@@= skipped -16, +16 lines =@@ - const d1 = - >d1 : JSX.Element - > : JSX.Element -->TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number; }): JSX.Element; } -+>TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number | undefined; }): JSX.Element; } - >extra-data : true - - const d2 = - >d2 : JSX.Element - > : JSX.Element -->TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number; }): JSX.Element; } -+>TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number | undefined; }): JSX.Element; } - >yy : string - >direction : string - - declare function TestingOptional(a: {y1?: string, y2?: number}): JSX.Element; -->TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } -->a : { y1?: string; y2?: number; } -+>TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } -+>a : { y1?: string | undefined; y2?: number | undefined; } - >y1 : string | undefined - >y2 : number | undefined - >JSX : any - - declare function TestingOptional(a: {y1?: string, y2?: number, children: JSX.Element}): JSX.Element; -->TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } -->a : { y1?: string; y2?: number; children: JSX.Element; } -+>TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } -+>a : { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; } - >y1 : string | undefined - >y2 : number | undefined - >children : JSX.Element -@@= skipped -27, +27 lines =@@ - >JSX : any - - declare function TestingOptional(a: {y1: boolean, y2?: number, y3: boolean}): JSX.Element; -->TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } -->a : { y1: boolean; y2?: number; y3: boolean; } -+>TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } -+>a : { y1: boolean; y2?: number | undefined; y3: boolean; } - >y1 : boolean - >y2 : number | undefined - >y3 : boolean -@@= skipped -11, +11 lines =@@ - const e1 = - >e1 : JSX.Element - > : JSX.Element -->TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } -+>TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } - >y1 : true - >y3 : string - - const e2 = - >e2 : JSX.Element - > : JSX.Element -->TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } -+>TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } - >y1 : string - >y2 : number - >1000 : 1000 -@@= skipped -16, +16 lines =@@ - const e3 = - >e3 : JSX.Element - > : JSX.Element -->TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } -+>TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } - >y1 : string - >y2 : number - >1000 : 1000 -@@= skipped -9, +9 lines =@@ - const e4 = Hi - >e4 : JSX.Element - >Hi : JSX.Element -->TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } -+>TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } - >y1 : string - >y2 : number - >1000 : 1000 -->TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } -+>TestingOptional : { (a: { y1?: string | undefined; y2?: number | undefined; }): JSX.Element; (a: { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number | undefined; y3: boolean; }): JSX.Element; } diff --git a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.errors.txt index 2cd79c3387d..a552b34d55e 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.errors.txt @@ -1,6 +1,6 @@ file.tsx(13,2): error TS2564: Property 'greeting' has no initializer and is not definitely assigned in the constructor. -file.tsx(21,16): error TS2322: Type '{ ref: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string | undefined; }'. - Property 'ref' does not exist on type 'IntrinsicAttributes & { name?: string | undefined; }'. +file.tsx(21,16): error TS2322: Type '{ ref: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string; }'. + Property 'ref' does not exist on type 'IntrinsicAttributes & { name?: string; }'. file.tsx(27,42): error TS2551: Property 'subtr' does not exist on type 'string'. Did you mean 'substr'? file.tsx(29,33): error TS2339: Property 'notARealProperty' does not exist on type 'BigGreeter'. file.tsx(37,26): error TS2339: Property 'propertyNotOnHtmlDivElement' does not exist on type 'HTMLDivElement'. @@ -31,8 +31,8 @@ file.tsx(37,26): error TS2339: Property 'propertyNotOnHtmlDivElement' does not e // Error - not allowed to specify 'ref' on SFCs let c = ; ~~~ -!!! error TS2322: Type '{ ref: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string | undefined; }'. -!!! error TS2322: Property 'ref' does not exist on type 'IntrinsicAttributes & { name?: string | undefined; }'. +!!! error TS2322: Type '{ ref: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string; }'. +!!! error TS2322: Property 'ref' does not exist on type 'IntrinsicAttributes & { name?: string; }'. // OK - ref is valid for classes diff --git a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.errors.txt.diff new file mode 100644 index 00000000000..b22fa2219fd --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.errors.txt.diff @@ -0,0 +1,22 @@ +--- old.tsxStatelessFunctionComponents2.errors.txt ++++ new.tsxStatelessFunctionComponents2.errors.txt +@@= skipped -0, +0 lines =@@ + file.tsx(13,2): error TS2564: Property 'greeting' has no initializer and is not definitely assigned in the constructor. +-file.tsx(21,16): error TS2322: Type '{ ref: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string | undefined; }'. +- Property 'ref' does not exist on type 'IntrinsicAttributes & { name?: string | undefined; }'. ++file.tsx(21,16): error TS2322: Type '{ ref: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string; }'. ++ Property 'ref' does not exist on type 'IntrinsicAttributes & { name?: string; }'. + file.tsx(27,42): error TS2551: Property 'subtr' does not exist on type 'string'. Did you mean 'substr'? + file.tsx(29,33): error TS2339: Property 'notARealProperty' does not exist on type 'BigGreeter'. + file.tsx(37,26): error TS2339: Property 'propertyNotOnHtmlDivElement' does not exist on type 'HTMLDivElement'. +@@= skipped -30, +30 lines =@@ + // Error - not allowed to specify 'ref' on SFCs + let c = ; + ~~~ +-!!! error TS2322: Type '{ ref: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string | undefined; }'. +-!!! error TS2322: Property 'ref' does not exist on type 'IntrinsicAttributes & { name?: string | undefined; }'. ++!!! error TS2322: Type '{ ref: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string; }'. ++!!! error TS2322: Property 'ref' does not exist on type 'IntrinsicAttributes & { name?: string; }'. + + + // OK - ref is valid for classes \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.types b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.types index 385f7594085..3c6fb15ced2 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.types +++ b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.types @@ -7,20 +7,20 @@ import React = require('react'); >React : typeof React function Greet(x: {name?: string}) { ->Greet : (x: { name?: string | undefined; }) => JSX.Element ->x : { name?: string | undefined; } +>Greet : (x: { name?: string; }) => JSX.Element +>x : { name?: string; } >name : string | undefined return

Hello, {x}
; >
Hello, {x}
: JSX.Element >div : any ->x : { name?: string | undefined; } +>x : { name?: string; } >div : any } class BigGreeter extends React.Component<{ name?: string }, {}> { >BigGreeter : BigGreeter ->React.Component : React.Component<{ name?: string | undefined; }, {}> +>React.Component : React.Component<{ name?: string; }, {}> >React : typeof React >Component : typeof React.Component >name : string | undefined @@ -41,20 +41,20 @@ class BigGreeter extends React.Component<{ name?: string }, {}> { let a = ; >a : JSX.Element > : JSX.Element ->Greet : (x: { name?: string | undefined; }) => JSX.Element +>Greet : (x: { name?: string; }) => JSX.Element // OK - always valid to specify 'key' let b = ; >b : JSX.Element > : JSX.Element ->Greet : (x: { name?: string | undefined; }) => JSX.Element +>Greet : (x: { name?: string; }) => JSX.Element >key : string // Error - not allowed to specify 'ref' on SFCs let c = ; >c : JSX.Element > : JSX.Element ->Greet : (x: { name?: string | undefined; }) => JSX.Element +>Greet : (x: { name?: string; }) => JSX.Element >ref : string @@ -67,11 +67,11 @@ let d = x.greeting.substr(10)} />; >x => x.greeting.substr(10) : (x: BigGreeter) => string >x : BigGreeter >x.greeting.substr(10) : string ->x.greeting.substr : (from: number, length?: number | undefined) => string +>x.greeting.substr : (from: number, length?: number) => string >x.greeting : string >x : BigGreeter >greeting : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >10 : 10 // Error ('subtr' not on string) diff --git a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.types.diff b/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.types.diff deleted file mode 100644 index 854e725e353..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxStatelessFunctionComponents2.types.diff +++ /dev/null @@ -1,65 +0,0 @@ ---- old.tsxStatelessFunctionComponents2.types -+++ new.tsxStatelessFunctionComponents2.types -@@= skipped -6, +6 lines =@@ - >React : typeof React - - function Greet(x: {name?: string}) { -->Greet : (x: { name?: string; }) => JSX.Element -->x : { name?: string; } -+>Greet : (x: { name?: string | undefined; }) => JSX.Element -+>x : { name?: string | undefined; } - >name : string | undefined - - return
Hello, {x}
; - >
Hello, {x}
: JSX.Element - >div : any -->x : { name?: string; } -+>x : { name?: string | undefined; } - >div : any - } - - class BigGreeter extends React.Component<{ name?: string }, {}> { - >BigGreeter : BigGreeter -->React.Component : React.Component<{ name?: string; }, {}> -+>React.Component : React.Component<{ name?: string | undefined; }, {}> - >React : typeof React - >Component : typeof React.Component - >name : string | undefined -@@= skipped -34, +34 lines =@@ - let a = ; - >a : JSX.Element - > : JSX.Element -->Greet : (x: { name?: string; }) => JSX.Element -+>Greet : (x: { name?: string | undefined; }) => JSX.Element - - // OK - always valid to specify 'key' - let b = ; - >b : JSX.Element - > : JSX.Element -->Greet : (x: { name?: string; }) => JSX.Element -+>Greet : (x: { name?: string | undefined; }) => JSX.Element - >key : string - - // Error - not allowed to specify 'ref' on SFCs - let c = ; - >c : JSX.Element - > : JSX.Element -->Greet : (x: { name?: string; }) => JSX.Element -+>Greet : (x: { name?: string | undefined; }) => JSX.Element - >ref : string - - -@@= skipped -26, +26 lines =@@ - >x => x.greeting.substr(10) : (x: BigGreeter) => string - >x : BigGreeter - >x.greeting.substr(10) : string -->x.greeting.substr : (from: number, length?: number) => string -+>x.greeting.substr : (from: number, length?: number | undefined) => string - >x.greeting : string - >x : BigGreeter - >greeting : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >10 : 10 - - // Error ('subtr' not on string) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxTypeArgumentResolution.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxTypeArgumentResolution.errors.txt index 7b5754e8c0c..98baf3534dc 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxTypeArgumentResolution.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxTypeArgumentResolution.errors.txt @@ -37,12 +37,12 @@ file.tsx(55,47): error TS2322: Type 'string' is not assignable to type 'number'. x = a={10} b={20} />; // error ~ !!! error TS2322: Type 'number' is not assignable to type 'string'. -!!! related TS6500 file.tsx:7:5: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:7:5: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode; }' x = a={10} b={20}>; // error ~ !!! error TS2322: Type 'number' is not assignable to type 'string'. -!!! related TS6500 file.tsx:7:5: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:7:5: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode; }' x = a={10} b="hi" />; // error ~~~~~~~~~~ @@ -98,10 +98,10 @@ file.tsx(55,47): error TS2322: Type 'string' is not assignable to type 'number'. x = a="hi" b="hi" />; // error ~ !!! error TS2322: Type 'string' is not assignable to type 'number'. -!!! related TS6500 file.tsx:53:28: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & { a: string; } & { b: number; } & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:53:28: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & { a: string; } & { b: number; } & { children?: ReactNode; }' x = a="hi" b="hi">; // error ~ !!! error TS2322: Type 'string' is not assignable to type 'number'. -!!! related TS6500 file.tsx:55:28: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & { a: string; } & { b: number; } & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:55:28: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & { a: string; } & { b: number; } & { children?: ReactNode; }' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxTypeArgumentResolution.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxTypeArgumentResolution.errors.txt.diff new file mode 100644 index 00000000000..e5654af0acb --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxTypeArgumentResolution.errors.txt.diff @@ -0,0 +1,30 @@ +--- old.tsxTypeArgumentResolution.errors.txt ++++ new.tsxTypeArgumentResolution.errors.txt +@@= skipped -36, +36 lines =@@ + x = a={10} b={20} />; // error + ~ + !!! error TS2322: Type 'number' is not assignable to type 'string'. +-!!! related TS6500 file.tsx:7:5: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:7:5: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode; }' + + x = a={10} b={20}>; // error + ~ + !!! error TS2322: Type 'number' is not assignable to type 'string'. +-!!! related TS6500 file.tsx:7:5: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:7:5: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Prop & { children?: ReactNode; }' + + x = a={10} b="hi" />; // error + ~~~~~~~~~~ +@@= skipped -61, +61 lines =@@ + x = a="hi" b="hi" />; // error + ~ + !!! error TS2322: Type 'string' is not assignable to type 'number'. +-!!! related TS6500 file.tsx:53:28: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & { a: string; } & { b: number; } & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:53:28: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & { a: string; } & { b: number; } & { children?: ReactNode; }' + + x = a="hi" b="hi">; // error + ~ + !!! error TS2322: Type 'string' is not assignable to type 'number'. +-!!! related TS6500 file.tsx:55:28: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & { a: string; } & { b: number; } & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:55:28: The expected type comes from property 'b' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & { a: string; } & { b: number; } & { children?: ReactNode; }' + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxTypeErrors.types b/testdata/baselines/reference/submodule/conformance/tsxTypeErrors.types index 6c8a34861af..a51f312a3a9 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxTypeErrors.types +++ b/testdata/baselines/reference/submodule/conformance/tsxTypeErrors.types @@ -41,7 +41,7 @@ class MyClass { >MyClass : MyClass props: { ->props : { pt?: { x: number; y: number; } | undefined; name?: string | undefined; reqd: boolean; } +>props : { pt?: { x: number; y: number; }; name?: string; reqd: boolean; } pt?: { x: number; y: number; }; >pt : { x: number; y: number; } | undefined diff --git a/testdata/baselines/reference/submodule/conformance/tsxTypeErrors.types.diff b/testdata/baselines/reference/submodule/conformance/tsxTypeErrors.types.diff deleted file mode 100644 index cd966a417c3..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxTypeErrors.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxTypeErrors.types -+++ new.tsxTypeErrors.types -@@= skipped -40, +40 lines =@@ - >MyClass : MyClass - - props: { -->props : { pt?: { x: number; y: number; }; name?: string; reqd: boolean; } -+>props : { pt?: { x: number; y: number; } | undefined; name?: string | undefined; reqd: boolean; } - - pt?: { x: number; y: number; }; - >pt : { x: number; y: number; } | undefined \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxUnionElementType3.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxUnionElementType3.errors.txt index 3b6f6747ac4..8d48275c4d2 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxUnionElementType3.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxUnionElementType3.errors.txt @@ -40,7 +40,7 @@ file.tsx(38,10): error TS2741: Property 'x' is missing in type '{ "data-extra": let a = ; ~ !!! error TS2322: Type 'string' is not assignable to type 'number'. -!!! related TS6500 file.tsx:5:36: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & { x: number; } & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:5:36: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & { x: number; } & { children?: ReactNode; }' let a1 = ; let a2 = ; let b = diff --git a/testdata/baselines/reference/submodule/conformance/tsxUnionElementType3.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxUnionElementType3.errors.txt.diff new file mode 100644 index 00000000000..d0ea929732f --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxUnionElementType3.errors.txt.diff @@ -0,0 +1,11 @@ +--- old.tsxUnionElementType3.errors.txt ++++ new.tsxUnionElementType3.errors.txt +@@= skipped -39, +39 lines =@@ + let a = ; + ~ + !!! error TS2322: Type 'string' is not assignable to type 'number'. +-!!! related TS6500 file.tsx:5:36: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & { x: number; } & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:5:36: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & { x: number; } & { children?: ReactNode; }' + let a1 = ; + let a2 = ; + let b = \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxUnionElementType4.errors.txt b/testdata/baselines/reference/submodule/conformance/tsxUnionElementType4.errors.txt index 6825c5545d7..cbdb53dff0a 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxUnionElementType4.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/tsxUnionElementType4.errors.txt @@ -1,6 +1,6 @@ file.tsx(34,17): error TS2322: Type 'boolean' is not assignable to type 'number'. -file.tsx(36,22): error TS2322: Type '{ prop: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. - Property 'prop' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. +file.tsx(36,22): error TS2322: Type '{ prop: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. + Property 'prop' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. ==== file.tsx (2 errors) ==== @@ -40,10 +40,10 @@ file.tsx(36,22): error TS2322: Type '{ prop: true; }' is not assignable to type let a = ; ~ !!! error TS2322: Type 'boolean' is not assignable to type 'number'. -!!! related TS6500 file.tsx:5:36: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & { x: number; } & { children?: ReactNode | undefined; }' +!!! related TS6500 file.tsx:5:36: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & { x: number; } & { children?: ReactNode; }' let b = let c = ; ~~~~ -!!! error TS2322: Type '{ prop: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. -!!! error TS2322: Property 'prop' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. +!!! error TS2322: Type '{ prop: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. +!!! error TS2322: Property 'prop' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxUnionElementType4.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/tsxUnionElementType4.errors.txt.diff new file mode 100644 index 00000000000..c54749f1561 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/tsxUnionElementType4.errors.txt.diff @@ -0,0 +1,25 @@ +--- old.tsxUnionElementType4.errors.txt ++++ new.tsxUnionElementType4.errors.txt +@@= skipped -0, +0 lines =@@ + file.tsx(34,17): error TS2322: Type 'boolean' is not assignable to type 'number'. +-file.tsx(36,22): error TS2322: Type '{ prop: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. +- Property 'prop' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. ++file.tsx(36,22): error TS2322: Type '{ prop: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. ++ Property 'prop' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. + + + ==== file.tsx (2 errors) ==== +@@= skipped -39, +39 lines =@@ + let a = ; + ~ + !!! error TS2322: Type 'boolean' is not assignable to type 'number'. +-!!! related TS6500 file.tsx:5:36: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & { x: number; } & { children?: ReactNode | undefined; }' ++!!! related TS6500 file.tsx:5:36: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes & { x: number; } & { children?: ReactNode; }' + let b = + let c = ; + ~~~~ +-!!! error TS2322: Type '{ prop: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. +-!!! error TS2322: Property 'prop' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode | undefined; }'. ++!!! error TS2322: Type '{ prop: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. ++!!! error TS2322: Property 'prop' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'. + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxUnionTypeComponent1.types b/testdata/baselines/reference/submodule/conformance/tsxUnionTypeComponent1.types index 80c13fdd66f..120f8d632c4 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxUnionTypeComponent1.types +++ b/testdata/baselines/reference/submodule/conformance/tsxUnionTypeComponent1.types @@ -24,9 +24,9 @@ class MyComponent extends React.Component { const { AnyComponent } = this.props; >AnyComponent : React.ComponentClass | React.StatelessComponent ->this.props : ComponentProps & { children?: React.ReactNode | undefined; } +>this.props : ComponentProps & { children?: React.ReactNode; } >this : this ->props : ComponentProps & { children?: React.ReactNode | undefined; } +>props : ComponentProps & { children?: React.ReactNode; } return (); >() : JSX.Element diff --git a/testdata/baselines/reference/submodule/conformance/tsxUnionTypeComponent1.types.diff b/testdata/baselines/reference/submodule/conformance/tsxUnionTypeComponent1.types.diff deleted file mode 100644 index 4075db9fbdb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxUnionTypeComponent1.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.tsxUnionTypeComponent1.types -+++ new.tsxUnionTypeComponent1.types -@@= skipped -23, +23 lines =@@ - - const { AnyComponent } = this.props; - >AnyComponent : React.ComponentClass | React.StatelessComponent -->this.props : ComponentProps & { children?: React.ReactNode; } -+>this.props : ComponentProps & { children?: React.ReactNode | undefined; } - >this : this -->props : ComponentProps & { children?: React.ReactNode; } -+>props : ComponentProps & { children?: React.ReactNode | undefined; } - - return (); - >() : JSX.Element \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeAliases.types b/testdata/baselines/reference/submodule/conformance/typeAliases.types index bd0e1219e22..637205ae4d1 100644 --- a/testdata/baselines/reference/submodule/conformance/typeAliases.types +++ b/testdata/baselines/reference/submodule/conformance/typeAliases.types @@ -124,19 +124,19 @@ var x13_2: T13 >x13_2 : I13 declare function foo13(t1: T1, t2: T13): void; ->foo13 : (t1: T1, t2: I13) => void +>foo13 : (t1: T1, t2: T13) => void >t1 : T1 >t2 : I13 foo13(x13_1, x13_2); >foo13(x13_1, x13_2) : void ->foo13 : (t1: T1, t2: I13) => void +>foo13 : (t1: T1, t2: T13) => void >x13_1 : I13 >x13_2 : I13 foo13(x13_2, x13_1); >foo13(x13_2, x13_1) : void ->foo13 : (t1: T1, t2: I13) => void +>foo13 : (t1: T1, t2: T13) => void >x13_2 : I13 >x13_1 : I13 @@ -147,15 +147,15 @@ var x14: T14; >x14 : string declare function foo14_1(x: T14): void; ->foo14_1 : (x: string) => void +>foo14_1 : (x: T14) => void >x : string declare function foo14_2(x: "click"): void; ->foo14_2 : { (x: "click"): void; (x: string): void; } +>foo14_2 : { (x: "click"): void; (x: T14): void; } >x : "click" declare function foo14_2(x: T14): void; ->foo14_2 : { (x: "click"): void; (x: string): void; } +>foo14_2 : { (x: "click"): void; (x: T14): void; } >x : string type Meters = number @@ -167,18 +167,18 @@ enum E { x = 10 } >10 : 10 declare function f15(a: string): boolean; ->f15 : { (a: string): boolean; (a: number): string; } +>f15 : { (a: string): boolean; (a: Meters): string; } >a : string declare function f15(a: Meters): string; ->f15 : { (a: string): boolean; (a: number): string; } +>f15 : { (a: string): boolean; (a: Meters): string; } >a : number f15(E.x).toLowerCase(); >f15(E.x).toLowerCase() : string >f15(E.x).toLowerCase : () => string >f15(E.x) : string ->f15 : { (a: string): boolean; (a: number): string; } +>f15 : { (a: string): boolean; (a: Meters): string; } >E.x : E >E : typeof E >x : E diff --git a/testdata/baselines/reference/submodule/conformance/typeAliases.types.diff b/testdata/baselines/reference/submodule/conformance/typeAliases.types.diff deleted file mode 100644 index 4b42357ec14..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeAliases.types.diff +++ /dev/null @@ -1,66 +0,0 @@ ---- old.typeAliases.types -+++ new.typeAliases.types -@@= skipped -123, +123 lines =@@ - >x13_2 : I13 - - declare function foo13(t1: T1, t2: T13): void; -->foo13 : (t1: T1, t2: T13) => void -+>foo13 : (t1: T1, t2: I13) => void - >t1 : T1 - >t2 : I13 - - foo13(x13_1, x13_2); - >foo13(x13_1, x13_2) : void -->foo13 : (t1: T1, t2: T13) => void -+>foo13 : (t1: T1, t2: I13) => void - >x13_1 : I13 - >x13_2 : I13 - - foo13(x13_2, x13_1); - >foo13(x13_2, x13_1) : void -->foo13 : (t1: T1, t2: T13) => void -+>foo13 : (t1: T1, t2: I13) => void - >x13_2 : I13 - >x13_1 : I13 - -@@= skipped -23, +23 lines =@@ - >x14 : string - - declare function foo14_1(x: T14): void; -->foo14_1 : (x: T14) => void -+>foo14_1 : (x: string) => void - >x : string - - declare function foo14_2(x: "click"): void; -->foo14_2 : { (x: "click"): void; (x: T14): void; } -+>foo14_2 : { (x: "click"): void; (x: string): void; } - >x : "click" - - declare function foo14_2(x: T14): void; -->foo14_2 : { (x: "click"): void; (x: T14): void; } -+>foo14_2 : { (x: "click"): void; (x: string): void; } - >x : string - - type Meters = number -@@= skipped -20, +20 lines =@@ - >10 : 10 - - declare function f15(a: string): boolean; -->f15 : { (a: string): boolean; (a: Meters): string; } -+>f15 : { (a: string): boolean; (a: number): string; } - >a : string - - declare function f15(a: Meters): string; -->f15 : { (a: string): boolean; (a: Meters): string; } -+>f15 : { (a: string): boolean; (a: number): string; } - >a : number - - f15(E.x).toLowerCase(); - >f15(E.x).toLowerCase() : string - >f15(E.x).toLowerCase : () => string - >f15(E.x) : string -->f15 : { (a: string): boolean; (a: Meters): string; } -+>f15 : { (a: string): boolean; (a: number): string; } - >E.x : E - >E : typeof E - >x : E \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeArgumentInference.errors.txt b/testdata/baselines/reference/submodule/conformance/typeArgumentInference.errors.txt index ab97fb430cd..34b5573ab57 100644 --- a/testdata/baselines/reference/submodule/conformance/typeArgumentInference.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/typeArgumentInference.errors.txt @@ -6,7 +6,7 @@ typeArgumentInference.ts(66,5): error TS2322: Type 'null' is not assignable to t 'T' could be instantiated with an arbitrary type which could be unrelated to 'null'. typeArgumentInference.ts(68,29): error TS2345: Argument of type '0' is not assignable to parameter of type '""'. typeArgumentInference.ts(69,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'a9a' must be of type 'string', but here has type '{}'. -typeArgumentInference.ts(70,75): error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number | undefined; b?: string | undefined; }'. +typeArgumentInference.ts(70,75): error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number; b?: string; }'. typeArgumentInference.ts(83,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'a9e' must be of type '{ x: number; z: Date; y?: undefined; } | { z?: undefined; x: number; y: string; } | undefined', but here has type '{}'. typeArgumentInference.ts(84,30): error TS2345: Argument of type 'undefined' is not assignable to parameter of type 'A92'. typeArgumentInference.ts(98,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'arr' must be of type 'never[] | null | undefined', but here has type 'any[]'. @@ -101,7 +101,7 @@ typeArgumentInference.ts(98,5): error TS2403: Subsequent variable declarations m !!! related TS6203 typeArgumentInference.ts:68:5: 'a9a' was also declared here. var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); ~~~~ -!!! error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number | undefined; b?: string | undefined; }'. +!!! error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number; b?: string; }'. var a9b: { a?: number; b?: string; }; // Generic call with multiple parameters of generic type passed arguments with multiple best common types diff --git a/testdata/baselines/reference/submodule/conformance/typeArgumentInference.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/typeArgumentInference.errors.txt.diff new file mode 100644 index 00000000000..73e40bd24eb --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/typeArgumentInference.errors.txt.diff @@ -0,0 +1,20 @@ +--- old.typeArgumentInference.errors.txt ++++ new.typeArgumentInference.errors.txt +@@= skipped -5, +5 lines =@@ + 'T' could be instantiated with an arbitrary type which could be unrelated to 'null'. + typeArgumentInference.ts(68,29): error TS2345: Argument of type '0' is not assignable to parameter of type '""'. + typeArgumentInference.ts(69,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'a9a' must be of type 'string', but here has type '{}'. +-typeArgumentInference.ts(70,75): error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number | undefined; b?: string | undefined; }'. ++typeArgumentInference.ts(70,75): error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number; b?: string; }'. + typeArgumentInference.ts(83,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'a9e' must be of type '{ x: number; z: Date; y?: undefined; } | { z?: undefined; x: number; y: string; } | undefined', but here has type '{}'. + typeArgumentInference.ts(84,30): error TS2345: Argument of type 'undefined' is not assignable to parameter of type 'A92'. + typeArgumentInference.ts(98,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'arr' must be of type 'never[] | null | undefined', but here has type 'any[]'. +@@= skipped -95, +95 lines =@@ + !!! related TS6203 typeArgumentInference.ts:68:5: 'a9a' was also declared here. + var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); + ~~~~ +-!!! error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number | undefined; b?: string | undefined; }'. ++!!! error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number; b?: string; }'. + var a9b: { a?: number; b?: string; }; + + // Generic call with multiple parameters of generic type passed arguments with multiple best common types \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeArgumentInference.types b/testdata/baselines/reference/submodule/conformance/typeArgumentInference.types index d9c3a7481ec..71f8d7e2cc6 100644 --- a/testdata/baselines/reference/submodule/conformance/typeArgumentInference.types +++ b/testdata/baselines/reference/submodule/conformance/typeArgumentInference.types @@ -81,9 +81,9 @@ someGenerics2a((n) => n.substr(0)); >(n) => n.substr(0) : (n: string) => string >n : string >n.substr(0) : string ->n.substr : (from: number, length?: number | undefined) => string +>n.substr : (from: number, length?: number) => string >n : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >0 : 0 function someGenerics2b(n: (x: T, y: U) => void) { } @@ -115,9 +115,9 @@ someGenerics2b((n, t) => n.substr(t * t)); >n : string >t : number >n.substr(t * t) : string ->n.substr : (from: number, length?: number | undefined) => string +>n.substr : (from: number, length?: number) => string >n : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >t * t : number >t : number >t : number @@ -328,8 +328,8 @@ var a9a: {}; >a9a : string var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); ->a9b : { a?: number | undefined; b?: string | undefined; } ->someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number | undefined; b?: string | undefined; } +>a9b : { a?: number; b?: string; } +>someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number; b?: string; } >someGenerics9 : (a: T, b: T, c: T) => T >a : number | undefined >b : string | undefined @@ -341,7 +341,7 @@ var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); >'' : "" var a9b: { a?: number; b?: string; }; ->a9b : { a?: number | undefined; b?: string | undefined; } +>a9b : { a?: number; b?: string; } >a : number | undefined >b : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/typeArgumentInference.types.diff b/testdata/baselines/reference/submodule/conformance/typeArgumentInference.types.diff deleted file mode 100644 index 979a293fd1a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeArgumentInference.types.diff +++ /dev/null @@ -1,45 +0,0 @@ ---- old.typeArgumentInference.types -+++ new.typeArgumentInference.types -@@= skipped -80, +80 lines =@@ - >(n) => n.substr(0) : (n: string) => string - >n : string - >n.substr(0) : string -->n.substr : (from: number, length?: number) => string -+>n.substr : (from: number, length?: number | undefined) => string - >n : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >0 : 0 - - function someGenerics2b(n: (x: T, y: U) => void) { } -@@= skipped -34, +34 lines =@@ - >n : string - >t : number - >n.substr(t * t) : string -->n.substr : (from: number, length?: number) => string -+>n.substr : (from: number, length?: number | undefined) => string - >n : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >t * t : number - >t : number - >t : number -@@= skipped -213, +213 lines =@@ - >a9a : string - - var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); -->a9b : { a?: number; b?: string; } -->someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number; b?: string; } -+>a9b : { a?: number | undefined; b?: string | undefined; } -+>someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number | undefined; b?: string | undefined; } - >someGenerics9 : (a: T, b: T, c: T) => T - >a : number | undefined - >b : string | undefined -@@= skipped -13, +13 lines =@@ - >'' : "" - - var a9b: { a?: number; b?: string; }; -->a9b : { a?: number; b?: string; } -+>a9b : { a?: number | undefined; b?: string | undefined; } - >a : number | undefined - >b : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.errors.txt b/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.errors.txt index e1847a9b21e..0c7c9001bdc 100644 --- a/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.errors.txt @@ -22,7 +22,7 @@ typeArgumentInferenceWithConstraints.ts(71,5): error TS2322: Type 'null' is not 'null' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'unknown'. typeArgumentInferenceWithConstraints.ts(73,29): error TS2345: Argument of type '0' is not assignable to parameter of type '""'. typeArgumentInferenceWithConstraints.ts(74,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'a9a' must be of type 'string', but here has type '{}'. -typeArgumentInferenceWithConstraints.ts(75,75): error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number | undefined; b?: string | undefined; }'. +typeArgumentInferenceWithConstraints.ts(75,75): error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number; b?: string; }'. typeArgumentInferenceWithConstraints.ts(88,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'a9e' must be of type '{ x: number; z: Window & typeof globalThis; y?: undefined; } | { z?: undefined; x: number; y: string; } | undefined', but here has type '{}'. typeArgumentInferenceWithConstraints.ts(89,30): error TS2345: Argument of type 'undefined' is not assignable to parameter of type 'A92'. typeArgumentInferenceWithConstraints.ts(103,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'arr' must be of type 'never[] | null | undefined', but here has type 'any[]'. @@ -148,7 +148,7 @@ typeArgumentInferenceWithConstraints.ts(103,5): error TS2403: Subsequent variabl !!! related TS6203 typeArgumentInferenceWithConstraints.ts:73:5: 'a9a' was also declared here. var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); ~~~~ -!!! error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number | undefined; b?: string | undefined; }'. +!!! error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number; b?: string; }'. var a9b: { a?: number; b?: string; }; // Generic call with multiple parameters of generic type passed arguments with multiple best common types diff --git a/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.errors.txt.diff new file mode 100644 index 00000000000..4ee76022695 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.errors.txt.diff @@ -0,0 +1,20 @@ +--- old.typeArgumentInferenceWithConstraints.errors.txt ++++ new.typeArgumentInferenceWithConstraints.errors.txt +@@= skipped -21, +21 lines =@@ + 'null' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'unknown'. + typeArgumentInferenceWithConstraints.ts(73,29): error TS2345: Argument of type '0' is not assignable to parameter of type '""'. + typeArgumentInferenceWithConstraints.ts(74,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'a9a' must be of type 'string', but here has type '{}'. +-typeArgumentInferenceWithConstraints.ts(75,75): error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number | undefined; b?: string | undefined; }'. ++typeArgumentInferenceWithConstraints.ts(75,75): error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number; b?: string; }'. + typeArgumentInferenceWithConstraints.ts(88,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'a9e' must be of type '{ x: number; z: Window & typeof globalThis; y?: undefined; } | { z?: undefined; x: number; y: string; } | undefined', but here has type '{}'. + typeArgumentInferenceWithConstraints.ts(89,30): error TS2345: Argument of type 'undefined' is not assignable to parameter of type 'A92'. + typeArgumentInferenceWithConstraints.ts(103,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'arr' must be of type 'never[] | null | undefined', but here has type 'any[]'. +@@= skipped -126, +126 lines =@@ + !!! related TS6203 typeArgumentInferenceWithConstraints.ts:73:5: 'a9a' was also declared here. + var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); + ~~~~ +-!!! error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number | undefined; b?: string | undefined; }'. ++!!! error TS2345: Argument of type 'null' is not assignable to parameter of type '{ a?: number; b?: string; }'. + var a9b: { a?: number; b?: string; }; + + // Generic call with multiple parameters of generic type passed arguments with multiple best common types \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.types b/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.types index 7db05b8b612..9314f9d76cb 100644 --- a/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.types +++ b/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.types @@ -93,9 +93,9 @@ someGenerics2a((n) => n.substr(0)); >(n) => n.substr(0) : (n: string) => string >n : string >n.substr(0) : string ->n.substr : (from: number, length?: number | undefined) => string +>n.substr : (from: number, length?: number) => string >n : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >0 : 0 function someGenerics2b(n: (x: T, y: U) => void) { } @@ -127,9 +127,9 @@ someGenerics2b((n, t) => n.substr(t * t)); >n : string >t : number >n.substr(t * t) : string ->n.substr : (from: number, length?: number | undefined) => string +>n.substr : (from: number, length?: number) => string >n : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >t * t : number >t : number >t : number @@ -369,8 +369,8 @@ var a9a: {}; >a9a : string var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); ->a9b : { a?: number | undefined; b?: string | undefined; } ->someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number | undefined; b?: string | undefined; } +>a9b : { a?: number; b?: string; } +>someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number; b?: string; } >someGenerics9 : (a: T, b: T, c: T) => T >a : number | undefined >b : string | undefined @@ -382,7 +382,7 @@ var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); >'' : "" var a9b: { a?: number; b?: string; }; ->a9b : { a?: number | undefined; b?: string | undefined; } +>a9b : { a?: number; b?: string; } >a : number | undefined >b : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.types.diff b/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.types.diff deleted file mode 100644 index 15d9367554b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeArgumentInferenceWithConstraints.types.diff +++ /dev/null @@ -1,45 +0,0 @@ ---- old.typeArgumentInferenceWithConstraints.types -+++ new.typeArgumentInferenceWithConstraints.types -@@= skipped -92, +92 lines =@@ - >(n) => n.substr(0) : (n: string) => string - >n : string - >n.substr(0) : string -->n.substr : (from: number, length?: number) => string -+>n.substr : (from: number, length?: number | undefined) => string - >n : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >0 : 0 - - function someGenerics2b(n: (x: T, y: U) => void) { } -@@= skipped -34, +34 lines =@@ - >n : string - >t : number - >n.substr(t * t) : string -->n.substr : (from: number, length?: number) => string -+>n.substr : (from: number, length?: number | undefined) => string - >n : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >t * t : number - >t : number - >t : number -@@= skipped -242, +242 lines =@@ - >a9a : string - - var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); -->a9b : { a?: number; b?: string; } -->someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number; b?: string; } -+>a9b : { a?: number | undefined; b?: string | undefined; } -+>someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number | undefined; b?: string | undefined; } - >someGenerics9 : (a: T, b: T, c: T) => T - >a : number | undefined - >b : string | undefined -@@= skipped -13, +13 lines =@@ - >'' : "" - - var a9b: { a?: number; b?: string; }; -->a9b : { a?: number; b?: string; } -+>a9b : { a?: number | undefined; b?: string | undefined; } - >a : number | undefined - >b : string | undefined diff --git a/testdata/baselines/reference/submodule/conformance/typeFromContextualThisType.types b/testdata/baselines/reference/submodule/conformance/typeFromContextualThisType.types index fe9feef0bc9..bfea459c20a 100644 --- a/testdata/baselines/reference/submodule/conformance/typeFromContextualThisType.types +++ b/testdata/baselines/reference/submodule/conformance/typeFromContextualThisType.types @@ -22,7 +22,7 @@ const o1 = { /** @type {{ d(): void; e?(n: number): number; f?(n: number): number; g?: number }} */ const o2 = { ->o2 : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } +>o2 : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } >{ d() { this.e = this.f = m => this.g || m; }} : { d(): void; } d() { @@ -31,17 +31,17 @@ const o2 = { this.e = this.f = m => this.g || m; >this.e = this.f = m => this.g || m : (m: any) => any >this.e : ((n: number) => number) | undefined ->this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } +>this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } >e : ((n: number) => number) | undefined >this.f = m => this.g || m : (m: any) => any >this.f : ((n: number) => number) | undefined ->this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } +>this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } >f : ((n: number) => number) | undefined >m => this.g || m : (m: any) => any >m : any >this.g || m : any >this.g : number | undefined ->this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } +>this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } >g : number | undefined >m : any } diff --git a/testdata/baselines/reference/submodule/conformance/typeFromContextualThisType.types.diff b/testdata/baselines/reference/submodule/conformance/typeFromContextualThisType.types.diff index cc6621c1e5b..9d9ef75228d 100644 --- a/testdata/baselines/reference/submodule/conformance/typeFromContextualThisType.types.diff +++ b/testdata/baselines/reference/submodule/conformance/typeFromContextualThisType.types.diff @@ -18,27 +18,19 @@ } }; - /** @type {{ d(): void; e?(n: number): number; f?(n: number): number; g?: number }} */ - const o2 = { -->o2 : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } -+>o2 : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } - >{ d() { this.e = this.f = m => this.g || m; }} : { d(): void; } - - d() { +@@= skipped -19, +19 lines =@@ >d : () => void this.e = this.f = m => this.g || m; ->this.e = this.f = m => this.g || m : (m: number) => number +>this.e = this.f = m => this.g || m : (m: any) => any >this.e : ((n: number) => number) | undefined -->this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } -+>this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } + >this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } >e : ((n: number) => number) | undefined ->this.f = m => this.g || m : (m: number) => number +>this.f = m => this.g || m : (m: any) => any >this.f : ((n: number) => number) | undefined -->this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } -+>this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } + >this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } >f : ((n: number) => number) | undefined ->m => this.g || m : (m: number) => number ->m : number @@ -47,8 +39,7 @@ +>m : any +>this.g || m : any >this.g : number | undefined -->this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } -+>this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } + >this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } >g : number | undefined ->m : number +>m : any diff --git a/testdata/baselines/reference/submodule/conformance/typeFromPrivatePropertyAssignmentJs.types b/testdata/baselines/reference/submodule/conformance/typeFromPrivatePropertyAssignmentJs.types index 20d98a9c5c1..bcdb835723b 100644 --- a/testdata/baselines/reference/submodule/conformance/typeFromPrivatePropertyAssignmentJs.types +++ b/testdata/baselines/reference/submodule/conformance/typeFromPrivatePropertyAssignmentJs.types @@ -8,28 +8,28 @@ class C { /** @type {{ foo?: string } | undefined } */ #a; ->#a : { foo?: string | undefined; } | undefined +>#a : { foo?: string; } | undefined /** @type {{ foo?: string } | undefined } */ #b; ->#b : { foo?: string | undefined; } | undefined +>#b : { foo?: string; } | undefined m() { >m : () => void const a = this.#a || {}; ->a : { foo?: string | undefined; } ->this.#a || {} : { foo?: string | undefined; } ->this.#a : { foo?: string | undefined; } | undefined +>a : { foo?: string; } +>this.#a || {} : { foo?: string; } +>this.#a : { foo?: string; } | undefined >this : this >{} : {} this.#b = this.#b || {}; ->this.#b = this.#b || {} : { foo?: string | undefined; } ->this.#b : { foo?: string | undefined; } | undefined +>this.#b = this.#b || {} : { foo?: string; } +>this.#b : { foo?: string; } | undefined >this : this ->this.#b || {} : { foo?: string | undefined; } ->this.#b : { foo?: string | undefined; } | undefined +>this.#b || {} : { foo?: string; } +>this.#b : { foo?: string; } | undefined >this : this >{} : {} } diff --git a/testdata/baselines/reference/submodule/conformance/typeFromPrivatePropertyAssignmentJs.types.diff b/testdata/baselines/reference/submodule/conformance/typeFromPrivatePropertyAssignmentJs.types.diff deleted file mode 100644 index 1af74cf9981..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeFromPrivatePropertyAssignmentJs.types.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.typeFromPrivatePropertyAssignmentJs.types -+++ new.typeFromPrivatePropertyAssignmentJs.types -@@= skipped -7, +7 lines =@@ - - /** @type {{ foo?: string } | undefined } */ - #a; -->#a : { foo?: string; } | undefined -+>#a : { foo?: string | undefined; } | undefined - - /** @type {{ foo?: string } | undefined } */ - #b; -->#b : { foo?: string; } | undefined -+>#b : { foo?: string | undefined; } | undefined - - m() { - >m : () => void - - const a = this.#a || {}; -->a : { foo?: string; } -->this.#a || {} : { foo?: string; } -->this.#a : { foo?: string; } | undefined -+>a : { foo?: string | undefined; } -+>this.#a || {} : { foo?: string | undefined; } -+>this.#a : { foo?: string | undefined; } | undefined - >this : this - >{} : {} - - this.#b = this.#b || {}; -->this.#b = this.#b || {} : { foo?: string; } -->this.#b : { foo?: string; } | undefined -+>this.#b = this.#b || {} : { foo?: string | undefined; } -+>this.#b : { foo?: string | undefined; } | undefined - >this : this -->this.#b || {} : { foo?: string; } -->this.#b : { foo?: string; } | undefined -+>this.#b || {} : { foo?: string | undefined; } -+>this.#b : { foo?: string | undefined; } | undefined - >this : this - >{} : {} - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardFunctionErrors.types b/testdata/baselines/reference/submodule/conformance/typeGuardFunctionErrors.types index 6bdce5471bb..fb578338706 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardFunctionErrors.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardFunctionErrors.types @@ -234,7 +234,7 @@ function b2(a: b is A) {}; >A : any function b3(): A | b is A { ->b3 : () => any +>b3 : () => A | b >is : any >A : typeof A diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardFunctionErrors.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardFunctionErrors.types.diff index 76c0da0c576..b72e013c512 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardFunctionErrors.types.diff +++ b/testdata/baselines/reference/submodule/conformance/typeGuardFunctionErrors.types.diff @@ -1,15 +1,6 @@ --- old.typeGuardFunctionErrors.types +++ new.typeGuardFunctionErrors.types -@@= skipped -233, +233 lines =@@ - >A : any - - function b3(): A | b is A { -->b3 : () => A | b -+>b3 : () => any - >is : any - >A : typeof A - -@@= skipped -119, +119 lines =@@ +@@= skipped -352, +352 lines =@@ // expected an error, since Keys doesn't have a 'd' declare function hasKey(x: KeySet): x is KeySet; diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsPrimitiveIntersection.types b/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsPrimitiveIntersection.types index 38a47eb35a8..8fc37f026bf 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsPrimitiveIntersection.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsPrimitiveIntersection.types @@ -46,7 +46,7 @@ declare function isNonBlank2(value: string) : value is (string & Tag2); >value : string declare function doThis2(value: string & Tag2): void; ->doThis2 : (value: never) => void +>doThis2 : (value: string & Tag2) => void >value : never declare function doThat2(value: string) : void; @@ -60,7 +60,7 @@ if (isNonBlank2(value)) { doThis2(value); >doThis2(value) : void ->doThis2 : (value: never) => void +>doThis2 : (value: string & Tag2) => void >value : never } else { diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsPrimitiveIntersection.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsPrimitiveIntersection.types.diff index 601d90e54f4..18fe7517477 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsPrimitiveIntersection.types.diff +++ b/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsPrimitiveIntersection.types.diff @@ -27,11 +27,6 @@ >value : string declare function doThis2(value: string & Tag2): void; -->doThis2 : (value: string & Tag2) => void -+>doThis2 : (value: never) => void - >value : never - - declare function doThat2(value: string) : void; @@= skipped -13, +13 lines =@@ if (isNonBlank2(value)) { @@ -40,10 +35,4 @@ +>isNonBlank2 : (value: string) => value is never >value : string - doThis2(value); - >doThis2(value) : void -->doThis2 : (value: string & Tag2) => void -+>doThis2 : (value: never) => void - >value : never - - } else { \ No newline at end of file + doThis2(value); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsToLiteralTypeUnion.types b/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsToLiteralTypeUnion.types index 1fc078e2916..b92ab18bbc3 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsToLiteralTypeUnion.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsToLiteralTypeUnion.types @@ -6,7 +6,7 @@ declare function isFoo(value: string) : value is ("foo" | "bar"); >value : string declare function doThis(value: "foo" | "bar"): void; ->doThis : (value: "bar" | "foo") => void +>doThis : (value: "foo" | "bar") => void >value : "bar" | "foo" declare function doThat(value: string) : void; @@ -23,7 +23,7 @@ if (isFoo(value)) { doThis(value); >doThis(value) : void ->doThis : (value: "bar" | "foo") => void +>doThis : (value: "foo" | "bar") => void >value : "bar" | "foo" } else { diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsToLiteralTypeUnion.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsToLiteralTypeUnion.types.diff index 19dd31dd1c1..35bc58d5f54 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsToLiteralTypeUnion.types.diff +++ b/testdata/baselines/reference/submodule/conformance/typeGuardNarrowsToLiteralTypeUnion.types.diff @@ -9,11 +9,6 @@ >value : string declare function doThis(value: "foo" | "bar"): void; -->doThis : (value: "foo" | "bar") => void -+>doThis : (value: "bar" | "foo") => void - >value : "bar" | "foo" - - declare function doThat(value: string) : void; @@= skipped -16, +16 lines =@@ if (isFoo(value)) { @@ -22,10 +17,4 @@ +>isFoo : (value: string) => value is "bar" | "foo" >value : string - doThis(value); - >doThis(value) : void -->doThis : (value: "foo" | "bar") => void -+>doThis : (value: "bar" | "foo") => void - >value : "bar" | "foo" - - } else { \ No newline at end of file + doThis(value); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMember(target=es2015).js b/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMember(target=es2015).js index 20a99598ba5..f34a086776a 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMember(target=es2015).js +++ b/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMember(target=es2015).js @@ -150,7 +150,7 @@ declare namespace Test { path: string; isFSO: this is FileSystemObject; get isFile(): this is File; - set isFile(param: boolean); + set isFile(param: this is File); get isDirectory(): this is Directory; isNetworked: this is (Networked & this); constructor(path: string); diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMember(target=es2015).js.diff b/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMember(target=es2015).js.diff deleted file mode 100644 index dcbb17b37a5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMember(target=es2015).js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeGuardOfFormThisMember(target=es2015).js -+++ new.typeGuardOfFormThisMember(target=es2015).js -@@= skipped -149, +149 lines =@@ - path: string; - isFSO: this is FileSystemObject; - get isFile(): this is File; -- set isFile(param: this is File); -+ set isFile(param: boolean); - get isDirectory(): this is Directory; - isNetworked: this is (Networked & this); - constructor(path: string); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMemberErrors(target=es2015).js b/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMemberErrors(target=es2015).js index 7640f5b6f34..7ee0d709d7a 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMemberErrors(target=es2015).js +++ b/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMemberErrors(target=es2015).js @@ -77,7 +77,7 @@ declare namespace Test { path: string; isFSO: this is FileSystemObject; get isFile(): this is File; - set isFile(param: boolean); + set isFile(param: this is File); get isDirectory(): this is Directory; isNetworked: this is (Networked & this); constructor(path: string); diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMemberErrors(target=es2015).js.diff b/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMemberErrors(target=es2015).js.diff deleted file mode 100644 index be666b437a4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormThisMemberErrors(target=es2015).js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeGuardOfFormThisMemberErrors(target=es2015).js -+++ new.typeGuardOfFormThisMemberErrors(target=es2015).js -@@= skipped -76, +76 lines =@@ - path: string; - isFSO: this is FileSystemObject; - get isFile(): this is File; -- set isFile(param: this is File); -+ set isFile(param: boolean); - get isDirectory(): this is Directory; - isNetworked: this is (Networked & this); - constructor(path: string); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormTypeOfFunction.types b/testdata/baselines/reference/submodule/conformance/typeGuardOfFormTypeOfFunction.types index b888dbd9065..1f64abff88d 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormTypeOfFunction.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardOfFormTypeOfFunction.types @@ -187,7 +187,7 @@ function f100(obj: T, keys: K[]) : void { // Repro from #49316 function configureStore(reducer: (() => void) | Record void>) { ->configureStore : (reducer: Record void> | (() => void)) => void +>configureStore : (reducer: (() => void) | Record void>) => void >reducer : Record void> | (() => void) let rootReducer: () => void; diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormTypeOfFunction.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardOfFormTypeOfFunction.types.diff deleted file mode 100644 index dc086d866bb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardOfFormTypeOfFunction.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeGuardOfFormTypeOfFunction.types -+++ new.typeGuardOfFormTypeOfFunction.types -@@= skipped -186, +186 lines =@@ - // Repro from #49316 - - function configureStore(reducer: (() => void) | Record void>) { -->configureStore : (reducer: (() => void) | Record void>) => void -+>configureStore : (reducer: Record void> | (() => void)) => void - >reducer : Record void> | (() => void) - - let rootReducer: () => void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardRedundancy.types b/testdata/baselines/reference/submodule/conformance/typeGuardRedundancy.types index 50825d41c5b..4a261981056 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardRedundancy.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardRedundancy.types @@ -16,9 +16,9 @@ var r1 = typeof x === "string" && typeof x === "string" ? x.substr : x.toFixed; >typeof x : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" >x : string >"string" : "string" ->x.substr : (from: number, length?: number | undefined) => string +>x.substr : (from: number, length?: number) => string >x : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >x.toFixed : any >x : string | number >toFixed : any @@ -40,9 +40,9 @@ var r2 = !(typeof x === "string" && typeof x === "string") ? x.toFixed : x.subst >x.toFixed : any >x : string | number >toFixed : any ->x.substr : (from: number, length?: number | undefined) => string +>x.substr : (from: number, length?: number) => string >x : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string var r3 = typeof x === "string" || typeof x === "string" ? x.substr : x.toFixed; >r3 : any @@ -56,9 +56,9 @@ var r3 = typeof x === "string" || typeof x === "string" ? x.substr : x.toFixed; >typeof x : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" >x : string | number >"string" : "string" ->x.substr : (from: number, length?: number | undefined) => string +>x.substr : (from: number, length?: number) => string >x : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string >x.toFixed : any >x : string | number >toFixed : any @@ -80,7 +80,7 @@ var r4 = !(typeof x === "string" || typeof x === "string") ? x.toFixed : x.subst >x.toFixed : any >x : string | number >toFixed : any ->x.substr : (from: number, length?: number | undefined) => string +>x.substr : (from: number, length?: number) => string >x : string ->substr : (from: number, length?: number | undefined) => string +>substr : (from: number, length?: number) => string diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardRedundancy.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardRedundancy.types.diff deleted file mode 100644 index 5a3e7712716..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardRedundancy.types.diff +++ /dev/null @@ -1,47 +0,0 @@ ---- old.typeGuardRedundancy.types -+++ new.typeGuardRedundancy.types -@@= skipped -15, +15 lines =@@ - >typeof x : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" - >x : string - >"string" : "string" -->x.substr : (from: number, length?: number) => string -+>x.substr : (from: number, length?: number | undefined) => string - >x : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >x.toFixed : any - >x : string | number - >toFixed : any -@@= skipped -24, +24 lines =@@ - >x.toFixed : any - >x : string | number - >toFixed : any -->x.substr : (from: number, length?: number) => string -+>x.substr : (from: number, length?: number | undefined) => string - >x : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - - var r3 = typeof x === "string" || typeof x === "string" ? x.substr : x.toFixed; - >r3 : any -@@= skipped -16, +16 lines =@@ - >typeof x : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" - >x : string | number - >"string" : "string" -->x.substr : (from: number, length?: number) => string -+>x.substr : (from: number, length?: number | undefined) => string - >x : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string - >x.toFixed : any - >x : string | number - >toFixed : any -@@= skipped -24, +24 lines =@@ - >x.toFixed : any - >x : string | number - >toFixed : any -->x.substr : (from: number, length?: number) => string -+>x.substr : (from: number, length?: number | undefined) => string - >x : string -->substr : (from: number, length?: number) => string -+>substr : (from: number, length?: number | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardTypeOfUndefined.types b/testdata/baselines/reference/submodule/conformance/typeGuardTypeOfUndefined.types index 27274fe5d72..a9bfacb4324 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardTypeOfUndefined.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardTypeOfUndefined.types @@ -111,7 +111,7 @@ function test4(a: any) { } function test5(a: boolean | void) { ->test5 : (a: void | boolean) => void +>test5 : (a: boolean | void) => void >a : void | boolean if (typeof a !== "undefined") { @@ -141,7 +141,7 @@ function test5(a: boolean | void) { } function test6(a: boolean | void) { ->test6 : (a: void | boolean) => void +>test6 : (a: boolean | void) => void >a : void | boolean if (typeof a === "undefined") { @@ -171,7 +171,7 @@ function test6(a: boolean | void) { } function test7(a: boolean | void) { ->test7 : (a: void | boolean) => void +>test7 : (a: boolean | void) => void >a : void | boolean if (typeof a === "undefined" || typeof a === "boolean") { @@ -195,7 +195,7 @@ function test7(a: boolean | void) { } function test8(a: boolean | void) { ->test8 : (a: void | boolean) => void +>test8 : (a: boolean | void) => void >a : void | boolean if (typeof a !== "undefined" && typeof a === "boolean") { @@ -219,7 +219,7 @@ function test8(a: boolean | void) { } function test9(a: boolean | number) { ->test9 : (a: number | boolean) => void +>test9 : (a: boolean | number) => void >a : number | boolean if (typeof a !== "undefined") { @@ -249,7 +249,7 @@ function test9(a: boolean | number) { } function test10(a: boolean | number) { ->test10 : (a: number | boolean) => void +>test10 : (a: boolean | number) => void >a : number | boolean if (typeof a === "undefined") { @@ -279,7 +279,7 @@ function test10(a: boolean | number) { } function test11(a: boolean | number) { ->test11 : (a: number | boolean) => void +>test11 : (a: boolean | number) => void >a : number | boolean if (typeof a === "undefined" || typeof a === "boolean") { @@ -303,7 +303,7 @@ function test11(a: boolean | number) { } function test12(a: boolean | number) { ->test12 : (a: number | boolean) => void +>test12 : (a: boolean | number) => void >a : number | boolean if (typeof a !== "undefined" && typeof a === "boolean") { @@ -327,7 +327,7 @@ function test12(a: boolean | number) { } function test13(a: boolean | number | void) { ->test13 : (a: void | number | boolean) => void +>test13 : (a: boolean | number | void) => void >a : void | number | boolean if (typeof a !== "undefined") { @@ -357,7 +357,7 @@ function test13(a: boolean | number | void) { } function test14(a: boolean | number | void) { ->test14 : (a: void | number | boolean) => void +>test14 : (a: boolean | number | void) => void >a : void | number | boolean if (typeof a === "undefined") { @@ -387,7 +387,7 @@ function test14(a: boolean | number | void) { } function test15(a: boolean | number | void) { ->test15 : (a: void | number | boolean) => void +>test15 : (a: boolean | number | void) => void >a : void | number | boolean if (typeof a === "undefined" || typeof a === "boolean") { @@ -411,7 +411,7 @@ function test15(a: boolean | number | void) { } function test16(a: boolean | number | void) { ->test16 : (a: void | number | boolean) => void +>test16 : (a: boolean | number | void) => void >a : void | number | boolean if (typeof a !== "undefined" && typeof a === "boolean") { diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardTypeOfUndefined.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardTypeOfUndefined.types.diff deleted file mode 100644 index a5da445dbe5..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardTypeOfUndefined.types.diff +++ /dev/null @@ -1,110 +0,0 @@ ---- old.typeGuardTypeOfUndefined.types -+++ new.typeGuardTypeOfUndefined.types -@@= skipped -110, +110 lines =@@ - } - - function test5(a: boolean | void) { -->test5 : (a: boolean | void) => void -+>test5 : (a: void | boolean) => void - >a : void | boolean - - if (typeof a !== "undefined") { -@@= skipped -30, +30 lines =@@ - } - - function test6(a: boolean | void) { -->test6 : (a: boolean | void) => void -+>test6 : (a: void | boolean) => void - >a : void | boolean - - if (typeof a === "undefined") { -@@= skipped -30, +30 lines =@@ - } - - function test7(a: boolean | void) { -->test7 : (a: boolean | void) => void -+>test7 : (a: void | boolean) => void - >a : void | boolean - - if (typeof a === "undefined" || typeof a === "boolean") { -@@= skipped -24, +24 lines =@@ - } - - function test8(a: boolean | void) { -->test8 : (a: boolean | void) => void -+>test8 : (a: void | boolean) => void - >a : void | boolean - - if (typeof a !== "undefined" && typeof a === "boolean") { -@@= skipped -24, +24 lines =@@ - } - - function test9(a: boolean | number) { -->test9 : (a: boolean | number) => void -+>test9 : (a: number | boolean) => void - >a : number | boolean - - if (typeof a !== "undefined") { -@@= skipped -30, +30 lines =@@ - } - - function test10(a: boolean | number) { -->test10 : (a: boolean | number) => void -+>test10 : (a: number | boolean) => void - >a : number | boolean - - if (typeof a === "undefined") { -@@= skipped -30, +30 lines =@@ - } - - function test11(a: boolean | number) { -->test11 : (a: boolean | number) => void -+>test11 : (a: number | boolean) => void - >a : number | boolean - - if (typeof a === "undefined" || typeof a === "boolean") { -@@= skipped -24, +24 lines =@@ - } - - function test12(a: boolean | number) { -->test12 : (a: boolean | number) => void -+>test12 : (a: number | boolean) => void - >a : number | boolean - - if (typeof a !== "undefined" && typeof a === "boolean") { -@@= skipped -24, +24 lines =@@ - } - - function test13(a: boolean | number | void) { -->test13 : (a: boolean | number | void) => void -+>test13 : (a: void | number | boolean) => void - >a : void | number | boolean - - if (typeof a !== "undefined") { -@@= skipped -30, +30 lines =@@ - } - - function test14(a: boolean | number | void) { -->test14 : (a: boolean | number | void) => void -+>test14 : (a: void | number | boolean) => void - >a : void | number | boolean - - if (typeof a === "undefined") { -@@= skipped -30, +30 lines =@@ - } - - function test15(a: boolean | number | void) { -->test15 : (a: boolean | number | void) => void -+>test15 : (a: void | number | boolean) => void - >a : void | number | boolean - - if (typeof a === "undefined" || typeof a === "boolean") { -@@= skipped -24, +24 lines =@@ - } - - function test16(a: boolean | number | void) { -->test16 : (a: boolean | number | void) => void -+>test16 : (a: void | number | boolean) => void - >a : void | number | boolean - - if (typeof a !== "undefined" && typeof a === "boolean") { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsAsAssertions.types b/testdata/baselines/reference/submodule/conformance/typeGuardsAsAssertions.types index b7b6081d9d3..87d49944e42 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsAsAssertions.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardsAsAssertions.types @@ -102,9 +102,9 @@ function foo1() { >x : string | number >"string" : "string" >x.slice() : string ->x.slice : (start?: number | undefined, end?: number | undefined) => string +>x.slice : (start?: number, end?: number) => string >x : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string >"abc" : "abc" x; // string @@ -140,9 +140,9 @@ function foo2() { >x = x.slice() : string >x : string | number | boolean >x.slice() : string ->x.slice : (start?: number | undefined, end?: number | undefined) => string +>x.slice : (start?: number, end?: number) => string >x : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string } else { x = "abc"; @@ -279,10 +279,10 @@ function f6() { x!.slice(); >x!.slice() : string ->x!.slice : (start?: number | undefined, end?: number | undefined) => string +>x!.slice : (start?: number, end?: number) => string >x! : string >x : string | null | undefined ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string x = ""; >x = "" : "" @@ -291,10 +291,10 @@ function f6() { x!.slice(); >x!.slice() : string ->x!.slice : (start?: number | undefined, end?: number | undefined) => string +>x!.slice : (start?: number, end?: number) => string >x! : string >x : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string x = undefined; >x = undefined : undefined @@ -303,10 +303,10 @@ function f6() { x!.slice(); >x!.slice() : string ->x!.slice : (start?: number | undefined, end?: number | undefined) => string +>x!.slice : (start?: number, end?: number) => string >x! : string >x : string | null | undefined ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string x = null; >x = null : null @@ -314,10 +314,10 @@ function f6() { x!.slice(); >x!.slice() : string ->x!.slice : (start?: number | undefined, end?: number | undefined) => string +>x!.slice : (start?: number, end?: number) => string >x! : string >x : string | null | undefined ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string x = undefined; >x = undefined : null | undefined @@ -327,10 +327,10 @@ function f6() { x!.slice(); >x!.slice() : string ->x!.slice : (start?: number | undefined, end?: number | undefined) => string +>x!.slice : (start?: number, end?: number) => string >x! : string >x : string | null | undefined ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string x = ""; >x = "" : string | undefined @@ -340,10 +340,10 @@ function f6() { x!.slice(); >x!.slice() : string ->x!.slice : (start?: number | undefined, end?: number | undefined) => string +>x!.slice : (start?: number, end?: number) => string >x! : string >x : string | undefined ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string x = ""; >x = "" : string | null @@ -353,10 +353,10 @@ function f6() { x!.slice(); >x!.slice() : string ->x!.slice : (start?: number | undefined, end?: number | undefined) => string +>x!.slice : (start?: number, end?: number) => string >x! : string >x : string | null ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string } function f7() { @@ -367,9 +367,9 @@ function f7() { x!.slice(); >x!.slice() : string ->x!.slice : (start?: number | undefined, end?: number | undefined) => string +>x!.slice : (start?: number, end?: number) => string >x! : string >x : string ->slice : (start?: number | undefined, end?: number | undefined) => string +>slice : (start?: number, end?: number) => string } diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsAsAssertions.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardsAsAssertions.types.diff deleted file mode 100644 index 89340aea461..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsAsAssertions.types.diff +++ /dev/null @@ -1,128 +0,0 @@ ---- old.typeGuardsAsAssertions.types -+++ new.typeGuardsAsAssertions.types -@@= skipped -101, +101 lines =@@ - >x : string | number - >"string" : "string" - >x.slice() : string -->x.slice : (start?: number, end?: number) => string -+>x.slice : (start?: number | undefined, end?: number | undefined) => string - >x : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - >"abc" : "abc" - - x; // string -@@= skipped -38, +38 lines =@@ - >x = x.slice() : string - >x : string | number | boolean - >x.slice() : string -->x.slice : (start?: number, end?: number) => string -+>x.slice : (start?: number | undefined, end?: number | undefined) => string - >x : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - } - else { - x = "abc"; -@@= skipped -139, +139 lines =@@ - - x!.slice(); - >x!.slice() : string -->x!.slice : (start?: number, end?: number) => string -+>x!.slice : (start?: number | undefined, end?: number | undefined) => string - >x! : string - >x : string | null | undefined -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - - x = ""; - >x = "" : "" -@@= skipped -12, +12 lines =@@ - - x!.slice(); - >x!.slice() : string -->x!.slice : (start?: number, end?: number) => string -+>x!.slice : (start?: number | undefined, end?: number | undefined) => string - >x! : string - >x : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - - x = undefined; - >x = undefined : undefined -@@= skipped -12, +12 lines =@@ - - x!.slice(); - >x!.slice() : string -->x!.slice : (start?: number, end?: number) => string -+>x!.slice : (start?: number | undefined, end?: number | undefined) => string - >x! : string - >x : string | null | undefined -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - - x = null; - >x = null : null -@@= skipped -11, +11 lines =@@ - - x!.slice(); - >x!.slice() : string -->x!.slice : (start?: number, end?: number) => string -+>x!.slice : (start?: number | undefined, end?: number | undefined) => string - >x! : string - >x : string | null | undefined -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - - x = undefined; - >x = undefined : null | undefined -@@= skipped -13, +13 lines =@@ - - x!.slice(); - >x!.slice() : string -->x!.slice : (start?: number, end?: number) => string -+>x!.slice : (start?: number | undefined, end?: number | undefined) => string - >x! : string - >x : string | null | undefined -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - - x = ""; - >x = "" : string | undefined -@@= skipped -13, +13 lines =@@ - - x!.slice(); - >x!.slice() : string -->x!.slice : (start?: number, end?: number) => string -+>x!.slice : (start?: number | undefined, end?: number | undefined) => string - >x! : string - >x : string | undefined -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - - x = ""; - >x = "" : string | null -@@= skipped -13, +13 lines =@@ - - x!.slice(); - >x!.slice() : string -->x!.slice : (start?: number, end?: number) => string -+>x!.slice : (start?: number | undefined, end?: number | undefined) => string - >x! : string - >x : string | null -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - } - - function f7() { -@@= skipped -14, +14 lines =@@ - - x!.slice(); - >x!.slice() : string -->x!.slice : (start?: number, end?: number) => string -+>x!.slice : (start?: number | undefined, end?: number | undefined) => string - >x! : string - >x : string -->slice : (start?: number, end?: number) => string -+>slice : (start?: number | undefined, end?: number | undefined) => string - } diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsDefeat.types b/testdata/baselines/reference/submodule/conformance/typeGuardsDefeat.types index ab6c503eb83..ee456f2ba8c 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsDefeat.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardsDefeat.types @@ -4,7 +4,7 @@ // Also note that it is possible to defeat a type guard by calling a function that changes the // type of the guarded variable. function foo(x: number | string) { ->foo : (x: string | number) => number +>foo : (x: number | string) => number >x : string | number function f() { @@ -37,7 +37,7 @@ function foo(x: number | string) { } } function foo2(x: number | string) { ->foo2 : (x: string | number) => number | undefined +>foo2 : (x: number | string) => number | undefined >x : string | number if (typeof x === "string") { @@ -73,7 +73,7 @@ function foo2(x: number | string) { >f : () => number } function foo3(x: number | string) { ->foo3 : (x: string | number) => number | undefined +>foo3 : (x: number | string) => number | undefined >x : string | number if (typeof x === "string") { diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsDefeat.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardsDefeat.types.diff deleted file mode 100644 index 2e42989f458..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsDefeat.types.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- old.typeGuardsDefeat.types -+++ new.typeGuardsDefeat.types -@@= skipped -3, +3 lines =@@ - // Also note that it is possible to defeat a type guard by calling a function that changes the - // type of the guarded variable. - function foo(x: number | string) { -->foo : (x: number | string) => number -+>foo : (x: string | number) => number - >x : string | number - - function f() { -@@= skipped -33, +33 lines =@@ - } - } - function foo2(x: number | string) { -->foo2 : (x: number | string) => number | undefined -+>foo2 : (x: string | number) => number | undefined - >x : string | number - - if (typeof x === "string") { -@@= skipped -36, +36 lines =@@ - >f : () => number - } - function foo3(x: number | string) { -->foo3 : (x: number | string) => number | undefined -+>foo3 : (x: string | number) => number | undefined - >x : string | number - - if (typeof x === "string") { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInConditionalExpression.types b/testdata/baselines/reference/submodule/conformance/typeGuardsInConditionalExpression.types index f9ac1612335..517b262f09c 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInConditionalExpression.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardsInConditionalExpression.types @@ -9,7 +9,7 @@ // provided the false expression contains no assignments to the variable or parameter. function foo(x: number | string) { ->foo : (x: string | number) => number +>foo : (x: number | string) => number >x : string | number return typeof x === "string" @@ -29,7 +29,7 @@ function foo(x: number | string) { >x : number } function foo2(x: number | string) { ->foo2 : (x: string | number) => string | number +>foo2 : (x: number | string) => string | number >x : string | number return typeof x === "string" @@ -52,7 +52,7 @@ function foo2(x: number | string) { >x : number } function foo3(x: number | string) { ->foo3 : (x: string | number) => number +>foo3 : (x: number | string) => number >x : string | number return typeof x === "string" @@ -75,7 +75,7 @@ function foo3(x: number | string) { >x : number } function foo4(x: number | string) { ->foo4 : (x: string | number) => string | number +>foo4 : (x: number | string) => string | number >x : string | number return typeof x === "string" @@ -98,7 +98,7 @@ function foo4(x: number | string) { >x : number } function foo5(x: number | string) { ->foo5 : (x: string | number) => string +>foo5 : (x: number | string) => string >x : string | number return typeof x === "string" @@ -121,7 +121,7 @@ function foo5(x: number | string) { >x : string } function foo6(x: number | string) { ->foo6 : (x: string | number) => string | number +>foo6 : (x: number | string) => string | number >x : string | number // Modify in both branches @@ -151,7 +151,7 @@ function foo6(x: number | string) { >x : string } function foo7(x: number | string | boolean) { ->foo7 : (x: string | number | boolean) => boolean +>foo7 : (x: number | string | boolean) => boolean >x : string | number | boolean return typeof x === "string" @@ -182,7 +182,7 @@ function foo7(x: number | string | boolean) { >10 : 10 } function foo8(x: number | string | boolean) { ->foo8 : (x: string | number | boolean) => 0 | boolean +>foo8 : (x: number | string | boolean) => 0 | boolean >x : string | number | boolean var b: number | boolean; @@ -225,7 +225,7 @@ function foo8(x: number | string | boolean) { >10 : 10 } function foo9(x: number | string) { ->foo9 : (x: string | number) => 0 | boolean +>foo9 : (x: number | string) => 0 | boolean >x : string | number var y = 10; @@ -259,7 +259,7 @@ function foo9(x: number | string) { >10 : 10 } function foo10(x: number | string | boolean) { ->foo10 : (x: string | number | boolean) => string | 0 | false +>foo10 : (x: number | string | boolean) => string | 0 | false >x : string | number | boolean // Mixing typeguards @@ -293,12 +293,12 @@ function foo10(x: number | string | boolean) { && x.toString()); // x is number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } function foo11(x: number | string | boolean) { ->foo11 : (x: string | number | boolean) => string | number | false +>foo11 : (x: number | string | boolean) => string | number | false >x : string | number | boolean // Mixing typeguards @@ -341,7 +341,7 @@ function foo11(x: number | string | boolean) { >x : number } function foo12(x: number | string | boolean) { ->foo12 : (x: string | number | boolean) => number | false +>foo12 : (x: number | string | boolean) => number | false >x : string | number | boolean // Mixing typeguards @@ -364,9 +364,9 @@ function foo12(x: number | string | boolean) { >10 : 10 >x.toString().length : number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >length : number : ((b = x) // x is number | boolean diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInConditionalExpression.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardsInConditionalExpression.types.diff deleted file mode 100644 index 93205919036..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInConditionalExpression.types.diff +++ /dev/null @@ -1,129 +0,0 @@ ---- old.typeGuardsInConditionalExpression.types -+++ new.typeGuardsInConditionalExpression.types -@@= skipped -8, +8 lines =@@ - // provided the false expression contains no assignments to the variable or parameter. - - function foo(x: number | string) { -->foo : (x: number | string) => number -+>foo : (x: string | number) => number - >x : string | number - - return typeof x === "string" -@@= skipped -20, +20 lines =@@ - >x : number - } - function foo2(x: number | string) { -->foo2 : (x: number | string) => string | number -+>foo2 : (x: string | number) => string | number - >x : string | number - - return typeof x === "string" -@@= skipped -23, +23 lines =@@ - >x : number - } - function foo3(x: number | string) { -->foo3 : (x: number | string) => number -+>foo3 : (x: string | number) => number - >x : string | number - - return typeof x === "string" -@@= skipped -23, +23 lines =@@ - >x : number - } - function foo4(x: number | string) { -->foo4 : (x: number | string) => string | number -+>foo4 : (x: string | number) => string | number - >x : string | number - - return typeof x === "string" -@@= skipped -23, +23 lines =@@ - >x : number - } - function foo5(x: number | string) { -->foo5 : (x: number | string) => string -+>foo5 : (x: string | number) => string - >x : string | number - - return typeof x === "string" -@@= skipped -23, +23 lines =@@ - >x : string - } - function foo6(x: number | string) { -->foo6 : (x: number | string) => string | number -+>foo6 : (x: string | number) => string | number - >x : string | number - - // Modify in both branches -@@= skipped -30, +30 lines =@@ - >x : string - } - function foo7(x: number | string | boolean) { -->foo7 : (x: number | string | boolean) => boolean -+>foo7 : (x: string | number | boolean) => boolean - >x : string | number | boolean - - return typeof x === "string" -@@= skipped -31, +31 lines =@@ - >10 : 10 - } - function foo8(x: number | string | boolean) { -->foo8 : (x: number | string | boolean) => 0 | boolean -+>foo8 : (x: string | number | boolean) => 0 | boolean - >x : string | number | boolean - - var b: number | boolean; -@@= skipped -43, +43 lines =@@ - >10 : 10 - } - function foo9(x: number | string) { -->foo9 : (x: number | string) => 0 | boolean -+>foo9 : (x: string | number) => 0 | boolean - >x : string | number - - var y = 10; -@@= skipped -34, +34 lines =@@ - >10 : 10 - } - function foo10(x: number | string | boolean) { -->foo10 : (x: number | string | boolean) => string | 0 | false -+>foo10 : (x: string | number | boolean) => string | 0 | false - >x : string | number | boolean - - // Mixing typeguards -@@= skipped -34, +34 lines =@@ - - && x.toString()); // x is number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - function foo11(x: number | string | boolean) { -->foo11 : (x: number | string | boolean) => string | number | false -+>foo11 : (x: string | number | boolean) => string | number | false - >x : string | number | boolean - - // Mixing typeguards -@@= skipped -48, +48 lines =@@ - >x : number - } - function foo12(x: number | string | boolean) { -->foo12 : (x: number | string | boolean) => number | false -+>foo12 : (x: string | number | boolean) => number | false - >x : string | number | boolean - - // Mixing typeguards -@@= skipped -23, +23 lines =@@ - >10 : 10 - >x.toString().length : number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >length : number - - : ((b = x) // x is number | boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInFunctionAndModuleBlock.types b/testdata/baselines/reference/submodule/conformance/typeGuardsInFunctionAndModuleBlock.types index 03583eedf12..ddd9f8e6953 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInFunctionAndModuleBlock.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardsInFunctionAndModuleBlock.types @@ -4,7 +4,7 @@ // typeguards are scoped in function/module block function foo(x: number | string | boolean) { ->foo : (x: string | number | boolean) => string +>foo : (x: number | string | boolean) => string >x : string | number | boolean return typeof x === "string" @@ -41,14 +41,14 @@ function foo(x: number | string | boolean) { : x.toString(); // number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } (); } function foo2(x: number | string | boolean) { ->foo2 : (x: string | number | boolean) => string +>foo2 : (x: number | string | boolean) => string >x : string | number | boolean return typeof x === "string" @@ -86,15 +86,15 @@ function foo2(x: number | string | boolean) { : x.toString(); // number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } (x); // x here is narrowed to number | boolean >x : number | boolean } function foo3(x: number | string | boolean) { ->foo3 : (x: string | number | boolean) => string +>foo3 : (x: number | string | boolean) => string >x : string | number | boolean return typeof x === "string" @@ -131,14 +131,14 @@ function foo3(x: number | string | boolean) { : x.toString(); // number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string })(); } function foo4(x: number | string | boolean) { ->foo4 : (x: string | number | boolean) => string +>foo4 : (x: number | string | boolean) => string >x : string | number | boolean return typeof x === "string" @@ -176,16 +176,16 @@ function foo4(x: number | string | boolean) { : x.toString(); // number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string })(x); // x here is narrowed to number | boolean >x : number | boolean } // Type guards do not affect nested function declarations function foo5(x: number | string | boolean) { ->foo5 : (x: string | number | boolean) => void +>foo5 : (x: number | string | boolean) => void >x : string | number | boolean if (typeof x === "string") { @@ -252,9 +252,9 @@ namespace m { : x.toString(); // number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } } } @@ -304,9 +304,9 @@ namespace m1 { : x.toString(); // number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string } } } diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInFunctionAndModuleBlock.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardsInFunctionAndModuleBlock.types.diff deleted file mode 100644 index 4547d927703..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInFunctionAndModuleBlock.types.diff +++ /dev/null @@ -1,110 +0,0 @@ ---- old.typeGuardsInFunctionAndModuleBlock.types -+++ new.typeGuardsInFunctionAndModuleBlock.types -@@= skipped -3, +3 lines =@@ - // typeguards are scoped in function/module block - - function foo(x: number | string | boolean) { -->foo : (x: number | string | boolean) => string -+>foo : (x: string | number | boolean) => string - >x : string | number | boolean - - return typeof x === "string" -@@= skipped -37, +37 lines =@@ - - : x.toString(); // number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - } (); - } - function foo2(x: number | string | boolean) { -->foo2 : (x: number | string | boolean) => string -+>foo2 : (x: string | number | boolean) => string - >x : string | number | boolean - - return typeof x === "string" -@@= skipped -45, +45 lines =@@ - - : x.toString(); // number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - } (x); // x here is narrowed to number | boolean - >x : number | boolean - } - function foo3(x: number | string | boolean) { -->foo3 : (x: number | string | boolean) => string -+>foo3 : (x: string | number | boolean) => string - >x : string | number | boolean - - return typeof x === "string" -@@= skipped -45, +45 lines =@@ - - : x.toString(); // number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - })(); - } - function foo4(x: number | string | boolean) { -->foo4 : (x: number | string | boolean) => string -+>foo4 : (x: string | number | boolean) => string - >x : string | number | boolean - - return typeof x === "string" -@@= skipped -45, +45 lines =@@ - - : x.toString(); // number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - })(x); // x here is narrowed to number | boolean - >x : number | boolean - } - // Type guards do not affect nested function declarations - function foo5(x: number | string | boolean) { -->foo5 : (x: number | string | boolean) => void -+>foo5 : (x: string | number | boolean) => void - >x : string | number | boolean - - if (typeof x === "string") { -@@= skipped -76, +76 lines =@@ - - : x.toString(); // number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - } - } -@@= skipped -52, +52 lines =@@ - - : x.toString(); // number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - } - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInIfStatement.types b/testdata/baselines/reference/submodule/conformance/typeGuardsInIfStatement.types index 05f2062b5d3..ecbae0805ad 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInIfStatement.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardsInIfStatement.types @@ -6,7 +6,7 @@ // In the false branch statement of an 'if' statement, // the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false. function foo(x: number | string) { ->foo : (x: string | number) => number +>foo : (x: number | string) => number >x : string | number if (typeof x === "string") { @@ -27,7 +27,7 @@ function foo(x: number | string) { } } function foo2(x: number | string) { ->foo2 : (x: string | number) => number +>foo2 : (x: number | string) => number >x : string | number if (typeof x === "string") { @@ -50,7 +50,7 @@ function foo2(x: number | string) { } } function foo3(x: number | string) { ->foo3 : (x: string | number) => string | number +>foo3 : (x: number | string) => string | number >x : string | number if (typeof x === "string") { @@ -73,7 +73,7 @@ function foo3(x: number | string) { } } function foo4(x: number | string) { ->foo4 : (x: string | number) => string | number +>foo4 : (x: number | string) => string | number >x : string | number if (typeof x === "string") { @@ -96,7 +96,7 @@ function foo4(x: number | string) { } } function foo5(x: number | string) { ->foo5 : (x: string | number) => string +>foo5 : (x: number | string) => string >x : string | number if (typeof x === "string") { @@ -119,7 +119,7 @@ function foo5(x: number | string) { } } function foo6(x: number | string) { ->foo6 : (x: string | number) => string | number +>foo6 : (x: number | string) => string | number >x : string | number if (typeof x === "string") { @@ -147,7 +147,7 @@ function foo6(x: number | string) { } } function foo7(x: number | string | boolean) { ->foo7 : (x: string | number | boolean) => boolean +>foo7 : (x: number | string | boolean) => boolean >x : string | number | boolean if (typeof x === "string") { @@ -178,7 +178,7 @@ function foo7(x: number | string | boolean) { } } function foo8(x: number | string | boolean) { ->foo8 : (x: string | number | boolean) => boolean +>foo8 : (x: number | string | boolean) => boolean >x : string | number | boolean if (typeof x === "string") { @@ -215,7 +215,7 @@ function foo8(x: number | string | boolean) { } } function foo9(x: number | string) { ->foo9 : (x: string | number) => boolean +>foo9 : (x: number | string) => boolean >x : string | number var y = 10; @@ -249,7 +249,7 @@ function foo9(x: number | string) { } } function foo10(x: number | string | boolean) { ->foo10 : (x: string | number | boolean) => boolean +>foo10 : (x: number | string | boolean) => boolean >x : string | number | boolean // Mixing typeguard narrowing in if statement with conditional expression typeguard @@ -289,7 +289,7 @@ function foo10(x: number | string | boolean) { } } function foo11(x: number | string | boolean) { ->foo11 : (x: string | number | boolean) => string | false +>foo11 : (x: number | string | boolean) => string | false >x : string | number | boolean // Mixing typeguard narrowing in if statement with conditional expression typeguard @@ -328,9 +328,9 @@ function foo11(x: number | string | boolean) { >10 && x.toString() : string >10 : 10 >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string ) : ( @@ -351,7 +351,7 @@ function foo11(x: number | string | boolean) { } } function foo12(x: number | string | boolean) { ->foo12 : (x: string | number | boolean) => any +>foo12 : (x: number | string | boolean) => any >x : string | number | boolean // Mixing typeguard narrowing in if statement with conditional expression typeguard @@ -387,9 +387,9 @@ function foo12(x: number | string | boolean) { ? x.toString() // number >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string : x.toString(); // boolean | string >x.toString() : any diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInIfStatement.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardsInIfStatement.types.diff deleted file mode 100644 index a1e107c00e0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInIfStatement.types.diff +++ /dev/null @@ -1,134 +0,0 @@ ---- old.typeGuardsInIfStatement.types -+++ new.typeGuardsInIfStatement.types -@@= skipped -5, +5 lines =@@ - // In the false branch statement of an 'if' statement, - // the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false. - function foo(x: number | string) { -->foo : (x: number | string) => number -+>foo : (x: string | number) => number - >x : string | number - - if (typeof x === "string") { -@@= skipped -21, +21 lines =@@ - } - } - function foo2(x: number | string) { -->foo2 : (x: number | string) => number -+>foo2 : (x: string | number) => number - >x : string | number - - if (typeof x === "string") { -@@= skipped -23, +23 lines =@@ - } - } - function foo3(x: number | string) { -->foo3 : (x: number | string) => string | number -+>foo3 : (x: string | number) => string | number - >x : string | number - - if (typeof x === "string") { -@@= skipped -23, +23 lines =@@ - } - } - function foo4(x: number | string) { -->foo4 : (x: number | string) => string | number -+>foo4 : (x: string | number) => string | number - >x : string | number - - if (typeof x === "string") { -@@= skipped -23, +23 lines =@@ - } - } - function foo5(x: number | string) { -->foo5 : (x: number | string) => string -+>foo5 : (x: string | number) => string - >x : string | number - - if (typeof x === "string") { -@@= skipped -23, +23 lines =@@ - } - } - function foo6(x: number | string) { -->foo6 : (x: number | string) => string | number -+>foo6 : (x: string | number) => string | number - >x : string | number - - if (typeof x === "string") { -@@= skipped -28, +28 lines =@@ - } - } - function foo7(x: number | string | boolean) { -->foo7 : (x: number | string | boolean) => boolean -+>foo7 : (x: string | number | boolean) => boolean - >x : string | number | boolean - - if (typeof x === "string") { -@@= skipped -31, +31 lines =@@ - } - } - function foo8(x: number | string | boolean) { -->foo8 : (x: number | string | boolean) => boolean -+>foo8 : (x: string | number | boolean) => boolean - >x : string | number | boolean - - if (typeof x === "string") { -@@= skipped -37, +37 lines =@@ - } - } - function foo9(x: number | string) { -->foo9 : (x: number | string) => boolean -+>foo9 : (x: string | number) => boolean - >x : string | number - - var y = 10; -@@= skipped -34, +34 lines =@@ - } - } - function foo10(x: number | string | boolean) { -->foo10 : (x: number | string | boolean) => boolean -+>foo10 : (x: string | number | boolean) => boolean - >x : string | number | boolean - - // Mixing typeguard narrowing in if statement with conditional expression typeguard -@@= skipped -40, +40 lines =@@ - } - } - function foo11(x: number | string | boolean) { -->foo11 : (x: number | string | boolean) => string | false -+>foo11 : (x: string | number | boolean) => string | false - >x : string | number | boolean - - // Mixing typeguard narrowing in if statement with conditional expression typeguard -@@= skipped -39, +39 lines =@@ - >10 && x.toString() : string - >10 : 10 - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - ) - : ( -@@= skipped -23, +23 lines =@@ - } - } - function foo12(x: number | string | boolean) { -->foo12 : (x: number | string | boolean) => any -+>foo12 : (x: string | number | boolean) => any - >x : string | number | boolean - - // Mixing typeguard narrowing in if statement with conditional expression typeguard -@@= skipped -36, +36 lines =@@ - - ? x.toString() // number - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - : x.toString(); // boolean | string - >x.toString() : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfAndAndOperator.types b/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfAndAndOperator.types index eed3916aa8a..af354418fd4 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfAndAndOperator.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfAndAndOperator.types @@ -4,7 +4,7 @@ // In the right operand of a && operation, // the type of a variable or parameter is narrowed by any type guard in the left operand when true. function foo(x: number | string) { ->foo : (x: string | number) => boolean +>foo : (x: number | string) => boolean >x : string | number return typeof x === "string" && x.length === 10; // string @@ -20,7 +20,7 @@ function foo(x: number | string) { >10 : 10 } function foo2(x: number | string) { ->foo2 : (x: string | number) => number | false +>foo2 : (x: number | string) => number | false >x : string | number // modify x in right hand operand @@ -39,7 +39,7 @@ function foo2(x: number | string) { >x : number } function foo3(x: number | string) { ->foo3 : (x: string | number) => string | false +>foo3 : (x: number | string) => string | false >x : string | number // modify x in right hand operand with string type itself @@ -58,7 +58,7 @@ function foo3(x: number | string) { >x : string } function foo4(x: number | string | boolean) { ->foo4 : (x: string | number | boolean) => x is true +>foo4 : (x: number | string | boolean) => x is true >x : string | number | boolean return typeof x !== "string" // string | number | boolean @@ -79,7 +79,7 @@ function foo4(x: number | string | boolean) { >x : boolean } function foo5(x: number | string | boolean) { ->foo5 : (x: string | number | boolean) => 0 | boolean +>foo5 : (x: number | string | boolean) => 0 | boolean >x : string | number | boolean // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop @@ -111,7 +111,7 @@ function foo5(x: number | string | boolean) { >x : true } function foo6(x: number | string | boolean) { ->foo6 : (x: string | number | boolean) => boolean +>foo6 : (x: number | string | boolean) => boolean >x : string | number | boolean // Mixing typeguard narrowing in if statement with conditional expression typeguard @@ -139,7 +139,7 @@ function foo6(x: number | string | boolean) { >10 : 10 } function foo7(x: number | string | boolean) { ->foo7 : (x: string | number | boolean) => string | 0 | false +>foo7 : (x: number | string | boolean) => string | 0 | false >x : string | number | boolean var y: number| boolean | string; @@ -181,9 +181,9 @@ function foo7(x: number | string | boolean) { >x : string | number | boolean >10 : 10 >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string // do not change value : ((y = x) && x.toString()))); // x is boolean diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfAndAndOperator.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfAndAndOperator.types.diff deleted file mode 100644 index 5600085d7b0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfAndAndOperator.types.diff +++ /dev/null @@ -1,77 +0,0 @@ ---- old.typeGuardsInRightOperandOfAndAndOperator.types -+++ new.typeGuardsInRightOperandOfAndAndOperator.types -@@= skipped -3, +3 lines =@@ - // In the right operand of a && operation, - // the type of a variable or parameter is narrowed by any type guard in the left operand when true. - function foo(x: number | string) { -->foo : (x: number | string) => boolean -+>foo : (x: string | number) => boolean - >x : string | number - - return typeof x === "string" && x.length === 10; // string -@@= skipped -16, +16 lines =@@ - >10 : 10 - } - function foo2(x: number | string) { -->foo2 : (x: number | string) => number | false -+>foo2 : (x: string | number) => number | false - >x : string | number - - // modify x in right hand operand -@@= skipped -19, +19 lines =@@ - >x : number - } - function foo3(x: number | string) { -->foo3 : (x: number | string) => string | false -+>foo3 : (x: string | number) => string | false - >x : string | number - - // modify x in right hand operand with string type itself -@@= skipped -19, +19 lines =@@ - >x : string - } - function foo4(x: number | string | boolean) { -->foo4 : (x: number | string | boolean) => x is true -+>foo4 : (x: string | number | boolean) => x is true - >x : string | number | boolean - - return typeof x !== "string" // string | number | boolean -@@= skipped -21, +21 lines =@@ - >x : boolean - } - function foo5(x: number | string | boolean) { -->foo5 : (x: number | string | boolean) => 0 | boolean -+>foo5 : (x: string | number | boolean) => 0 | boolean - >x : string | number | boolean - - // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop -@@= skipped -32, +32 lines =@@ - >x : true - } - function foo6(x: number | string | boolean) { -->foo6 : (x: number | string | boolean) => boolean -+>foo6 : (x: string | number | boolean) => boolean - >x : string | number | boolean - - // Mixing typeguard narrowing in if statement with conditional expression typeguard -@@= skipped -28, +28 lines =@@ - >10 : 10 - } - function foo7(x: number | string | boolean) { -->foo7 : (x: number | string | boolean) => string | 0 | false -+>foo7 : (x: string | number | boolean) => string | 0 | false - >x : string | number | boolean - - var y: number| boolean | string; -@@= skipped -42, +42 lines =@@ - >x : string | number | boolean - >10 : 10 - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - // do not change value - : ((y = x) && x.toString()))); // x is boolean \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfOrOrOperator.types b/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfOrOrOperator.types index af29cfbb816..eab09e7939e 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfOrOrOperator.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfOrOrOperator.types @@ -5,7 +5,7 @@ // the type of a variable or parameter is narrowed by any type guard in the left operand when false, // provided the right operand contains no assignments to the variable or parameter. function foo(x: number | string) { ->foo : (x: string | number) => boolean +>foo : (x: number | string) => boolean >x : string | number return typeof x !== "string" || x.length === 10; // string @@ -21,7 +21,7 @@ function foo(x: number | string) { >10 : 10 } function foo2(x: number | string) { ->foo2 : (x: string | number) => 10 | true +>foo2 : (x: number | string) => 10 | true >x : string | number // modify x in right hand operand @@ -40,7 +40,7 @@ function foo2(x: number | string) { >x : number } function foo3(x: number | string) { ->foo3 : (x: string | number) => "hello" | true +>foo3 : (x: number | string) => "hello" | true >x : string | number // modify x in right hand operand with string type itself @@ -59,7 +59,7 @@ function foo3(x: number | string) { >x : string } function foo4(x: number | string | boolean) { ->foo4 : (x: string | number | boolean) => x is string | number | true +>foo4 : (x: number | string | boolean) => x is string | number | true >x : string | number | boolean return typeof x === "string" // string | number | boolean @@ -80,7 +80,7 @@ function foo4(x: number | string | boolean) { >x : boolean } function foo5(x: number | string | boolean) { ->foo5 : (x: string | number | boolean) => number | boolean +>foo5 : (x: number | string | boolean) => number | boolean >x : string | number | boolean // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop @@ -112,7 +112,7 @@ function foo5(x: number | string | boolean) { >x : false } function foo6(x: number | string | boolean) { ->foo6 : (x: string | number | boolean) => boolean +>foo6 : (x: number | string | boolean) => boolean >x : string | number | boolean // Mixing typeguard @@ -140,7 +140,7 @@ function foo6(x: number | string | boolean) { >10 : 10 } function foo7(x: number | string | boolean) { ->foo7 : (x: string | number | boolean) => string | number | boolean +>foo7 : (x: number | string | boolean) => string | number | boolean >x : string | number | boolean var y: number| boolean | string; @@ -182,9 +182,9 @@ function foo7(x: number | string | boolean) { >x : string | number | boolean >10 : 10 >x.toString() : string ->x.toString : (radix?: number | undefined) => string +>x.toString : (radix?: number) => string >x : number ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string // do not change value : ((y = x) && x.toString()))); // number | boolean | string diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfOrOrOperator.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfOrOrOperator.types.diff deleted file mode 100644 index 96d3e38cdd7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsInRightOperandOfOrOrOperator.types.diff +++ /dev/null @@ -1,77 +0,0 @@ ---- old.typeGuardsInRightOperandOfOrOrOperator.types -+++ new.typeGuardsInRightOperandOfOrOrOperator.types -@@= skipped -4, +4 lines =@@ - // the type of a variable or parameter is narrowed by any type guard in the left operand when false, - // provided the right operand contains no assignments to the variable or parameter. - function foo(x: number | string) { -->foo : (x: number | string) => boolean -+>foo : (x: string | number) => boolean - >x : string | number - - return typeof x !== "string" || x.length === 10; // string -@@= skipped -16, +16 lines =@@ - >10 : 10 - } - function foo2(x: number | string) { -->foo2 : (x: number | string) => 10 | true -+>foo2 : (x: string | number) => 10 | true - >x : string | number - - // modify x in right hand operand -@@= skipped -19, +19 lines =@@ - >x : number - } - function foo3(x: number | string) { -->foo3 : (x: number | string) => "hello" | true -+>foo3 : (x: string | number) => "hello" | true - >x : string | number - - // modify x in right hand operand with string type itself -@@= skipped -19, +19 lines =@@ - >x : string - } - function foo4(x: number | string | boolean) { -->foo4 : (x: number | string | boolean) => x is string | number | true -+>foo4 : (x: string | number | boolean) => x is string | number | true - >x : string | number | boolean - - return typeof x === "string" // string | number | boolean -@@= skipped -21, +21 lines =@@ - >x : boolean - } - function foo5(x: number | string | boolean) { -->foo5 : (x: number | string | boolean) => number | boolean -+>foo5 : (x: string | number | boolean) => number | boolean - >x : string | number | boolean - - // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop -@@= skipped -32, +32 lines =@@ - >x : false - } - function foo6(x: number | string | boolean) { -->foo6 : (x: number | string | boolean) => boolean -+>foo6 : (x: string | number | boolean) => boolean - >x : string | number | boolean - - // Mixing typeguard -@@= skipped -28, +28 lines =@@ - >10 : 10 - } - function foo7(x: number | string | boolean) { -->foo7 : (x: number | string | boolean) => string | number | boolean -+>foo7 : (x: string | number | boolean) => string | number | boolean - >x : string | number | boolean - - var y: number| boolean | string; -@@= skipped -42, +42 lines =@@ - >x : string | number | boolean - >10 : 10 - >x.toString() : string -->x.toString : (radix?: number) => string -+>x.toString : (radix?: number | undefined) => string - >x : number -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - - // do not change value - : ((y = x) && x.toString()))); // number | boolean | string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsOnClassProperty.types b/testdata/baselines/reference/submodule/conformance/typeGuardsOnClassProperty.types index 26467bb1fef..15a7b0c0bae 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsOnClassProperty.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardsOnClassProperty.types @@ -29,9 +29,9 @@ class D { >"string" : "string" >data : string >data.join(" ") : string ->data.join : (separator?: string | undefined) => string +>data.join : (separator?: string) => string >data : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >" " : " " } @@ -50,17 +50,17 @@ class D { >this : this >data : string >this.data.join(" ") : string ->this.data.join : (separator?: string | undefined) => string +>this.data.join : (separator?: string) => string >this.data : string[] >this : this >data : string[] ->join : (separator?: string | undefined) => string +>join : (separator?: string) => string >" " : " " } } var o: { ->o : { prop1: string | number; prop2: string | boolean; } +>o : { prop1: number | string; prop2: boolean | string; } prop1: number|string; >prop1 : string | number @@ -85,20 +85,20 @@ if (typeof o.prop1 === "string" && o.prop1.toLowerCase()) {} >typeof o.prop1 === "string" : boolean >typeof o.prop1 : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" >o.prop1 : string | number ->o : { prop1: string | number; prop2: string | boolean; } +>o : { prop1: number | string; prop2: boolean | string; } >prop1 : string | number >"string" : "string" >o.prop1.toLowerCase() : string >o.prop1.toLowerCase : () => string >o.prop1 : string ->o : { prop1: string | number; prop2: string | boolean; } +>o : { prop1: number | string; prop2: boolean | string; } >prop1 : string >toLowerCase : () => string var prop1 = o.prop1; >prop1 : string | number >o.prop1 : string | number ->o : { prop1: string | number; prop2: string | boolean; } +>o : { prop1: number | string; prop2: boolean | string; } >prop1 : string | number if (typeof prop1 === "string" && prop1.toLocaleLowerCase()) { } @@ -108,7 +108,7 @@ if (typeof prop1 === "string" && prop1.toLocaleLowerCase()) { } >prop1 : string | number >"string" : "string" >prop1.toLocaleLowerCase() : string ->prop1.toLocaleLowerCase : (locales?: string | string[] | undefined) => string +>prop1.toLocaleLowerCase : (locales?: string | string[]) => string >prop1 : string ->toLocaleLowerCase : (locales?: string | string[] | undefined) => string +>toLocaleLowerCase : (locales?: string | string[]) => string diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsOnClassProperty.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardsOnClassProperty.types.diff deleted file mode 100644 index db167dd9798..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsOnClassProperty.types.diff +++ /dev/null @@ -1,68 +0,0 @@ ---- old.typeGuardsOnClassProperty.types -+++ new.typeGuardsOnClassProperty.types -@@= skipped -28, +28 lines =@@ - >"string" : "string" - >data : string - >data.join(" ") : string -->data.join : (separator?: string) => string -+>data.join : (separator?: string | undefined) => string - >data : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >" " : " " - } - -@@= skipped -21, +21 lines =@@ - >this : this - >data : string - >this.data.join(" ") : string -->this.data.join : (separator?: string) => string -+>this.data.join : (separator?: string | undefined) => string - >this.data : string[] - >this : this - >data : string[] -->join : (separator?: string) => string -+>join : (separator?: string | undefined) => string - >" " : " " - } - } - - var o: { -->o : { prop1: number | string; prop2: boolean | string; } -+>o : { prop1: string | number; prop2: string | boolean; } - - prop1: number|string; - >prop1 : string | number -@@= skipped -35, +35 lines =@@ - >typeof o.prop1 === "string" : boolean - >typeof o.prop1 : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined" - >o.prop1 : string | number -->o : { prop1: number | string; prop2: boolean | string; } -+>o : { prop1: string | number; prop2: string | boolean; } - >prop1 : string | number - >"string" : "string" - >o.prop1.toLowerCase() : string - >o.prop1.toLowerCase : () => string - >o.prop1 : string -->o : { prop1: number | string; prop2: boolean | string; } -+>o : { prop1: string | number; prop2: string | boolean; } - >prop1 : string - >toLowerCase : () => string - - var prop1 = o.prop1; - >prop1 : string | number - >o.prop1 : string | number -->o : { prop1: number | string; prop2: boolean | string; } -+>o : { prop1: string | number; prop2: string | boolean; } - >prop1 : string | number - - if (typeof prop1 === "string" && prop1.toLocaleLowerCase()) { } -@@= skipped -23, +23 lines =@@ - >prop1 : string | number - >"string" : "string" - >prop1.toLocaleLowerCase() : string -->prop1.toLocaleLowerCase : (locales?: string | string[]) => string -+>prop1.toLocaleLowerCase : (locales?: string | string[] | undefined) => string - >prop1 : string -->toLocaleLowerCase : (locales?: string | string[]) => string -+>toLocaleLowerCase : (locales?: string | string[] | undefined) => string diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsWithInstanceOf.types b/testdata/baselines/reference/submodule/conformance/typeGuardsWithInstanceOf.types index 77624c555d2..3e59a13b20c 100644 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsWithInstanceOf.types +++ b/testdata/baselines/reference/submodule/conformance/typeGuardsWithInstanceOf.types @@ -38,7 +38,7 @@ interface OnChanges { } interface Validator { validate(): null | Record; ->validate : () => Record | null +>validate : () => null | Record } class C { diff --git a/testdata/baselines/reference/submodule/conformance/typeGuardsWithInstanceOf.types.diff b/testdata/baselines/reference/submodule/conformance/typeGuardsWithInstanceOf.types.diff deleted file mode 100644 index 67ecee0609c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeGuardsWithInstanceOf.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typeGuardsWithInstanceOf.types -+++ new.typeGuardsWithInstanceOf.types -@@= skipped -37, +37 lines =@@ - } - interface Validator { - validate(): null | Record; -->validate : () => null | Record -+>validate : () => Record | null - } - - class C { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReturnsAndYields.types b/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReturnsAndYields.types index ec57c6088a2..f7360a89641 100644 --- a/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReturnsAndYields.types +++ b/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReturnsAndYields.types @@ -169,13 +169,13 @@ const result20 = test2(async () => { return 'foo'; }); >'foo' : "foo" declare function test3(arg: () => Generator): [T, R] ->test3 : (arg: () => Generator) => [T, R] ->arg : () => Generator +>test3 : (arg: () => Generator) => [T, R] +>arg : () => Generator const result21 = test3(function*() { >result21 : [10, "1"] >test3(function*() { yield 10; return '1';}) : [10, "1"] ->test3 : (arg: () => Generator) => [T, R] +>test3 : (arg: () => Generator) => [T, R] >function*() { yield 10; return '1';} : () => Generator<10, "1", any> yield 10; @@ -188,13 +188,13 @@ const result21 = test3(function*() { }); declare function test4(arg: () => AsyncGenerator): [T, R] ->test4 : (arg: () => AsyncGenerator) => [T, R] ->arg : () => AsyncGenerator +>test4 : (arg: () => AsyncGenerator) => [T, R] +>arg : () => AsyncGenerator const result22 = test4(async function*() { >result22 : [10, "1"] >test4(async function*() { yield 10; return '1';}) : [10, "1"] ->test4 : (arg: () => AsyncGenerator) => [T, R] +>test4 : (arg: () => AsyncGenerator) => [T, R] >async function*() { yield 10; return '1';} : () => AsyncGenerator<10, "1", any> yield 10; diff --git a/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReturnsAndYields.types.diff b/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReturnsAndYields.types.diff index 87038f925a3..143489befdc 100644 --- a/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReturnsAndYields.types.diff +++ b/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReturnsAndYields.types.diff @@ -1,40 +1,6 @@ --- old.typeParameterConstModifiersReturnsAndYields.types +++ new.typeParameterConstModifiersReturnsAndYields.types -@@= skipped -168, +168 lines =@@ - >'foo' : "foo" - - declare function test3(arg: () => Generator): [T, R] -->test3 : (arg: () => Generator) => [T, R] -->arg : () => Generator -+>test3 : (arg: () => Generator) => [T, R] -+>arg : () => Generator - - const result21 = test3(function*() { - >result21 : [10, "1"] - >test3(function*() { yield 10; return '1';}) : [10, "1"] -->test3 : (arg: () => Generator) => [T, R] -+>test3 : (arg: () => Generator) => [T, R] - >function*() { yield 10; return '1';} : () => Generator<10, "1", any> - - yield 10; -@@= skipped -19, +19 lines =@@ - }); - - declare function test4(arg: () => AsyncGenerator): [T, R] -->test4 : (arg: () => AsyncGenerator) => [T, R] -->arg : () => AsyncGenerator -+>test4 : (arg: () => AsyncGenerator) => [T, R] -+>arg : () => AsyncGenerator - - const result22 = test4(async function*() { - >result22 : [10, "1"] - >test4(async function*() { yield 10; return '1';}) : [10, "1"] -->test4 : (arg: () => AsyncGenerator) => [T, R] -+>test4 : (arg: () => AsyncGenerator) => [T, R] - >async function*() { yield 10; return '1';} : () => AsyncGenerator<10, "1", any> - - yield 10; -@@= skipped -151, +151 lines =@@ +@@= skipped -338, +338 lines =@@ >"foo" : "foo" declare function overloaded1(cb: () => T): T; diff --git a/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReverseMappedTypes.types b/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReverseMappedTypes.types index 82584108a81..00946b7f51d 100644 --- a/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReverseMappedTypes.types +++ b/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReverseMappedTypes.types @@ -2,7 +2,7 @@ === typeParameterConstModifiersReverseMappedTypes.ts === declare function test1(obj: { ->test1 : (obj: { [K in keyof T]: T[K]; }) => [T, { [K in keyof T]: T[K]; }] +>test1 : (obj: { [K in keyof T]: T[K]; }) => [T, typeof obj] >obj : { [K in keyof T]: T[K]; } [K in keyof T]: T[K]; @@ -12,7 +12,7 @@ declare function test1(obj: { const result1 = test1({ >result1 : [{ readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }, { readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }] >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, { [K in keyof T]: T[K]; }] +>test1 : (obj: { [K in keyof T]: T[K]; }) => [T, typeof obj] >{ prop: "foo", nested: { nestedProp: "bar", },} : { prop: "foo"; nested: { nestedProp: "bar"; }; } prop: "foo", @@ -31,7 +31,7 @@ const result1 = test1({ }); declare function test2(obj: { ->test2 : (obj: { readonly [K in keyof T]: T[K]; }) => [T, { readonly [K in keyof T]: T[K]; }] +>test2 : (obj: { readonly [K in keyof T]: T[K]; }) => [T, typeof obj] >obj : { readonly [K in keyof T]: T[K]; } readonly [K in keyof T]: T[K]; @@ -41,7 +41,7 @@ declare function test2(obj: { const result2 = test2({ >result2 : [{ prop: "foo"; nested: { readonly nestedProp: "bar"; }; }, { readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }] >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, { readonly [K in keyof T]: T[K]; }] +>test2 : (obj: { readonly [K in keyof T]: T[K]; }) => [T, typeof obj] >{ prop: "foo", nested: { nestedProp: "bar", },} : { prop: "foo"; nested: { nestedProp: "bar"; }; } prop: "foo", @@ -60,7 +60,7 @@ const result2 = test2({ }); declare function test3(obj: { ->test3 : (obj: { -readonly [K in keyof T]: T[K]; }) => [T, { -readonly [K in keyof T]: T[K]; }] +>test3 : (obj: { -readonly [K in keyof T]: T[K]; }) => [T, typeof obj] >obj : { -readonly [K in keyof T]: T[K]; } -readonly [K in keyof T]: T[K]; @@ -70,7 +70,7 @@ declare function test3(obj: { const result3 = test3({ >result3 : [{ readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }, { prop: "foo"; nested: { readonly nestedProp: "bar"; }; }] >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, { -readonly [K in keyof T]: T[K]; }] +>test3 : (obj: { -readonly [K in keyof T]: T[K]; }) => [T, typeof obj] >{ prop: "foo", nested: { nestedProp: "bar", },} : { prop: "foo"; nested: { nestedProp: "bar"; }; } prop: "foo", diff --git a/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReverseMappedTypes.types.diff b/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReverseMappedTypes.types.diff deleted file mode 100644 index b712e8291ba..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeParameterConstModifiersReverseMappedTypes.types.diff +++ /dev/null @@ -1,56 +0,0 @@ ---- old.typeParameterConstModifiersReverseMappedTypes.types -+++ new.typeParameterConstModifiersReverseMappedTypes.types -@@= skipped -1, +1 lines =@@ - - === 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, { [K in keyof T]: T[K]; }] - >obj : { [K in keyof T]: T[K]; } - - [K in keyof T]: T[K]; -@@= skipped -10, +10 lines =@@ - const result1 = test1({ - >result1 : [{ readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }, { readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }] - >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, { [K in keyof T]: T[K]; }] - >{ prop: "foo", nested: { nestedProp: "bar", },} : { prop: "foo"; nested: { nestedProp: "bar"; }; } - - prop: "foo", -@@= skipped -19, +19 lines =@@ - }); - - 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, { readonly [K in keyof T]: T[K]; }] - >obj : { readonly [K in keyof T]: T[K]; } - - readonly [K in keyof T]: T[K]; -@@= skipped -10, +10 lines =@@ - const result2 = test2({ - >result2 : [{ prop: "foo"; nested: { readonly nestedProp: "bar"; }; }, { readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }] - >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, { readonly [K in keyof T]: T[K]; }] - >{ prop: "foo", nested: { nestedProp: "bar", },} : { prop: "foo"; nested: { nestedProp: "bar"; }; } - - prop: "foo", -@@= skipped -19, +19 lines =@@ - }); - - 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, { -readonly [K in keyof T]: T[K]; }] - >obj : { -readonly [K in keyof T]: T[K]; } - - -readonly [K in keyof T]: T[K]; -@@= skipped -10, +10 lines =@@ - const result3 = test3({ - >result3 : [{ readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }, { prop: "foo"; nested: { readonly nestedProp: "bar"; }; }] - >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, { -readonly [K in keyof T]: T[K]; }] - >{ prop: "foo", nested: { nestedProp: "bar", },} : { prop: "foo"; nested: { nestedProp: "bar"; }; } - - prop: "foo", \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeParameterExtendsUnionConstraintDistributed.types b/testdata/baselines/reference/submodule/conformance/typeParameterExtendsUnionConstraintDistributed.types index eddb6281bbc..d33bbf16217 100644 --- a/testdata/baselines/reference/submodule/conformance/typeParameterExtendsUnionConstraintDistributed.types +++ b/testdata/baselines/reference/submodule/conformance/typeParameterExtendsUnionConstraintDistributed.types @@ -5,7 +5,7 @@ type A = 1 | 2; >A : A function f(a: T): A & T { return a; } // Shouldn't error ->f : (a: T) => T +>f : (a: T) => A & T >a : T >a : T @@ -13,7 +13,7 @@ type B = 2 | 3; >B : B function f2(ab: T & U): (A | B) & T & U { return ab; } // Also shouldn't error ->f2 : (ab: T & U) => (1 | 2 | 3) & T & U +>f2 : (ab: T & U) => (A | B) & T & U >ab : T & U >ab : T & U diff --git a/testdata/baselines/reference/submodule/conformance/typeParameterExtendsUnionConstraintDistributed.types.diff b/testdata/baselines/reference/submodule/conformance/typeParameterExtendsUnionConstraintDistributed.types.diff deleted file mode 100644 index 9815fe4dfeb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeParameterExtendsUnionConstraintDistributed.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.typeParameterExtendsUnionConstraintDistributed.types -+++ new.typeParameterExtendsUnionConstraintDistributed.types -@@= skipped -4, +4 lines =@@ - >A : A - - function f(a: T): A & T { return a; } // Shouldn't error -->f : (a: T) => A & T -+>f : (a: T) => T - >a : T - >a : T - -@@= skipped -8, +8 lines =@@ - >B : B - - function f2(ab: T & U): (A | B) & T & U { return ab; } // Also shouldn't error -->f2 : (ab: T & U) => (A | B) & T & U -+>f2 : (ab: T & U) => (1 | 2 | 3) & T & U - >ab : T & U - >ab : T & U diff --git a/testdata/baselines/reference/submodule/conformance/typeSatisfaction.types b/testdata/baselines/reference/submodule/conformance/typeSatisfaction.types index b4c854dd409..a51044a13c3 100644 --- a/testdata/baselines/reference/submodule/conformance/typeSatisfaction.types +++ b/testdata/baselines/reference/submodule/conformance/typeSatisfaction.types @@ -52,9 +52,9 @@ const t5 = (m => m.substring(0)) satisfies T2; // Ok >m => m.substring(0) : (m: string) => string >m : string >m.substring(0) : string ->m.substring : (start: number, end?: number | undefined) => string +>m.substring : (start: number, end?: number) => string >m : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >0 : 0 const t6 = [1, 2] satisfies [number, number]; diff --git a/testdata/baselines/reference/submodule/conformance/typeSatisfaction.types.diff b/testdata/baselines/reference/submodule/conformance/typeSatisfaction.types.diff deleted file mode 100644 index 4f31ca7d2cc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeSatisfaction.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.typeSatisfaction.types -+++ new.typeSatisfaction.types -@@= skipped -51, +51 lines =@@ - >m => m.substring(0) : (m: string) => string - >m : string - >m.substring(0) : string -->m.substring : (start: number, end?: number) => string -+>m.substring : (start: number, end?: number | undefined) => string - >m : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >0 : 0 - - const t6 = [1, 2] satisfies [number, number]; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_optionalMemberConformance.types b/testdata/baselines/reference/submodule/conformance/typeSatisfaction_optionalMemberConformance.types index 1e14791e35b..a8464400857 100644 --- a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_optionalMemberConformance.types +++ b/testdata/baselines/reference/submodule/conformance/typeSatisfaction_optionalMemberConformance.types @@ -21,11 +21,11 @@ console.log(a.x.toFixed()); >console : Console >log : (...data: any[]) => void >a.x.toFixed() : string ->a.x.toFixed : (fractionDigits?: number | undefined) => string +>a.x.toFixed : (fractionDigits?: number) => string >a.x : number >a : { x: number; } >x : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string // Should error let p = a.y; diff --git a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_optionalMemberConformance.types.diff b/testdata/baselines/reference/submodule/conformance/typeSatisfaction_optionalMemberConformance.types.diff deleted file mode 100644 index 374bc5ee8cc..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_optionalMemberConformance.types.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.typeSatisfaction_optionalMemberConformance.types -+++ new.typeSatisfaction_optionalMemberConformance.types -@@= skipped -20, +20 lines =@@ - >console : Console - >log : (...data: any[]) => void - >a.x.toFixed() : string -->a.x.toFixed : (fractionDigits?: number) => string -+>a.x.toFixed : (fractionDigits?: number | undefined) => string - >a.x : number - >a : { x: number; } - >x : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - // Should error - let p = a.y; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propNameConstraining.types b/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propNameConstraining.types index 5aab2cf15f8..fbeb8f602ed 100644 --- a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propNameConstraining.types +++ b/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propNameConstraining.types @@ -27,20 +27,20 @@ const p = { let a = p.a.toFixed(); >a : string >p.a.toFixed() : string ->p.a.toFixed : (fractionDigits?: number | undefined) => string +>p.a.toFixed : (fractionDigits?: number) => string >p.a : number >p : { a: number; b: string; x: number; } >a : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string let b = p.b.substring(1); >b : string >p.b.substring(1) : string ->p.b.substring : (start: number, end?: number | undefined) => string +>p.b.substring : (start: number, end?: number) => string >p.b : string >p : { a: number; b: string; x: number; } >b : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >1 : 1 // Should error even though 'd' is in 'Keys' diff --git a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propNameConstraining.types.diff b/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propNameConstraining.types.diff deleted file mode 100644 index 5dbb77c8643..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propNameConstraining.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.typeSatisfaction_propNameConstraining.types -+++ new.typeSatisfaction_propNameConstraining.types -@@= skipped -26, +26 lines =@@ - let a = p.a.toFixed(); - >a : string - >p.a.toFixed() : string -->p.a.toFixed : (fractionDigits?: number) => string -+>p.a.toFixed : (fractionDigits?: number | undefined) => string - >p.a : number - >p : { a: number; b: string; x: number; } - >a : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - let b = p.b.substring(1); - >b : string - >p.b.substring(1) : string -->p.b.substring : (start: number, end?: number) => string -+>p.b.substring : (start: number, end?: number | undefined) => string - >p.b : string - >p : { a: number; b: string; x: number; } - >b : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >1 : 1 - - // Should error even though 'd' is in 'Keys' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propertyNameFulfillment.types b/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propertyNameFulfillment.types index 15ddf050659..8e496c94007 100644 --- a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propertyNameFulfillment.types +++ b/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propertyNameFulfillment.types @@ -27,20 +27,20 @@ const p = { let a = p.a.toFixed(); >a : string >p.a.toFixed() : string ->p.a.toFixed : (fractionDigits?: number | undefined) => string +>p.a.toFixed : (fractionDigits?: number) => string >p.a : number >p : { a: number; b: string; x: number; } >a : number ->toFixed : (fractionDigits?: number | undefined) => string +>toFixed : (fractionDigits?: number) => string let b = p.b.substring(1); >b : string >p.b.substring(1) : string ->p.b.substring : (start: number, end?: number | undefined) => string +>p.b.substring : (start: number, end?: number) => string >p.b : string >p : { a: number; b: string; x: number; } >b : string ->substring : (start: number, end?: number | undefined) => string +>substring : (start: number, end?: number) => string >1 : 1 // Should error even though 'd' is in 'Keys' diff --git a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propertyNameFulfillment.types.diff b/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propertyNameFulfillment.types.diff deleted file mode 100644 index 37ea70e84cd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeSatisfaction_propertyNameFulfillment.types.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- old.typeSatisfaction_propertyNameFulfillment.types -+++ new.typeSatisfaction_propertyNameFulfillment.types -@@= skipped -26, +26 lines =@@ - let a = p.a.toFixed(); - >a : string - >p.a.toFixed() : string -->p.a.toFixed : (fractionDigits?: number) => string -+>p.a.toFixed : (fractionDigits?: number | undefined) => string - >p.a : number - >p : { a: number; b: string; x: number; } - >a : number -->toFixed : (fractionDigits?: number) => string -+>toFixed : (fractionDigits?: number | undefined) => string - - let b = p.b.substring(1); - >b : string - >p.b.substring(1) : string -->p.b.substring : (start: number, end?: number) => string -+>p.b.substring : (start: number, end?: number | undefined) => string - >p.b : string - >p : { a: number; b: string; x: number; } - >b : string -->substring : (start: number, end?: number) => string -+>substring : (start: number, end?: number | undefined) => string - >1 : 1 - - // Should error even though 'd' is in 'Keys' \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeTagOnPropertyAssignment.types b/testdata/baselines/reference/submodule/conformance/typeTagOnPropertyAssignment.types index 8bf9b35a16c..7d7e6f52cb3 100644 --- a/testdata/baselines/reference/submodule/conformance/typeTagOnPropertyAssignment.types +++ b/testdata/baselines/reference/submodule/conformance/typeTagOnPropertyAssignment.types @@ -2,8 +2,8 @@ === typeTagOnPropertyAssignment.js === const o = { ->o : { a: "a"; n: () => "b"; } ->{ /** * @type {"a"} */ a: "a", /** @type {() => 'b'} */ n: () => 'b'} : { a: "a"; n: () => "b"; } +>o : { a: "a"; n: () => 'b'; } +>{ /** * @type {"a"} */ a: "a", /** @type {() => 'b'} */ n: () => 'b'} : { a: "a"; n: () => 'b'; } /** * @type {"a"} @@ -14,18 +14,18 @@ const o = { /** @type {() => 'b'} */ n: () => 'b' ->n : () => "b" +>n : () => 'b' >() => 'b' : () => "b" >'b' : "b" }; o.a >o.a : "a" ->o : { a: "a"; n: () => "b"; } +>o : { a: "a"; n: () => 'b'; } >a : "a" o.n ->o.n : () => "b" ->o : { a: "a"; n: () => "b"; } ->n : () => "b" +>o.n : () => 'b' +>o : { a: "a"; n: () => 'b'; } +>n : () => 'b' diff --git a/testdata/baselines/reference/submodule/conformance/typeTagOnPropertyAssignment.types.diff b/testdata/baselines/reference/submodule/conformance/typeTagOnPropertyAssignment.types.diff new file mode 100644 index 00000000000..c009e5bae9f --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/typeTagOnPropertyAssignment.types.diff @@ -0,0 +1,36 @@ +--- old.typeTagOnPropertyAssignment.types ++++ new.typeTagOnPropertyAssignment.types +@@= skipped -1, +1 lines =@@ + + === typeTagOnPropertyAssignment.js === + const o = { +->o : { a: "a"; n: () => "b"; } +->{ /** * @type {"a"} */ a: "a", /** @type {() => 'b'} */ n: () => 'b'} : { a: "a"; n: () => "b"; } ++>o : { a: "a"; n: () => 'b'; } ++>{ /** * @type {"a"} */ a: "a", /** @type {() => 'b'} */ n: () => 'b'} : { a: "a"; n: () => 'b'; } + + /** + * @type {"a"} +@@= skipped -12, +12 lines =@@ + + /** @type {() => 'b'} */ + n: () => 'b' +->n : () => "b" ++>n : () => 'b' + >() => 'b' : () => "b" + >'b' : "b" + + }; + o.a + >o.a : "a" +->o : { a: "a"; n: () => "b"; } ++>o : { a: "a"; n: () => 'b'; } + >a : "a" + + o.n +->o.n : () => "b" +->o : { a: "a"; n: () => "b"; } +->n : () => "b" ++>o.n : () => 'b' ++>o : { a: "a"; n: () => 'b'; } ++>n : () => 'b' diff --git a/testdata/baselines/reference/submodule/conformance/typeTagWithGenericSignature.types b/testdata/baselines/reference/submodule/conformance/typeTagWithGenericSignature.types index 9f9358c9b00..8689fb02877 100644 --- a/testdata/baselines/reference/submodule/conformance/typeTagWithGenericSignature.types +++ b/testdata/baselines/reference/submodule/conformance/typeTagWithGenericSignature.types @@ -3,7 +3,7 @@ === bug25618.js === /** @type {(param?: T) => T | undefined} */ function typed(param) { ->typed : (param?: T | undefined) => T | undefined +>typed : (param?: T) => T | undefined >param : T | undefined return param; @@ -13,7 +13,7 @@ function typed(param) { var n = typed(1); >n : number | undefined >typed(1) : 1 | undefined ->typed : (param?: T | undefined) => T | undefined +>typed : (param?: T) => T | undefined >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/typeTagWithGenericSignature.types.diff b/testdata/baselines/reference/submodule/conformance/typeTagWithGenericSignature.types.diff deleted file mode 100644 index 02313972c3c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeTagWithGenericSignature.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.typeTagWithGenericSignature.types -+++ new.typeTagWithGenericSignature.types -@@= skipped -2, +2 lines =@@ - === bug25618.js === - /** @type {(param?: T) => T | undefined} */ - function typed(param) { -->typed : (param?: T) => T | undefined -+>typed : (param?: T | undefined) => T | undefined - >param : T | undefined - - return param; -@@= skipped -10, +10 lines =@@ - var n = typed(1); - >n : number | undefined - >typed(1) : 1 | undefined -->typed : (param?: T) => T | undefined -+>typed : (param?: T | undefined) => T | undefined - >1 : 1 - diff --git a/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.types b/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.types index 1839da2652a..1c777f17dce 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.types +++ b/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.types @@ -11,7 +11,7 @@ /** @type {Everything<{ a: number, b: 'hi', c: never }, undefined, { c: true, d: 1 }, number, string>} */ var tuvwx; ->tuvwx : Everything<{ a: number; b: "hi"; c: never; }, undefined, { c: true; d: 1; }, number, string> +>tuvwx : Everything<{ a: number; b: 'hi'; c: never; }, undefined, { c: true; d: 1; }, number, string> /** @type {Everything<{ a: number }, undefined, { c: 1, d: 1 }, number, string>} */ var wrong; diff --git a/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.types.diff b/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.types.diff new file mode 100644 index 00000000000..158fc0129ae --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.types.diff @@ -0,0 +1,11 @@ +--- old.typedefMultipleTypeParameters.types ++++ new.typedefMultipleTypeParameters.types +@@= skipped -10, +10 lines =@@ + + /** @type {Everything<{ a: number, b: 'hi', c: never }, undefined, { c: true, d: 1 }, number, string>} */ + var tuvwx; +->tuvwx : Everything<{ a: number; b: "hi"; c: never; }, undefined, { c: true; d: 1; }, number, string> ++>tuvwx : Everything<{ a: number; b: 'hi'; c: never; }, undefined, { c: true; d: 1; }, number, string> + + /** @type {Everything<{ a: number }, undefined, { c: 1, d: 1 }, number, string>} */ + var wrong; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typedefTagTypeResolution.types b/testdata/baselines/reference/submodule/conformance/typedefTagTypeResolution.types index 81e8c54752b..e22509e71df 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefTagTypeResolution.types +++ b/testdata/baselines/reference/submodule/conformance/typedefTagTypeResolution.types @@ -9,7 +9,7 @@ * @return {T} */ function f(x) { ->f : (x: U) => U +>f : (x: U) => T >x : U return x; diff --git a/testdata/baselines/reference/submodule/conformance/typedefTagTypeResolution.types.diff b/testdata/baselines/reference/submodule/conformance/typedefTagTypeResolution.types.diff index 9c031442af8..9015e291872 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefTagTypeResolution.types.diff +++ b/testdata/baselines/reference/submodule/conformance/typedefTagTypeResolution.types.diff @@ -1,15 +1,6 @@ --- old.typedefTagTypeResolution.types +++ new.typedefTagTypeResolution.types -@@= skipped -8, +8 lines =@@ - * @return {T} - */ - function f(x) { -->f : (x: U) => T -+>f : (x: U) => U - >x : U - - return x; -@@= skipped -28, +28 lines =@@ +@@= skipped -36, +36 lines =@@ /** @type {Cb} */ const cb = x => {} >cb : Cb diff --git a/testdata/baselines/reference/submodule/conformance/typeofThis.types b/testdata/baselines/reference/submodule/conformance/typeofThis.types index 14ad11bf994..f837f2c7aa2 100644 --- a/testdata/baselines/reference/submodule/conformance/typeofThis.types +++ b/testdata/baselines/reference/submodule/conformance/typeofThis.types @@ -279,56 +279,56 @@ class Test10 { >Test10 : Test10 a?: { b?: string } ->a : { b?: string | undefined; } | undefined +>a : { b?: string; } | undefined >b : string | undefined foo() { >foo : () => void let a: typeof this.a = undefined as any; ->a : { b?: string | undefined; } | undefined ->this.a : { b?: string | undefined; } | undefined +>a : { b?: string; } | undefined +>this.a : { b?: string; } | undefined >this : this ->a : { b?: string | undefined; } | undefined +>a : { b?: string; } | undefined >undefined as any : any >undefined : undefined if (this.a) { ->this.a : { b?: string | undefined; } | undefined +>this.a : { b?: string; } | undefined >this : this ->a : { b?: string | undefined; } | undefined +>a : { b?: string; } | undefined let a: typeof this.a = undefined as any; // should narrow to { b?: string } ->a : { b?: string | undefined; } ->this.a : { b?: string | undefined; } +>a : { b?: string; } +>this.a : { b?: string; } >this : this ->a : { b?: string | undefined; } +>a : { b?: string; } >undefined as any : any >undefined : undefined let b: typeof this.a.b = undefined as any; >b : string | undefined >this.a.b : string | undefined ->this.a : { b?: string | undefined; } +>this.a : { b?: string; } >this : this ->a : { b?: string | undefined; } +>a : { b?: string; } >b : string | undefined >undefined as any : any >undefined : undefined if (this.a.b) { >this.a.b : string | undefined ->this.a : { b?: string | undefined; } +>this.a : { b?: string; } >this : this ->a : { b?: string | undefined; } +>a : { b?: string; } >b : string | undefined let b: typeof this.a.b = undefined as any; // should narrow to string >b : string >this.a.b : string ->this.a : { b?: string | undefined; } +>this.a : { b?: string; } >this : this ->a : { b?: string | undefined; } +>a : { b?: string; } >b : string >undefined as any : any >undefined : undefined @@ -341,7 +341,7 @@ class Test11 { >Test11 : Test11 this?: { x?: string }; ->this : { x?: string | undefined; } | undefined +>this : { x?: string; } | undefined >x : string | undefined foo() { @@ -352,29 +352,29 @@ class Test11 { >this : this let bar: typeof o.this = {}; ->bar : { x?: string | undefined; } | undefined ->o.this : { x?: string | undefined; } | undefined +>bar : { x?: string; } | undefined +>o.this : { x?: string; } | undefined >o : this ->this : { x?: string | undefined; } | undefined +>this : { x?: string; } | undefined >{} : {} if (o.this && o.this.x) { >o.this && o.this.x : string | undefined ->o.this : { x?: string | undefined; } | undefined +>o.this : { x?: string; } | undefined >o : this ->this : { x?: string | undefined; } | undefined +>this : { x?: string; } | undefined >o.this.x : string | undefined ->o.this : { x?: string | undefined; } +>o.this : { x?: string; } >o : this ->this : { x?: string | undefined; } +>this : { x?: string; } >x : string | undefined let y: string = o.this.x; // should narrow to string >y : string >o.this.x : string ->o.this : { x?: string | undefined; } +>o.this : { x?: string; } >o : this ->this : { x?: string | undefined; } +>this : { x?: string; } >x : string } } diff --git a/testdata/baselines/reference/submodule/conformance/typeofThis.types.diff b/testdata/baselines/reference/submodule/conformance/typeofThis.types.diff deleted file mode 100644 index bfe3ba96eba..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typeofThis.types.diff +++ /dev/null @@ -1,122 +0,0 @@ ---- old.typeofThis.types -+++ new.typeofThis.types -@@= skipped -278, +278 lines =@@ - >Test10 : Test10 - - a?: { b?: string } -->a : { b?: string; } | undefined -+>a : { b?: string | undefined; } | undefined - >b : string | undefined - - foo() { - >foo : () => void - - let a: typeof this.a = undefined as any; -->a : { b?: string; } | undefined -->this.a : { b?: string; } | undefined -+>a : { b?: string | undefined; } | undefined -+>this.a : { b?: string | undefined; } | undefined - >this : this -->a : { b?: string; } | undefined -+>a : { b?: string | undefined; } | undefined - >undefined as any : any - >undefined : undefined - - if (this.a) { -->this.a : { b?: string; } | undefined -+>this.a : { b?: string | undefined; } | undefined - >this : this -->a : { b?: string; } | undefined -+>a : { b?: string | undefined; } | undefined - - let a: typeof this.a = undefined as any; // should narrow to { b?: string } -->a : { b?: string; } -->this.a : { b?: string; } -+>a : { b?: string | undefined; } -+>this.a : { b?: string | undefined; } - >this : this -->a : { b?: string; } -+>a : { b?: string | undefined; } - >undefined as any : any - >undefined : undefined - - let b: typeof this.a.b = undefined as any; - >b : string | undefined - >this.a.b : string | undefined -->this.a : { b?: string; } -+>this.a : { b?: string | undefined; } - >this : this -->a : { b?: string; } -+>a : { b?: string | undefined; } - >b : string | undefined - >undefined as any : any - >undefined : undefined - - if (this.a.b) { - >this.a.b : string | undefined -->this.a : { b?: string; } -+>this.a : { b?: string | undefined; } - >this : this -->a : { b?: string; } -+>a : { b?: string | undefined; } - >b : string | undefined - - let b: typeof this.a.b = undefined as any; // should narrow to string - >b : string - >this.a.b : string -->this.a : { b?: string; } -+>this.a : { b?: string | undefined; } - >this : this -->a : { b?: string; } -+>a : { b?: string | undefined; } - >b : string - >undefined as any : any - >undefined : undefined -@@= skipped -62, +62 lines =@@ - >Test11 : Test11 - - this?: { x?: string }; -->this : { x?: string; } | undefined -+>this : { x?: string | undefined; } | undefined - >x : string | undefined - - foo() { -@@= skipped -11, +11 lines =@@ - >this : this - - let bar: typeof o.this = {}; -->bar : { x?: string; } | undefined -->o.this : { x?: string; } | undefined -+>bar : { x?: string | undefined; } | undefined -+>o.this : { x?: string | undefined; } | undefined - >o : this -->this : { x?: string; } | undefined -+>this : { x?: string | undefined; } | undefined - >{} : {} - - if (o.this && o.this.x) { - >o.this && o.this.x : string | undefined -->o.this : { x?: string; } | undefined -+>o.this : { x?: string | undefined; } | undefined - >o : this -->this : { x?: string; } | undefined -+>this : { x?: string | undefined; } | undefined - >o.this.x : string | undefined -->o.this : { x?: string; } -+>o.this : { x?: string | undefined; } - >o : this -->this : { x?: string; } -+>this : { x?: string | undefined; } - >x : string | undefined - - let y: string = o.this.x; // should narrow to string - >y : string - >o.this.x : string -->o.this : { x?: string; } -+>o.this : { x?: string | undefined; } - >o : this -->this : { x?: string; } -+>this : { x?: string | undefined; } - >x : string - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.1.types b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.1.types index aaac4533177..9c300d3c717 100644 --- a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.1.types +++ b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.1.types @@ -196,7 +196,7 @@ const assignability10: () => AsyncIterable = async function * () { }; const assignability11: () => AsyncIterator = async function * () { ->assignability11 : () => AsyncIterator +>assignability11 : () => AsyncIterator >async function * () { yield 1;} : () => AsyncGenerator yield 1; @@ -205,7 +205,7 @@ const assignability11: () => AsyncIterator = async function * () { }; const assignability12: () => AsyncIterator = async function * () { ->assignability12 : () => AsyncIterator +>assignability12 : () => AsyncIterator >async function * () { yield Promise.resolve(1);} : () => AsyncGenerator yield Promise.resolve(1); @@ -218,7 +218,7 @@ const assignability12: () => AsyncIterator = async function * () { }; const assignability13: () => AsyncIterator = async function * () { ->assignability13 : () => AsyncIterator +>assignability13 : () => AsyncIterator >async function * () { yield* [1, 2];} : () => AsyncGenerator yield* [1, 2]; @@ -229,7 +229,7 @@ const assignability13: () => AsyncIterator = async function * () { }; const assignability14: () => AsyncIterator = async function * () { ->assignability14 : () => AsyncIterator +>assignability14 : () => AsyncIterator >async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator yield* [Promise.resolve(1)]; @@ -243,7 +243,7 @@ const assignability14: () => AsyncIterator = async function * () { }; const assignability15: () => AsyncIterator = async function * () { ->assignability15 : () => AsyncIterator +>assignability15 : () => AsyncIterator >async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator yield* (async function * () { yield 1; })(); @@ -356,14 +356,14 @@ async function * explicitReturnType10(): AsyncIterable { >1 : 1 } async function * explicitReturnType11(): AsyncIterator { ->explicitReturnType11 : () => AsyncIterator +>explicitReturnType11 : () => AsyncIterator yield 1; >yield 1 : any >1 : 1 } async function * explicitReturnType12(): AsyncIterator { ->explicitReturnType12 : () => AsyncIterator +>explicitReturnType12 : () => AsyncIterator yield Promise.resolve(1); >yield Promise.resolve(1) : any @@ -374,7 +374,7 @@ async function * explicitReturnType12(): AsyncIterator { >1 : 1 } async function * explicitReturnType13(): AsyncIterator { ->explicitReturnType13 : () => AsyncIterator +>explicitReturnType13 : () => AsyncIterator yield* [1, 2]; >yield* [1, 2] : any @@ -383,7 +383,7 @@ async function * explicitReturnType13(): AsyncIterator { >2 : 2 } async function * explicitReturnType14(): AsyncIterator { ->explicitReturnType14 : () => AsyncIterator +>explicitReturnType14 : () => AsyncIterator yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : any @@ -395,7 +395,7 @@ async function * explicitReturnType14(): AsyncIterator { >1 : 1 } async function * explicitReturnType15(): AsyncIterator { ->explicitReturnType15 : () => AsyncIterator +>explicitReturnType15 : () => AsyncIterator yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void diff --git a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.1.types.diff b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.1.types.diff deleted file mode 100644 index 05de6fc5375..00000000000 --- a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.1.types.diff +++ /dev/null @@ -1,91 +0,0 @@ ---- old.types.asyncGenerators.es2018.1.types -+++ new.types.asyncGenerators.es2018.1.types -@@= skipped -195, +195 lines =@@ - - }; - const assignability11: () => AsyncIterator = async function * () { -->assignability11 : () => AsyncIterator -+>assignability11 : () => AsyncIterator - >async function * () { yield 1;} : () => AsyncGenerator - - yield 1; -@@= skipped -9, +9 lines =@@ - - }; - const assignability12: () => AsyncIterator = async function * () { -->assignability12 : () => AsyncIterator -+>assignability12 : () => AsyncIterator - >async function * () { yield Promise.resolve(1);} : () => AsyncGenerator - - yield Promise.resolve(1); -@@= skipped -13, +13 lines =@@ - - }; - const assignability13: () => AsyncIterator = async function * () { -->assignability13 : () => AsyncIterator -+>assignability13 : () => AsyncIterator - >async function * () { yield* [1, 2];} : () => AsyncGenerator - - yield* [1, 2]; -@@= skipped -11, +11 lines =@@ - - }; - const assignability14: () => AsyncIterator = async function * () { -->assignability14 : () => AsyncIterator -+>assignability14 : () => AsyncIterator - >async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator - - yield* [Promise.resolve(1)]; -@@= skipped -14, +14 lines =@@ - - }; - const assignability15: () => AsyncIterator = async function * () { -->assignability15 : () => AsyncIterator -+>assignability15 : () => AsyncIterator - >async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator - - yield* (async function * () { yield 1; })(); -@@= skipped -113, +113 lines =@@ - >1 : 1 - } - async function * explicitReturnType11(): AsyncIterator { -->explicitReturnType11 : () => AsyncIterator -+>explicitReturnType11 : () => AsyncIterator - - yield 1; - >yield 1 : any - >1 : 1 - } - async function * explicitReturnType12(): AsyncIterator { -->explicitReturnType12 : () => AsyncIterator -+>explicitReturnType12 : () => AsyncIterator - - yield Promise.resolve(1); - >yield Promise.resolve(1) : any -@@= skipped -18, +18 lines =@@ - >1 : 1 - } - async function * explicitReturnType13(): AsyncIterator { -->explicitReturnType13 : () => AsyncIterator -+>explicitReturnType13 : () => AsyncIterator - - yield* [1, 2]; - >yield* [1, 2] : any -@@= skipped -9, +9 lines =@@ - >2 : 2 - } - async function * explicitReturnType14(): AsyncIterator { -->explicitReturnType14 : () => AsyncIterator -+>explicitReturnType14 : () => AsyncIterator - - yield* [Promise.resolve(1)]; - >yield* [Promise.resolve(1)] : any -@@= skipped -12, +12 lines =@@ - >1 : 1 - } - async function * explicitReturnType15(): AsyncIterator { -->explicitReturnType15 : () => AsyncIterator -+>explicitReturnType15 : () => AsyncIterator - - yield* (async function * () { yield 1; })(); - >yield* (async function * () { yield 1; })() : void \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.errors.txt b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.errors.txt index d9dce101066..fa0c4837522 100644 --- a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.errors.txt @@ -48,7 +48,7 @@ types.asyncGenerators.es2018.2.ts(25,7): error TS2322: Type '() => AsyncGenerato Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. Type 'string' is not assignable to type 'number'. -types.asyncGenerators.es2018.2.ts(28,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +types.asyncGenerators.es2018.2.ts(28,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. The types returned by 'next(...)' are incompatible between these types. Type 'Promise>' is not assignable to type 'Promise>'. @@ -56,7 +56,7 @@ types.asyncGenerators.es2018.2.ts(28,7): error TS2322: Type '() => AsyncGenerato Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. Type 'string' is not assignable to type 'number'. -types.asyncGenerators.es2018.2.ts(31,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +types.asyncGenerators.es2018.2.ts(31,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. The types returned by 'next(...)' are incompatible between these types. Type 'Promise>' is not assignable to type 'Promise>'. @@ -64,7 +64,7 @@ types.asyncGenerators.es2018.2.ts(31,7): error TS2322: Type '() => AsyncGenerato Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. Type 'string' is not assignable to type 'number'. -types.asyncGenerators.es2018.2.ts(34,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +types.asyncGenerators.es2018.2.ts(34,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. The types returned by 'next(...)' are incompatible between these types. Type 'Promise>' is not assignable to type 'Promise>'. @@ -178,7 +178,7 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ }; const assignability7: () => AsyncIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. !!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. @@ -190,7 +190,7 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ }; const assignability8: () => AsyncIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. !!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. @@ -202,7 +202,7 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ }; const assignability9: () => AsyncIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. !!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. diff --git a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.errors.txt.diff index 4032503f2cd..d1f9bdf1014 100644 --- a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.errors.txt.diff @@ -54,34 +54,49 @@ The types returned by '[Symbol.asyncIterator]().next(...)' are incompatible between these types. Type 'Promise>' is not assignable to type 'Promise>'. Type 'IteratorResult' is not assignable to type 'IteratorResult'. -@@= skipped -8, +8 lines =@@ + Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. Type 'string' is not assignable to type 'number'. - types.asyncGenerators.es2018.2.ts(28,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +-types.asyncGenerators.es2018.2.ts(28,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Call signature return types 'AsyncGenerator' and 'AsyncIterator' are incompatible. -+ Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. - The types returned by 'next(...)' are incompatible between these types. - Type 'Promise>' is not assignable to type 'Promise>'. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. -@@= skipped -8, +8 lines =@@ - Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. - Type 'string' is not assignable to type 'number'. - types.asyncGenerators.es2018.2.ts(31,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +- The types returned by 'next(...)' are incompatible between these types. +- Type 'Promise>' is not assignable to type 'Promise>'. +- Type 'IteratorResult' is not assignable to type 'IteratorResult'. +- Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. +- Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. +- Type 'string' is not assignable to type 'number'. +-types.asyncGenerators.es2018.2.ts(31,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Call signature return types 'AsyncGenerator' and 'AsyncIterator' are incompatible. -+ Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. - The types returned by 'next(...)' are incompatible between these types. - Type 'Promise>' is not assignable to type 'Promise>'. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. -@@= skipped -8, +8 lines =@@ - Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. - Type 'string' is not assignable to type 'number'. - types.asyncGenerators.es2018.2.ts(34,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +- The types returned by 'next(...)' are incompatible between these types. +- Type 'Promise>' is not assignable to type 'Promise>'. +- Type 'IteratorResult' is not assignable to type 'IteratorResult'. +- Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. +- Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. +- Type 'string' is not assignable to type 'number'. +-types.asyncGenerators.es2018.2.ts(34,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Call signature return types 'AsyncGenerator' and 'AsyncIterator' are incompatible. ++types.asyncGenerators.es2018.2.ts(28,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. ++ Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. ++ The types returned by 'next(...)' are incompatible between these types. ++ Type 'Promise>' is not assignable to type 'Promise>'. ++ Type 'IteratorResult' is not assignable to type 'IteratorResult'. ++ Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. ++ Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. ++ Type 'string' is not assignable to type 'number'. ++types.asyncGenerators.es2018.2.ts(31,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. ++ Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. ++ The types returned by 'next(...)' are incompatible between these types. ++ Type 'Promise>' is not assignable to type 'Promise>'. ++ Type 'IteratorResult' is not assignable to type 'IteratorResult'. ++ Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. ++ Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. ++ Type 'string' is not assignable to type 'number'. ++types.asyncGenerators.es2018.2.ts(34,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. The types returned by 'next(...)' are incompatible between these types. Type 'Promise>' is not assignable to type 'Promise>'. Type 'IteratorResult' is not assignable to type 'IteratorResult'. -@@= skipped -42, +42 lines =@@ +@@= skipped -66, +66 lines =@@ const assignability1: () => AsyncIterableIterator = async function * () { ~~~~~~~~~~~~~~ !!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. @@ -135,29 +150,35 @@ !!! error TS2322: The types returned by '[Symbol.asyncIterator]().next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -@@= skipped -12, +12 lines =@@ +@@= skipped -11, +11 lines =@@ + }; const assignability7: () => AsyncIterator = async function * () { ~~~~~~~~~~~~~~ - !!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +-!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterator' are incompatible. ++!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. @@= skipped -12, +12 lines =@@ + }; const assignability8: () => AsyncIterator = async function * () { ~~~~~~~~~~~~~~ - !!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +-!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterator' are incompatible. ++!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. @@= skipped -12, +12 lines =@@ + }; const assignability9: () => AsyncIterator = async function * () { ~~~~~~~~~~~~~~ - !!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +-!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterator' are incompatible. ++!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. diff --git a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.types b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.types index 98830e661c3..b77e6d78202 100644 --- a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.types +++ b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.types @@ -96,7 +96,7 @@ const assignability6: () => AsyncIterable = async function * () { }; const assignability7: () => AsyncIterator = async function * () { ->assignability7 : () => AsyncIterator +>assignability7 : () => AsyncIterator >async function * () { yield "a";} : () => AsyncGenerator yield "a"; @@ -105,7 +105,7 @@ const assignability7: () => AsyncIterator = async function * () { }; const assignability8: () => AsyncIterator = async function * () { ->assignability8 : () => AsyncIterator +>assignability8 : () => AsyncIterator >async function * () { yield* ["a", "b"];} : () => AsyncGenerator yield* ["a", "b"]; @@ -116,7 +116,7 @@ const assignability8: () => AsyncIterator = async function * () { }; const assignability9: () => AsyncIterator = async function * () { ->assignability9 : () => AsyncIterator +>assignability9 : () => AsyncIterator >async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator yield* (async function * () { yield "a"; })(); @@ -183,14 +183,14 @@ async function * explicitReturnType6(): AsyncIterable { >"a" : "a" } async function * explicitReturnType7(): AsyncIterator { ->explicitReturnType7 : () => AsyncIterator +>explicitReturnType7 : () => AsyncIterator yield "a"; >yield "a" : any >"a" : "a" } async function * explicitReturnType8(): AsyncIterator { ->explicitReturnType8 : () => AsyncIterator +>explicitReturnType8 : () => AsyncIterator yield* ["a", "b"]; >yield* ["a", "b"] : any @@ -199,7 +199,7 @@ async function * explicitReturnType8(): AsyncIterator { >"b" : "b" } async function * explicitReturnType9(): AsyncIterator { ->explicitReturnType9 : () => AsyncIterator +>explicitReturnType9 : () => AsyncIterator yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void @@ -224,7 +224,7 @@ async function * explicitReturnType11(): Iterable { >1 : 1 } async function * explicitReturnType12(): Iterator { ->explicitReturnType12 : () => Iterator +>explicitReturnType12 : () => Iterator yield 1; >yield 1 : any diff --git a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.types.diff b/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.types.diff deleted file mode 100644 index 53afa821081..00000000000 --- a/testdata/baselines/reference/submodule/conformance/types.asyncGenerators.es2018.2.types.diff +++ /dev/null @@ -1,64 +0,0 @@ ---- old.types.asyncGenerators.es2018.2.types -+++ new.types.asyncGenerators.es2018.2.types -@@= skipped -95, +95 lines =@@ - - }; - const assignability7: () => AsyncIterator = async function * () { -->assignability7 : () => AsyncIterator -+>assignability7 : () => AsyncIterator - >async function * () { yield "a";} : () => AsyncGenerator - - yield "a"; -@@= skipped -9, +9 lines =@@ - - }; - const assignability8: () => AsyncIterator = async function * () { -->assignability8 : () => AsyncIterator -+>assignability8 : () => AsyncIterator - >async function * () { yield* ["a", "b"];} : () => AsyncGenerator - - yield* ["a", "b"]; -@@= skipped -11, +11 lines =@@ - - }; - const assignability9: () => AsyncIterator = async function * () { -->assignability9 : () => AsyncIterator -+>assignability9 : () => AsyncIterator - >async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator - - yield* (async function * () { yield "a"; })(); -@@= skipped -67, +67 lines =@@ - >"a" : "a" - } - async function * explicitReturnType7(): AsyncIterator { -->explicitReturnType7 : () => AsyncIterator -+>explicitReturnType7 : () => AsyncIterator - - yield "a"; - >yield "a" : any - >"a" : "a" - } - async function * explicitReturnType8(): AsyncIterator { -->explicitReturnType8 : () => AsyncIterator -+>explicitReturnType8 : () => AsyncIterator - - yield* ["a", "b"]; - >yield* ["a", "b"] : any -@@= skipped -16, +16 lines =@@ - >"b" : "b" - } - async function * explicitReturnType9(): AsyncIterator { -->explicitReturnType9 : () => AsyncIterator -+>explicitReturnType9 : () => AsyncIterator - - yield* (async function * () { yield "a"; })(); - >yield* (async function * () { yield "a"; })() : void -@@= skipped -25, +25 lines =@@ - >1 : 1 - } - async function * explicitReturnType12(): Iterator { -->explicitReturnType12 : () => Iterator -+>explicitReturnType12 : () => Iterator - - yield 1; - >yield 1 : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typesWithOptionalProperty.types b/testdata/baselines/reference/submodule/conformance/typesWithOptionalProperty.types index 5f8f18cd7a6..82fd5d04ea9 100644 --- a/testdata/baselines/reference/submodule/conformance/typesWithOptionalProperty.types +++ b/testdata/baselines/reference/submodule/conformance/typesWithOptionalProperty.types @@ -15,7 +15,7 @@ interface I { } var a: { ->a : { foo: string; bar?: number | undefined; baz?(): string; } +>a : { foo: string; bar?: number; baz?(): string; } foo: string; >foo : string @@ -73,26 +73,26 @@ i = d; a = b; >a = b : { foo: string; } ->a : { foo: string; bar?: number | undefined; baz?(): string; } +>a : { foo: string; bar?: number; baz?(): string; } >b : { foo: string; } a = c; >a = c : { foo: string; bar: number; } ->a : { foo: string; bar?: number | undefined; baz?(): string; } +>a : { foo: string; bar?: number; baz?(): string; } >c : { foo: string; bar: number; } a = d; >a = d : { foo: string; bar: number; baz: () => string; } ->a : { foo: string; bar?: number | undefined; baz?(): string; } +>a : { foo: string; bar?: number; baz?(): string; } >d : { foo: string; bar: number; baz: () => string; } i = a; ->i = a : { foo: string; bar?: number | undefined; baz?(): string; } +>i = a : { foo: string; bar?: number; baz?(): string; } >i : I ->a : { foo: string; bar?: number | undefined; baz?(): string; } +>a : { foo: string; bar?: number; baz?(): string; } a = i; >a = i : I ->a : { foo: string; bar?: number | undefined; baz?(): string; } +>a : { foo: string; bar?: number; baz?(): string; } >i : I diff --git a/testdata/baselines/reference/submodule/conformance/typesWithOptionalProperty.types.diff b/testdata/baselines/reference/submodule/conformance/typesWithOptionalProperty.types.diff deleted file mode 100644 index ec88251c919..00000000000 --- a/testdata/baselines/reference/submodule/conformance/typesWithOptionalProperty.types.diff +++ /dev/null @@ -1,43 +0,0 @@ ---- old.typesWithOptionalProperty.types -+++ new.typesWithOptionalProperty.types -@@= skipped -14, +14 lines =@@ - } - - var a: { -->a : { foo: string; bar?: number; baz?(): string; } -+>a : { foo: string; bar?: number | undefined; baz?(): string; } - - foo: string; - >foo : string -@@= skipped -58, +58 lines =@@ - - a = b; - >a = b : { foo: string; } -->a : { foo: string; bar?: number; baz?(): string; } -+>a : { foo: string; bar?: number | undefined; baz?(): string; } - >b : { foo: string; } - - a = c; - >a = c : { foo: string; bar: number; } -->a : { foo: string; bar?: number; baz?(): string; } -+>a : { foo: string; bar?: number | undefined; baz?(): string; } - >c : { foo: string; bar: number; } - - a = d; - >a = d : { foo: string; bar: number; baz: () => string; } -->a : { foo: string; bar?: number; baz?(): string; } -+>a : { foo: string; bar?: number | undefined; baz?(): string; } - >d : { foo: string; bar: number; baz: () => string; } - - i = a; -->i = a : { foo: string; bar?: number; baz?(): string; } -+>i = a : { foo: string; bar?: number | undefined; baz?(): string; } - >i : I -->a : { foo: string; bar?: number; baz?(): string; } -+>a : { foo: string; bar?: number | undefined; baz?(): string; } - - a = i; - >a = i : I -->a : { foo: string; bar?: number; baz?(): string; } -+>a : { foo: string; bar?: number | undefined; baz?(): string; } - >i : I diff --git a/testdata/baselines/reference/submodule/conformance/typesWithSpecializedCallSignatures.types b/testdata/baselines/reference/submodule/conformance/typesWithSpecializedCallSignatures.types index fd32962a759..5702f17e112 100644 --- a/testdata/baselines/reference/submodule/conformance/typesWithSpecializedCallSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/typesWithSpecializedCallSignatures.types @@ -21,19 +21,19 @@ class C { >C : C foo(x: 'hi'): Derived1; ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : "hi" foo(x: 'bye'): Derived2; ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : "bye" foo(x: string): Base; ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : string foo(x) { ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : any return x; @@ -47,33 +47,33 @@ var c = new C(); interface I { foo(x: 'hi'): Derived1; ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : "hi" foo(x: 'bye'): Derived2; ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : "bye" foo(x: string): Base; ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : string } var i: I; >i : I var a: { ->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } +>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } foo(x: 'hi'): Derived1; ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : "hi" foo(x: 'bye'): Derived2; ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : "bye" foo(x: string): Base; ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >x : string }; @@ -84,9 +84,9 @@ c = i; >i : I c = a; ->c = a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } +>c = a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } >c : C ->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } +>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } i = c; >i = c : C @@ -94,41 +94,41 @@ i = c; >c : C i = a; ->i = a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } +>i = a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } >i : I ->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } +>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } a = c; >a = c : C ->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } +>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } >c : C a = i; >a = i : I ->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } +>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } >i : I var r1: Derived1 = c.foo('hi'); >r1 : Derived1 >c.foo('hi') : Derived1 ->c.foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>c.foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >c : C ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >'hi' : "hi" var r2: Derived2 = c.foo('bye'); >r2 : Derived2 >c.foo('bye') : Derived2 ->c.foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>c.foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >c : C ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >'bye' : "bye" var r3: Base = c.foo('hm'); >r3 : Base >c.foo('hm') : Base ->c.foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>c.foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >c : C ->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } +>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >'hm' : "hm" diff --git a/testdata/baselines/reference/submodule/conformance/typesWithSpecializedCallSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/typesWithSpecializedCallSignatures.types.diff new file mode 100644 index 00000000000..8b849044847 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/typesWithSpecializedCallSignatures.types.diff @@ -0,0 +1,130 @@ +--- old.typesWithSpecializedCallSignatures.types ++++ new.typesWithSpecializedCallSignatures.types +@@= skipped -20, +20 lines =@@ + >C : C + + foo(x: 'hi'): Derived1; +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : "hi" + + foo(x: 'bye'): Derived2; +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : "bye" + + foo(x: string): Base; +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : string + + foo(x) { +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : any + + return x; +@@= skipped -26, +26 lines =@@ + + interface I { + foo(x: 'hi'): Derived1; +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : "hi" + + foo(x: 'bye'): Derived2; +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : "bye" + + foo(x: string): Base; +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : string + } + var i: I; + >i : I + + var a: { +->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } ++>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } + + foo(x: 'hi'): Derived1; +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : "hi" + + foo(x: 'bye'): Derived2; +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : "bye" + + foo(x: string): Base; +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >x : string + + }; +@@= skipped -37, +37 lines =@@ + >i : I + + c = a; +->c = a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } ++>c = a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } + >c : C +->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } ++>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } + + i = c; + >i = c : C +@@= skipped -10, +10 lines =@@ + >c : C + + i = a; +->i = a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } ++>i = a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } + >i : I +->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } ++>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } + + a = c; + >a = c : C +->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } ++>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } + >c : C + + a = i; + >a = i : I +->a : { foo(x: "hi"): Derived1; foo(x: "bye"): Derived2; foo(x: string): Base; } ++>a : { foo(x: 'hi'): Derived1; foo(x: 'bye'): Derived2; foo(x: string): Base; } + >i : I + + var r1: Derived1 = c.foo('hi'); + >r1 : Derived1 + >c.foo('hi') : Derived1 +->c.foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>c.foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >c : C +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >'hi' : "hi" + + var r2: Derived2 = c.foo('bye'); + >r2 : Derived2 + >c.foo('bye') : Derived2 +->c.foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>c.foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >c : C +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >'bye' : "bye" + + var r3: Base = c.foo('hm'); + >r3 : Base + >c.foo('hm') : Base +->c.foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>c.foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >c : C +->foo : { (x: "hi"): Derived1; (x: "bye"): Derived2; (x: string): Base; } ++>foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } + >'hm' : "hm" diff --git a/testdata/baselines/reference/submodule/conformance/typesWithSpecializedConstructSignatures.types b/testdata/baselines/reference/submodule/conformance/typesWithSpecializedConstructSignatures.types index 83e25615415..c87191d5b21 100644 --- a/testdata/baselines/reference/submodule/conformance/typesWithSpecializedConstructSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/typesWithSpecializedConstructSignatures.types @@ -56,7 +56,7 @@ var i: I; >i : I var a: { ->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } +>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } new(x: 'hi'): Derived1; >x : "hi" @@ -75,18 +75,18 @@ c = i; >i : I c = a; ->c = a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } +>c = a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } >c : C ->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } +>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } i = a; ->i = a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } +>i = a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } >i : I ->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } +>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } a = i; >a = i : I ->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } +>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } >i : I var r1 = new C('hi'); @@ -104,6 +104,6 @@ var r2: Derived2 = new i('bye'); var r3: Base = new a('hm'); >r3 : Base >new a('hm') : Base ->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } +>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } >'hm' : "hm" diff --git a/testdata/baselines/reference/submodule/conformance/typesWithSpecializedConstructSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/typesWithSpecializedConstructSignatures.types.diff new file mode 100644 index 00000000000..243cea3957c --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/typesWithSpecializedConstructSignatures.types.diff @@ -0,0 +1,42 @@ +--- old.typesWithSpecializedConstructSignatures.types ++++ new.typesWithSpecializedConstructSignatures.types +@@= skipped -55, +55 lines =@@ + >i : I + + var a: { +->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } ++>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } + + new(x: 'hi'): Derived1; + >x : "hi" +@@= skipped -19, +19 lines =@@ + >i : I + + c = a; +->c = a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } ++>c = a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } + >c : C +->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } ++>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } + + i = a; +->i = a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } ++>i = a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } + >i : I +->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } ++>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } + + a = i; + >a = i : I +->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } ++>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } + >i : I + + var r1 = new C('hi'); +@@= skipped -29, +29 lines =@@ + var r3: Base = new a('hm'); + >r3 : Base + >new a('hm') : Base +->a : { new (x: "hi"): Derived1; new (x: "bye"): Derived2; new (x: string): Base; } ++>a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } + >'hm' : "hm" diff --git a/testdata/baselines/reference/submodule/conformance/umd-augmentation-1.types b/testdata/baselines/reference/submodule/conformance/umd-augmentation-1.types index dbd0bf189b8..55d606ccf83 100644 --- a/testdata/baselines/reference/submodule/conformance/umd-augmentation-1.types +++ b/testdata/baselines/reference/submodule/conformance/umd-augmentation-1.types @@ -36,9 +36,9 @@ p = v.reverse(); >p = v.reverse() : m.Point >p : m.Point >v.reverse() : m.Point ->v.reverse : () => m.Point +>v.reverse : () => Math2d.Point >v : m.Vector ->reverse : () => m.Point +>reverse : () => Math2d.Point var t = p.x; >t : number @@ -92,7 +92,7 @@ declare module 'math2d' { // Add a method to the class interface Vector { reverse(): Math2d.Point; ->reverse : () => Point +>reverse : () => Math2d.Point >Math2d : any } } diff --git a/testdata/baselines/reference/submodule/conformance/umd-augmentation-1.types.diff b/testdata/baselines/reference/submodule/conformance/umd-augmentation-1.types.diff deleted file mode 100644 index 50a1481dfb6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/umd-augmentation-1.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.umd-augmentation-1.types -+++ new.umd-augmentation-1.types -@@= skipped -35, +35 lines =@@ - >p = v.reverse() : m.Point - >p : m.Point - >v.reverse() : m.Point -->v.reverse : () => Math2d.Point -+>v.reverse : () => m.Point - >v : m.Vector -->reverse : () => Math2d.Point -+>reverse : () => m.Point - - var t = p.x; - >t : number -@@= skipped -56, +56 lines =@@ - // Add a method to the class - interface Vector { - reverse(): Math2d.Point; -->reverse : () => Math2d.Point -+>reverse : () => Point - >Math2d : any - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/umd-augmentation-2.types b/testdata/baselines/reference/submodule/conformance/umd-augmentation-2.types index 7cc5ecdfab3..ebad9b5c7cc 100644 --- a/testdata/baselines/reference/submodule/conformance/umd-augmentation-2.types +++ b/testdata/baselines/reference/submodule/conformance/umd-augmentation-2.types @@ -90,7 +90,7 @@ declare module 'math2d' { // Add a method to the class interface Vector { reverse(): Math2d.Point; ->reverse : () => Point +>reverse : () => Math2d.Point >Math2d : any } } diff --git a/testdata/baselines/reference/submodule/conformance/umd-augmentation-2.types.diff b/testdata/baselines/reference/submodule/conformance/umd-augmentation-2.types.diff deleted file mode 100644 index e8b09164b96..00000000000 --- a/testdata/baselines/reference/submodule/conformance/umd-augmentation-2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.umd-augmentation-2.types -+++ new.umd-augmentation-2.types -@@= skipped -89, +89 lines =@@ - // Add a method to the class - interface Vector { - reverse(): Math2d.Point; -->reverse : () => Math2d.Point -+>reverse : () => Point - >Math2d : any - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/umd-augmentation-3.types b/testdata/baselines/reference/submodule/conformance/umd-augmentation-3.types index 635d4b9ebc7..d0fcfda7978 100644 --- a/testdata/baselines/reference/submodule/conformance/umd-augmentation-3.types +++ b/testdata/baselines/reference/submodule/conformance/umd-augmentation-3.types @@ -36,9 +36,9 @@ p = v.reverse(); >p = v.reverse() : m.Point >p : m.Point >v.reverse() : m.Point ->v.reverse : () => m.Point +>v.reverse : () => Math2d.Point >v : m.Vector ->reverse : () => m.Point +>reverse : () => Math2d.Point var t = p.x; >t : number @@ -101,7 +101,7 @@ declare module 'math2d' { // Add a method to the class interface Vector { reverse(): Math2d.Point; ->reverse : () => Point +>reverse : () => Math2d.Point >Math2d : any } } diff --git a/testdata/baselines/reference/submodule/conformance/umd-augmentation-3.types.diff b/testdata/baselines/reference/submodule/conformance/umd-augmentation-3.types.diff deleted file mode 100644 index e3de594a270..00000000000 --- a/testdata/baselines/reference/submodule/conformance/umd-augmentation-3.types.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.umd-augmentation-3.types -+++ new.umd-augmentation-3.types -@@= skipped -35, +35 lines =@@ - >p = v.reverse() : m.Point - >p : m.Point - >v.reverse() : m.Point -->v.reverse : () => Math2d.Point -+>v.reverse : () => m.Point - >v : m.Vector -->reverse : () => Math2d.Point -+>reverse : () => m.Point - - var t = p.x; - >t : number -@@= skipped -65, +65 lines =@@ - // Add a method to the class - interface Vector { - reverse(): Math2d.Point; -->reverse : () => Math2d.Point -+>reverse : () => Point - >Math2d : any - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/umd-augmentation-4.types b/testdata/baselines/reference/submodule/conformance/umd-augmentation-4.types index 2efb78b499c..04ddfedd604 100644 --- a/testdata/baselines/reference/submodule/conformance/umd-augmentation-4.types +++ b/testdata/baselines/reference/submodule/conformance/umd-augmentation-4.types @@ -99,7 +99,7 @@ declare module 'math2d' { // Add a method to the class interface Vector { reverse(): Math2d.Point; ->reverse : () => Point +>reverse : () => Math2d.Point >Math2d : any } } diff --git a/testdata/baselines/reference/submodule/conformance/umd-augmentation-4.types.diff b/testdata/baselines/reference/submodule/conformance/umd-augmentation-4.types.diff deleted file mode 100644 index ee8caf02b39..00000000000 --- a/testdata/baselines/reference/submodule/conformance/umd-augmentation-4.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.umd-augmentation-4.types -+++ new.umd-augmentation-4.types -@@= skipped -98, +98 lines =@@ - // Add a method to the class - interface Vector { - reverse(): Math2d.Point; -->reverse : () => Math2d.Point -+>reverse : () => Point - >Math2d : any - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference1.types b/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference1.types index df453a548d8..04e31e1c8ec 100644 --- a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference1.types +++ b/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference1.types @@ -125,7 +125,7 @@ type Maybe = T | void; >Maybe : Maybe function get(x: U | void): U { ->get : (x: void | U) => U +>get : (x: U | void) => U >x : void | U return null; // just an example @@ -138,7 +138,7 @@ get(foo).toUpperCase(); // Ok >get(foo).toUpperCase() : string >get(foo).toUpperCase : () => string >get(foo) : string ->get : (x: void | U) => U +>get : (x: U | void) => U >foo : Maybe >toUpperCase : () => string diff --git a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference1.types.diff b/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference1.types.diff deleted file mode 100644 index ffae6c49cc8..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference1.types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.unionAndIntersectionInference1.types -+++ new.unionAndIntersectionInference1.types -@@= skipped -124, +124 lines =@@ - >Maybe : Maybe - - function get(x: U | void): U { -->get : (x: U | void) => U -+>get : (x: void | U) => U - >x : void | U - - return null; // just an example -@@= skipped -13, +13 lines =@@ - >get(foo).toUpperCase() : string - >get(foo).toUpperCase : () => string - >get(foo) : string -->get : (x: U | void) => U -+>get : (x: void | U) => U - >foo : Maybe - >toUpperCase : () => string diff --git a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference2.types b/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference2.types index f7d20afa627..dcdd413d345 100644 --- a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference2.types +++ b/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference2.types @@ -2,7 +2,7 @@ === unionAndIntersectionInference2.ts === declare function f1(x: T | string): T; ->f1 : (x: string | T) => T +>f1 : (x: T | string) => T >x : string | T var a1: string; @@ -23,27 +23,27 @@ var e1: number | string | boolean; f1(a1); // string >f1(a1) : string ->f1 : (x: string | T) => T +>f1 : (x: T | string) => T >a1 : string f1(b1); // string[] >f1(b1) : string[] ->f1 : (x: string | T) => T +>f1 : (x: T | string) => T >b1 : string | string[] f1(c1); // string[] >f1(c1) : string[] ->f1 : (x: string | T) => T +>f1 : (x: T | string) => T >c1 : string | string[] f1(d1); // { name: string } >f1(d1) : { name: string; } ->f1 : (x: string | T) => T +>f1 : (x: T | string) => T >d1 : string | { name: string; } f1(e1); // number | boolean >f1(e1) : number | boolean ->f1 : (x: string | T) => T +>f1 : (x: T | string) => T >e1 : string | number | boolean declare function f2(x: T & { name: string }): T; diff --git a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference2.types.diff b/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference2.types.diff deleted file mode 100644 index c65d2c07fd1..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference2.types.diff +++ /dev/null @@ -1,44 +0,0 @@ ---- old.unionAndIntersectionInference2.types -+++ new.unionAndIntersectionInference2.types -@@= skipped -1, +1 lines =@@ - - === unionAndIntersectionInference2.ts === - declare function f1(x: T | string): T; -->f1 : (x: T | string) => T -+>f1 : (x: string | T) => T - >x : string | T - - var a1: string; -@@= skipped -21, +21 lines =@@ - - f1(a1); // string - >f1(a1) : string -->f1 : (x: T | string) => T -+>f1 : (x: string | T) => T - >a1 : string - - f1(b1); // string[] - >f1(b1) : string[] -->f1 : (x: T | string) => T -+>f1 : (x: string | T) => T - >b1 : string | string[] - - f1(c1); // string[] - >f1(c1) : string[] -->f1 : (x: T | string) => T -+>f1 : (x: string | T) => T - >c1 : string | string[] - - f1(d1); // { name: string } - >f1(d1) : { name: string; } -->f1 : (x: T | string) => T -+>f1 : (x: string | T) => T - >d1 : string | { name: string; } - - f1(e1); // number | boolean - >f1(e1) : number | boolean -->f1 : (x: T | string) => T -+>f1 : (x: string | T) => T - >e1 : string | number | boolean - - declare function f2(x: T & { name: string }): T; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference3.types b/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference3.types index 34ec32ace79..dca82676dde 100644 --- a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference3.types +++ b/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference3.types @@ -7,12 +7,12 @@ type Maybe = T | undefined; >Maybe : Maybe 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 >2 : 2 @@ -22,13 +22,13 @@ concatMaybe([1, 2, 3], 4); // Repros from #32247 const g: (com: () => Iterator | AsyncIterator) => Promise = async (com: () => Iterator | AsyncIterator): Promise => { ->g : (com: () => AsyncIterator | Iterator) => Promise ->com : () => AsyncIterator | Iterator ->async (com: () => Iterator | AsyncIterator): Promise => { throw com;} : (com: () => AsyncIterator | Iterator) => Promise ->com : () => AsyncIterator | Iterator +>g : (com: () => Iterator | AsyncIterator) => Promise +>com : () => Iterator | AsyncIterator +>async (com: () => Iterator | AsyncIterator): Promise => { throw com;} : (com: () => Iterator | AsyncIterator) => Promise +>com : () => Iterator | AsyncIterator throw com; ->com : () => AsyncIterator | Iterator +>com : () => Iterator | AsyncIterator }; @@ -45,22 +45,22 @@ interface Bar1 { } declare let f1: (x: Foo1 | Bar1) => Promise; ->f1 : (x: Bar1 | Foo1) => Promise +>f1 : (x: Foo1 | Bar1) => Promise >x : Bar1 | Foo1 declare let f2: (x: Foo1 | Bar1) => Promise; ->f2 : (x: Bar1 | Foo1) => Promise +>f2 : (x: Foo1 | Bar1) => Promise >x : Bar1 | Foo1 f1 = f2; ->f1 = f2 : (x: Bar1 | Foo1) => Promise ->f1 : (x: Bar1 | Foo1) => Promise ->f2 : (x: Bar1 | Foo1) => Promise +>f1 = f2 : (x: Foo1 | Bar1) => Promise +>f1 : (x: Foo1 | Bar1) => Promise +>f2 : (x: Foo1 | Bar1) => Promise f2 = f1; ->f2 = f1 : (x: Bar1 | Foo1) => Promise ->f2 : (x: Bar1 | Foo1) => Promise ->f1 : (x: Bar1 | Foo1) => Promise +>f2 = f1 : (x: Foo1 | Bar1) => Promise +>f2 : (x: Foo1 | Bar1) => Promise +>f1 : (x: Foo1 | Bar1) => Promise type Foo2 = { >Foo2 : Foo2 @@ -79,22 +79,22 @@ type Bar2 = { } declare let g1: (x: Foo2 | Bar2) => Promise; ->g1 : (x: Bar2 | Foo2) => Promise +>g1 : (x: Foo2 | Bar2) => Promise >x : Bar2 | Foo2 declare let g2: (x: Foo2 | Bar2) => Promise; ->g2 : (x: Bar2 | Foo2) => Promise +>g2 : (x: Foo2 | Bar2) => Promise >x : Bar2 | Foo2 g1 = g2; ->g1 = g2 : (x: Bar2 | Foo2) => Promise ->g1 : (x: Bar2 | Foo2) => Promise ->g2 : (x: Bar2 | Foo2) => Promise +>g1 = g2 : (x: Foo2 | Bar2) => Promise +>g1 : (x: Foo2 | Bar2) => Promise +>g2 : (x: Foo2 | Bar2) => Promise g2 = g1; ->g2 = g1 : (x: Bar2 | Foo2) => Promise ->g2 : (x: Bar2 | Foo2) => Promise ->g1 : (x: Bar2 | Foo2) => Promise +>g2 = g1 : (x: Foo2 | Bar2) => Promise +>g2 : (x: Foo2 | Bar2) => Promise +>g1 : (x: Foo2 | Bar2) => Promise // Repro from #32572 @@ -158,7 +158,7 @@ export interface RouteComponentProps { route: string } >route : string declare function withRouter< ->withRouter :

>(component: C & ComponentType

) => ComponentClass> +>withRouter :

>(component: C & ComponentType

) => ComponentClass> P extends RouteComponentProps, C extends ComponentType

@@ -176,7 +176,7 @@ declare const MyComponent: ComponentType; withRouter(MyComponent); >withRouter(MyComponent) : ComponentClass> ->withRouter :

>(component: C & ComponentType

) => ComponentClass> +>withRouter :

>(component: C & ComponentType

) => ComponentClass> >MyComponent : ComponentType // Repro from #33490 diff --git a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference3.types.diff b/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference3.types.diff deleted file mode 100644 index edaa5e8683c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unionAndIntersectionInference3.types.diff +++ /dev/null @@ -1,116 +0,0 @@ ---- old.unionAndIntersectionInference3.types -+++ new.unionAndIntersectionInference3.types -@@= skipped -6, +6 lines =@@ - >Maybe : Maybe - - 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 - >2 : 2 -@@= skipped -15, +15 lines =@@ - // Repros from #32247 - - const g: (com: () => Iterator | AsyncIterator) => Promise = async (com: () => Iterator | AsyncIterator): Promise => { -->g : (com: () => Iterator | AsyncIterator) => Promise -->com : () => Iterator | AsyncIterator -->async (com: () => Iterator | AsyncIterator): Promise => { throw com;} : (com: () => Iterator | AsyncIterator) => Promise -->com : () => Iterator | AsyncIterator -+>g : (com: () => AsyncIterator | Iterator) => Promise -+>com : () => AsyncIterator | Iterator -+>async (com: () => Iterator | AsyncIterator): Promise => { throw com;} : (com: () => AsyncIterator | Iterator) => Promise -+>com : () => AsyncIterator | Iterator - - throw com; -->com : () => Iterator | AsyncIterator -+>com : () => AsyncIterator | Iterator - - }; - -@@= skipped -23, +23 lines =@@ - } - - declare let f1: (x: Foo1 | Bar1) => Promise; -->f1 : (x: Foo1 | Bar1) => Promise -+>f1 : (x: Bar1 | Foo1) => Promise - >x : Bar1 | Foo1 - - declare let f2: (x: Foo1 | Bar1) => Promise; -->f2 : (x: Foo1 | Bar1) => Promise -+>f2 : (x: Bar1 | Foo1) => Promise - >x : Bar1 | Foo1 - - f1 = f2; -->f1 = f2 : (x: Foo1 | Bar1) => Promise -->f1 : (x: Foo1 | Bar1) => Promise -->f2 : (x: Foo1 | Bar1) => Promise -+>f1 = f2 : (x: Bar1 | Foo1) => Promise -+>f1 : (x: Bar1 | Foo1) => Promise -+>f2 : (x: Bar1 | Foo1) => Promise - - f2 = f1; -->f2 = f1 : (x: Foo1 | Bar1) => Promise -->f2 : (x: Foo1 | Bar1) => Promise -->f1 : (x: Foo1 | Bar1) => Promise -+>f2 = f1 : (x: Bar1 | Foo1) => Promise -+>f2 : (x: Bar1 | Foo1) => Promise -+>f1 : (x: Bar1 | Foo1) => Promise - - type Foo2 = { - >Foo2 : Foo2 -@@= skipped -34, +34 lines =@@ - } - - declare let g1: (x: Foo2 | Bar2) => Promise; -->g1 : (x: Foo2 | Bar2) => Promise -+>g1 : (x: Bar2 | Foo2) => Promise - >x : Bar2 | Foo2 - - declare let g2: (x: Foo2 | Bar2) => Promise; -->g2 : (x: Foo2 | Bar2) => Promise -+>g2 : (x: Bar2 | Foo2) => Promise - >x : Bar2 | Foo2 - - g1 = g2; -->g1 = g2 : (x: Foo2 | Bar2) => Promise -->g1 : (x: Foo2 | Bar2) => Promise -->g2 : (x: Foo2 | Bar2) => Promise -+>g1 = g2 : (x: Bar2 | Foo2) => Promise -+>g1 : (x: Bar2 | Foo2) => Promise -+>g2 : (x: Bar2 | Foo2) => Promise - - g2 = g1; -->g2 = g1 : (x: Foo2 | Bar2) => Promise -->g2 : (x: Foo2 | Bar2) => Promise -->g1 : (x: Foo2 | Bar2) => Promise -+>g2 = g1 : (x: Bar2 | Foo2) => Promise -+>g2 : (x: Bar2 | Foo2) => Promise -+>g1 : (x: Bar2 | Foo2) => Promise - - // Repro from #32572 - -@@= skipped -79, +79 lines =@@ - >route : string - - declare function withRouter< -->withRouter :

>(component: C & ComponentType

) => ComponentClass> -+>withRouter :

>(component: C & ComponentType

) => ComponentClass> - - P extends RouteComponentProps, - C extends ComponentType

-@@= skipped -18, +18 lines =@@ - - withRouter(MyComponent); - >withRouter(MyComponent) : ComponentClass> -->withRouter :

>(component: C & ComponentType

) => ComponentClass> -+>withRouter :

>(component: C & ComponentType

) => ComponentClass> - >MyComponent : ComponentType - - // Repro from #33490 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/unionThisTypeInFunctions.types b/testdata/baselines/reference/submodule/conformance/unionThisTypeInFunctions.types index 76bf23eee30..872271d0f84 100644 --- a/testdata/baselines/reference/submodule/conformance/unionThisTypeInFunctions.types +++ b/testdata/baselines/reference/submodule/conformance/unionThisTypeInFunctions.types @@ -20,7 +20,7 @@ interface Fake { >data : number } function test(r: Real | Fake) { ->test : (r: Fake | Real) => void +>test : (r: Real | Fake) => void >r : Fake | Real r.method(12); // error diff --git a/testdata/baselines/reference/submodule/conformance/unionThisTypeInFunctions.types.diff b/testdata/baselines/reference/submodule/conformance/unionThisTypeInFunctions.types.diff deleted file mode 100644 index ca89b2a6065..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unionThisTypeInFunctions.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.unionThisTypeInFunctions.types -+++ new.unionThisTypeInFunctions.types -@@= skipped -19, +19 lines =@@ - >data : number - } - function test(r: Real | Fake) { -->test : (r: Real | Fake) => void -+>test : (r: Fake | Real) => void - >r : Fake | Real - - r.method(12); // error \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures.types b/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures.types index 64d2cbc8525..b3b7aa78ae9 100644 --- a/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures.types @@ -127,7 +127,7 @@ unionWithDifferentParameterCount("hello", 10);// OK >10 : 10 declare var unionWithOptionalParameter1: { (a: string, b?: number): string; } | { (a: string, b?: number): number; }; ->unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) >a : string >b : number | undefined >a : string @@ -137,14 +137,14 @@ strOrNum = unionWithOptionalParameter1('hello'); >strOrNum = unionWithOptionalParameter1('hello') : string | number >strOrNum : string | number >unionWithOptionalParameter1('hello') : string | number ->unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) >'hello' : "hello" strOrNum = unionWithOptionalParameter1('hello', 10); >strOrNum = unionWithOptionalParameter1('hello', 10) : string | number >strOrNum : string | number >unionWithOptionalParameter1('hello', 10) : string | number ->unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) >'hello' : "hello" >10 : 10 @@ -152,7 +152,7 @@ strOrNum = unionWithOptionalParameter1('hello', "hello"); // error in parameter >strOrNum = unionWithOptionalParameter1('hello', "hello") : string | number >strOrNum : string | number >unionWithOptionalParameter1('hello', "hello") : string | number ->unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) >'hello' : "hello" >"hello" : "hello" @@ -160,10 +160,10 @@ strOrNum = unionWithOptionalParameter1(); // error >strOrNum = unionWithOptionalParameter1() : string | number >strOrNum : string | number >unionWithOptionalParameter1() : string | number ->unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) declare var unionWithOptionalParameter2: { (a: string, b?: number): string; } | { (a: string, b: number): number }; ->unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) +>unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) >a : string >b : number | undefined >a : string @@ -173,14 +173,14 @@ strOrNum = unionWithOptionalParameter2('hello'); // error no call signature >strOrNum = unionWithOptionalParameter2('hello') : string | number >strOrNum : string | number >unionWithOptionalParameter2('hello') : string | number ->unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) +>unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) >'hello' : "hello" strOrNum = unionWithOptionalParameter2('hello', 10); // error no call signature >strOrNum = unionWithOptionalParameter2('hello', 10) : string | number >strOrNum : string | number >unionWithOptionalParameter2('hello', 10) : string | number ->unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) +>unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) >'hello' : "hello" >10 : 10 @@ -188,7 +188,7 @@ strOrNum = unionWithOptionalParameter2('hello', "hello"); // error no call signa >strOrNum = unionWithOptionalParameter2('hello', "hello") : string | number >strOrNum : string | number >unionWithOptionalParameter2('hello', "hello") : string | number ->unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) +>unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) >'hello' : "hello" >"hello" : "hello" @@ -196,10 +196,10 @@ strOrNum = unionWithOptionalParameter2(); // error no call signature >strOrNum = unionWithOptionalParameter2() : string | number >strOrNum : string | number >unionWithOptionalParameter2() : string | number ->unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) +>unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) declare var unionWithOptionalParameter3: { (a: string, b?: number): string; } | { (a: string): number; }; ->unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) +>unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) >a : string >b : number | undefined >a : string @@ -208,14 +208,14 @@ strOrNum = unionWithOptionalParameter3('hello'); >strOrNum = unionWithOptionalParameter3('hello') : string | number >strOrNum : string | number >unionWithOptionalParameter3('hello') : string | number ->unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) +>unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) >'hello' : "hello" strOrNum = unionWithOptionalParameter3('hello', 10); // ok >strOrNum = unionWithOptionalParameter3('hello', 10) : string | number >strOrNum : string | number >unionWithOptionalParameter3('hello', 10) : string | number ->unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) +>unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) >'hello' : "hello" >10 : 10 @@ -223,7 +223,7 @@ strOrNum = unionWithOptionalParameter3('hello', "hello"); // wrong argument type >strOrNum = unionWithOptionalParameter3('hello', "hello") : string | number >strOrNum : string | number >unionWithOptionalParameter3('hello', "hello") : string | number ->unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) +>unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) >'hello' : "hello" >"hello" : "hello" @@ -231,7 +231,7 @@ strOrNum = unionWithOptionalParameter3(); // needs more args >strOrNum = unionWithOptionalParameter3() : string | number >strOrNum : string | number >unionWithOptionalParameter3() : string | number ->unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) +>unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) declare var unionWithRestParameter1: { (a: string, ...b: number[]): string; } | { (a: string, ...b: number[]): number }; >unionWithRestParameter1 : ((a: string, ...b: number[]) => string) | ((a: string, ...b: number[]) => number) diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures.types.diff deleted file mode 100644 index ab8cef1eccb..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures.types.diff +++ /dev/null @@ -1,124 +0,0 @@ ---- old.unionTypeCallSignatures.types -+++ new.unionTypeCallSignatures.types -@@= skipped -126, +126 lines =@@ - >10 : 10 - - declare var unionWithOptionalParameter1: { (a: string, b?: number): string; } | { (a: string, b?: number): number; }; -->unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) -+>unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) - >a : string - >b : number | undefined - >a : string -@@= skipped -10, +10 lines =@@ - >strOrNum = unionWithOptionalParameter1('hello') : string | number - >strOrNum : string | number - >unionWithOptionalParameter1('hello') : string | number -->unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) -+>unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) - >'hello' : "hello" - - strOrNum = unionWithOptionalParameter1('hello', 10); - >strOrNum = unionWithOptionalParameter1('hello', 10) : string | number - >strOrNum : string | number - >unionWithOptionalParameter1('hello', 10) : string | number -->unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) -+>unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) - >'hello' : "hello" - >10 : 10 - -@@= skipped -15, +15 lines =@@ - >strOrNum = unionWithOptionalParameter1('hello', "hello") : string | number - >strOrNum : string | number - >unionWithOptionalParameter1('hello', "hello") : string | number -->unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) -+>unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) - >'hello' : "hello" - >"hello" : "hello" - -@@= skipped -8, +8 lines =@@ - >strOrNum = unionWithOptionalParameter1() : string | number - >strOrNum : string | number - >unionWithOptionalParameter1() : string | number -->unionWithOptionalParameter1 : ((a: string, b?: number) => string) | ((a: string, b?: number) => number) -+>unionWithOptionalParameter1 : ((a: string, b?: number | undefined) => string) | ((a: string, b?: number | undefined) => number) - - declare var unionWithOptionalParameter2: { (a: string, b?: number): string; } | { (a: string, b: number): number }; -->unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) -+>unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) - >a : string - >b : number | undefined - >a : string -@@= skipped -13, +13 lines =@@ - >strOrNum = unionWithOptionalParameter2('hello') : string | number - >strOrNum : string | number - >unionWithOptionalParameter2('hello') : string | number -->unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) -+>unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) - >'hello' : "hello" - - strOrNum = unionWithOptionalParameter2('hello', 10); // error no call signature - >strOrNum = unionWithOptionalParameter2('hello', 10) : string | number - >strOrNum : string | number - >unionWithOptionalParameter2('hello', 10) : string | number -->unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) -+>unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) - >'hello' : "hello" - >10 : 10 - -@@= skipped -15, +15 lines =@@ - >strOrNum = unionWithOptionalParameter2('hello', "hello") : string | number - >strOrNum : string | number - >unionWithOptionalParameter2('hello', "hello") : string | number -->unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) -+>unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) - >'hello' : "hello" - >"hello" : "hello" - -@@= skipped -8, +8 lines =@@ - >strOrNum = unionWithOptionalParameter2() : string | number - >strOrNum : string | number - >unionWithOptionalParameter2() : string | number -->unionWithOptionalParameter2 : ((a: string, b?: number) => string) | ((a: string, b: number) => number) -+>unionWithOptionalParameter2 : ((a: string, b?: number | undefined) => string) | ((a: string, b: number) => number) - - declare var unionWithOptionalParameter3: { (a: string, b?: number): string; } | { (a: string): number; }; -->unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) -+>unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) - >a : string - >b : number | undefined - >a : string -@@= skipped -12, +12 lines =@@ - >strOrNum = unionWithOptionalParameter3('hello') : string | number - >strOrNum : string | number - >unionWithOptionalParameter3('hello') : string | number -->unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) -+>unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) - >'hello' : "hello" - - strOrNum = unionWithOptionalParameter3('hello', 10); // ok - >strOrNum = unionWithOptionalParameter3('hello', 10) : string | number - >strOrNum : string | number - >unionWithOptionalParameter3('hello', 10) : string | number -->unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) -+>unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) - >'hello' : "hello" - >10 : 10 - -@@= skipped -15, +15 lines =@@ - >strOrNum = unionWithOptionalParameter3('hello', "hello") : string | number - >strOrNum : string | number - >unionWithOptionalParameter3('hello', "hello") : string | number -->unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) -+>unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) - >'hello' : "hello" - >"hello" : "hello" - -@@= skipped -8, +8 lines =@@ - >strOrNum = unionWithOptionalParameter3() : string | number - >strOrNum : string | number - >unionWithOptionalParameter3() : string | number -->unionWithOptionalParameter3 : ((a: string, b?: number) => string) | ((a: string) => number) -+>unionWithOptionalParameter3 : ((a: string, b?: number | undefined) => string) | ((a: string) => number) - - declare var unionWithRestParameter1: { (a: string, ...b: number[]): string; } | { (a: string, ...b: number[]): number }; - >unionWithRestParameter1 : ((a: string, ...b: number[]) => string) | ((a: string, ...b: number[]) => number) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures3.types b/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures3.types index c56d66f532d..a6a283cd35e 100644 --- a/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures3.types +++ b/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures3.types @@ -6,7 +6,7 @@ function f1(s: string) { } >s : string function f2(s?: string) { } ->f2 : (s?: string | undefined) => void +>f2 : (s?: string) => void >s : string | undefined function f3(...s: string[]) { } @@ -14,17 +14,17 @@ function f3(...s: string[]) { } >s : string[] function f4(s: string, s2?: string) { } ->f4 : (s: string, s2?: string | undefined) => void +>f4 : (s: string, s2?: string) => void >s : string >s2 : string | undefined function f5(s?: string, n?: number) { } ->f5 : (s?: string | undefined, n?: number | undefined) => void +>f5 : (s?: string, n?: number) => void >s : string | undefined >n : number | undefined function f6(s?: string, ...n: number[]) { } ->f6 : (s?: string | undefined, ...n: number[]) => void +>f6 : (s?: string, ...n: number[]) => void >s : string | undefined >n : number[] @@ -34,17 +34,17 @@ function f7(s: string, ...sRest: string[]) { } >sRest : string[] var fUnion: typeof f1 | typeof f2 | typeof f3 | typeof f4 | typeof f5 | typeof f6 | typeof f7; ->fUnion : ((s: string) => void) | ((s?: string | undefined) => void) | ((...s: string[]) => void) | ((s: string, s2?: string | undefined) => void) | ((s?: string | undefined, n?: number | undefined) => void) | ((s?: string | undefined, ...n: number[]) => void) | ((s: string, ...sRest: string[]) => void) +>fUnion : ((s: string) => void) | ((s?: string) => void) | ((...s: string[]) => void) | ((s: string, s2?: string) => void) | ((s?: string, n?: number) => void) | ((s?: string, ...n: number[]) => void) | ((s: string, ...sRest: string[]) => void) >f1 : (s: string) => void ->f2 : (s?: string | undefined) => void +>f2 : (s?: string) => void >f3 : (...s: string[]) => void ->f4 : (s: string, s2?: string | undefined) => void ->f5 : (s?: string | undefined, n?: number | undefined) => void ->f6 : (s?: string | undefined, ...n: number[]) => void +>f4 : (s: string, s2?: string) => void +>f5 : (s?: string, n?: number) => void +>f6 : (s?: string, ...n: number[]) => void >f7 : (s: string, ...sRest: string[]) => void fUnion(""); // All constituents can be called by passing a single string. >fUnion("") : void ->fUnion : ((s: string) => void) | ((s?: string | undefined) => void) | ((...s: string[]) => void) | ((s: string, s2?: string | undefined) => void) | ((s?: string | undefined, n?: number | undefined) => void) | ((s?: string | undefined, ...n: number[]) => void) | ((s: string, ...sRest: string[]) => void) +>fUnion : ((s: string) => void) | ((s?: string) => void) | ((...s: string[]) => void) | ((s: string, s2?: string) => void) | ((s?: string, n?: number) => void) | ((s?: string, ...n: number[]) => void) | ((s: string, ...sRest: string[]) => void) >"" : "" diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures3.types.diff b/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures3.types.diff deleted file mode 100644 index b62eba8730f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unionTypeCallSignatures3.types.diff +++ /dev/null @@ -1,55 +0,0 @@ ---- old.unionTypeCallSignatures3.types -+++ new.unionTypeCallSignatures3.types -@@= skipped -5, +5 lines =@@ - >s : string - - function f2(s?: string) { } -->f2 : (s?: string) => void -+>f2 : (s?: string | undefined) => void - >s : string | undefined - - function f3(...s: string[]) { } -@@= skipped -8, +8 lines =@@ - >s : string[] - - function f4(s: string, s2?: string) { } -->f4 : (s: string, s2?: string) => void -+>f4 : (s: string, s2?: string | undefined) => void - >s : string - >s2 : string | undefined - - function f5(s?: string, n?: number) { } -->f5 : (s?: string, n?: number) => void -+>f5 : (s?: string | undefined, n?: number | undefined) => void - >s : string | undefined - >n : number | undefined - - function f6(s?: string, ...n: number[]) { } -->f6 : (s?: string, ...n: number[]) => void -+>f6 : (s?: string | undefined, ...n: number[]) => void - >s : string | undefined - >n : number[] - -@@= skipped -20, +20 lines =@@ - >sRest : string[] - - var fUnion: typeof f1 | typeof f2 | typeof f3 | typeof f4 | typeof f5 | typeof f6 | typeof f7; -->fUnion : ((s: string) => void) | ((s?: string) => void) | ((...s: string[]) => void) | ((s: string, s2?: string) => void) | ((s?: string, n?: number) => void) | ((s?: string, ...n: number[]) => void) | ((s: string, ...sRest: string[]) => void) -+>fUnion : ((s: string) => void) | ((s?: string | undefined) => void) | ((...s: string[]) => void) | ((s: string, s2?: string | undefined) => void) | ((s?: string | undefined, n?: number | undefined) => void) | ((s?: string | undefined, ...n: number[]) => void) | ((s: string, ...sRest: string[]) => void) - >f1 : (s: string) => void -->f2 : (s?: string) => void -+>f2 : (s?: string | undefined) => void - >f3 : (...s: string[]) => void -->f4 : (s: string, s2?: string) => void -->f5 : (s?: string, n?: number) => void -->f6 : (s?: string, ...n: number[]) => void -+>f4 : (s: string, s2?: string | undefined) => void -+>f5 : (s?: string | undefined, n?: number | undefined) => void -+>f6 : (s?: string | undefined, ...n: number[]) => void - >f7 : (s: string, ...sRest: string[]) => void - - fUnion(""); // All constituents can be called by passing a single string. - >fUnion("") : void -->fUnion : ((s: string) => void) | ((s?: string) => void) | ((...s: string[]) => void) | ((s: string, s2?: string) => void) | ((s?: string, n?: number) => void) | ((s?: string, ...n: number[]) => void) | ((s: string, ...sRest: string[]) => void) -+>fUnion : ((s: string) => void) | ((s?: string | undefined) => void) | ((...s: string[]) => void) | ((s: string, s2?: string | undefined) => void) | ((s?: string | undefined, n?: number | undefined) => void) | ((s?: string | undefined, ...n: number[]) => void) | ((s: string, ...sRest: string[]) => void) - >"" : "" diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeConstructSignatures.types b/testdata/baselines/reference/submodule/conformance/unionTypeConstructSignatures.types index 85eaeed7673..dda2efbe157 100644 --- a/testdata/baselines/reference/submodule/conformance/unionTypeConstructSignatures.types +++ b/testdata/baselines/reference/submodule/conformance/unionTypeConstructSignatures.types @@ -127,7 +127,7 @@ new unionWithDifferentParameterCount("hello", 10);// ok >10 : 10 declare var unionWithOptionalParameter1: { new (a: string, b?: number): string; } | { new (a: string, b?: number): number; }; ->unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) >a : string >b : number | undefined >a : string @@ -137,14 +137,14 @@ strOrNum = new unionWithOptionalParameter1('hello'); >strOrNum = new unionWithOptionalParameter1('hello') : string | number >strOrNum : string | number >new unionWithOptionalParameter1('hello') : string | number ->unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) >'hello' : "hello" strOrNum = new unionWithOptionalParameter1('hello', 10); >strOrNum = new unionWithOptionalParameter1('hello', 10) : string | number >strOrNum : string | number >new unionWithOptionalParameter1('hello', 10) : string | number ->unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) >'hello' : "hello" >10 : 10 @@ -152,7 +152,7 @@ strOrNum = new unionWithOptionalParameter1('hello', "hello"); // error in parame >strOrNum = new unionWithOptionalParameter1('hello', "hello") : string | number >strOrNum : string | number >new unionWithOptionalParameter1('hello', "hello") : string | number ->unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) >'hello' : "hello" >"hello" : "hello" @@ -160,10 +160,10 @@ strOrNum = new unionWithOptionalParameter1(); // error >strOrNum = new unionWithOptionalParameter1() : string | number >strOrNum : string | number >new unionWithOptionalParameter1() : string | number ->unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) +>unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) declare var unionWithOptionalParameter2: { new (a: string, b?: number): string; } | { new (a: string, b: number): number }; ->unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) +>unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) >a : string >b : number | undefined >a : string @@ -173,14 +173,14 @@ strOrNum = new unionWithOptionalParameter2('hello'); // error no call signature >strOrNum = new unionWithOptionalParameter2('hello') : string | number >strOrNum : string | number >new unionWithOptionalParameter2('hello') : string | number ->unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) +>unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) >'hello' : "hello" strOrNum = new unionWithOptionalParameter2('hello', 10); // error no call signature >strOrNum = new unionWithOptionalParameter2('hello', 10) : string | number >strOrNum : string | number >new unionWithOptionalParameter2('hello', 10) : string | number ->unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) +>unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) >'hello' : "hello" >10 : 10 @@ -188,7 +188,7 @@ strOrNum = new unionWithOptionalParameter2('hello', "hello"); // error no call s >strOrNum = new unionWithOptionalParameter2('hello', "hello") : string | number >strOrNum : string | number >new unionWithOptionalParameter2('hello', "hello") : string | number ->unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) +>unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) >'hello' : "hello" >"hello" : "hello" @@ -196,10 +196,10 @@ strOrNum = new unionWithOptionalParameter2(); // error no call signature >strOrNum = new unionWithOptionalParameter2() : string | number >strOrNum : string | number >new unionWithOptionalParameter2() : string | number ->unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) +>unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) declare var unionWithOptionalParameter3: { new (a: string, b?: number): string; } | { new (a: string): number; }; ->unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) +>unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) >a : string >b : number | undefined >a : string @@ -208,14 +208,14 @@ strOrNum = new unionWithOptionalParameter3('hello'); // error no call signature >strOrNum = new unionWithOptionalParameter3('hello') : string | number >strOrNum : string | number >new unionWithOptionalParameter3('hello') : string | number ->unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) +>unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) >'hello' : "hello" strOrNum = new unionWithOptionalParameter3('hello', 10); // ok >strOrNum = new unionWithOptionalParameter3('hello', 10) : string | number >strOrNum : string | number >new unionWithOptionalParameter3('hello', 10) : string | number ->unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) +>unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) >'hello' : "hello" >10 : 10 @@ -223,7 +223,7 @@ strOrNum = new unionWithOptionalParameter3('hello', "hello"); // wrong type >strOrNum = new unionWithOptionalParameter3('hello', "hello") : string | number >strOrNum : string | number >new unionWithOptionalParameter3('hello', "hello") : string | number ->unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) +>unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) >'hello' : "hello" >"hello" : "hello" @@ -231,7 +231,7 @@ strOrNum = new unionWithOptionalParameter3(); // error no call signature >strOrNum = new unionWithOptionalParameter3() : string | number >strOrNum : string | number >new unionWithOptionalParameter3() : string | number ->unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) +>unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) declare var unionWithRestParameter1: { new (a: string, ...b: number[]): string; } | { new (a: string, ...b: number[]): number }; >unionWithRestParameter1 : (new (a: string, ...b: number[]) => string) | (new (a: string, ...b: number[]) => number) diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeConstructSignatures.types.diff b/testdata/baselines/reference/submodule/conformance/unionTypeConstructSignatures.types.diff deleted file mode 100644 index 28eeef699bd..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unionTypeConstructSignatures.types.diff +++ /dev/null @@ -1,124 +0,0 @@ ---- old.unionTypeConstructSignatures.types -+++ new.unionTypeConstructSignatures.types -@@= skipped -126, +126 lines =@@ - >10 : 10 - - declare var unionWithOptionalParameter1: { new (a: string, b?: number): string; } | { new (a: string, b?: number): number; }; -->unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) -+>unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) - >a : string - >b : number | undefined - >a : string -@@= skipped -10, +10 lines =@@ - >strOrNum = new unionWithOptionalParameter1('hello') : string | number - >strOrNum : string | number - >new unionWithOptionalParameter1('hello') : string | number -->unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) -+>unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) - >'hello' : "hello" - - strOrNum = new unionWithOptionalParameter1('hello', 10); - >strOrNum = new unionWithOptionalParameter1('hello', 10) : string | number - >strOrNum : string | number - >new unionWithOptionalParameter1('hello', 10) : string | number -->unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) -+>unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) - >'hello' : "hello" - >10 : 10 - -@@= skipped -15, +15 lines =@@ - >strOrNum = new unionWithOptionalParameter1('hello', "hello") : string | number - >strOrNum : string | number - >new unionWithOptionalParameter1('hello', "hello") : string | number -->unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) -+>unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) - >'hello' : "hello" - >"hello" : "hello" - -@@= skipped -8, +8 lines =@@ - >strOrNum = new unionWithOptionalParameter1() : string | number - >strOrNum : string | number - >new unionWithOptionalParameter1() : string | number -->unionWithOptionalParameter1 : (new (a: string, b?: number) => string) | (new (a: string, b?: number) => number) -+>unionWithOptionalParameter1 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b?: number | undefined) => number) - - declare var unionWithOptionalParameter2: { new (a: string, b?: number): string; } | { new (a: string, b: number): number }; -->unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) -+>unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) - >a : string - >b : number | undefined - >a : string -@@= skipped -13, +13 lines =@@ - >strOrNum = new unionWithOptionalParameter2('hello') : string | number - >strOrNum : string | number - >new unionWithOptionalParameter2('hello') : string | number -->unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) -+>unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) - >'hello' : "hello" - - strOrNum = new unionWithOptionalParameter2('hello', 10); // error no call signature - >strOrNum = new unionWithOptionalParameter2('hello', 10) : string | number - >strOrNum : string | number - >new unionWithOptionalParameter2('hello', 10) : string | number -->unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) -+>unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) - >'hello' : "hello" - >10 : 10 - -@@= skipped -15, +15 lines =@@ - >strOrNum = new unionWithOptionalParameter2('hello', "hello") : string | number - >strOrNum : string | number - >new unionWithOptionalParameter2('hello', "hello") : string | number -->unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) -+>unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) - >'hello' : "hello" - >"hello" : "hello" - -@@= skipped -8, +8 lines =@@ - >strOrNum = new unionWithOptionalParameter2() : string | number - >strOrNum : string | number - >new unionWithOptionalParameter2() : string | number -->unionWithOptionalParameter2 : (new (a: string, b?: number) => string) | (new (a: string, b: number) => number) -+>unionWithOptionalParameter2 : (new (a: string, b?: number | undefined) => string) | (new (a: string, b: number) => number) - - declare var unionWithOptionalParameter3: { new (a: string, b?: number): string; } | { new (a: string): number; }; -->unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) -+>unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) - >a : string - >b : number | undefined - >a : string -@@= skipped -12, +12 lines =@@ - >strOrNum = new unionWithOptionalParameter3('hello') : string | number - >strOrNum : string | number - >new unionWithOptionalParameter3('hello') : string | number -->unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) -+>unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) - >'hello' : "hello" - - strOrNum = new unionWithOptionalParameter3('hello', 10); // ok - >strOrNum = new unionWithOptionalParameter3('hello', 10) : string | number - >strOrNum : string | number - >new unionWithOptionalParameter3('hello', 10) : string | number -->unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) -+>unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) - >'hello' : "hello" - >10 : 10 - -@@= skipped -15, +15 lines =@@ - >strOrNum = new unionWithOptionalParameter3('hello', "hello") : string | number - >strOrNum : string | number - >new unionWithOptionalParameter3('hello', "hello") : string | number -->unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) -+>unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) - >'hello' : "hello" - >"hello" : "hello" - -@@= skipped -8, +8 lines =@@ - >strOrNum = new unionWithOptionalParameter3() : string | number - >strOrNum : string | number - >new unionWithOptionalParameter3() : string | number -->unionWithOptionalParameter3 : (new (a: string, b?: number) => string) | (new (a: string) => number) -+>unionWithOptionalParameter3 : (new (a: string, b?: number | undefined) => string) | (new (a: string) => number) - - declare var unionWithRestParameter1: { new (a: string, ...b: number[]): string; } | { new (a: string, ...b: number[]): number }; - >unionWithRestParameter1 : (new (a: string, ...b: number[]) => string) | (new (a: string, ...b: number[]) => number) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeInference.types b/testdata/baselines/reference/submodule/conformance/unionTypeInference.types index c89ff9ef84f..553101ed200 100644 --- a/testdata/baselines/reference/submodule/conformance/unionTypeInference.types +++ b/testdata/baselines/reference/submodule/conformance/unionTypeInference.types @@ -214,26 +214,26 @@ async function fun(deepPromised: DeepPromised) { >deepPromised : DeepPromised for (const value of Object.values(deepPromisedWithIndexer)) { ->value : Promise<{ [containsPromises]?: true | undefined; } & {}> | {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined ->Object.values(deepPromisedWithIndexer) : (Promise<{ [containsPromises]?: true | undefined; } & {}> | {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined)[] ->Object.values : { (o: ArrayLike | { [s: string]: T_1; }): T_1[]; (o: {}): any[]; } +>value : Promise<{ [containsPromises]?: true; } & {}> | {} | ({ [containsPromises]?: true; } & {}) | null | undefined +>Object.values(deepPromisedWithIndexer) : (Promise<{ [containsPromises]?: true; } & {}> | {} | ({ [containsPromises]?: true; } & {}) | null | undefined)[] +>Object.values : { (o: { [s: string]: T_1; } | ArrayLike): T_1[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T_1; }): T_1[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T_1; } | ArrayLike): T_1[]; (o: {}): any[]; } >deepPromisedWithIndexer : DeepPromised<{ [name: string]: {} | null | undefined; }> const awaitedValue = await value; ->awaitedValue : {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined ->await value : {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined ->value : Promise<{ [containsPromises]?: true | undefined; } & {}> | {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined +>awaitedValue : {} | ({ [containsPromises]?: true; } & {}) | null | undefined +>await value : {} | ({ [containsPromises]?: true; } & {}) | null | undefined +>value : Promise<{ [containsPromises]?: true; } & {}> | {} | ({ [containsPromises]?: true; } & {}) | null | undefined if (awaitedValue) ->awaitedValue : {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined +>awaitedValue : {} | ({ [containsPromises]?: true; } & {}) | null | undefined await fun(awaitedValue); >await fun(awaitedValue) : void >fun(awaitedValue) : Promise >fun : (deepPromised: DeepPromised) => Promise ->awaitedValue : {} | ({ [containsPromises]?: true | undefined; } & {}) +>awaitedValue : {} | ({ [containsPromises]?: true; } & {}) } } diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeInference.types.diff b/testdata/baselines/reference/submodule/conformance/unionTypeInference.types.diff deleted file mode 100644 index 188adf556ab..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unionTypeInference.types.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- old.unionTypeInference.types -+++ new.unionTypeInference.types -@@= skipped -213, +213 lines =@@ - >deepPromised : DeepPromised - - for (const value of Object.values(deepPromisedWithIndexer)) { -->value : Promise<{ [containsPromises]?: true; } & {}> | {} | ({ [containsPromises]?: true; } & {}) | null | undefined -->Object.values(deepPromisedWithIndexer) : (Promise<{ [containsPromises]?: true; } & {}> | {} | ({ [containsPromises]?: true; } & {}) | null | undefined)[] -->Object.values : { (o: { [s: string]: T_1; } | ArrayLike): T_1[]; (o: {}): any[]; } -+>value : Promise<{ [containsPromises]?: true | undefined; } & {}> | {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined -+>Object.values(deepPromisedWithIndexer) : (Promise<{ [containsPromises]?: true | undefined; } & {}> | {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined)[] -+>Object.values : { (o: ArrayLike | { [s: string]: T_1; }): T_1[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T_1; } | ArrayLike): T_1[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T_1; }): T_1[]; (o: {}): any[]; } - >deepPromisedWithIndexer : DeepPromised<{ [name: string]: {} | null | undefined; }> - - const awaitedValue = await value; -->awaitedValue : {} | ({ [containsPromises]?: true; } & {}) | null | undefined -->await value : {} | ({ [containsPromises]?: true; } & {}) | null | undefined -->value : Promise<{ [containsPromises]?: true; } & {}> | {} | ({ [containsPromises]?: true; } & {}) | null | undefined -+>awaitedValue : {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined -+>await value : {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined -+>value : Promise<{ [containsPromises]?: true | undefined; } & {}> | {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined - - if (awaitedValue) -->awaitedValue : {} | ({ [containsPromises]?: true; } & {}) | null | undefined -+>awaitedValue : {} | ({ [containsPromises]?: true | undefined; } & {}) | null | undefined - - await fun(awaitedValue); - >await fun(awaitedValue) : void - >fun(awaitedValue) : Promise - >fun : (deepPromised: DeepPromised) => Promise -->awaitedValue : {} | ({ [containsPromises]?: true; } & {}) -+>awaitedValue : {} | ({ [containsPromises]?: true | undefined; } & {}) - } - } diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeReduction2.types b/testdata/baselines/reference/submodule/conformance/unionTypeReduction2.types index f97b9be77f6..22e079c8152 100644 --- a/testdata/baselines/reference/submodule/conformance/unionTypeReduction2.types +++ b/testdata/baselines/reference/submodule/conformance/unionTypeReduction2.types @@ -2,168 +2,168 @@ === unionTypeReduction2.ts === function f1(x: { f(): void }, y: { f(x?: string): void }) { ->f1 : (x: { f(): void; }, y: { f(x?: string | undefined): void; }) => void +>f1 : (x: { f(): void; }, y: { f(x?: string): void; }) => void >x : { f(): void; } >f : () => void ->y : { f(x?: string | undefined): void; } ->f : (x?: string | undefined) => void +>y : { f(x?: string): void; } +>f : (x?: string) => void >x : string | undefined let z = !!true ? x : y; // { f(x?: string): void } ->z : { f(x?: string | undefined): void; } ->!!true ? x : y : { f(x?: string | undefined): void; } +>z : { f(x?: string): void; } +>!!true ? x : y : { f(x?: string): void; } >!!true : true >!true : false >true : true >x : { f(): void; } ->y : { f(x?: string | undefined): void; } +>y : { f(x?: string): void; } z.f(); >z.f() : void ->z.f : (x?: string | undefined) => void ->z : { f(x?: string | undefined): void; } ->f : (x?: string | undefined) => void +>z.f : (x?: string) => void +>z : { f(x?: string): void; } +>f : (x?: string) => void z.f('hello'); >z.f('hello') : void ->z.f : (x?: string | undefined) => void ->z : { f(x?: string | undefined): void; } ->f : (x?: string | undefined) => void +>z.f : (x?: string) => void +>z : { f(x?: string): void; } +>f : (x?: string) => void >'hello' : "hello" } function f2(x: { f(x: string | undefined): void }, y: { f(x?: string): void }) { ->f2 : (x: { f(x: string | undefined): void; }, y: { f(x?: string | undefined): void; }) => void +>f2 : (x: { f(x: string | undefined): void; }, y: { f(x?: string): void; }) => void >x : { f(x: string | undefined): void; } >f : (x: string | undefined) => void >x : string | undefined ->y : { f(x?: string | undefined): void; } ->f : (x?: string | undefined) => void +>y : { f(x?: string): void; } +>f : (x?: string) => void >x : string | undefined let z = !!true ? x : y; // { f(x?: string): void } ->z : { f(x?: string | undefined): void; } ->!!true ? x : y : { f(x?: string | undefined): void; } +>z : { f(x?: string): void; } +>!!true ? x : y : { f(x?: string): void; } >!!true : true >!true : false >true : true >x : { f(x: string | undefined): void; } ->y : { f(x?: string | undefined): void; } +>y : { f(x?: string): void; } z.f(); >z.f() : void ->z.f : (x?: string | undefined) => void ->z : { f(x?: string | undefined): void; } ->f : (x?: string | undefined) => void +>z.f : (x?: string) => void +>z : { f(x?: string): void; } +>f : (x?: string) => void z.f('hello'); >z.f('hello') : void ->z.f : (x?: string | undefined) => void ->z : { f(x?: string | undefined): void; } ->f : (x?: string | undefined) => void +>z.f : (x?: string) => void +>z : { f(x?: string): void; } +>f : (x?: string) => void >'hello' : "hello" } function f3(x: () => void, y: (x?: string) => void) { ->f3 : (x: () => void, y: (x?: string | undefined) => void) => void +>f3 : (x: () => void, y: (x?: string) => void) => void >x : () => void ->y : (x?: string | undefined) => void +>y : (x?: string) => void >x : string | undefined let f = !!true ? x : y; // (x?: string) => void ->f : (x?: string | undefined) => void ->!!true ? x : y : (x?: string | undefined) => void +>f : (x?: string) => void +>!!true ? x : y : (x?: string) => void >!!true : true >!true : false >true : true >x : () => void ->y : (x?: string | undefined) => void +>y : (x?: string) => void f(); >f() : void ->f : (x?: string | undefined) => void +>f : (x?: string) => void f('hello'); >f('hello') : void ->f : (x?: string | undefined) => void +>f : (x?: string) => void >'hello' : "hello" } function f4(x: (x: string | undefined) => void, y: (x?: string) => void) { ->f4 : (x: (x: string | undefined) => void, y: (x?: string | undefined) => void) => void +>f4 : (x: (x: string | undefined) => void, y: (x?: string) => void) => void >x : (x: string | undefined) => void >x : string | undefined ->y : (x?: string | undefined) => void +>y : (x?: string) => void >x : string | undefined let f = !!true ? x : y; // (x?: string) => void ->f : (x?: string | undefined) => void ->!!true ? x : y : (x?: string | undefined) => void +>f : (x?: string) => void +>!!true ? x : y : (x?: string) => void >!!true : true >!true : false >true : true >x : (x: string | undefined) => void ->y : (x?: string | undefined) => void +>y : (x?: string) => void f(); >f() : void ->f : (x?: string | undefined) => void +>f : (x?: string) => void f('hello'); >f('hello') : void ->f : (x?: string | undefined) => void +>f : (x?: string) => void >'hello' : "hello" } function f5(x: (x: string | undefined) => void, y: (x?: 'hello') => void) { ->f5 : (x: (x: string | undefined) => void, y: (x?: "hello" | undefined) => void) => void +>f5 : (x: (x: string | undefined) => void, y: (x?: 'hello') => void) => void >x : (x: string | undefined) => void >x : string | undefined ->y : (x?: "hello" | undefined) => void +>y : (x?: 'hello') => void >x : "hello" | undefined let f = !!true ? x : y; // (x?: 'hello') => void ->f : (x?: "hello" | undefined) => void ->!!true ? x : y : (x?: "hello" | undefined) => void +>f : (x?: 'hello') => void +>!!true ? x : y : (x?: 'hello') => void >!!true : true >!true : false >true : true >x : (x: string | undefined) => void ->y : (x?: "hello" | undefined) => void +>y : (x?: 'hello') => void f(); >f() : void ->f : (x?: "hello" | undefined) => void +>f : (x?: 'hello') => void f('hello'); >f('hello') : void ->f : (x?: "hello" | undefined) => void +>f : (x?: 'hello') => void >'hello' : "hello" } function f6(x: (x: 'hello' | undefined) => void, y: (x?: string) => void) { ->f6 : (x: (x: "hello" | undefined) => void, y: (x?: string | undefined) => void) => void ->x : (x: "hello" | undefined) => void +>f6 : (x: (x: 'hello' | undefined) => void, y: (x?: string) => void) => void +>x : (x: 'hello' | undefined) => void >x : "hello" | undefined ->y : (x?: string | undefined) => void +>y : (x?: string) => void >x : string | undefined let f = !!true ? x : y; // (x: 'hello' | undefined) => void ->f : (x: "hello" | undefined) => void ->!!true ? x : y : (x: "hello" | undefined) => void +>f : (x: 'hello' | undefined) => void +>!!true ? x : y : (x: 'hello' | undefined) => void >!!true : true >!true : false >true : true ->x : (x: "hello" | undefined) => void ->y : (x?: string | undefined) => void +>x : (x: 'hello' | undefined) => void +>y : (x?: string) => void f(); // Error >f() : void ->f : (x: "hello" | undefined) => void +>f : (x: 'hello' | undefined) => void f('hello'); >f('hello') : void ->f : (x: "hello" | undefined) => void +>f : (x: 'hello' | undefined) => void >'hello' : "hello" } @@ -178,7 +178,7 @@ type B = { >B : B f(x?: string): void; ->f : (x?: string | undefined) => void +>f : (x?: string) => void >x : string | undefined g(): void; @@ -201,15 +201,15 @@ function f11(a: A, b: B) { z.f(); >z.f() : void ->z.f : (() => void) | ((x?: string | undefined) => void) +>z.f : (() => void) | ((x?: string) => void) >z : A | B ->f : (() => void) | ((x?: string | undefined) => void) +>f : (() => void) | ((x?: string) => void) z.f('hello'); >z.f('hello') : void ->z.f : (() => void) | ((x?: string | undefined) => void) +>z.f : (() => void) | ((x?: string) => void) >z : A | B ->f : (() => void) | ((x?: string | undefined) => void) +>f : (() => void) | ((x?: string) => void) >'hello' : "hello" } @@ -229,24 +229,24 @@ declare const val: ReturnVal; >val : ReturnVal function run(options: { something?(b?: string): void }) { ->run : (options: { something?(b?: string | undefined): void; }) => void ->options : { something?(b?: string | undefined): void; } ->something : ((b?: string | undefined) => void) | undefined +>run : (options: { something?(b?: string): void; }) => void +>options : { something?(b?: string): void; } +>something : ((b?: string) => void) | undefined >b : string | undefined const something = options.something ?? val.something; ->something : (b?: string | undefined) => void ->options.something ?? val.something : (b?: string | undefined) => void ->options.something : ((b?: string | undefined) => void) | undefined ->options : { something?(b?: string | undefined): void; } ->something : ((b?: string | undefined) => void) | undefined +>something : (b?: string) => void +>options.something ?? val.something : (b?: string) => void +>options.something : ((b?: string) => void) | undefined +>options : { something?(b?: string): void; } +>something : ((b?: string) => void) | undefined >val.something : () => void >val : ReturnVal >something : () => void something(''); >something('') : void ->something : (b?: string | undefined) => void +>something : (b?: string) => void >'' : "" } diff --git a/testdata/baselines/reference/submodule/conformance/unionTypeReduction2.types.diff b/testdata/baselines/reference/submodule/conformance/unionTypeReduction2.types.diff index 1893e3eb6e2..0994fc2dbf9 100644 --- a/testdata/baselines/reference/submodule/conformance/unionTypeReduction2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/unionTypeReduction2.types.diff @@ -1,271 +1,70 @@ --- old.unionTypeReduction2.types +++ new.unionTypeReduction2.types -@@= skipped -1, +1 lines =@@ - - === unionTypeReduction2.ts === - function f1(x: { f(): void }, y: { f(x?: string): void }) { -->f1 : (x: { f(): void; }, y: { f(x?: string): void; }) => void -+>f1 : (x: { f(): void; }, y: { f(x?: string | undefined): void; }) => void - >x : { f(): void; } - >f : () => void -->y : { f(x?: string): void; } -->f : (x?: string) => void -+>y : { f(x?: string | undefined): void; } -+>f : (x?: string | undefined) => void - >x : string | undefined - - let z = !!true ? x : y; // { f(x?: string): void } -->z : { f(x?: string): void; } -->!!true ? x : y : { f(x?: string): void; } -+>z : { f(x?: string | undefined): void; } -+>!!true ? x : y : { f(x?: string | undefined): void; } - >!!true : true - >!true : false - >true : true - >x : { f(): void; } -->y : { f(x?: string): void; } -+>y : { f(x?: string | undefined): void; } - - z.f(); - >z.f() : void -->z.f : (x?: string) => void -->z : { f(x?: string): void; } -->f : (x?: string) => void -+>z.f : (x?: string | undefined) => void -+>z : { f(x?: string | undefined): void; } -+>f : (x?: string | undefined) => void - - z.f('hello'); - >z.f('hello') : void -->z.f : (x?: string) => void -->z : { f(x?: string): void; } -->f : (x?: string) => void -+>z.f : (x?: string | undefined) => void -+>z : { f(x?: string | undefined): void; } -+>f : (x?: string | undefined) => void - >'hello' : "hello" - } - - function f2(x: { f(x: string | undefined): void }, y: { f(x?: string): void }) { -->f2 : (x: { f(x: string | undefined): void; }, y: { f(x?: string): void; }) => void -+>f2 : (x: { f(x: string | undefined): void; }, y: { f(x?: string | undefined): void; }) => void - >x : { f(x: string | undefined): void; } - >f : (x: string | undefined) => void - >x : string | undefined -->y : { f(x?: string): void; } -->f : (x?: string) => void -+>y : { f(x?: string | undefined): void; } -+>f : (x?: string | undefined) => void - >x : string | undefined - - let z = !!true ? x : y; // { f(x?: string): void } -->z : { f(x?: string): void; } -->!!true ? x : y : { f(x?: string): void; } -+>z : { f(x?: string | undefined): void; } -+>!!true ? x : y : { f(x?: string | undefined): void; } - >!!true : true - >!true : false - >true : true - >x : { f(x: string | undefined): void; } -->y : { f(x?: string): void; } -+>y : { f(x?: string | undefined): void; } - - z.f(); - >z.f() : void -->z.f : (x?: string) => void -->z : { f(x?: string): void; } -->f : (x?: string) => void -+>z.f : (x?: string | undefined) => void -+>z : { f(x?: string | undefined): void; } -+>f : (x?: string | undefined) => void - - z.f('hello'); - >z.f('hello') : void -->z.f : (x?: string) => void -->z : { f(x?: string): void; } -->f : (x?: string) => void -+>z.f : (x?: string | undefined) => void -+>z : { f(x?: string | undefined): void; } -+>f : (x?: string | undefined) => void - >'hello' : "hello" - } - - function f3(x: () => void, y: (x?: string) => void) { -->f3 : (x: () => void, y: (x?: string) => void) => void -+>f3 : (x: () => void, y: (x?: string | undefined) => void) => void - >x : () => void -->y : (x?: string) => void -+>y : (x?: string | undefined) => void - >x : string | undefined - - let f = !!true ? x : y; // (x?: string) => void -->f : (x?: string) => void -->!!true ? x : y : (x?: string) => void -+>f : (x?: string | undefined) => void -+>!!true ? x : y : (x?: string | undefined) => void - >!!true : true - >!true : false - >true : true - >x : () => void -->y : (x?: string) => void -+>y : (x?: string | undefined) => void - - f(); - >f() : void -->f : (x?: string) => void -+>f : (x?: string | undefined) => void - - f('hello'); - >f('hello') : void -->f : (x?: string) => void -+>f : (x?: string | undefined) => void - >'hello' : "hello" - } - - function f4(x: (x: string | undefined) => void, y: (x?: string) => void) { -->f4 : (x: (x: string | undefined) => void, y: (x?: string) => void) => void -+>f4 : (x: (x: string | undefined) => void, y: (x?: string | undefined) => void) => void - >x : (x: string | undefined) => void - >x : string | undefined -->y : (x?: string) => void -+>y : (x?: string | undefined) => void - >x : string | undefined - - let f = !!true ? x : y; // (x?: string) => void -->f : (x?: string) => void -->!!true ? x : y : (x?: string) => void -+>f : (x?: string | undefined) => void -+>!!true ? x : y : (x?: string | undefined) => void - >!!true : true - >!true : false - >true : true - >x : (x: string | undefined) => void -->y : (x?: string) => void -+>y : (x?: string | undefined) => void - - f(); - >f() : void -->f : (x?: string) => void -+>f : (x?: string | undefined) => void - - f('hello'); - >f('hello') : void -->f : (x?: string) => void -+>f : (x?: string | undefined) => void - >'hello' : "hello" +@@= skipped -115, +115 lines =@@ } function f5(x: (x: string | undefined) => void, y: (x?: 'hello') => void) { ->f5 : (x: (x: string | undefined) => void, y: (x?: "hello") => void) => void -+>f5 : (x: (x: string | undefined) => void, y: (x?: "hello" | undefined) => void) => void ++>f5 : (x: (x: string | undefined) => void, y: (x?: 'hello') => void) => void >x : (x: string | undefined) => void >x : string | undefined ->y : (x?: "hello") => void -+>y : (x?: "hello" | undefined) => void ++>y : (x?: 'hello') => void >x : "hello" | undefined let f = !!true ? x : y; // (x?: 'hello') => void ->f : (x?: "hello") => void ->!!true ? x : y : (x?: "hello") => void -+>f : (x?: "hello" | undefined) => void -+>!!true ? x : y : (x?: "hello" | undefined) => void ++>f : (x?: 'hello') => void ++>!!true ? x : y : (x?: 'hello') => void >!!true : true >!true : false >true : true >x : (x: string | undefined) => void ->y : (x?: "hello") => void -+>y : (x?: "hello" | undefined) => void ++>y : (x?: 'hello') => void f(); >f() : void ->f : (x?: "hello") => void -+>f : (x?: "hello" | undefined) => void ++>f : (x?: 'hello') => void f('hello'); >f('hello') : void ->f : (x?: "hello") => void -+>f : (x?: "hello" | undefined) => void ++>f : (x?: 'hello') => void >'hello' : "hello" } function f6(x: (x: 'hello' | undefined) => void, y: (x?: string) => void) { ->f6 : (x: (x: "hello" | undefined) => void, y: (x?: string) => void) => void -+>f6 : (x: (x: "hello" | undefined) => void, y: (x?: string | undefined) => void) => void - >x : (x: "hello" | undefined) => void +->x : (x: "hello" | undefined) => void ++>f6 : (x: (x: 'hello' | undefined) => void, y: (x?: string) => void) => void ++>x : (x: 'hello' | undefined) => void >x : "hello" | undefined -->y : (x?: string) => void -+>y : (x?: string | undefined) => void + >y : (x?: string) => void >x : string | undefined let f = !!true ? x : y; // (x: 'hello' | undefined) => void -@@= skipped -153, +153 lines =@@ +->f : (x: "hello" | undefined) => void +->!!true ? x : y : (x: "hello" | undefined) => void ++>f : (x: 'hello' | undefined) => void ++>!!true ? x : y : (x: 'hello' | undefined) => void + >!!true : true >!true : false >true : true - >x : (x: "hello" | undefined) => void -->y : (x?: string) => void -+>y : (x?: string | undefined) => void +->x : (x: "hello" | undefined) => void ++>x : (x: 'hello' | undefined) => void + >y : (x?: string) => void f(); // Error >f() : void -@@= skipped -23, +23 lines =@@ - >B : B - - f(x?: string): void; -->f : (x?: string) => void -+>f : (x?: string | undefined) => void - >x : string | undefined - - g(): void; -@@= skipped -23, +23 lines =@@ - - z.f(); - >z.f() : void -->z.f : (() => void) | ((x?: string) => void) -+>z.f : (() => void) | ((x?: string | undefined) => void) - >z : A | B -->f : (() => void) | ((x?: string) => void) -+>f : (() => void) | ((x?: string | undefined) => void) +->f : (x: "hello" | undefined) => void ++>f : (x: 'hello' | undefined) => void - z.f('hello'); - >z.f('hello') : void -->z.f : (() => void) | ((x?: string) => void) -+>z.f : (() => void) | ((x?: string | undefined) => void) - >z : A | B -->f : (() => void) | ((x?: string) => void) -+>f : (() => void) | ((x?: string | undefined) => void) + f('hello'); + >f('hello') : void +->f : (x: "hello" | undefined) => void ++>f : (x: 'hello' | undefined) => void >'hello' : "hello" } - -@@= skipped -28, +28 lines =@@ - >val : ReturnVal - - function run(options: { something?(b?: string): void }) { -->run : (options: { something?(b?: string): void; }) => void -->options : { something?(b?: string): void; } -->something : ((b?: string) => void) | undefined -+>run : (options: { something?(b?: string | undefined): void; }) => void -+>options : { something?(b?: string | undefined): void; } -+>something : ((b?: string | undefined) => void) | undefined - >b : string | undefined - - const something = options.something ?? val.something; -->something : (b?: string) => void -->options.something ?? val.something : (b?: string) => void -->options.something : ((b?: string) => void) | undefined -->options : { something?(b?: string): void; } -->something : ((b?: string) => void) | undefined -+>something : (b?: string | undefined) => void -+>options.something ?? val.something : (b?: string | undefined) => void -+>options.something : ((b?: string | undefined) => void) | undefined -+>options : { something?(b?: string | undefined): void; } -+>something : ((b?: string | undefined) => void) | undefined - >val.something : () => void - >val : ReturnVal - >something : () => void - - something(''); - >something('') : void -->something : (b?: string) => void -+>something : (b?: string | undefined) => void - >'' : "" - } diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbols.types b/testdata/baselines/reference/submodule/conformance/uniqueSymbols.types index d84b3443c28..1478ffc517f 100644 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbols.types +++ b/testdata/baselines/reference/submodule/conformance/uniqueSymbols.types @@ -109,7 +109,7 @@ function funcReturnVarCall() { return varCall; } // function return value with type query function funcReturnConstCallWithTypeQuery(): typeof constCall { return constCall; } ->funcReturnConstCallWithTypeQuery : () => unique symbol +>funcReturnConstCallWithTypeQuery : () => typeof constCall >constCall : unique symbol >constCall : unique symbol @@ -131,7 +131,7 @@ function* genFuncYieldVarCall() { yield varCall; } // generator function yield with return type query function* genFuncYieldConstCallWithTypeQuery(): IterableIterator { yield constCall; } ->genFuncYieldConstCallWithTypeQuery : () => IterableIterator +>genFuncYieldConstCallWithTypeQuery : () => IterableIterator >constCall : unique symbol >yield constCall : any >constCall : unique symbol @@ -434,12 +434,12 @@ declare function f(x: T): T; >x : T declare function g(x: typeof s): void; ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >x : unique symbol >s : unique symbol declare function g(x: typeof N.s): void; ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >x : unique symbol >N.s : unique symbol >N : typeof N @@ -675,19 +675,19 @@ f(N["s"]); g(s); >g(s) : void ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >s : unique symbol g(N.s); >g(N.s) : void ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >N.s : unique symbol >N : typeof N >s : unique symbol g(N["s"]); >g(N["s"]) : void ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >N["s"] : unique symbol >N : typeof N >"s" : "s" @@ -797,23 +797,23 @@ class C1 { interface Context { method1(): typeof s; ->method1 : () => unique symbol +>method1 : () => typeof s >s : unique symbol method2(): Promise; ->method2 : () => Promise +>method2 : () => Promise >s : unique symbol method3(): AsyncIterableIterator; ->method3 : () => AsyncIterableIterator +>method3 : () => AsyncIterableIterator >s : unique symbol method4(): IterableIterator; ->method4 : () => IterableIterator +>method4 : () => IterableIterator >s : unique symbol method5(p?: typeof s): typeof s; ->method5 : (p?: unique symbol | undefined) => unique symbol +>method5 : (p?: typeof s) => typeof s >p : unique symbol | undefined >s : unique symbol >s : unique symbol @@ -867,11 +867,11 @@ const o3: Context = { // allowed when not emitting declarations const o4 = { ->o4 : { method1(p: unique symbol): unique symbol; method2(p: unique symbol): unique symbol; } ->{ method1(p: typeof s): typeof s { return p; }, method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : { method1(p: unique symbol): unique symbol; method2(p: unique symbol): unique symbol; } +>o4 : { method1(p: typeof s): typeof s; method2(p: I["readonlyType"]): I["readonlyType"]; } +>{ method1(p: typeof s): typeof s { return p; }, method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : { method1(p: typeof s): typeof s; method2(p: I["readonlyType"]): I["readonlyType"]; } method1(p: typeof s): typeof s { ->method1 : (p: unique symbol) => unique symbol +>method1 : (p: typeof s) => typeof s >p : unique symbol >s : unique symbol >s : unique symbol @@ -881,7 +881,7 @@ const o4 = { }, method2(p: I["readonlyType"]): I["readonlyType"] { ->method2 : (p: unique symbol) => unique symbol +>method2 : (p: I["readonlyType"]) => I["readonlyType"] >p : unique symbol return p; @@ -894,7 +894,7 @@ const ce0 = class { >class { method1(p: typeof s): typeof s { return p; } method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : typeof ce0 method1(p: typeof s): typeof s { ->method1 : (p: unique symbol) => unique symbol +>method1 : (p: typeof s) => typeof s >p : unique symbol >s : unique symbol >s : unique symbol @@ -903,7 +903,7 @@ const ce0 = class { >p : unique symbol } method2(p: I["readonlyType"]): I["readonlyType"] { ->method2 : (p: unique symbol) => unique symbol +>method2 : (p: I["readonlyType"]) => I["readonlyType"] >p : unique symbol return p; @@ -912,13 +912,13 @@ const ce0 = class { }; function funcInferredReturnType(obj: { method(p: typeof s): void }) { ->funcInferredReturnType : (obj: { method(p: unique symbol): void; }) => { method(p: unique symbol): void; } ->obj : { method(p: unique symbol): void; } ->method : (p: unique symbol) => void +>funcInferredReturnType : (obj: { method(p: typeof s): void; }) => { method(p: typeof s): void; } +>obj : { method(p: typeof s): void; } +>method : (p: typeof s) => void >p : unique symbol >s : unique symbol return obj; ->obj : { method(p: unique symbol): void; } +>obj : { method(p: typeof s): void; } } diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbols.types.diff b/testdata/baselines/reference/submodule/conformance/uniqueSymbols.types.diff deleted file mode 100644 index f6f8702efd7..00000000000 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbols.types.diff +++ /dev/null @@ -1,146 +0,0 @@ ---- old.uniqueSymbols.types -+++ new.uniqueSymbols.types -@@= skipped -108, +108 lines =@@ - - // function return value with type query - function funcReturnConstCallWithTypeQuery(): typeof constCall { return constCall; } -->funcReturnConstCallWithTypeQuery : () => typeof constCall -+>funcReturnConstCallWithTypeQuery : () => unique symbol - >constCall : unique symbol - >constCall : unique symbol - -@@= skipped -22, +22 lines =@@ - - // generator function yield with return type query - function* genFuncYieldConstCallWithTypeQuery(): IterableIterator { yield constCall; } -->genFuncYieldConstCallWithTypeQuery : () => IterableIterator -+>genFuncYieldConstCallWithTypeQuery : () => IterableIterator - >constCall : unique symbol - >yield constCall : any - >constCall : unique symbol -@@= skipped -303, +303 lines =@@ - >x : T - - declare function g(x: typeof s): void; -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >x : unique symbol - >s : unique symbol - - declare function g(x: typeof N.s): void; -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >x : unique symbol - >N.s : unique symbol - >N : typeof N -@@= skipped -241, +241 lines =@@ - - g(s); - >g(s) : void -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >s : unique symbol - - g(N.s); - >g(N.s) : void -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >N.s : unique symbol - >N : typeof N - >s : unique symbol - - g(N["s"]); - >g(N["s"]) : void -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >N["s"] : unique symbol - >N : typeof N - >"s" : "s" -@@= skipped -122, +122 lines =@@ - - interface Context { - method1(): typeof s; -->method1 : () => typeof s -+>method1 : () => unique symbol - >s : unique symbol - - method2(): Promise; -->method2 : () => Promise -+>method2 : () => Promise - >s : unique symbol - - method3(): AsyncIterableIterator; -->method3 : () => AsyncIterableIterator -+>method3 : () => AsyncIterableIterator - >s : unique symbol - - method4(): IterableIterator; -->method4 : () => IterableIterator -+>method4 : () => IterableIterator - >s : unique symbol - - method5(p?: typeof s): typeof s; -->method5 : (p?: typeof s) => typeof s -+>method5 : (p?: unique symbol | undefined) => unique symbol - >p : unique symbol | undefined - >s : unique symbol - >s : unique symbol -@@= skipped -70, +70 lines =@@ - // allowed when not emitting declarations - - const o4 = { -->o4 : { method1(p: typeof s): typeof s; method2(p: I["readonlyType"]): I["readonlyType"]; } -->{ method1(p: typeof s): typeof s { return p; }, method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : { method1(p: typeof s): typeof s; method2(p: I["readonlyType"]): I["readonlyType"]; } -+>o4 : { method1(p: unique symbol): unique symbol; method2(p: unique symbol): unique symbol; } -+>{ method1(p: typeof s): typeof s { return p; }, method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : { method1(p: unique symbol): unique symbol; method2(p: unique symbol): unique symbol; } - - method1(p: typeof s): typeof s { -->method1 : (p: typeof s) => typeof s -+>method1 : (p: unique symbol) => unique symbol - >p : unique symbol - >s : unique symbol - >s : unique symbol -@@= skipped -14, +14 lines =@@ - - }, - method2(p: I["readonlyType"]): I["readonlyType"] { -->method2 : (p: I["readonlyType"]) => I["readonlyType"] -+>method2 : (p: unique symbol) => unique symbol - >p : unique symbol - - return p; -@@= skipped -13, +13 lines =@@ - >class { method1(p: typeof s): typeof s { return p; } method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : typeof ce0 - - method1(p: typeof s): typeof s { -->method1 : (p: typeof s) => typeof s -+>method1 : (p: unique symbol) => unique symbol - >p : unique symbol - >s : unique symbol - >s : unique symbol -@@= skipped -9, +9 lines =@@ - >p : unique symbol - } - method2(p: I["readonlyType"]): I["readonlyType"] { -->method2 : (p: I["readonlyType"]) => I["readonlyType"] -+>method2 : (p: unique symbol) => unique symbol - >p : unique symbol - - return p; -@@= skipped -9, +9 lines =@@ - }; - - function funcInferredReturnType(obj: { method(p: typeof s): void }) { -->funcInferredReturnType : (obj: { method(p: typeof s): void; }) => { method(p: typeof s): void; } -->obj : { method(p: typeof s): void; } -->method : (p: typeof s) => void -+>funcInferredReturnType : (obj: { method(p: unique symbol): void; }) => { method(p: unique symbol): void; } -+>obj : { method(p: unique symbol): void; } -+>method : (p: unique symbol) => void - >p : unique symbol - >s : unique symbol - - return obj; -->obj : { method(p: typeof s): void; } -+>obj : { method(p: unique symbol): void; } - } diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarations.types b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarations.types index 2200432e34a..5f22b96c257 100644 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarations.types +++ b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarations.types @@ -102,7 +102,7 @@ function funcReturnVarCall() { return varCall; } // function return value with type query function funcReturnConstCallWithTypeQuery(): typeof constCall { return constCall; } ->funcReturnConstCallWithTypeQuery : () => unique symbol +>funcReturnConstCallWithTypeQuery : () => typeof constCall >constCall : unique symbol >constCall : unique symbol @@ -124,7 +124,7 @@ function* genFuncYieldVarCall() { yield varCall; } // generator function yield with return type query function* genFuncYieldConstCallWithTypeQuery(): IterableIterator { yield constCall; } ->genFuncYieldConstCallWithTypeQuery : () => IterableIterator +>genFuncYieldConstCallWithTypeQuery : () => IterableIterator >constCall : unique symbol >yield constCall : any >constCall : unique symbol @@ -427,12 +427,12 @@ declare function f(x: T): T; >x : T declare function g(x: typeof s): void; ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >x : unique symbol >s : unique symbol declare function g(x: typeof N.s): void; ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >x : unique symbol >N.s : unique symbol >N : typeof N @@ -668,19 +668,19 @@ f(N["s"]); g(s); >g(s) : void ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >s : unique symbol g(N.s); >g(N.s) : void ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >N.s : unique symbol >N : typeof N >s : unique symbol g(N["s"]); >g(N["s"]) : void ->g : { (x: unique symbol): void; (x: unique symbol): void; } +>g : { (x: typeof s): void; (x: typeof N.s): void; } >N["s"] : unique symbol >N : typeof N >"s" : "s" @@ -790,23 +790,23 @@ class C1 { interface Context { method1(): typeof s; ->method1 : () => unique symbol +>method1 : () => typeof s >s : unique symbol method2(): Promise; ->method2 : () => Promise +>method2 : () => Promise >s : unique symbol method3(): AsyncIterableIterator; ->method3 : () => AsyncIterableIterator +>method3 : () => AsyncIterableIterator >s : unique symbol method4(): IterableIterator; ->method4 : () => IterableIterator +>method4 : () => IterableIterator >s : unique symbol method5(p?: typeof s): typeof s; ->method5 : (p?: unique symbol | undefined) => unique symbol +>method5 : (p?: typeof s) => typeof s >p : unique symbol | undefined >s : unique symbol >s : unique symbol diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarations.types.diff b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarations.types.diff deleted file mode 100644 index 9448c0f579e..00000000000 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarations.types.diff +++ /dev/null @@ -1,87 +0,0 @@ ---- old.uniqueSymbolsDeclarations.types -+++ new.uniqueSymbolsDeclarations.types -@@= skipped -101, +101 lines =@@ - - // function return value with type query - function funcReturnConstCallWithTypeQuery(): typeof constCall { return constCall; } -->funcReturnConstCallWithTypeQuery : () => typeof constCall -+>funcReturnConstCallWithTypeQuery : () => unique symbol - >constCall : unique symbol - >constCall : unique symbol - -@@= skipped -22, +22 lines =@@ - - // generator function yield with return type query - function* genFuncYieldConstCallWithTypeQuery(): IterableIterator { yield constCall; } -->genFuncYieldConstCallWithTypeQuery : () => IterableIterator -+>genFuncYieldConstCallWithTypeQuery : () => IterableIterator - >constCall : unique symbol - >yield constCall : any - >constCall : unique symbol -@@= skipped -303, +303 lines =@@ - >x : T - - declare function g(x: typeof s): void; -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >x : unique symbol - >s : unique symbol - - declare function g(x: typeof N.s): void; -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >x : unique symbol - >N.s : unique symbol - >N : typeof N -@@= skipped -241, +241 lines =@@ - - g(s); - >g(s) : void -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >s : unique symbol - - g(N.s); - >g(N.s) : void -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >N.s : unique symbol - >N : typeof N - >s : unique symbol - - g(N["s"]); - >g(N["s"]) : void -->g : { (x: typeof s): void; (x: typeof N.s): void; } -+>g : { (x: unique symbol): void; (x: unique symbol): void; } - >N["s"] : unique symbol - >N : typeof N - >"s" : "s" -@@= skipped -122, +122 lines =@@ - - interface Context { - method1(): typeof s; -->method1 : () => typeof s -+>method1 : () => unique symbol - >s : unique symbol - - method2(): Promise; -->method2 : () => Promise -+>method2 : () => Promise - >s : unique symbol - - method3(): AsyncIterableIterator; -->method3 : () => AsyncIterableIterator -+>method3 : () => AsyncIterableIterator - >s : unique symbol - - method4(): IterableIterator; -->method4 : () => IterableIterator -+>method4 : () => IterableIterator - >s : unique symbol - - method5(p?: typeof s): typeof s; -->method5 : (p?: typeof s) => typeof s -+>method5 : (p?: unique symbol | undefined) => unique symbol - >p : unique symbol | undefined - >s : unique symbol - >s : unique symbol \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarationsErrors.types b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarationsErrors.types index acd81d571b0..cb0c65aeb70 100644 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarationsErrors.types +++ b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarationsErrors.types @@ -10,11 +10,11 @@ interface I { readonly readonlyType: unique symbol; } // not allowed when emitting declarations export const obj = { ->obj : { method1(p: unique symbol): unique symbol; method2(p: unique symbol): unique symbol; } ->{ method1(p: typeof s): typeof s { return p; }, method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : { method1(p: unique symbol): unique symbol; method2(p: unique symbol): unique symbol; } +>obj : { method1(p: typeof s): typeof s; method2(p: I["readonlyType"]): I["readonlyType"]; } +>{ method1(p: typeof s): typeof s { return p; }, method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : { method1(p: typeof s): typeof s; method2(p: I["readonlyType"]): I["readonlyType"]; } method1(p: typeof s): typeof s { ->method1 : (p: unique symbol) => unique symbol +>method1 : (p: typeof s) => typeof s >p : unique symbol >s : unique symbol >s : unique symbol @@ -24,7 +24,7 @@ export const obj = { }, method2(p: I["readonlyType"]): I["readonlyType"] { ->method2 : (p: unique symbol) => unique symbol +>method2 : (p: I["readonlyType"]) => I["readonlyType"] >p : unique symbol return p; @@ -37,7 +37,7 @@ export const classExpression = class { >class { method1(p: typeof s): typeof s { return p; } method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : typeof classExpression method1(p: typeof s): typeof s { ->method1 : (p: unique symbol) => unique symbol +>method1 : (p: typeof s) => typeof s >p : unique symbol >s : unique symbol >s : unique symbol @@ -46,7 +46,7 @@ export const classExpression = class { >p : unique symbol } method2(p: I["readonlyType"]): I["readonlyType"] { ->method2 : (p: unique symbol) => unique symbol +>method2 : (p: I["readonlyType"]) => I["readonlyType"] >p : unique symbol return p; @@ -55,14 +55,14 @@ export const classExpression = class { }; export function funcInferredReturnType(obj: { method(p: typeof s): void }) { ->funcInferredReturnType : (obj: { method(p: unique symbol): void; }) => { method(p: unique symbol): void; } ->obj : { method(p: unique symbol): void; } ->method : (p: unique symbol) => void +>funcInferredReturnType : (obj: { method(p: typeof s): void; }) => { method(p: typeof s): void; } +>obj : { method(p: typeof s): void; } +>method : (p: typeof s) => void >p : unique symbol >s : unique symbol return obj; ->obj : { method(p: unique symbol): void; } +>obj : { method(p: typeof s): void; } } export interface InterfaceWithPrivateNamedProperties { diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarationsErrors.types.diff b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarationsErrors.types.diff deleted file mode 100644 index d374c711c2f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsDeclarationsErrors.types.diff +++ /dev/null @@ -1,63 +0,0 @@ ---- old.uniqueSymbolsDeclarationsErrors.types -+++ new.uniqueSymbolsDeclarationsErrors.types -@@= skipped -9, +9 lines =@@ - // not allowed when emitting declarations - - export const obj = { -->obj : { method1(p: typeof s): typeof s; method2(p: I["readonlyType"]): I["readonlyType"]; } -->{ method1(p: typeof s): typeof s { return p; }, method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : { method1(p: typeof s): typeof s; method2(p: I["readonlyType"]): I["readonlyType"]; } -+>obj : { method1(p: unique symbol): unique symbol; method2(p: unique symbol): unique symbol; } -+>{ method1(p: typeof s): typeof s { return p; }, method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : { method1(p: unique symbol): unique symbol; method2(p: unique symbol): unique symbol; } - - method1(p: typeof s): typeof s { -->method1 : (p: typeof s) => typeof s -+>method1 : (p: unique symbol) => unique symbol - >p : unique symbol - >s : unique symbol - >s : unique symbol -@@= skipped -14, +14 lines =@@ - - }, - method2(p: I["readonlyType"]): I["readonlyType"] { -->method2 : (p: I["readonlyType"]) => I["readonlyType"] -+>method2 : (p: unique symbol) => unique symbol - >p : unique symbol - - return p; -@@= skipped -13, +13 lines =@@ - >class { method1(p: typeof s): typeof s { return p; } method2(p: I["readonlyType"]): I["readonlyType"] { return p; }} : typeof classExpression - - method1(p: typeof s): typeof s { -->method1 : (p: typeof s) => typeof s -+>method1 : (p: unique symbol) => unique symbol - >p : unique symbol - >s : unique symbol - >s : unique symbol -@@= skipped -9, +9 lines =@@ - >p : unique symbol - } - method2(p: I["readonlyType"]): I["readonlyType"] { -->method2 : (p: I["readonlyType"]) => I["readonlyType"] -+>method2 : (p: unique symbol) => unique symbol - >p : unique symbol - - return p; -@@= skipped -9, +9 lines =@@ - }; - - export function funcInferredReturnType(obj: { method(p: typeof s): void }) { -->funcInferredReturnType : (obj: { method(p: typeof s): void; }) => { method(p: typeof s): void; } -->obj : { method(p: typeof s): void; } -->method : (p: typeof s) => void -+>funcInferredReturnType : (obj: { method(p: unique symbol): void; }) => { method(p: unique symbol): void; } -+>obj : { method(p: unique symbol): void; } -+>method : (p: unique symbol) => void - >p : unique symbol - >s : unique symbol - - return obj; -->obj : { method(p: typeof s): void; } -+>obj : { method(p: unique symbol): void; } - } - - export interface InterfaceWithPrivateNamedProperties { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsErrors.types b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsErrors.types index c53bdd4029b..1e59061f3d0 100644 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsErrors.types +++ b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsErrors.types @@ -14,18 +14,18 @@ declare var invalidVarType: unique symbol; // function arguments and return types declare function invalidArgType(arg: unique symbol): void; ->invalidArgType : (arg: symbol) => void +>invalidArgType : (arg: unique symbol) => void >arg : symbol declare function invalidRestArgType(...arg: (unique symbol)[]): void; ->invalidRestArgType : (...arg: symbol[]) => void +>invalidRestArgType : (...arg: (unique symbol)[]) => void >arg : symbol[] declare function invalidReturnType(): unique symbol; ->invalidReturnType : () => symbol +>invalidReturnType : () => unique symbol declare function invalidThisType(this: unique symbol): void; ->invalidThisType : (this: symbol) => void +>invalidThisType : (this: unique symbol) => void >this : symbol declare function invalidTypePredicate(n: any): n is unique symbol; @@ -33,7 +33,7 @@ declare function invalidTypePredicate(n: any): n is unique symbol; >n : any declare function invalidTypeParameterConstraint(): void; ->invalidTypeParameterConstraint : () => void +>invalidTypeParameterConstraint : () => void declare function invalidTypeParameterDefault(): void; >invalidTypeParameterDefault : () => void @@ -52,18 +52,18 @@ class InvalidClass { >invalidPropertyType : symbol invalidArgType(arg: unique symbol): void { return; } ->invalidArgType : (arg: symbol) => void +>invalidArgType : (arg: unique symbol) => void >arg : symbol invalidRestArgType(...args: (unique symbol)[]): void { return; } ->invalidRestArgType : (...args: symbol[]) => void +>invalidRestArgType : (...args: (unique symbol)[]) => void >args : symbol[] invalidReturnType(): unique symbol { return; } ->invalidReturnType : () => symbol +>invalidReturnType : () => unique symbol invalidThisType(this: unique symbol): void { return; } ->invalidThisType : (this: symbol) => void +>invalidThisType : (this: unique symbol) => void >this : symbol invalidTypePredicate(n: any): n is unique symbol { return; } @@ -71,7 +71,7 @@ class InvalidClass { >n : any invalidTypeParameterConstraint(): void { return; } ->invalidTypeParameterConstraint : () => void +>invalidTypeParameterConstraint : () => void invalidTypeParameterDefault(): void { return; } >invalidTypeParameterDefault : () => void @@ -87,18 +87,18 @@ class InvalidClass { >invalidStaticPropertyType : symbol static invalidStaticArgType(arg: unique symbol): void { return; } ->invalidStaticArgType : (arg: symbol) => void +>invalidStaticArgType : (arg: unique symbol) => void >arg : symbol static invalidStaticRestArgType(...args: (unique symbol)[]): void { return; } ->invalidStaticRestArgType : (...args: symbol[]) => void +>invalidStaticRestArgType : (...args: (unique symbol)[]) => void >args : symbol[] static invalidStaticReturnType(): unique symbol { return; } ->invalidStaticReturnType : () => symbol +>invalidStaticReturnType : () => unique symbol static invalidStaticThisType(this: unique symbol): void { return; } ->invalidStaticThisType : (this: symbol) => void +>invalidStaticThisType : (this: unique symbol) => void >this : symbol static invalidStaticTypePredicate(n: any): n is unique symbol { return; } @@ -106,7 +106,7 @@ class InvalidClass { >n : any static invalidStaticTypeParameterConstraint(): void { return; } ->invalidStaticTypeParameterConstraint : () => void +>invalidStaticTypeParameterConstraint : () => void static invalidStaticTypeParameterDefault(): void { return; } >invalidStaticTypeParameterDefault : () => void @@ -125,18 +125,18 @@ interface InvalidInterface { >invalidPropertyType : symbol invalidArgType(arg: unique symbol): void; ->invalidArgType : (arg: symbol) => void +>invalidArgType : (arg: unique symbol) => void >arg : symbol invalidRestArgType(...args: (unique symbol)[]): void; ->invalidRestArgType : (...args: symbol[]) => void +>invalidRestArgType : (...args: (unique symbol)[]) => void >args : symbol[] invalidReturnType(): unique symbol; ->invalidReturnType : () => symbol +>invalidReturnType : () => unique symbol invalidThisType(this: unique symbol); ->invalidThisType : (this: symbol) => any +>invalidThisType : (this: unique symbol) => any >this : symbol invalidTypePredicate(n: any): n is unique symbol @@ -144,7 +144,7 @@ interface InvalidInterface { >n : any invalidTypeParameterConstraint(): void; ->invalidTypeParameterConstraint : () => void +>invalidTypeParameterConstraint : () => void invalidTypeParameterDefault(): void; >invalidTypeParameterDefault : () => void @@ -158,18 +158,18 @@ type InvalidTypeLiteral = { >invalidPropertyType : symbol invalidArgType(arg: unique symbol): void; ->invalidArgType : (arg: symbol) => void +>invalidArgType : (arg: unique symbol) => void >arg : symbol invalidRestArgType(...args: (unique symbol)[]): void; ->invalidRestArgType : (...args: symbol[]) => void +>invalidRestArgType : (...args: (unique symbol)[]) => void >args : symbol[] invalidReturnType(): unique symbol; ->invalidReturnType : () => symbol +>invalidReturnType : () => unique symbol invalidThisType(this: unique symbol); ->invalidThisType : (this: symbol) => any +>invalidThisType : (this: unique symbol) => any >this : symbol invalidTypePredicate(n: any): n is unique symbol @@ -177,7 +177,7 @@ type InvalidTypeLiteral = { >n : any invalidTypeParameterConstraint(): void; ->invalidTypeParameterConstraint : () => void +>invalidTypeParameterConstraint : () => void invalidTypeParameterDefault(): void; >invalidTypeParameterDefault : () => void diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsErrors.types.diff b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsErrors.types.diff index 524d6a75453..4a53eaae46d 100644 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsErrors.types.diff +++ b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsErrors.types.diff @@ -1,25 +1,6 @@ --- old.uniqueSymbolsErrors.types +++ new.uniqueSymbolsErrors.types -@@= skipped -13, +13 lines =@@ - - // function arguments and return types - declare function invalidArgType(arg: unique symbol): void; -->invalidArgType : (arg: unique symbol) => void -+>invalidArgType : (arg: symbol) => void - >arg : symbol - - declare function invalidRestArgType(...arg: (unique symbol)[]): void; -->invalidRestArgType : (...arg: (unique symbol)[]) => void -+>invalidRestArgType : (...arg: symbol[]) => void - >arg : symbol[] - - declare function invalidReturnType(): unique symbol; -->invalidReturnType : () => unique symbol -+>invalidReturnType : () => symbol - - declare function invalidThisType(this: unique symbol): void; -->invalidThisType : (this: unique symbol) => void -+>invalidThisType : (this: symbol) => void +@@= skipped -28, +28 lines =@@ >this : symbol declare function invalidTypePredicate(n: any): n is unique symbol; @@ -28,31 +9,7 @@ >n : any declare function invalidTypeParameterConstraint(): void; -->invalidTypeParameterConstraint : () => void -+>invalidTypeParameterConstraint : () => void - - declare function invalidTypeParameterDefault(): void; - >invalidTypeParameterDefault : () => void @@= skipped -38, +38 lines =@@ - >invalidPropertyType : symbol - - invalidArgType(arg: unique symbol): void { return; } -->invalidArgType : (arg: unique symbol) => void -+>invalidArgType : (arg: symbol) => void - >arg : symbol - - invalidRestArgType(...args: (unique symbol)[]): void { return; } -->invalidRestArgType : (...args: (unique symbol)[]) => void -+>invalidRestArgType : (...args: symbol[]) => void - >args : symbol[] - - invalidReturnType(): unique symbol { return; } -->invalidReturnType : () => unique symbol -+>invalidReturnType : () => symbol - - invalidThisType(this: unique symbol): void { return; } -->invalidThisType : (this: unique symbol) => void -+>invalidThisType : (this: symbol) => void >this : symbol invalidTypePredicate(n: any): n is unique symbol { return; } @@ -61,31 +18,7 @@ >n : any invalidTypeParameterConstraint(): void { return; } -->invalidTypeParameterConstraint : () => void -+>invalidTypeParameterConstraint : () => void - - invalidTypeParameterDefault(): void { return; } - >invalidTypeParameterDefault : () => void @@= skipped -35, +35 lines =@@ - >invalidStaticPropertyType : symbol - - static invalidStaticArgType(arg: unique symbol): void { return; } -->invalidStaticArgType : (arg: unique symbol) => void -+>invalidStaticArgType : (arg: symbol) => void - >arg : symbol - - static invalidStaticRestArgType(...args: (unique symbol)[]): void { return; } -->invalidStaticRestArgType : (...args: (unique symbol)[]) => void -+>invalidStaticRestArgType : (...args: symbol[]) => void - >args : symbol[] - - static invalidStaticReturnType(): unique symbol { return; } -->invalidStaticReturnType : () => unique symbol -+>invalidStaticReturnType : () => symbol - - static invalidStaticThisType(this: unique symbol): void { return; } -->invalidStaticThisType : (this: unique symbol) => void -+>invalidStaticThisType : (this: symbol) => void >this : symbol static invalidStaticTypePredicate(n: any): n is unique symbol { return; } @@ -94,31 +27,7 @@ >n : any static invalidStaticTypeParameterConstraint(): void { return; } -->invalidStaticTypeParameterConstraint : () => void -+>invalidStaticTypeParameterConstraint : () => void - - static invalidStaticTypeParameterDefault(): void { return; } - >invalidStaticTypeParameterDefault : () => void @@= skipped -38, +38 lines =@@ - >invalidPropertyType : symbol - - invalidArgType(arg: unique symbol): void; -->invalidArgType : (arg: unique symbol) => void -+>invalidArgType : (arg: symbol) => void - >arg : symbol - - invalidRestArgType(...args: (unique symbol)[]): void; -->invalidRestArgType : (...args: (unique symbol)[]) => void -+>invalidRestArgType : (...args: symbol[]) => void - >args : symbol[] - - invalidReturnType(): unique symbol; -->invalidReturnType : () => unique symbol -+>invalidReturnType : () => symbol - - invalidThisType(this: unique symbol); -->invalidThisType : (this: unique symbol) => any -+>invalidThisType : (this: symbol) => any >this : symbol invalidTypePredicate(n: any): n is unique symbol @@ -127,31 +36,7 @@ >n : any invalidTypeParameterConstraint(): void; -->invalidTypeParameterConstraint : () => void -+>invalidTypeParameterConstraint : () => void - - invalidTypeParameterDefault(): void; - >invalidTypeParameterDefault : () => void @@= skipped -33, +33 lines =@@ - >invalidPropertyType : symbol - - invalidArgType(arg: unique symbol): void; -->invalidArgType : (arg: unique symbol) => void -+>invalidArgType : (arg: symbol) => void - >arg : symbol - - invalidRestArgType(...args: (unique symbol)[]): void; -->invalidRestArgType : (...args: (unique symbol)[]) => void -+>invalidRestArgType : (...args: symbol[]) => void - >args : symbol[] - - invalidReturnType(): unique symbol; -->invalidReturnType : () => unique symbol -+>invalidReturnType : () => symbol - - invalidThisType(this: unique symbol); -->invalidThisType : (this: unique symbol) => any -+>invalidThisType : (this: symbol) => any >this : symbol invalidTypePredicate(n: any): n is unique symbol @@ -159,9 +44,4 @@ +>invalidTypePredicate : (n: any) => n is symbol >n : any - invalidTypeParameterConstraint(): void; -->invalidTypeParameterConstraint : () => void -+>invalidTypeParameterConstraint : () => void - - invalidTypeParameterDefault(): void; - >invalidTypeParameterDefault : () => void \ No newline at end of file + invalidTypeParameterConstraint(): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsPropertyNames.types b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsPropertyNames.types index 488cf98c98d..f3596c9f4fd 100644 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsPropertyNames.types +++ b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsPropertyNames.types @@ -31,7 +31,7 @@ const uniqueSymbol1 = Symbol.for(""); function getUniqueSymbol0(): typeof uniqueSymbol0 { ->getUniqueSymbol0 : () => unique symbol +>getUniqueSymbol0 : () => typeof uniqueSymbol0 >uniqueSymbol0 : unique symbol return uniqueSymbol0; @@ -39,7 +39,7 @@ function getUniqueSymbol0(): typeof uniqueSymbol0 { } function getUniqueSymbol1(): typeof uniqueSymbol1 { ->getUniqueSymbol1 : () => unique symbol +>getUniqueSymbol1 : () => typeof uniqueSymbol1 >uniqueSymbol1 : unique symbol return uniqueSymbol1; @@ -127,25 +127,25 @@ const t3 = { [getUniqueSymbol0()]: "first", >[getUniqueSymbol0()] : string >getUniqueSymbol0() : unique symbol ->getUniqueSymbol0 : () => unique symbol +>getUniqueSymbol0 : () => typeof uniqueSymbol0 >"first" : "first" [getUniqueSymbol0()]: "last", >[getUniqueSymbol0()] : string >getUniqueSymbol0() : unique symbol ->getUniqueSymbol0 : () => unique symbol +>getUniqueSymbol0 : () => typeof uniqueSymbol0 >"last" : "last" [getUniqueSymbol1()]: "first", >[getUniqueSymbol1()] : string >getUniqueSymbol1() : unique symbol ->getUniqueSymbol1 : () => unique symbol +>getUniqueSymbol1 : () => typeof uniqueSymbol1 >"first" : "first" [getUniqueSymbol1()]: "last", >[getUniqueSymbol1()] : string >getUniqueSymbol1() : unique symbol ->getUniqueSymbol1 : () => unique symbol +>getUniqueSymbol1 : () => typeof uniqueSymbol1 >"last" : "last" }; @@ -198,24 +198,24 @@ class Cls3 { [getUniqueSymbol0()] = "first"; >[getUniqueSymbol0()] : string >getUniqueSymbol0() : unique symbol ->getUniqueSymbol0 : () => unique symbol +>getUniqueSymbol0 : () => typeof uniqueSymbol0 >"first" : "first" [getUniqueSymbol0()] = "last"; >[getUniqueSymbol0()] : string >getUniqueSymbol0() : unique symbol ->getUniqueSymbol0 : () => unique symbol +>getUniqueSymbol0 : () => typeof uniqueSymbol0 >"last" : "last" [getUniqueSymbol1()] = "first"; >[getUniqueSymbol1()] : string >getUniqueSymbol1() : unique symbol ->getUniqueSymbol1 : () => unique symbol +>getUniqueSymbol1 : () => typeof uniqueSymbol1 >"first" : "first" [getUniqueSymbol1()] = "last"; >[getUniqueSymbol1()] : string >getUniqueSymbol1() : unique symbol ->getUniqueSymbol1 : () => unique symbol +>getUniqueSymbol1 : () => typeof uniqueSymbol1 >"last" : "last" } diff --git a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsPropertyNames.types.diff b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsPropertyNames.types.diff index 1fa8cce1272..f5c3eb5ae6f 100644 --- a/testdata/baselines/reference/submodule/conformance/uniqueSymbolsPropertyNames.types.diff +++ b/testdata/baselines/reference/submodule/conformance/uniqueSymbolsPropertyNames.types.diff @@ -1,24 +1,6 @@ --- old.uniqueSymbolsPropertyNames.types +++ new.uniqueSymbolsPropertyNames.types -@@= skipped -30, +30 lines =@@ - - - function getUniqueSymbol0(): typeof uniqueSymbol0 { -->getUniqueSymbol0 : () => typeof uniqueSymbol0 -+>getUniqueSymbol0 : () => unique symbol - >uniqueSymbol0 : unique symbol - - return uniqueSymbol0; -@@= skipped -8, +8 lines =@@ - } - - function getUniqueSymbol1(): typeof uniqueSymbol1 { -->getUniqueSymbol1 : () => typeof uniqueSymbol1 -+>getUniqueSymbol1 : () => unique symbol - >uniqueSymbol1 : unique symbol - - return uniqueSymbol1; -@@= skipped -42, +42 lines =@@ +@@= skipped -80, +80 lines =@@ }; const t1 = { @@ -28,63 +10,4 @@ +>{ [Op.equal]: "first", [Op.equal]: "last",} : { [OpTypes.equal]: string; } [Op.equal]: "first", - >[Op.equal] : string -@@= skipped -46, +46 lines =@@ - [getUniqueSymbol0()]: "first", - >[getUniqueSymbol0()] : string - >getUniqueSymbol0() : unique symbol -->getUniqueSymbol0 : () => typeof uniqueSymbol0 -+>getUniqueSymbol0 : () => unique symbol - >"first" : "first" - - [getUniqueSymbol0()]: "last", - >[getUniqueSymbol0()] : string - >getUniqueSymbol0() : unique symbol -->getUniqueSymbol0 : () => typeof uniqueSymbol0 -+>getUniqueSymbol0 : () => unique symbol - >"last" : "last" - - [getUniqueSymbol1()]: "first", - >[getUniqueSymbol1()] : string - >getUniqueSymbol1() : unique symbol -->getUniqueSymbol1 : () => typeof uniqueSymbol1 -+>getUniqueSymbol1 : () => unique symbol - >"first" : "first" - - [getUniqueSymbol1()]: "last", - >[getUniqueSymbol1()] : string - >getUniqueSymbol1() : unique symbol -->getUniqueSymbol1 : () => typeof uniqueSymbol1 -+>getUniqueSymbol1 : () => unique symbol - >"last" : "last" - - }; -@@= skipped -71, +71 lines =@@ - [getUniqueSymbol0()] = "first"; - >[getUniqueSymbol0()] : string - >getUniqueSymbol0() : unique symbol -->getUniqueSymbol0 : () => typeof uniqueSymbol0 -+>getUniqueSymbol0 : () => unique symbol - >"first" : "first" - - [getUniqueSymbol0()] = "last"; - >[getUniqueSymbol0()] : string - >getUniqueSymbol0() : unique symbol -->getUniqueSymbol0 : () => typeof uniqueSymbol0 -+>getUniqueSymbol0 : () => unique symbol - >"last" : "last" - - [getUniqueSymbol1()] = "first"; - >[getUniqueSymbol1()] : string - >getUniqueSymbol1() : unique symbol -->getUniqueSymbol1 : () => typeof uniqueSymbol1 -+>getUniqueSymbol1 : () => unique symbol - >"first" : "first" - - [getUniqueSymbol1()] = "last"; - >[getUniqueSymbol1()] : string - >getUniqueSymbol1() : unique symbol -->getUniqueSymbol1 : () => typeof uniqueSymbol1 -+>getUniqueSymbol1 : () => unique symbol - >"last" : "last" - } \ No newline at end of file + >[Op.equal] : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/unknownControlFlow.types b/testdata/baselines/reference/submodule/conformance/unknownControlFlow.types index cb57ee62d04..888876188e3 100644 --- a/testdata/baselines/reference/submodule/conformance/unknownControlFlow.types +++ b/testdata/baselines/reference/submodule/conformance/unknownControlFlow.types @@ -335,7 +335,7 @@ function f22(x: T) { } function f23(x: T | undefined | null) { ->f23 : (x: T | null | undefined) => void +>f23 : (x: T | undefined | null) => void >x : T | null | undefined if (x !== undefined) { @@ -818,7 +818,7 @@ function fx1(value: T & ({} | null)) { } function fx2(value: T & ({} | null)) { ->fx2 : (value: T) => void +>fx2 : (value: T & ({} | null)) => void >value : T if (value === 42) { @@ -836,7 +836,7 @@ function fx2(value: T & ({} | null)) { } function fx3(value: T & ({} | null)) { ->fx3 : (value: T & {}) => void +>fx3 : (value: T & ({} | null)) => void >value : T & {} if (value === 42) { @@ -854,7 +854,7 @@ function fx3(value: T & ({} | null)) { } function fx4(value: T & ({} | null)) { ->fx4 : (value: T) => void +>fx4 : (value: T & ({} | null)) => void >value : T if (value === 42) { @@ -1035,7 +1035,7 @@ type AB = "A" | "B"; >AB : AB function x(x: T_AB & undefined, y: any) { ->x : (x: never, y: any) => void +>x : (x: T_AB & undefined, y: any) => void >x : never >y : any diff --git a/testdata/baselines/reference/submodule/conformance/unknownControlFlow.types.diff b/testdata/baselines/reference/submodule/conformance/unknownControlFlow.types.diff deleted file mode 100644 index e334c9b8af6..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unknownControlFlow.types.diff +++ /dev/null @@ -1,46 +0,0 @@ ---- old.unknownControlFlow.types -+++ new.unknownControlFlow.types -@@= skipped -334, +334 lines =@@ - } - - function f23(x: T | undefined | null) { -->f23 : (x: T | undefined | null) => void -+>f23 : (x: T | null | undefined) => void - >x : T | null | undefined - - if (x !== undefined) { -@@= skipped -483, +483 lines =@@ - } - - function fx2(value: T & ({} | null)) { -->fx2 : (value: T & ({} | null)) => void -+>fx2 : (value: T) => void - >value : T - - if (value === 42) { -@@= skipped -18, +18 lines =@@ - } - - function fx3(value: T & ({} | null)) { -->fx3 : (value: T & ({} | null)) => void -+>fx3 : (value: T & {}) => void - >value : T & {} - - if (value === 42) { -@@= skipped -18, +18 lines =@@ - } - - function fx4(value: T & ({} | null)) { -->fx4 : (value: T & ({} | null)) => void -+>fx4 : (value: T) => void - >value : T - - if (value === 42) { -@@= skipped -181, +181 lines =@@ - >AB : AB - - function x(x: T_AB & undefined, y: any) { -->x : (x: T_AB & undefined, y: any) => void -+>x : (x: never, y: any) => void - >x : never - >y : any diff --git a/testdata/baselines/reference/submodule/conformance/unknownType2.types b/testdata/baselines/reference/submodule/conformance/unknownType2.types index 6fba8646e53..42e661f5fec 100644 --- a/testdata/baselines/reference/submodule/conformance/unknownType2.types +++ b/testdata/baselines/reference/submodule/conformance/unknownType2.types @@ -48,9 +48,9 @@ if (u === 5) { const y = u.toString(10); >y : string >u.toString(10) : string ->u.toString : (radix?: number | undefined) => string +>u.toString : (radix?: number) => string >u : 5 ->toString : (radix?: number | undefined) => string +>toString : (radix?: number) => string >10 : 10 } diff --git a/testdata/baselines/reference/submodule/conformance/unknownType2.types.diff b/testdata/baselines/reference/submodule/conformance/unknownType2.types.diff deleted file mode 100644 index aa64616f45f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/unknownType2.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.unknownType2.types -+++ new.unknownType2.types -@@= skipped -47, +47 lines =@@ - const y = u.toString(10); - >y : string - >u.toString(10) : string -->u.toString : (radix?: number) => string -+>u.toString : (radix?: number | undefined) => string - >u : 5 -->toString : (radix?: number) => string -+>toString : (radix?: number | undefined) => string - >10 : 10 - } diff --git a/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries1(target=es2015).types b/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries1(target=es2015).types index aafcf733dfc..39cf1777a5a 100644 --- a/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries1(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries1(target=es2015).types @@ -12,9 +12,9 @@ var o = { a: 1, b: 2 }; for (var x of Object.values(o)) { >x : number >Object.values(o) : number[] ->Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >o : { a: number; b: number; } let y = x; @@ -25,41 +25,41 @@ for (var x of Object.values(o)) { var entries = Object.entries(o); // [string, number][] >entries : [string, number][] >Object.entries(o) : [string, number][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >o : { a: number; b: number; } var values = Object.values(o); // number[] >values : number[] >Object.values(o) : number[] ->Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >o : { a: number; b: number; } var entries1 = Object.entries(1); // [string, any][] >entries1 : [string, any][] >Object.entries(1) : [string, any][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >1 : 1 var values1 = Object.values(1); // any[] >values1 : any[] >Object.values(1) : any[] ->Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >1 : 1 var entries2 = Object.entries({ a: true, b: 2 }); // [string, number|boolean][] >entries2 : [string, number | boolean][] >Object.entries({ a: true, b: 2 }) : [string, number | boolean][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >{ a: true, b: 2 } : { a: true; b: number; } >a : true >true : true @@ -69,9 +69,9 @@ var entries2 = Object.entries({ a: true, b: 2 }); // [string, number|boolean][ var values2 = Object.values({ a: true, b: 2 }); // (number|boolean)[] >values2 : (number | boolean)[] >Object.values({ a: true, b: 2 }) : (number | boolean)[] ->Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >{ a: true, b: 2 } : { a: true; b: number; } >a : true >true : true @@ -81,17 +81,17 @@ var values2 = Object.values({ a: true, b: 2 }); // (number|boolean)[] var entries3 = Object.entries({}); // [string, {}][] >entries3 : [string, unknown][] >Object.entries({}) : [string, unknown][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >{} : {} var values3 = Object.values({}); // {}[] >values3 : unknown[] >Object.values({}) : unknown[] ->Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >{} : {} var a = ["a", "b", "c"]; @@ -104,17 +104,17 @@ var a = ["a", "b", "c"]; var entries4 = Object.entries(a); // [string, string][] >entries4 : [string, string][] >Object.entries(a) : [string, string][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >a : string[] var values4 = Object.values(a); // string[] >values4 : string[] >Object.values(a) : string[] ->Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >a : string[] enum E { A, B } @@ -125,17 +125,17 @@ enum E { A, B } var entries5 = Object.entries(E); // [string, any][] >entries5 : [string, string | E][] >Object.entries(E) : [string, string | E][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >E : typeof E var values5 = Object.values(E); // any[] >values5 : (string | E)[] >Object.values(E) : (string | E)[] ->Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >E : typeof E interface I { } @@ -146,16 +146,16 @@ var i: I = {}; var entries6 = Object.entries(i); // [string, any][] >entries6 : [string, any][] >Object.entries(i) : [string, any][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >i : I var values6 = Object.values(i); // any[] >values6 : any[] >Object.values(i) : any[] ->Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >i : I diff --git a/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries1(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries1(target=es2015).types.diff deleted file mode 100644 index b52b9cd4db4..00000000000 --- a/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries1(target=es2015).types.diff +++ /dev/null @@ -1,164 +0,0 @@ ---- old.useObjectValuesAndEntries1(target=es2015).types -+++ new.useObjectValuesAndEntries1(target=es2015).types -@@= skipped -11, +11 lines =@@ - for (var x of Object.values(o)) { - >x : number - >Object.values(o) : number[] -->Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >o : { a: number; b: number; } - - let y = x; -@@= skipped -13, +13 lines =@@ - var entries = Object.entries(o); // [string, number][] - >entries : [string, number][] - >Object.entries(o) : [string, number][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >o : { a: number; b: number; } - - var values = Object.values(o); // number[] - >values : number[] - >Object.values(o) : number[] -->Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >o : { a: number; b: number; } - - var entries1 = Object.entries(1); // [string, any][] - >entries1 : [string, any][] - >Object.entries(1) : [string, any][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >1 : 1 - - var values1 = Object.values(1); // any[] - >values1 : any[] - >Object.values(1) : any[] -->Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >1 : 1 - - var entries2 = Object.entries({ a: true, b: 2 }); // [string, number|boolean][] - >entries2 : [string, number | boolean][] - >Object.entries({ a: true, b: 2 }) : [string, number | boolean][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >{ a: true, b: 2 } : { a: true; b: number; } - >a : true - >true : true -@@= skipped -44, +44 lines =@@ - var values2 = Object.values({ a: true, b: 2 }); // (number|boolean)[] - >values2 : (number | boolean)[] - >Object.values({ a: true, b: 2 }) : (number | boolean)[] -->Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >{ a: true, b: 2 } : { a: true; b: number; } - >a : true - >true : true -@@= skipped -12, +12 lines =@@ - var entries3 = Object.entries({}); // [string, {}][] - >entries3 : [string, unknown][] - >Object.entries({}) : [string, unknown][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >{} : {} - - var values3 = Object.values({}); // {}[] - >values3 : unknown[] - >Object.values({}) : unknown[] -->Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >{} : {} - - var a = ["a", "b", "c"]; -@@= skipped -23, +23 lines =@@ - var entries4 = Object.entries(a); // [string, string][] - >entries4 : [string, string][] - >Object.entries(a) : [string, string][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >a : string[] - - var values4 = Object.values(a); // string[] - >values4 : string[] - >Object.values(a) : string[] -->Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >a : string[] - - enum E { A, B } -@@= skipped -21, +21 lines =@@ - var entries5 = Object.entries(E); // [string, any][] - >entries5 : [string, string | E][] - >Object.entries(E) : [string, string | E][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >E : typeof E - - var values5 = Object.values(E); // any[] - >values5 : (string | E)[] - >Object.values(E) : (string | E)[] -->Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >E : typeof E - - interface I { } -@@= skipped -21, +21 lines =@@ - var entries6 = Object.entries(i); // [string, any][] - >entries6 : [string, any][] - >Object.entries(i) : [string, any][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >i : I - - var values6 = Object.values(i); // any[] - >values6 : any[] - >Object.values(i) : any[] -->Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >i : I diff --git a/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries4.types b/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries4.types index 276ef2c10fc..d7e1cc1ff35 100644 --- a/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries4.types +++ b/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries4.types @@ -12,9 +12,9 @@ var o = { a: 1, b: 2 }; for (var x of Object.values(o)) { >x : number >Object.values(o) : number[] ->Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >Object : ObjectConstructor ->values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } +>values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } >o : { a: number; b: number; } let y = x; @@ -25,8 +25,8 @@ for (var x of Object.values(o)) { var entries = Object.entries(o); >entries : [string, number][] >Object.entries(o) : [string, number][] ->Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >Object : ObjectConstructor ->entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } >o : { a: number; b: number; } diff --git a/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries4.types.diff b/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries4.types.diff deleted file mode 100644 index 7ccb620378d..00000000000 --- a/testdata/baselines/reference/submodule/conformance/useObjectValuesAndEntries4.types.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.useObjectValuesAndEntries4.types -+++ new.useObjectValuesAndEntries4.types -@@= skipped -11, +11 lines =@@ - for (var x of Object.values(o)) { - >x : number - >Object.values(o) : number[] -->Object.values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>Object.values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >Object : ObjectConstructor -->values : { (o: { [s: string]: T; } | ArrayLike): T[]; (o: {}): any[]; } -+>values : { (o: ArrayLike | { [s: string]: T; }): T[]; (o: {}): any[]; } - >o : { a: number; b: number; } - - let y = x; -@@= skipped -13, +13 lines =@@ - var entries = Object.entries(o); - >entries : [string, number][] - >Object.entries(o) : [string, number][] -->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >Object : ObjectConstructor -->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -+>entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; } - >o : { a: number; b: number; } diff --git a/testdata/baselines/reference/submodule/conformance/usePromiseFinally(target=es2015).types b/testdata/baselines/reference/submodule/conformance/usePromiseFinally(target=es2015).types index 63f07e7fbda..421207e8faf 100644 --- a/testdata/baselines/reference/submodule/conformance/usePromiseFinally(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/usePromiseFinally(target=es2015).types @@ -4,7 +4,7 @@ let promise1 = new Promise(function(resolve, reject) {}) >promise1 : Promise >new Promise(function(resolve, reject) {}) .finally(function() {}) : Promise ->new Promise(function(resolve, reject) {}) .finally : (onfinally?: (() => void) | null | undefined) => Promise +>new Promise(function(resolve, reject) {}) .finally : (onfinally?: (() => void) | undefined | null) => Promise >new Promise(function(resolve, reject) {}) : Promise >Promise : PromiseConstructor >function(resolve, reject) {} : (resolve: (value: unknown) => void, reject: (reason?: any) => void) => void @@ -12,6 +12,6 @@ let promise1 = new Promise(function(resolve, reject) {}) >reject : (reason?: any) => void .finally(function() {}); ->finally : (onfinally?: (() => void) | null | undefined) => Promise +>finally : (onfinally?: (() => void) | undefined | null) => Promise >function() {} : () => void diff --git a/testdata/baselines/reference/submodule/conformance/usePromiseFinally(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/usePromiseFinally(target=es2015).types.diff new file mode 100644 index 00000000000..83fc8523d85 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/usePromiseFinally(target=es2015).types.diff @@ -0,0 +1,18 @@ +--- old.usePromiseFinally(target=es2015).types ++++ new.usePromiseFinally(target=es2015).types +@@= skipped -3, +3 lines =@@ + let promise1 = new Promise(function(resolve, reject) {}) + >promise1 : Promise + >new Promise(function(resolve, reject) {}) .finally(function() {}) : Promise +->new Promise(function(resolve, reject) {}) .finally : (onfinally?: (() => void) | null | undefined) => Promise ++>new Promise(function(resolve, reject) {}) .finally : (onfinally?: (() => void) | undefined | null) => Promise + >new Promise(function(resolve, reject) {}) : Promise + >Promise : PromiseConstructor + >function(resolve, reject) {} : (resolve: (value: unknown) => void, reject: (reason?: any) => void) => void +@@= skipped -8, +8 lines =@@ + >reject : (reason?: any) => void + + .finally(function() {}); +->finally : (onfinally?: (() => void) | null | undefined) => Promise ++>finally : (onfinally?: (() => void) | undefined | null) => Promise + >function() {} : () => void diff --git a/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer1(target=es2015).types b/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer1(target=es2015).types index 2a5eea6c5db..35971df27f6 100644 --- a/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer1(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer1(target=es2015).types @@ -10,9 +10,9 @@ var foge = new SharedArrayBuffer(1024); var bar = foge.slice(1, 10); >bar : SharedArrayBuffer >foge.slice(1, 10) : SharedArrayBuffer ->foge.slice : (begin?: number | undefined, end?: number | undefined) => SharedArrayBuffer +>foge.slice : (begin?: number, end?: number) => SharedArrayBuffer >foge : SharedArrayBuffer ->slice : (begin?: number | undefined, end?: number | undefined) => SharedArrayBuffer +>slice : (begin?: number, end?: number) => SharedArrayBuffer >1 : 1 >10 : 10 diff --git a/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer1(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer1(target=es2015).types.diff deleted file mode 100644 index 50b8f1b5587..00000000000 --- a/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer1(target=es2015).types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.useSharedArrayBuffer1(target=es2015).types -+++ new.useSharedArrayBuffer1(target=es2015).types -@@= skipped -9, +9 lines =@@ - var bar = foge.slice(1, 10); - >bar : SharedArrayBuffer - >foge.slice(1, 10) : SharedArrayBuffer -->foge.slice : (begin?: number, end?: number) => SharedArrayBuffer -+>foge.slice : (begin?: number | undefined, end?: number | undefined) => SharedArrayBuffer - >foge : SharedArrayBuffer -->slice : (begin?: number, end?: number) => SharedArrayBuffer -+>slice : (begin?: number | undefined, end?: number | undefined) => SharedArrayBuffer - >1 : 1 - >10 : 10 diff --git a/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer4.types b/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer4.types index 361dceffe6b..68a668ed586 100644 --- a/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer4.types +++ b/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer4.types @@ -10,9 +10,9 @@ var foge = new SharedArrayBuffer(1024); var bar = foge.slice(1, 10); >bar : SharedArrayBuffer >foge.slice(1, 10) : SharedArrayBuffer ->foge.slice : (begin?: number | undefined, end?: number | undefined) => SharedArrayBuffer +>foge.slice : (begin?: number, end?: number) => SharedArrayBuffer >foge : SharedArrayBuffer ->slice : (begin?: number | undefined, end?: number | undefined) => SharedArrayBuffer +>slice : (begin?: number, end?: number) => SharedArrayBuffer >1 : 1 >10 : 10 diff --git a/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer4.types.diff b/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer4.types.diff deleted file mode 100644 index e1cf1d87f73..00000000000 --- a/testdata/baselines/reference/submodule/conformance/useSharedArrayBuffer4.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.useSharedArrayBuffer4.types -+++ new.useSharedArrayBuffer4.types -@@= skipped -9, +9 lines =@@ - var bar = foge.slice(1, 10); - >bar : SharedArrayBuffer - >foge.slice(1, 10) : SharedArrayBuffer -->foge.slice : (begin?: number, end?: number) => SharedArrayBuffer -+>foge.slice : (begin?: number | undefined, end?: number | undefined) => SharedArrayBuffer - >foge : SharedArrayBuffer -->slice : (begin?: number, end?: number) => SharedArrayBuffer -+>slice : (begin?: number | undefined, end?: number | undefined) => SharedArrayBuffer - >1 : 1 - >10 : 10 diff --git a/testdata/baselines/reference/submodule/conformance/usingDeclarationsWithIteratorObject.types b/testdata/baselines/reference/submodule/conformance/usingDeclarationsWithIteratorObject.types index d166f3b8c2f..0e8c9344cc6 100644 --- a/testdata/baselines/reference/submodule/conformance/usingDeclarationsWithIteratorObject.types +++ b/testdata/baselines/reference/submodule/conformance/usingDeclarationsWithIteratorObject.types @@ -38,9 +38,9 @@ function f() { using it2 = Iterator.from(i) >it2 : IteratorObject >Iterator.from(i) : IteratorObject ->Iterator.from : (value: Iterable | Iterator) => IteratorObject +>Iterator.from : (value: Iterator | Iterable) => IteratorObject >Iterator : IteratorConstructor ->from : (value: Iterable | Iterator) => IteratorObject +>from : (value: Iterator | Iterable) => IteratorObject >i : Iterator using it3 = new MyIterator(); diff --git a/testdata/baselines/reference/submodule/conformance/usingDeclarationsWithIteratorObject.types.diff b/testdata/baselines/reference/submodule/conformance/usingDeclarationsWithIteratorObject.types.diff deleted file mode 100644 index 4e2c05c7417..00000000000 --- a/testdata/baselines/reference/submodule/conformance/usingDeclarationsWithIteratorObject.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.usingDeclarationsWithIteratorObject.types -+++ new.usingDeclarationsWithIteratorObject.types -@@= skipped -37, +37 lines =@@ - using it2 = Iterator.from(i) - >it2 : IteratorObject - >Iterator.from(i) : IteratorObject -->Iterator.from : (value: Iterator | Iterable) => IteratorObject -+>Iterator.from : (value: Iterable | Iterator) => IteratorObject - >Iterator : IteratorConstructor -->from : (value: Iterator | Iterable) => IteratorObject -+>from : (value: Iterable | Iterator) => IteratorObject - >i : Iterator - - using it3 = new MyIterator(); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/variadicTuples1.js b/testdata/baselines/reference/submodule/conformance/variadicTuples1.js index eee1f43b3d6..65b7bebd8b8 100644 --- a/testdata/baselines/reference/submodule/conformance/variadicTuples1.js +++ b/testdata/baselines/reference/submodule/conformance/variadicTuples1.js @@ -780,7 +780,7 @@ declare function getOrgUser(id: string, orgId: number, options?: { y?: number; z?: boolean; }): void; -declare function callApi(method: (...args: [...T, object]) => U): (...args: T) => U; +declare function callApi(method: (...args: [...T, object]) => U): (...args: [...T]) => U; type Numbers = number[]; type Unbounded = [...Numbers, boolean]; declare const data: Unbounded; diff --git a/testdata/baselines/reference/submodule/conformance/variadicTuples1.js.diff b/testdata/baselines/reference/submodule/conformance/variadicTuples1.js.diff deleted file mode 100644 index 69ca7495d21..00000000000 --- a/testdata/baselines/reference/submodule/conformance/variadicTuples1.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.variadicTuples1.js -+++ new.variadicTuples1.js -@@= skipped -779, +779 lines =@@ - y?: number; - z?: boolean; - }): void; --declare function callApi(method: (...args: [...T, object]) => U): (...args: [...T]) => U; -+declare function callApi(method: (...args: [...T, object]) => U): (...args: T) => U; - type Numbers = number[]; - type Unbounded = [...Numbers, boolean]; - declare const data: Unbounded; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/variadicTuples1.types b/testdata/baselines/reference/submodule/conformance/variadicTuples1.types index 2388f2462c8..edf12a27625 100644 --- a/testdata/baselines/reference/submodule/conformance/variadicTuples1.types +++ b/testdata/baselines/reference/submodule/conformance/variadicTuples1.types @@ -422,13 +422,13 @@ type TP2 = Partial<[string, ...T, ...number[]]>; // [strin // Reverse mapping through mapped type applied to variadic tuple type declare function fm1(t: Arrayify<[string, number, ...T]>): T; ->fm1 : (t: [string[], number[], ...Arrayify]) => T +>fm1 : (t: Arrayify<[string, number, ...T]>) => T >t : [string[], number[], ...Arrayify] let tm1 = fm1([['abc'], [42], [true], ['def']]); // [boolean, string] >tm1 : [boolean, string] >fm1([['abc'], [42], [true], ['def']]) : [boolean, string] ->fm1 : (t: [string[], number[], ...Arrayify]) => T +>fm1 : (t: Arrayify<[string, number, ...T]>) => T >[['abc'], [42], [true], ['def']] : [string[], number[], true[], string[]] >['abc'] : string[] >'abc' : "abc" @@ -720,7 +720,7 @@ function f14(t0: T, t1: [...T], t2: [. } function f15(k0: keyof T, k1: keyof [...T], k2: keyof [...U], k3: keyof [1, 2, ...T]) { ->f15 : (k0: keyof T, k1: keyof [...T], k2: keyof [...U], k3: keyof [1, 2, ...T]) => void +>f15 : (k0: keyof T, k1: keyof [ ...T], k2: keyof [ ...U], k3: keyof [ 1, 2, ...T]) => void >k0 : keyof T >k1 : keyof [...T] >k2 : keyof [...U] @@ -1216,13 +1216,13 @@ curry2(fn10, ['hello'], [42, true]); // Inference to [...T] has higher priority than inference to [...T, number?] declare function ft(t1: [...T], t2: [...T, number?]): T; ->ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T +>ft : (t1: [...T], t2: [...T, number?]) => T >t1 : [...T] >t2 : [...T, (number | undefined)?] ft([1, 2, 3], [1, 2, 3]); >ft([1, 2, 3], [1, 2, 3]) : [number, number, number] ->ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T +>ft : (t1: [...T], t2: [...T, number?]) => T >[1, 2, 3] : [number, number, number] >1 : 1 >2 : 2 @@ -1234,7 +1234,7 @@ ft([1, 2, 3], [1, 2, 3]); ft([1, 2], [1, 2, 3]); >ft([1, 2], [1, 2, 3]) : [number, number] ->ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T +>ft : (t1: [...T], t2: [...T, number?]) => T >[1, 2] : [number, number] >1 : 1 >2 : 2 @@ -1245,7 +1245,7 @@ ft([1, 2], [1, 2, 3]); ft(['a', 'b'], ['c', 'd']) >ft(['a', 'b'], ['c', 'd']) : [string, string] ->ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T +>ft : (t1: [...T], t2: [...T, number?]) => T >['a', 'b'] : [string, string] >'a' : "a" >'b' : "b" @@ -1255,7 +1255,7 @@ ft(['a', 'b'], ['c', 'd']) ft(['a', 'b'], ['c', 'd', 42]) >ft(['a', 'b'], ['c', 'd', 42]) : [string, string] ->ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T +>ft : (t1: [...T], t2: [...T, number?]) => T >['a', 'b'] : [string, string] >'a' : "a" >'b' : "b" @@ -1293,23 +1293,23 @@ call(...sa, (...x) => 42); // No inference to ending optional elements (except with identical structure) declare function f20(args: [...T, number?]): T; ->f20 : (args: [...T, (number | undefined)?]) => T +>f20 : (args: [...T, number?]) => T >args : [...T, (number | undefined)?] function f21(args: [...U, number?]) { ->f21 : (args: [...U, (number | undefined)?]) => void +>f21 : (args: [...U, number?]) => void >args : [...U, (number | undefined)?] let v1 = f20(args); // U >v1 : U >f20(args) : U ->f20 : (args: [...T, (number | undefined)?]) => T +>f20 : (args: [...T, number?]) => T >args : [...U, (number | undefined)?] let v2 = f20(["foo", "bar"]); // [string] >v2 : [string] >f20(["foo", "bar"]) : [string] ->f20 : (args: [...T, (number | undefined)?]) => T +>f20 : (args: [...T, number?]) => T >["foo", "bar"] : [string, string] >"foo" : "foo" >"bar" : "bar" @@ -1317,7 +1317,7 @@ function f21(args: [...U, number?]) { let v3 = f20(["foo", 42]); // [string] >v3 : [string] >f20(["foo", 42]) : [string] ->f20 : (args: [...T, (number | undefined)?]) => T +>f20 : (args: [...T, number?]) => T >["foo", 42] : [string, number] >"foo" : "foo" >42 : 42 @@ -1386,21 +1386,21 @@ const b = a.bind("", 1); // Desc<[boolean], object> // Repro from #39607 declare function getUser(id: string, options?: { x?: string }): string; ->getUser : (id: string, options?: { x?: string | undefined; } | undefined) => string +>getUser : (id: string, options?: { x?: string; }) => string >id : string ->options : { x?: string | undefined; } | undefined +>options : { x?: string; } | undefined >x : string | undefined declare function getOrgUser(id: string, orgId: number, options?: { y?: number, z?: boolean }): void; ->getOrgUser : (id: string, orgId: number, options?: { y?: number | undefined; z?: boolean | undefined; } | undefined) => void +>getOrgUser : (id: string, orgId: number, options?: { y?: number; z?: boolean; }) => void >id : string >orgId : number ->options : { y?: number | undefined; z?: boolean | undefined; } | undefined +>options : { y?: number; z?: boolean; } | undefined >y : number | undefined >z : boolean | undefined 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] @@ -1416,13 +1416,13 @@ function callApi(method: (...args: [...T, ob callApi(getUser); >callApi(getUser) : (id: string) => string ->callApi : (method: (...args: [...T, object]) => U) => (...args: T) => U ->getUser : (id: string, options?: { x?: string | undefined; } | undefined) => string +>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 ->getOrgUser : (id: string, orgId: number, options?: { y?: number | undefined; z?: boolean | undefined; } | undefined) => void +>callApi : (method: (...args: [...T, object]) => U) => (...args: [...T]) => U +>getOrgUser : (id: string, orgId: number, options?: { y?: number; z?: boolean; }) => void // Repro from #40235 diff --git a/testdata/baselines/reference/submodule/conformance/variadicTuples1.types.diff b/testdata/baselines/reference/submodule/conformance/variadicTuples1.types.diff index 356240df297..f0cee107205 100644 --- a/testdata/baselines/reference/submodule/conformance/variadicTuples1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/variadicTuples1.types.diff @@ -1,101 +1,15 @@ --- old.variadicTuples1.types +++ new.variadicTuples1.types -@@= skipped -421, +421 lines =@@ - // Reverse mapping through mapped type applied to variadic tuple type - - declare function fm1(t: Arrayify<[string, number, ...T]>): T; -->fm1 : (t: Arrayify<[string, number, ...T]>) => T -+>fm1 : (t: [string[], number[], ...Arrayify]) => T - >t : [string[], number[], ...Arrayify] - - let tm1 = fm1([['abc'], [42], [true], ['def']]); // [boolean, string] - >tm1 : [boolean, string] - >fm1([['abc'], [42], [true], ['def']]) : [boolean, string] -->fm1 : (t: Arrayify<[string, number, ...T]>) => T -+>fm1 : (t: [string[], number[], ...Arrayify]) => T - >[['abc'], [42], [true], ['def']] : [string[], number[], true[], string[]] - >['abc'] : string[] - >'abc' : "abc" -@@= skipped -794, +794 lines =@@ - // Inference to [...T] has higher priority than inference to [...T, number?] - - declare function ft(t1: [...T], t2: [...T, number?]): T; -->ft : (t1: [...T], t2: [...T, number?]) => T -+>ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T - >t1 : [...T] - >t2 : [...T, (number | undefined)?] - - ft([1, 2, 3], [1, 2, 3]); - >ft([1, 2, 3], [1, 2, 3]) : [number, number, number] -->ft : (t1: [...T], t2: [...T, number?]) => T -+>ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T - >[1, 2, 3] : [number, number, number] - >1 : 1 - >2 : 2 -@@= skipped -18, +18 lines =@@ - - ft([1, 2], [1, 2, 3]); - >ft([1, 2], [1, 2, 3]) : [number, number] -->ft : (t1: [...T], t2: [...T, number?]) => T -+>ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T - >[1, 2] : [number, number] - >1 : 1 - >2 : 2 -@@= skipped -11, +11 lines =@@ - - ft(['a', 'b'], ['c', 'd']) - >ft(['a', 'b'], ['c', 'd']) : [string, string] -->ft : (t1: [...T], t2: [...T, number?]) => T -+>ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T - >['a', 'b'] : [string, string] - >'a' : "a" - >'b' : "b" -@@= skipped -10, +10 lines =@@ - - ft(['a', 'b'], ['c', 'd', 42]) - >ft(['a', 'b'], ['c', 'd', 42]) : [string, string] -->ft : (t1: [...T], t2: [...T, number?]) => T -+>ft : (t1: [...T], t2: [...T, (number | undefined)?]) => T - >['a', 'b'] : [string, string] - >'a' : "a" - >'b' : "b" -@@= skipped -38, +38 lines =@@ - // No inference to ending optional elements (except with identical structure) - - declare function f20(args: [...T, number?]): T; -->f20 : (args: [...T, number?]) => T -+>f20 : (args: [...T, (number | undefined)?]) => T - >args : [...T, (number | undefined)?] - - function f21(args: [...U, number?]) { -->f21 : (args: [...U, number?]) => void -+>f21 : (args: [...U, (number | undefined)?]) => void - >args : [...U, (number | undefined)?] - - let v1 = f20(args); // U - >v1 : U - >f20(args) : U -->f20 : (args: [...T, number?]) => T -+>f20 : (args: [...T, (number | undefined)?]) => T - >args : [...U, (number | undefined)?] +@@= skipped -719, +719 lines =@@ + } - let v2 = f20(["foo", "bar"]); // [string] - >v2 : [string] - >f20(["foo", "bar"]) : [string] -->f20 : (args: [...T, number?]) => T -+>f20 : (args: [...T, (number | undefined)?]) => T - >["foo", "bar"] : [string, string] - >"foo" : "foo" - >"bar" : "bar" -@@= skipped -24, +24 lines =@@ - let v3 = f20(["foo", 42]); // [string] - >v3 : [string] - >f20(["foo", 42]) : [string] -->f20 : (args: [...T, number?]) => T -+>f20 : (args: [...T, (number | undefined)?]) => T - >["foo", 42] : [string, number] - >"foo" : "foo" - >42 : 42 + function f15(k0: keyof T, k1: keyof [...T], k2: keyof [...U], k3: keyof [1, 2, ...T]) { +->f15 : (k0: keyof T, k1: keyof [...T], k2: keyof [...U], k3: keyof [1, 2, ...T]) => void ++>f15 : (k0: keyof T, k1: keyof [ ...T], k2: keyof [ ...U], k3: keyof [ 1, 2, ...T]) => void + >k0 : keyof T + >k1 : keyof [...T] + >k2 : keyof [...U] +@@= skipped -604, +604 lines =@@ } declare function f22(args: [...T, number]): T; @@ -109,7 +23,7 @@ >args : [...T] function f23(args: [...U, number]) { -@@= skipped -49, +49 lines =@@ +@@= skipped -42, +42 lines =@@ >args : A bind(this: Desc<[...T, ...U], R>, ...args: T): Desc<[...U], R>; @@ -117,48 +31,4 @@ +>bind : (this: Desc<[...T_1, ...U], R>, ...args: T_1) => Desc<[...U], R> >this : Desc<[...T, ...U], R> >args : T - } -@@= skipped -20, +20 lines =@@ - // Repro from #39607 - - declare function getUser(id: string, options?: { x?: string }): string; -->getUser : (id: string, options?: { x?: string; }) => string -+>getUser : (id: string, options?: { x?: string | undefined; } | undefined) => string - >id : string -->options : { x?: string; } | undefined -+>options : { x?: string | undefined; } | undefined - >x : string | undefined - - declare function getOrgUser(id: string, orgId: number, options?: { y?: number, z?: boolean }): void; -->getOrgUser : (id: string, orgId: number, options?: { y?: number; z?: boolean; }) => void -+>getOrgUser : (id: string, orgId: number, options?: { y?: number | undefined; z?: boolean | undefined; } | undefined) => void - >id : string - >orgId : number -->options : { y?: number; z?: boolean; } | undefined -+>options : { y?: number | undefined; z?: boolean | undefined; } | undefined - >y : number | undefined - >z : boolean | undefined - - 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] - -@@= skipped -30, +30 lines =@@ - - callApi(getUser); - >callApi(getUser) : (id: string) => string -->callApi : (method: (...args: [...T, object]) => U) => (...args: [...T]) => U -->getUser : (id: string, options?: { x?: string; }) => string -+>callApi : (method: (...args: [...T, object]) => U) => (...args: T) => U -+>getUser : (id: string, options?: { x?: string | undefined; } | undefined) => string - - callApi(getOrgUser); - >callApi(getOrgUser) : (id: string, orgId: number) => void -->callApi : (method: (...args: [...T, object]) => U) => (...args: [...T]) => U -->getOrgUser : (id: string, orgId: number, options?: { y?: number; z?: boolean; }) => void -+>callApi : (method: (...args: [...T, object]) => U) => (...args: T) => U -+>getOrgUser : (id: string, orgId: number, options?: { y?: number | undefined; z?: boolean | undefined; } | undefined) => void - - // Repro from #40235 + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/variadicTuples2.types b/testdata/baselines/reference/submodule/conformance/variadicTuples2.types index 5187373d733..990b543c0c0 100644 --- a/testdata/baselines/reference/submodule/conformance/variadicTuples2.types +++ b/testdata/baselines/reference/submodule/conformance/variadicTuples2.types @@ -343,9 +343,9 @@ function pipe(...args: [...T, (...values: T) => vo >args.slice(0, -1) as unknown as T : T >args.slice(0, -1) as unknown : unknown >args.slice(0, -1) : (((...values: T) => void) | T[number])[] ->args.slice : (start?: number | undefined, end?: number | undefined) => (((...values: T) => void) | T[number])[] +>args.slice : (start?: number, end?: number) => (((...values: T) => void) | T[number])[] >args : [...T, (...values: T) => void] ->slice : (start?: number | undefined, end?: number | undefined) => (((...values: T) => void) | T[number])[] +>slice : (start?: number, end?: number) => (((...values: T) => void) | T[number])[] >0 : 0 >-1 : -1 >1 : 1 diff --git a/testdata/baselines/reference/submodule/conformance/variadicTuples2.types.diff b/testdata/baselines/reference/submodule/conformance/variadicTuples2.types.diff deleted file mode 100644 index 2e00ce1f94c..00000000000 --- a/testdata/baselines/reference/submodule/conformance/variadicTuples2.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.variadicTuples2.types -+++ new.variadicTuples2.types -@@= skipped -342, +342 lines =@@ - >args.slice(0, -1) as unknown as T : T - >args.slice(0, -1) as unknown : unknown - >args.slice(0, -1) : (((...values: T) => void) | T[number])[] -->args.slice : (start?: number, end?: number) => (((...values: T) => void) | T[number])[] -+>args.slice : (start?: number | undefined, end?: number | undefined) => (((...values: T) => void) | T[number])[] - >args : [...T, (...values: T) => void] -->slice : (start?: number, end?: number) => (((...values: T) => void) | T[number])[] -+>slice : (start?: number | undefined, end?: number | undefined) => (((...values: T) => void) | T[number])[] - >0 : 0 - >-1 : -1 - >1 : 1 \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/variance.types b/testdata/baselines/reference/submodule/conformance/variance.types index 792a8a0ba33..ba69b776cb9 100644 --- a/testdata/baselines/reference/submodule/conformance/variance.types +++ b/testdata/baselines/reference/submodule/conformance/variance.types @@ -42,7 +42,7 @@ class Bar { >[] : never[] cast(_name: ([T] extends [string] ? string : string)) { } ->cast : (_name: [T] extends [string] ? string : string) => void +>cast : (_name: ([T] extends [string] ? string : string)) => void >_name : [T] extends [string] ? string : string pushThis() { diff --git a/testdata/baselines/reference/submodule/conformance/variance.types.diff b/testdata/baselines/reference/submodule/conformance/variance.types.diff deleted file mode 100644 index dde6d2e734b..00000000000 --- a/testdata/baselines/reference/submodule/conformance/variance.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.variance.types -+++ new.variance.types -@@= skipped -41, +41 lines =@@ - >[] : never[] - - cast(_name: ([T] extends [string] ? string : string)) { } -->cast : (_name: ([T] extends [string] ? string : string)) => void -+>cast : (_name: [T] extends [string] ? string : string) => void - >_name : [T] extends [string] ? string : string - - pushThis() { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/varianceAnnotations.js b/testdata/baselines/reference/submodule/conformance/varianceAnnotations.js index 3c589b6c347..95ee45dff82 100644 --- a/testdata/baselines/reference/submodule/conformance/varianceAnnotations.js +++ b/testdata/baselines/reference/submodule/conformance/varianceAnnotations.js @@ -321,7 +321,7 @@ declare const qq: ActionObject<{ }>; declare let Anon: { new (): { - foo(): /*elided*/ any; + foo(): InstanceType<(typeof Anon)>; }; }; declare let OuterC: { diff --git a/testdata/baselines/reference/submodule/conformance/varianceAnnotations.js.diff b/testdata/baselines/reference/submodule/conformance/varianceAnnotations.js.diff deleted file mode 100644 index 34533d165c0..00000000000 --- a/testdata/baselines/reference/submodule/conformance/varianceAnnotations.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.varianceAnnotations.js -+++ new.varianceAnnotations.js -@@= skipped -320, +320 lines =@@ - }>; - declare let Anon: { - new (): { -- foo(): InstanceType<(typeof Anon)>; -+ foo(): /*elided*/ any; - }; - }; - declare let OuterC: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/varianceAnnotations.types b/testdata/baselines/reference/submodule/conformance/varianceAnnotations.types index da48fa6b82e..44fb8af0d7c 100644 --- a/testdata/baselines/reference/submodule/conformance/varianceAnnotations.types +++ b/testdata/baselines/reference/submodule/conformance/varianceAnnotations.types @@ -260,7 +260,7 @@ interface Child extends Parent { } function fn(inp: Child) { ->fn : (inp: Child) => void +>fn : (inp: Child) => void >inp : Child const a: Child = inp; @@ -350,7 +350,7 @@ let Anon = class { >class { foo(): InstanceType<(typeof Anon)> { return this; }} : typeof Anon foo(): InstanceType<(typeof Anon)> { ->foo : () => Anon +>foo : () => InstanceType<(typeof Anon)> >Anon : typeof Anon return this; diff --git a/testdata/baselines/reference/submodule/conformance/varianceAnnotations.types.diff b/testdata/baselines/reference/submodule/conformance/varianceAnnotations.types.diff deleted file mode 100644 index 865066c6c0f..00000000000 --- a/testdata/baselines/reference/submodule/conformance/varianceAnnotations.types.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- old.varianceAnnotations.types -+++ new.varianceAnnotations.types -@@= skipped -259, +259 lines =@@ - } - - function fn(inp: Child) { -->fn : (inp: Child) => void -+>fn : (inp: Child) => void - >inp : Child - - const a: Child = inp; -@@= skipped -90, +90 lines =@@ - >class { foo(): InstanceType<(typeof Anon)> { return this; }} : typeof Anon - - foo(): InstanceType<(typeof Anon)> { -->foo : () => InstanceType<(typeof Anon)> -+>foo : () => Anon - >Anon : typeof Anon - - return this; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/weakTypesAndLiterals01.types b/testdata/baselines/reference/submodule/conformance/weakTypesAndLiterals01.types index c4254eddd82..28790a089e3 100644 --- a/testdata/baselines/reference/submodule/conformance/weakTypesAndLiterals01.types +++ b/testdata/baselines/reference/submodule/conformance/weakTypesAndLiterals01.types @@ -36,7 +36,7 @@ const f = (arg: LiteralsOrWeakTypes) => { >"A" : "A" return arg; ->arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } +>arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } } else { return arg; @@ -55,7 +55,7 @@ const g = (arg: WeakTypes) => { >"A" : "A" return arg; ->arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } +>arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } } else { return arg; @@ -74,7 +74,7 @@ const h = (arg: LiteralsOrWeakTypes) => { >aOrB : "A" | "B" return arg; ->arg : "A" | "B" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } +>arg : "A" | "B" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } } else { return arg; @@ -93,7 +93,7 @@ const i = (arg: WeakTypes) => { >aOrB : "A" | "B" return arg; ->arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } +>arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } } else { return arg; diff --git a/testdata/baselines/reference/submodule/conformance/weakTypesAndLiterals01.types.diff b/testdata/baselines/reference/submodule/conformance/weakTypesAndLiterals01.types.diff deleted file mode 100644 index 201d288a62a..00000000000 --- a/testdata/baselines/reference/submodule/conformance/weakTypesAndLiterals01.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.weakTypesAndLiterals01.types -+++ new.weakTypesAndLiterals01.types -@@= skipped -35, +35 lines =@@ - >"A" : "A" - - return arg; -->arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } -+>arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } - } - else { - return arg; -@@= skipped -19, +19 lines =@@ - >"A" : "A" - - return arg; -->arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } -+>arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } - } - else { - return arg; -@@= skipped -19, +19 lines =@@ - >aOrB : "A" | "B" - - return arg; -->arg : "A" | "B" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } -+>arg : "A" | "B" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } - } - else { - return arg; -@@= skipped -19, +19 lines =@@ - >aOrB : "A" | "B" - - return arg; -->arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } -+>arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } - } - else { - return arg; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsFunctionParameterTypes1.baseline b/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsFunctionParameterTypes1.baseline index 9763c14f237..dc63a6ad902 100644 --- a/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsFunctionParameterTypes1.baseline +++ b/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsFunctionParameterTypes1.baseline @@ -137,20 +137,7 @@ foo3(a => { "value": "(" }, { - "value": "d", - "location": { - "uri": "file:///inlayHintsFunctionParameterTypes1.ts", - "range": { - "start": { - "line": 7, - "character": 27 - }, - "end": { - "line": 7, - "character": 28 - } - } - } + "value": "d" }, { "value": ": " diff --git a/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsInteractiveFunctionParameterTypes1.baseline b/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsInteractiveFunctionParameterTypes1.baseline index 4b118a195ed..4430c923219 100644 --- a/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsInteractiveFunctionParameterTypes1.baseline +++ b/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsInteractiveFunctionParameterTypes1.baseline @@ -137,20 +137,7 @@ "value": "(" }, { - "value": "d", - "location": { - "uri": "file:///inlayHintsInteractiveFunctionParameterTypes1.ts", - "range": { - "start": { - "line": 7, - "character": 28 - }, - "end": { - "line": 7, - "character": 29 - } - } - } + "value": "d" }, { "value": ": " @@ -482,12 +469,6 @@ { "value": "number" }, - { - "value": " | " - }, - { - "value": "undefined" - }, { "value": "; " }, diff --git a/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsInteractiveVariableTypes1.baseline b/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsInteractiveVariableTypes1.baseline index ed463f38db7..e01648f08f5 100644 --- a/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsInteractiveVariableTypes1.baseline +++ b/testdata/baselines/reference/submodule/fourslash/inlayHints/inlayHintsInteractiveVariableTypes1.baseline @@ -169,20 +169,7 @@ "value": " " }, { - "value": "a", - "location": { - "uri": "file:///inlayHintsInteractiveVariableTypes1.ts", - "range": { - "start": { - "line": 19, - "character": 21 - }, - "end": { - "line": 19, - "character": 22 - } - } - } + "value": "a" }, { "value": ": " diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff deleted file mode 100644 index 0d6aa45d419..00000000000 --- a/testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.checkJsdocParamOnVariableDeclaredFunctionExpression.types -+++ new.checkJsdocParamOnVariableDeclaredFunctionExpression.types -@@= skipped -6, +6 lines =@@ - * @param {string} [s] - */ - var x = function foo(n, s) {} -->x : (n?: number | undefined, s?: string) => void -->function foo(n, s) {} : (n?: number | undefined, s?: string) => void -->foo : (n?: number | undefined, s?: string) => void -+>x : (n?: number, s?: string) => void -+>function foo(n, s) {} : (n?: number, s?: string) => void -+>foo : (n?: number, s?: string) => void - >n : number - >s : string diff --git a/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsFunctionParameterTypes1.baseline.diff b/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsFunctionParameterTypes1.baseline.diff index 3c0a4f97212..bd2b08debb1 100644 --- a/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsFunctionParameterTypes1.baseline.diff +++ b/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsFunctionParameterTypes1.baseline.diff @@ -109,8 +109,7 @@ + "value": "(" + }, + { -+ "value": "d", -+ "location": {}, ++ "value": "d" + }, + { + "value": ": " @@ -146,7 +145,7 @@ "kind": 1, "paddingLeft": true } -@@= skipped -8, +59 lines =@@ +@@= skipped -8, +58 lines =@@ a(d => {}) ^ { diff --git a/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsInteractiveFunctionParameterTypes1.baseline.diff b/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsInteractiveFunctionParameterTypes1.baseline.diff index 751d248d113..cacb5d25902 100644 --- a/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsInteractiveFunctionParameterTypes1.baseline.diff +++ b/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsInteractiveFunctionParameterTypes1.baseline.diff @@ -10,17 +10,7 @@ }, { "value": ": " -@@= skipped -9, +10 lines =@@ - "value": "(" - }, - { -- "value": "d" -+ "value": "d", -+ "location": {}, - }, - { - "value": ": " -@@= skipped -107, +108 lines =@@ +@@= skipped -116, +117 lines =@@ "value": "(" }, { @@ -70,7 +60,16 @@ }, { "value": "?" -@@= skipped -21, +22 lines =@@ +@@= skipped -12, +13 lines =@@ + "value": "number" + }, + { +- "value": " | " +- }, +- { +- "value": "undefined" +- }, +- { "value": "; " }, { @@ -80,7 +79,7 @@ }, { "value": "(" -@@= skipped -18, +19 lines =@@ +@@= skipped -27, +22 lines =@@ "value": "; " }, { diff --git a/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsInteractiveVariableTypes1.baseline.diff b/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsInteractiveVariableTypes1.baseline.diff deleted file mode 100644 index 1c28e9f7acc..00000000000 --- a/testdata/baselines/reference/submoduleAccepted/fourslash/inlayHints/inlayHintsInteractiveVariableTypes1.baseline.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.inlayHintsInteractiveVariableTypes1.baseline -+++ new.inlayHintsInteractiveVariableTypes1.baseline -@@= skipped -128, +128 lines =@@ - "value": " " - }, - { -- "value": "a" -+ "value": "a", -+ "location": {}, - }, - { - "value": ": " \ No newline at end of file diff --git a/testdata/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js b/testdata/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js index cb11d9a8beb..09dab50a6d0 100644 --- a/testdata/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js +++ b/testdata/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js @@ -242,8 +242,9 @@ module.exports = {}; "size": 1652 } //// [/home/src/workspaces/lib/sub-project-2/index.d.ts] *new* +import { MyNominal } from '../sub-project/index'; declare const variable: { - key: string; + key: MyNominal; }; /** * @return {keyof typeof variable} @@ -264,7 +265,7 @@ export function getVar() { } //// [/home/src/workspaces/lib/sub-project-2/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[4],"fileNames":["lib.es2025.full.d.ts","../common/nominal.d.ts","../sub-project/index.d.ts","../../solution/sub-project-2/index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"78da1fe1eee174b6f46c66b629c86122-export type Nominal = T & {};\n/**\n * @template T, Name\n * @typedef {T & {[Symbol.species]: Name}} Nominal\n */\ndeclare const _default: {};\nexport = _default;\n","225285a996cc5c4120877a377890d79e-import { Nominal } from '../common/nominal';\nexport type MyNominal = Nominal;\n/**\n * @typedef {Nominal} MyNominal\n */ \n",{"version":"db2a90e082fd17d65127bda69975a727-import { MyNominal } from '../sub-project/index';\n\nconst variable = {\n key: /** @type {MyNominal} */('value'),\n};\n\n/**\n * @return {keyof typeof variable}\n */\nexport function getVar() {\n return 'key';\n}","signature":"ce1d51d134fcf64db95dffbbad017483-declare const variable: {\n key: string;\n};\n/**\n * @return {keyof typeof variable}\n */\nexport declare function getVar(): keyof typeof variable;\nexport {};\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"allowJs":true,"checkJs":true,"composite":true,"declaration":true,"outDir":"..","rootDir":"../../solution","skipLibCheck":true},"referencedMap":[[3,1],[4,2]],"semanticDiagnosticsPerFile":[[4,[{"pos":9,"end":18,"code":18042,"category":1,"messageKey":"_0_is_a_type_and_cannot_be_imported_in_JavaScript_files_Use_1_in_a_JSDoc_type_annotation_18042","messageArgs":["MyNominal","import(\"../sub-project/index\").MyNominal"]}]]],"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[4],"fileNames":["lib.es2025.full.d.ts","../common/nominal.d.ts","../sub-project/index.d.ts","../../solution/sub-project-2/index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"78da1fe1eee174b6f46c66b629c86122-export type Nominal = T & {};\n/**\n * @template T, Name\n * @typedef {T & {[Symbol.species]: Name}} Nominal\n */\ndeclare const _default: {};\nexport = _default;\n","225285a996cc5c4120877a377890d79e-import { Nominal } from '../common/nominal';\nexport type MyNominal = Nominal;\n/**\n * @typedef {Nominal} MyNominal\n */ \n",{"version":"db2a90e082fd17d65127bda69975a727-import { MyNominal } from '../sub-project/index';\n\nconst variable = {\n key: /** @type {MyNominal} */('value'),\n};\n\n/**\n * @return {keyof typeof variable}\n */\nexport function getVar() {\n return 'key';\n}","signature":"0620ca4a9fe7036c93bd1594ffccf8eb-import { MyNominal } from '../sub-project/index';\ndeclare const variable: {\n key: MyNominal;\n};\n/**\n * @return {keyof typeof variable}\n */\nexport declare function getVar(): keyof typeof variable;\nexport {};\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"allowJs":true,"checkJs":true,"composite":true,"declaration":true,"outDir":"..","rootDir":"../../solution","skipLibCheck":true},"referencedMap":[[3,1],[4,2]],"semanticDiagnosticsPerFile":[[4,[{"pos":9,"end":18,"code":18042,"category":1,"messageKey":"_0_is_a_type_and_cannot_be_imported_in_JavaScript_files_Use_1_in_a_JSDoc_type_annotation_18042","messageArgs":["MyNominal","import(\"../sub-project/index\").MyNominal"]}]]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/lib/sub-project-2/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -310,11 +311,11 @@ export function getVar() { { "fileName": "../../solution/sub-project-2/index.js", "version": "db2a90e082fd17d65127bda69975a727-import { MyNominal } from '../sub-project/index';\n\nconst variable = {\n key: /** @type {MyNominal} */('value'),\n};\n\n/**\n * @return {keyof typeof variable}\n */\nexport function getVar() {\n return 'key';\n}", - "signature": "ce1d51d134fcf64db95dffbbad017483-declare const variable: {\n key: string;\n};\n/**\n * @return {keyof typeof variable}\n */\nexport declare function getVar(): keyof typeof variable;\nexport {};\n", + "signature": "0620ca4a9fe7036c93bd1594ffccf8eb-import { MyNominal } from '../sub-project/index';\ndeclare const variable: {\n key: MyNominal;\n};\n/**\n * @return {keyof typeof variable}\n */\nexport declare function getVar(): keyof typeof variable;\nexport {};\n", "impliedNodeFormat": "CommonJS", "original": { "version": "db2a90e082fd17d65127bda69975a727-import { MyNominal } from '../sub-project/index';\n\nconst variable = {\n key: /** @type {MyNominal} */('value'),\n};\n\n/**\n * @return {keyof typeof variable}\n */\nexport function getVar() {\n return 'key';\n}", - "signature": "ce1d51d134fcf64db95dffbbad017483-declare const variable: {\n key: string;\n};\n/**\n * @return {keyof typeof variable}\n */\nexport declare function getVar(): keyof typeof variable;\nexport {};\n", + "signature": "0620ca4a9fe7036c93bd1594ffccf8eb-import { MyNominal } from '../sub-project/index';\ndeclare const variable: {\n key: MyNominal;\n};\n/**\n * @return {keyof typeof variable}\n */\nexport declare function getVar(): keyof typeof variable;\nexport {};\n", "impliedNodeFormat": 1 } } @@ -363,7 +364,7 @@ export function getVar() { ] ], "latestChangedDtsFile": "./index.d.ts", - "size": 2360 + "size": 2414 } //// [/home/src/workspaces/lib/sub-project/index.d.ts] *new* import { Nominal } from '../common/nominal'; diff --git a/testdata/baselines/reference/tsbuild/moduleSpecifiers/synthesized-module-specifiers-resolve-correctly.js b/testdata/baselines/reference/tsbuild/moduleSpecifiers/synthesized-module-specifiers-resolve-correctly.js index 57a038307ce..c3ffae642fb 100644 --- a/testdata/baselines/reference/tsbuild/moduleSpecifiers/synthesized-module-specifiers-resolve-correctly.js +++ b/testdata/baselines/reference/tsbuild/moduleSpecifiers/synthesized-module-specifiers-resolve-correctly.js @@ -232,8 +232,9 @@ export {}; "size": 1481 } //// [/home/src/workspaces/packages/lib/solution/sub-project-2/index.d.ts] *new* +import { MyNominal } from '../sub-project/index'; declare const variable: { - key: string; + key: MyNominal; }; export declare function getVar(): keyof typeof variable; export {}; @@ -247,7 +248,7 @@ export function getVar() { } //// [/home/src/workspaces/packages/lib/solution/sub-project-2/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[4],"fileNames":["lib.es2025.full.d.ts","../common/nominal.d.ts","../sub-project/index.d.ts","../../../solution/sub-project-2/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"6b86fa4ec711c70d7c514bb012b90db9-export declare type Nominal = T & {};\n","ba931f9684d9e8eb38e02da33050dc55-import { Nominal } from '../common/nominal';\nexport type MyNominal = Nominal;\n",{"version":"8d7f0cd34ff9cb954b00662137820b98-import { MyNominal } from '../sub-project/index';\n\nconst variable = {\n key: 'value' as MyNominal,\n};\n\nexport function getVar(): keyof typeof variable {\n return 'key';\n}","signature":"3b4c68b4750c4c11bb5e79eda7ccd331-declare const variable: {\n key: string;\n};\nexport declare function getVar(): keyof typeof variable;\nexport {};\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"outDir":"../..","rootDir":"../../..","skipLibCheck":true},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[4],"fileNames":["lib.es2025.full.d.ts","../common/nominal.d.ts","../sub-project/index.d.ts","../../../solution/sub-project-2/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"6b86fa4ec711c70d7c514bb012b90db9-export declare type Nominal = T & {};\n","ba931f9684d9e8eb38e02da33050dc55-import { Nominal } from '../common/nominal';\nexport type MyNominal = Nominal;\n",{"version":"8d7f0cd34ff9cb954b00662137820b98-import { MyNominal } from '../sub-project/index';\n\nconst variable = {\n key: 'value' as MyNominal,\n};\n\nexport function getVar(): keyof typeof variable {\n return 'key';\n}","signature":"d3fc4bf12d5f8dfcac4dd45791e378ef-import { MyNominal } from '../sub-project/index';\ndeclare const variable: {\n key: MyNominal;\n};\nexport declare function getVar(): keyof typeof variable;\nexport {};\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"outDir":"../..","rootDir":"../../..","skipLibCheck":true},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/packages/lib/solution/sub-project-2/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -293,11 +294,11 @@ export function getVar() { { "fileName": "../../../solution/sub-project-2/index.ts", "version": "8d7f0cd34ff9cb954b00662137820b98-import { MyNominal } from '../sub-project/index';\n\nconst variable = {\n key: 'value' as MyNominal,\n};\n\nexport function getVar(): keyof typeof variable {\n return 'key';\n}", - "signature": "3b4c68b4750c4c11bb5e79eda7ccd331-declare const variable: {\n key: string;\n};\nexport declare function getVar(): keyof typeof variable;\nexport {};\n", + "signature": "d3fc4bf12d5f8dfcac4dd45791e378ef-import { MyNominal } from '../sub-project/index';\ndeclare const variable: {\n key: MyNominal;\n};\nexport declare function getVar(): keyof typeof variable;\nexport {};\n", "impliedNodeFormat": "CommonJS", "original": { "version": "8d7f0cd34ff9cb954b00662137820b98-import { MyNominal } from '../sub-project/index';\n\nconst variable = {\n key: 'value' as MyNominal,\n};\n\nexport function getVar(): keyof typeof variable {\n return 'key';\n}", - "signature": "3b4c68b4750c4c11bb5e79eda7ccd331-declare const variable: {\n key: string;\n};\nexport declare function getVar(): keyof typeof variable;\nexport {};\n", + "signature": "d3fc4bf12d5f8dfcac4dd45791e378ef-import { MyNominal } from '../sub-project/index';\ndeclare const variable: {\n key: MyNominal;\n};\nexport declare function getVar(): keyof typeof variable;\nexport {};\n", "impliedNodeFormat": 1 } } @@ -325,7 +326,7 @@ export function getVar() { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1789 + "size": 1843 } //// [/home/src/workspaces/packages/lib/solution/sub-project/index.d.ts] *new* import { Nominal } from '../common/nominal'; diff --git a/testdata/baselines/reference/tsc/incremental/serializing-error-chain.js b/testdata/baselines/reference/tsc/incremental/serializing-error-chain.js index 8d4c59f0607..a9053af2eb2 100644 --- a/testdata/baselines/reference/tsc/incremental/serializing-error-chain.js +++ b/testdata/baselines/reference/tsc/incremental/serializing-error-chain.js @@ -30,7 +30,7 @@ ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: index.tsx:10:3 - error TS2769: No overload matches this call. The last overload gave the following error. - Type '{ children: any[]; }' is not assignable to type '{ children?: number | undefined; }'. + Type '{ children: any[]; }' is not assignable to type '{ children?: number; }'. Types of property 'children' are incompatible. Type 'any[]' is not assignable to type 'number'. @@ -74,7 +74,7 @@ declare const console: { log(msg: any): void; }; React.createElement("div", null))); //// [/home/src/workspaces/project/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2025.full.d.ts","./index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8ca521424834f2ae3377cc3ccc9dd3ef-declare namespace JSX {\n interface ElementChildrenAttribute { children: {}; }\n interface IntrinsicElements { div: {} }\n}\n\ndeclare var React: any;\n\ndeclare function Component(props: never): any;\ndeclare function Component(props: { children?: number }): any;\n(\n

\n
\n)","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"jsx":3,"module":99,"strict":true},"semanticDiagnosticsPerFile":[[2,[{"pos":265,"end":274,"code":2769,"category":1,"messageKey":"No_overload_matches_this_call_2769","messageChain":[{"pos":265,"end":274,"code":2770,"category":1,"messageKey":"The_last_overload_gave_the_following_error_2770","messageChain":[{"pos":265,"end":274,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["{ children: any[]; }","{ children?: number | undefined; }"],"messageChain":[{"pos":265,"end":274,"code":2326,"category":1,"messageKey":"Types_of_property_0_are_incompatible_2326","messageArgs":["children"],"messageChain":[{"pos":265,"end":274,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["any[]","number"]}]}]}]}],"relatedInformation":[{"pos":217,"end":226,"code":2771,"category":1,"messageKey":"The_last_overload_is_declared_here_2771"}]}]]]} +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2025.full.d.ts","./index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8ca521424834f2ae3377cc3ccc9dd3ef-declare namespace JSX {\n interface ElementChildrenAttribute { children: {}; }\n interface IntrinsicElements { div: {} }\n}\n\ndeclare var React: any;\n\ndeclare function Component(props: never): any;\ndeclare function Component(props: { children?: number }): any;\n(\n
\n
\n)","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"jsx":3,"module":99,"strict":true},"semanticDiagnosticsPerFile":[[2,[{"pos":265,"end":274,"code":2769,"category":1,"messageKey":"No_overload_matches_this_call_2769","messageChain":[{"pos":265,"end":274,"code":2770,"category":1,"messageKey":"The_last_overload_gave_the_following_error_2770","messageChain":[{"pos":265,"end":274,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["{ children: any[]; }","{ children?: number; }"],"messageChain":[{"pos":265,"end":274,"code":2326,"category":1,"messageKey":"Types_of_property_0_are_incompatible_2326","messageArgs":["children"],"messageChain":[{"pos":265,"end":274,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["any[]","number"]}]}]}]}],"relatedInformation":[{"pos":217,"end":226,"code":2771,"category":1,"messageKey":"The_last_overload_is_declared_here_2771"}]}]]]} //// [/home/src/workspaces/project/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -147,7 +147,7 @@ declare const console: { log(msg: any): void; }; "messageKey": "Type_0_is_not_assignable_to_type_1_2322", "messageArgs": [ "{ children: any[]; }", - "{ children?: number | undefined; }" + "{ children?: number; }" ], "messageChain": [ { @@ -191,7 +191,7 @@ declare const console: { log(msg: any): void; }; ] ] ], - "size": 2221 + "size": 2209 } tsconfig.json:: @@ -208,7 +208,7 @@ ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: index.tsx:10:3 - error TS2769: No overload matches this call. The last overload gave the following error. - Type '{ children: any[]; }' is not assignable to type '{ children?: number | undefined; }'. + Type '{ children: any[]; }' is not assignable to type '{ children?: number; }'. Types of property 'children' are incompatible. Type 'any[]' is not assignable to type 'number'. From 12eb700b1a953892076120d0ef86f928439bab2a Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 18 Mar 2026 14:01:10 -0700 Subject: [PATCH 55/55] Update fourslash --- internal/fourslash/_scripts/manualTests.txt | 2 ++ .../fourslash/tests/manual/jsDocFunctionSignatures2_test.go | 2 +- .../tests/manual/jsdocDeprecated_suggestion2_test.go | 2 +- .../{gen => manual}/overloadOnConstCallSignature_test.go | 4 ---- .../{gen => manual}/signatureHelpOnOverloadOnConst_test.go | 4 ---- 5 files changed, 4 insertions(+), 10 deletions(-) rename internal/fourslash/tests/{gen => manual}/overloadOnConstCallSignature_test.go (82%) rename internal/fourslash/tests/{gen => manual}/signatureHelpOnOverloadOnConst_test.go (86%) diff --git a/internal/fourslash/_scripts/manualTests.txt b/internal/fourslash/_scripts/manualTests.txt index 3d1e746d62c..c464cd66c32 100644 --- a/internal/fourslash/_scripts/manualTests.txt +++ b/internal/fourslash/_scripts/manualTests.txt @@ -84,6 +84,7 @@ navto_serverExcludeLib nodeModulesImportCompletions1 outliningForNonCompleteInterfaceDeclaration outliningHintSpansForFunction +overloadOnConstCallSignature parserCorruptionAfterMapInClass pathCompletionsPackageJsonExportsBundlerNoNodeCondition pathCompletionsPackageJsonExportsCustomConditions @@ -132,6 +133,7 @@ renameForDefaultExport01 semicolonFormattingInsideAComment semicolonFormattingInsideAStringLiteral signatureHelpImportStarFromExportEquals +signatureHelpOnOverloadOnConst stringLiteralCompletionsInPositionTypedUsingRest tripleSlashRefPathCompletionAbsolutePaths tripleSlashRefPathCompletionHiddenFile diff --git a/internal/fourslash/tests/manual/jsDocFunctionSignatures2_test.go b/internal/fourslash/tests/manual/jsDocFunctionSignatures2_test.go index f6d809c7f9b..a667b255dd8 100644 --- a/internal/fourslash/tests/manual/jsDocFunctionSignatures2_test.go +++ b/internal/fourslash/tests/manual/jsDocFunctionSignatures2_test.go @@ -20,5 +20,5 @@ f6('', /**/false)` f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content) defer done() f.GoToMarker(t, "") - f.VerifySignatureHelp(t, fourslash.VerifySignatureHelpOptions{Text: "f6(arg0: string, arg1?: boolean | undefined): number"}) + f.VerifySignatureHelp(t, fourslash.VerifySignatureHelpOptions{Text: "f6(arg0: string, arg1?: boolean): number"}) } diff --git a/internal/fourslash/tests/manual/jsdocDeprecated_suggestion2_test.go b/internal/fourslash/tests/manual/jsdocDeprecated_suggestion2_test.go index 5d7d1fbee73..b06291d8809 100644 --- a/internal/fourslash/tests/manual/jsdocDeprecated_suggestion2_test.go +++ b/internal/fourslash/tests/manual/jsdocDeprecated_suggestion2_test.go @@ -110,7 +110,7 @@ new [|cb|]();` Tags: &[]lsproto.DiagnosticTag{lsproto.DiagnosticTagDeprecated}, }, { - Message: "The signature '(tag: \"xmp\"): void' of 't.createElement' is deprecated.", + Message: "The signature '(tag: 'xmp'): void' of 't.createElement' is deprecated.", Code: &lsproto.IntegerOrString{Integer: new(int32(6387))}, Range: f.Ranges()[6].LSRange, Tags: &[]lsproto.DiagnosticTag{lsproto.DiagnosticTagDeprecated}, diff --git a/internal/fourslash/tests/gen/overloadOnConstCallSignature_test.go b/internal/fourslash/tests/manual/overloadOnConstCallSignature_test.go similarity index 82% rename from internal/fourslash/tests/gen/overloadOnConstCallSignature_test.go rename to internal/fourslash/tests/manual/overloadOnConstCallSignature_test.go index dba6d8963c4..e117b89cb65 100644 --- a/internal/fourslash/tests/gen/overloadOnConstCallSignature_test.go +++ b/internal/fourslash/tests/manual/overloadOnConstCallSignature_test.go @@ -1,6 +1,3 @@ -// Code generated by convertFourslash; DO NOT EDIT. -// To modify this test, run "npm run makemanual overloadOnConstCallSignature" - package fourslash_test import ( @@ -11,7 +8,6 @@ import ( ) func TestOverloadOnConstCallSignature(t *testing.T) { - fourslash.SkipIfFailing(t) t.Parallel() defer testutil.RecoverAndFail(t, "Panic on fourslash test") const content = `var foo: { diff --git a/internal/fourslash/tests/gen/signatureHelpOnOverloadOnConst_test.go b/internal/fourslash/tests/manual/signatureHelpOnOverloadOnConst_test.go similarity index 86% rename from internal/fourslash/tests/gen/signatureHelpOnOverloadOnConst_test.go rename to internal/fourslash/tests/manual/signatureHelpOnOverloadOnConst_test.go index 8facbc62fdc..e3d98b17a32 100644 --- a/internal/fourslash/tests/gen/signatureHelpOnOverloadOnConst_test.go +++ b/internal/fourslash/tests/manual/signatureHelpOnOverloadOnConst_test.go @@ -1,6 +1,3 @@ -// Code generated by convertFourslash; DO NOT EDIT. -// To modify this test, run "npm run makemanual signatureHelpOnOverloadOnConst" - package fourslash_test import ( @@ -11,7 +8,6 @@ import ( ) func TestSignatureHelpOnOverloadOnConst(t *testing.T) { - fourslash.SkipIfFailing(t) t.Parallel() defer testutil.RecoverAndFail(t, "Panic on fourslash test") const content = `function x1(x: 'hi');